diff options
192 files changed, 10960 insertions, 9268 deletions
diff --git a/benchmark/image_benchmark.cc b/benchmark/image_benchmark.cc new file mode 100644 index 000000000..5067e1e06 --- /dev/null +++ b/benchmark/image_benchmark.cc @@ -0,0 +1,40 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "lib/image.h" +#include "lib/timer.h" + + +int main() +{ + auto constexpr TRIALS = 1024; + + { + auto image = std::make_shared<Image>(AV_PIX_FMT_UYVY422, dcp::Size{ 3996, 2160 }, Image::Alignment::COMPACT); + PeriodTimer timer("Image::make_black AV_PIX_FMT_UYVY422"); + for (auto i = 0; i < TRIALS; ++i) { + image->make_black(); + } + } + + return 0; +} + diff --git a/benchmark/wscript b/benchmark/wscript new file mode 100644 index 000000000..75ef138a8 --- /dev/null +++ b/benchmark/wscript @@ -0,0 +1,10 @@ +def build(bld): + for benchmark in ['image']: + obj = bld(features='cxx cxxprogram') + obj.uselib = 'DCP AVFORMAT AVFILTER SWSCALE LWEXT4 SUB SWRESAMPLE LEQM_NRT POSTPROC GLIB CURL ICU NETTLE CXML ' + obj.uselib += 'XMLPP BOOST_FILESYSTEM FONTCONFIG XMLSEC SSH SAMPLERATE BOOST_THREAD CAIROMM PANGOMM ZIP SQLITE3 ' + obj.uselib += 'BOOST_REGEX DL ' + obj.use = ['libdcpomatic2'] + obj.source = '%s_benchmark.cc' % benchmark + obj.target = '%s_benchmark' % benchmark + obj.install_path = '' @@ -18,7 +18,7 @@ # along with DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. # -# This file is read by the tool "cdist" (git://git.carlh.net/git/cdist.git) +# This file is read by the tool "cdist" (https://git.carlh.net/git/cdist.git) # which is used to build distribution packages and run tests. It relies on # quite a bit of other stuff (e.g. some docker images and qemu VMs) so is # unlikely to be so useful for most people. @@ -56,6 +56,9 @@ for v in ['24.04', '24.10']: for v in ['25.04', '25.10']: deb_build_depends[v] = copy.deepcopy(deb_build_depends_base) deb_build_depends[v].extend(['libssh-dev', 'python3.13']) +for v in ['26.04']: + deb_build_depends[v] = copy.deepcopy(deb_build_depends_base) + deb_build_depends[v].extend(['libssh-dev', 'python3.14']) for v in ['11']: deb_build_depends[v] = copy.deepcopy(deb_build_depends_base) deb_build_depends[v].extend(['libssh-gcrypt-dev', 'python3.9']) @@ -188,6 +191,7 @@ deb_depends['24.04'] = debs(boost='1.83.0', icu='74', x264='164') deb_depends['24.10'] = debs(boost='1.83.0', icu='74', x264='164') deb_depends['25.04'] = debs(boost='1.83.0', icu='76', x264='164', zip='5', fmt='10') deb_depends['25.10'] = debs(boost='1.88.0', icu='76', x264='164', zip='5', fmt='10', xmlsec='1') +deb_depends['26.04'] = debs(boost='1.90.0', icu='78', x264='165', zip='5', fmt='10', xmlsec='1') deb_depends['11'] = copy.deepcopy(deb_depends_base) deb_depends['11'].extend(['libboost-filesystem1.74.0', @@ -502,8 +506,8 @@ def build_with_cpp17(target): def dependencies(target, options): - deps = [('libdcp', 'v1.10.53', {'c++17': build_with_cpp17(target)})] - deps.append(('libsub', 'v1.6.59')) + deps = [('libdcp', 'ee236adf5362053a8ae3ce28242db6d4265b9938', {'c++17': build_with_cpp17(target)})] + deps.append(('libsub', 'v1.6.61')) deps.append(('leqm-nrt', 'd75d0af984d9c14bfefca8f1bdbc215c3bf3a388')) if target.platform != 'linux' or target.distro != 'arch': # We get our OpenSSL libraries from the environment, but we @@ -515,7 +519,7 @@ def dependencies(target, options): if can_build_disk(target): deps.append(('lwext4', '5755f8f25aadf18ec49e0350b6daaab3a648b9d7')) if build_tests(target): - deps.append(('ffcmp', 'a398c06349dfbb6f312cefce879294736f298c99')) + deps.append(('ffcmp', '26f17612f391')) return deps @@ -525,7 +529,7 @@ option_defaults = { "gui": True, "variant": None } def build_tests(target): # Currently we only build tests on macOS, Windows, some Ubuntu versions and Arch return ( - (target.platform == 'linux' and target.distro == 'ubuntu' and target.version in ['18.04', '22.04', '24.04', '25.10']) or + (target.platform == 'linux' and target.distro == 'ubuntu' and target.version in ['18.04', '22.04', '24.04', '26.04']) or (target.platform == 'linux' and target.distro == 'arch') or (target.platform == 'osx') or (target.platform == 'windows') @@ -579,7 +583,7 @@ def configure_options(target, options, for_package=False): if target.platform == 'linux' and ( (target.distro == 'ubuntu' and target.version == "24.04") or - (target.distro == 'fedora' and target.version == "42") + (target.distro == 'fedora' and target.version in ("42", "43")) ): opt += ' --enable-grok' diff --git a/doc/manual/dcpomatic.xml b/doc/manual/dcpomatic.xml index afea229e0..cf61f4344 100644 --- a/doc/manual/dcpomatic.xml +++ b/doc/manual/dcpomatic.xml @@ -46,31 +46,18 @@ Hello, and welcome to DCP-o-matic! <para>The full set of DCP-o-matic tools is as follows:</para> -<segmentedlist> -<?dbhtml list-presentation="list"?> -<segtitle>DCP-o-matic</segtitle> -<segtitle>Player</segtitle> -<segtitle>Verifier</segtitle> -<segtitle>Batch Converter</segtitle> -<segtitle>Combiner</segtitle> -<segtitle>Disk Writer</segtitle> -<segtitle>KDM Creator</segtitle> -<segtitle>Encode Server</segtitle> -<segtitle>Editor</segtitle> -<segtitle>Playlist Editor</segtitle> -<seglistitem> -<seg>make DCPs from video, audio and text files (including VFs) and make KDMs.</seg> -<seg>play back DCPs and check them for errors.</seg> -<seg>check one or more DCPs for errors.</seg> -<seg>create DCPs from one or more projects previously created by the main DCP-o-matic tool.</seg> -<seg>take several DCPs and combine them into a single DCP folder.</seg> -<seg>format external hard drives to EXT2 format and copy DCPs onto them.</seg> -<seg>create KDMs from DKDMs that were previously made in the main DCP-o-matic tool, or that were sent by other people.</seg> -<seg>allow faster encoding of DCPs by connecting computers together over a network.</seg> -<seg>edit the metadata of existing DCPs without changing the video, audio or text assets.</seg> -<seg>create playlists to allow the player to be used for simple cinema-style playback.</seg> -</seglistitem> -</segmentedlist> +<itemizedlist> +<listitem><emphasis>DCP-o-matic</emphasis>: make DCPs from video, audio and text files (including VFs) and make KDMs.</listitem> +<listitem><emphasis>Player</emphasis>: play back DCPs and check them for errors.</listitem> +<listitem><emphasis>Verifier</emphasis>: check one or more DCPs for errors.</listitem> +<listitem><emphasis>Batch Converter</emphasis>: create DCPs from one or more projects previously created by the main DCP-o-matic tool.</listitem> +<listitem><emphasis>Combiner</emphasis>: take several DCPs and combine them into a single DCP folder.</listitem> +<listitem><emphasis>Disk Writer</emphasis>: format external hard drives to EXT2 format and copy DCPs onto them.</listitem> +<listitem><emphasis>KDM Creator</emphasis>: create KDMs from DKDMs that were previously made in the main DCP-o-matic tool, or that were sent by other people.</listitem> +<listitem><emphasis>Encode Server</emphasis>: allow faster encoding of DCPs by connecting computers together over a network.</listitem> +<listitem><emphasis>Editor</emphasis>: edit the metadata of existing DCPs without changing the video, audio or text assets.</listitem> +<listitem><emphasis>Playlist Editor</emphasis>: create playlists to allow the player to be used for simple cinema-style playback.</listitem> +</itemizedlist> </section> @@ -4168,7 +4155,7 @@ sets. <itemizedlist> <listitem>Start a new DCP-o-matic film.</listitem> <listitem>Click <guilabel>Add DCP...</guilabel> and specify your existing DCP's folder.</listitem> -<listitem>Go to the <guilabel>DCP</guilabel> tab and choose <guilabel>Split by video content</guilabel> for <guilabel>Reel type</guilabel>.</listitem> +<listitem>Go to the <guilabel>DCP</guilabel> tab, click <guilabel>Reels...</guilabel> and choose <guilabel>Split by video content</guilabel> for <guilabel>Reel mode</guilabel>.</listitem> <listitem>Open the <guilabel>Version File (VF) setup</guilabel> dialogue box using the <guilabel>Version File (VF)...</guilabel> option in the <guilabel>Tools</guilabel> menu.</listitem> <listitem>Tick the <guilabel>Video</guilabel> and <guilabel>Audio</guilabel> checkboxes next to your existing DCP's name.</listitem> <listitem>Add your subtitles to the film in whatever format you have.</listitem> @@ -4250,7 +4237,8 @@ The full details of OV and VF files are discussed in <xref linkend="sec-overlay" <listitem>Create a new DCP-o-matic project for the VF.</listitem> <listitem>Use <guilabel>Add folder...</guilabel> to add your OV DCP to the project.</listitem> <listitem>Open the <guilabel>Version File (VF) setup</guilabel> dialogue box using the <guilabel>Version File (VF)...</guilabel> option in the <guilabel>Tools</guilabel> menu.</listitem> -<listitem>Tick the <guilabel>Video</guilabel> checkbox next to your existing DCP's name (you may need to select <guilabel>By video content</guilabel> for <guilabel>Reel type</guilabel> in the <guilabel>DCP</guilabel> tab).</listitem> +<listitem>Tick the <guilabel>Video</guilabel> checkbox next to your existing DCP's name (you may need to click <guilabel>Reels...</guilabel> in the <guilabel>DCP</guilabel> tab and then +select <guilabel>By video content</guilabel> for <guilabel>Reel mode</guilabel>).</listitem> <listitem>Check also the <guilabel>Audio</guilabel> checkbox if your OV has audio.</listitem> <listitem>Add your language-specific audio and/or subtitles and Make DCP.</listitem> </itemizedlist> diff --git a/hacks/pixfmts.c b/hacks/pixfmts.c index 922d38add..2b8b22f90 100644 --- a/hacks/pixfmts.c +++ b/hacks/pixfmts.c @@ -31,6 +31,8 @@ int main() SHOW(AV_PIX_FMT_XYZ12LE); SHOW(AV_PIX_FMT_NV20LE); SHOW(AV_PIX_FMT_RGBA64BE); + SHOW(AV_PIX_FMT_MMAL); + SHOW(AV_PIX_FMT_RGB0); SHOW(AV_PIX_FMT_YUV444P12LE); SHOW(AV_PIX_FMT_GBRP12BE); SHOW(AV_PIX_FMT_GBRP12LE); @@ -32,5 +32,5 @@ def po_to_mo(dir, name, bld): po = os.path.join('po', '%s.po' % lang) mo = os.path.join('mo', lang, '%s.mo' % name) - bld(rule='msgfmt -c ${SRC} -o ${TGT}', source=bld.path.make_node(po), target=bld.path.get_bld().make_node(mo)) + bld(rule='msgfmt ${SRC} -o ${TGT}', source=bld.path.make_node(po), target=bld.path.get_bld().make_node(mo)) bld.install_files(os.path.join('${PREFIX}', 'share', 'locale', lang, 'LC_MESSAGES'), mo) diff --git a/platform/osx/set_paths.sh b/platform/osx/set_paths.sh index 24baa6cd6..939fcd07e 100644 --- a/platform/osx/set_paths.sh +++ b/platform/osx/set_paths.sh @@ -1,10 +1,9 @@ SDK=$1 if [[ "$SDK" == 11 ]]; then isysroot="-isysroot $HOME/SDK/MacOS11.0.sdk" - base=$HOME/workspace export MACOSX_DEPLOYMENT_TARGET=10.10 else - base=/usr/local + base=$HOME/src/dcpomatic fi arch=$(uname -m) diff --git a/run/benchmarks b/run/benchmarks new file mode 100755 index 000000000..1138e9e0f --- /dev/null +++ b/run/benchmarks @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" +source $DIR/environment + +build/benchmark/image_benchmark diff --git a/run/dcpomatic b/run/dcpomatic index e415f426c..9b4165ed6 100755 --- a/run/dcpomatic +++ b/run/dcpomatic @@ -12,6 +12,7 @@ fi # Allow running from a tree built using cdist export LD_LIBRARY_PATH=$DIR/../../../lib:$DIR/../../../lib64:$LD_LIBRARY_PATH +export DYLD_LIBRARY_PATH=$DIR/../../../lib:$DIR/../../../lib64:$DYLD_LIBRARY_PATH # export ASAN_OPTIONS=verbosity=1:malloc_context_size=20:detect_leaks=1 diff --git a/run/dcpomatic_player b/run/dcpomatic_player index 7d9ab9ff3..00fed9aef 100755 --- a/run/dcpomatic_player +++ b/run/dcpomatic_player @@ -10,7 +10,7 @@ else env=x86_64/10.10 fi -export DYLD_LIBRARY_PATH=/Users/cah/osx-environment/$env/lib:/usr/local/lib +export DYLD_LIBRARY_PATH=/Users/cah/osx-environment/$env/lib:$HOME/src/dcpomatic/lib:/usr/local/lib # Allow running from a tree built using cdist export LD_LIBRARY_PATH=$DIR/../../../lib:$DIR/../../../lib64:$LD_LIBRARY_PATH @@ -3,7 +3,7 @@ # e.g. --run_tests=foo set -e -PRIVATE_GIT="3193af1f18fd6f0fd8c8a77055e44bfdf93437e8" +PRIVATE_GIT="eaa907382be3276e8275858219bd73c816ff5c77" DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" source $DIR/environment @@ -86,9 +86,9 @@ if [ "$(uname)" == "Darwin" ]; then # We need to find ffcmp in here export PATH=$PATH:$HOME/workspace/bin if [ -d "$environment/$(uname -m)/11.0" ]; then - export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$environment/$(uname -m)/11.0/lib + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$environment/$(uname -m)/11.0/lib:$DIR/../../../lib else - export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$environment/$(uname -m)/10.10/lib + export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$environment/$(uname -m)/10.10/lib:$DIR/../../../lib fi fi diff --git a/src/lib/active_text.cc b/src/lib/active_text.cc index 2a5c4d836..19c17d6a8 100644 --- a/src/lib/active_text.cc +++ b/src/lib/active_text.cc @@ -54,15 +54,15 @@ ActiveText::operator=(ActiveText&& other) * @param always_burn_captions Always burn captions even if their content is not set to burn. */ list<PlayerText> -ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const +ActiveText::get_burnt(DCPTimePeriod period, bool always_burn_captions) const { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); list<PlayerText> ps; for (auto const& i: _data) { - auto caption = i.first.lock (); + auto caption = i.first.lock(); if (!caption) { continue; } @@ -73,10 +73,10 @@ ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const } for (auto j: i.second) { - DCPTimePeriod test (j.from, j.to.get_value_or(DCPTime::max())); - auto overlap = period.overlap (test); + DCPTimePeriod test(j.from, j.to.get_value_or(DCPTime::max())); + auto overlap = period.overlap(test); if (overlap && overlap->duration() > DCPTime(period.duration().get() / 2)) { - ps.push_back (j.subs); + ps.push_back(j.subs); } } } @@ -89,19 +89,19 @@ ActiveText::get_burnt (DCPTimePeriod period, bool always_burn_captions) const * @param time Time to remove before. */ void -ActiveText::clear_before (DCPTime time) +ActiveText::clear_before(DCPTime time) { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); Map updated; for (auto const& i: _data) { list<Period> as; for (auto j: i.second) { if (!j.to || j.to.get() >= time) { - as.push_back (j); + as.push_back(j); } } - if (!as.empty ()) { + if (!as.empty()) { updated[i.first] = as; } } @@ -115,14 +115,14 @@ ActiveText::clear_before (DCPTime time) * @param from From time for these subtitles. */ void -ActiveText::add_from (weak_ptr<const TextContent> content, PlayerText ps, DCPTime from) +ActiveText::add_from(weak_ptr<const TextContent> content, PlayerText ps, DCPTime from) { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); if (_data.find(content) == _data.end()) { _data[content] = list<Period>(); } - _data[content].push_back (Period (ps, from)); + _data[content].push_back(Period(ps, from)); } @@ -132,19 +132,19 @@ ActiveText::add_from (weak_ptr<const TextContent> content, PlayerText ps, DCPTim * @return Return the corresponding subtitles and their from time. */ pair<PlayerText, DCPTime> -ActiveText::add_to (weak_ptr<const TextContent> content, DCPTime to) +ActiveText::add_to(weak_ptr<const TextContent> content, DCPTime to) { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); - DCPOMATIC_ASSERT (_data.find(content) != _data.end()); + DCPOMATIC_ASSERT(_data.find(content) != _data.end()); _data[content].back().to = to; for (auto& i: _data[content].back().subs.string) { - i.set_out (dcp::Time(to.seconds(), 1000)); + i.set_out(dcp::Time(to.seconds(), 1000)); } - return make_pair (_data[content].back().subs, _data[content].back().from); + return make_pair(_data[content].back().subs, _data[content].back().from); } @@ -152,9 +152,9 @@ ActiveText::add_to (weak_ptr<const TextContent> content, DCPTime to) * @return true if we have any active subtitles from this content. */ bool -ActiveText::have (weak_ptr<const TextContent> content) const +ActiveText::have(weak_ptr<const TextContent> content) const { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); auto i = _data.find(content); if (i == _data.end()) { @@ -166,8 +166,8 @@ ActiveText::have (weak_ptr<const TextContent> content) const void -ActiveText::clear () +ActiveText::clear() { - boost::mutex::scoped_lock lm (_mutex); - _data.clear (); + boost::mutex::scoped_lock lm(_mutex); + _data.clear(); } diff --git a/src/lib/active_text.h b/src/lib/active_text.h index 5430f9681..edbe23242 100644 --- a/src/lib/active_text.h +++ b/src/lib/active_text.h @@ -40,30 +40,30 @@ class TextContent; class ActiveText { public: - ActiveText () {} + ActiveText() {} - ActiveText (ActiveText const&) = delete; - ActiveText& operator= (ActiveText const&) = delete; + ActiveText(ActiveText const&) = delete; + ActiveText& operator=(ActiveText const&) = delete; ActiveText(ActiveText&& other); ActiveText& operator=(ActiveText&& other); - std::list<PlayerText> get_burnt (dcpomatic::DCPTimePeriod period, bool always_burn_captions) const; - void clear_before (dcpomatic::DCPTime time); - void clear (); - void add_from (std::weak_ptr<const TextContent> content, PlayerText ps, dcpomatic::DCPTime from); - std::pair<PlayerText, dcpomatic::DCPTime> add_to (std::weak_ptr<const TextContent> content, dcpomatic::DCPTime to); - bool have (std::weak_ptr<const TextContent> content) const; + std::list<PlayerText> get_burnt(dcpomatic::DCPTimePeriod period, bool always_burn_captions) const; + void clear_before(dcpomatic::DCPTime time); + void clear(); + void add_from(std::weak_ptr<const TextContent> content, PlayerText ps, dcpomatic::DCPTime from); + std::pair<PlayerText, dcpomatic::DCPTime> add_to(std::weak_ptr<const TextContent> content, dcpomatic::DCPTime to); + bool have(std::weak_ptr<const TextContent> content) const; private: class Period { public: - Period () {} + Period() {} - Period (PlayerText s, dcpomatic::DCPTime f) - : subs (s) - , from (f) + Period(PlayerText s, dcpomatic::DCPTime f) + : subs(s) + , from(f) {} PlayerText subs; diff --git a/src/lib/analyse_subtitles_job.cc b/src/lib/analyse_subtitles_job.cc index 66db25f04..c30ff0c30 100644 --- a/src/lib/analyse_subtitles_job.cc +++ b/src/lib/analyse_subtitles_job.cc @@ -42,10 +42,10 @@ using namespace boost::placeholders; #endif -AnalyseSubtitlesJob::AnalyseSubtitlesJob (shared_ptr<const Film> film, shared_ptr<Content> content) - : Job (film) - , _content (content) - , _path (_film->subtitle_analysis_path(content)) +AnalyseSubtitlesJob::AnalyseSubtitlesJob(shared_ptr<const Film> film, shared_ptr<Content> content) + : Job(film) + , _content(content) + , _path(_film->subtitle_analysis_path(content)) { } @@ -57,46 +57,46 @@ AnalyseSubtitlesJob::~AnalyseSubtitlesJob() string -AnalyseSubtitlesJob::name () const +AnalyseSubtitlesJob::name() const { return _("Analysing subtitles"); } string -AnalyseSubtitlesJob::json_name () const +AnalyseSubtitlesJob::json_name() const { return N_("analyse_subtitles"); } void -AnalyseSubtitlesJob::run () +AnalyseSubtitlesJob::run() { auto playlist = make_shared<Playlist>(); - auto content = _content.lock (); - DCPOMATIC_ASSERT (content); - playlist->add (_film, content); + auto content = _content.lock(); + DCPOMATIC_ASSERT(content); + playlist->add(_film, content); auto player = make_shared<Player>(_film, playlist, false); - player->set_ignore_audio (); - player->set_fast (); - player->set_play_referenced (); - player->Text.connect (bind(&AnalyseSubtitlesJob::analyse, this, _1, _2)); + player->set_ignore_audio(); + player->set_fast(); + player->set_play_referenced(); + player->Text.connect(bind(&AnalyseSubtitlesJob::analyse, this, _1, _2)); - set_progress_unknown (); + set_progress_unknown(); if (!content->text.empty()) { - while (!player->pass ()) { + while (!player->pass()) { boost::this_thread::interruption_point(); } } - SubtitleAnalysis analysis (_bounding_box, content->text.front()->x_offset(), content->text.front()->y_offset()); - analysis.write (_path); + SubtitleAnalysis analysis(_bounding_box, content->text.front()->x_offset(), content->text.front()->y_offset()); + analysis.write(_path); - set_progress (1); - set_state (FINISHED_OK); + set_progress(1); + set_state(FINISHED_OK); } @@ -111,7 +111,7 @@ AnalyseSubtitlesJob::analyse(PlayerText const& text, TextType type) if (!_bounding_box) { _bounding_box = i.rectangle; } else { - _bounding_box->extend (i.rectangle); + _bounding_box->extend(i.rectangle); } } @@ -139,14 +139,14 @@ AnalyseSubtitlesJob::analyse(PlayerText const& text, TextType type) for (auto standard: override_standard) { for (auto i: bounding_box(text.string, frame, standard)) { - dcpomatic::Rect<double> rect ( + dcpomatic::Rect<double> rect( double(i.x) / frame.width, double(i.y) / frame.height, double(i.width) / frame.width, double(i.height) / frame.height ); if (!_bounding_box) { _bounding_box = rect; } else { - _bounding_box->extend (rect); + _bounding_box->extend(rect); } } } diff --git a/src/lib/analyse_subtitles_job.h b/src/lib/analyse_subtitles_job.h index ea425763f..bb6aa3f31 100644 --- a/src/lib/analyse_subtitles_job.h +++ b/src/lib/analyse_subtitles_job.h @@ -31,14 +31,14 @@ class Content; class AnalyseSubtitlesJob : public Job { public: - AnalyseSubtitlesJob (std::shared_ptr<const Film> film, std::shared_ptr<Content> content); + AnalyseSubtitlesJob(std::shared_ptr<const Film> film, std::shared_ptr<Content> content); ~AnalyseSubtitlesJob(); - std::string name () const override; - std::string json_name () const override; - void run () override; + std::string name() const override; + std::string json_name() const override; + void run() override; - boost::filesystem::path path () const { + boost::filesystem::path path() const { return _path; } diff --git a/src/lib/audio_content.cc b/src/lib/audio_content.cc index 50601fc58..bd25593d0 100644 --- a/src/lib/audio_content.cc +++ b/src/lib/audio_content.cc @@ -212,8 +212,8 @@ AudioContent::resampled_frame_rate(shared_ptr<const Film> film) const look different in the DCP compared to the source (slower or faster). */ - if (frc.change_speed) { - t /= frc.speed_up; + if (frc.change_speed()) { + t /= frc.speed_up(); } return lrint(t); @@ -330,11 +330,11 @@ AudioContent::add_properties(shared_ptr<const Film> film, list<UserProperty>& p) } p.push_back( - UserProperty(UserProperty::LENGTH, _("Full length in video frames at content rate"), c.frames_round(frc.source)) + UserProperty(UserProperty::LENGTH, _("Full length in video frames at content rate"), c.frames_round(frc.source())) ); p.push_back(UserProperty(UserProperty::AUDIO, _("DCP sample rate"), resampled_frame_rate(film), _("Hz"))); - p.push_back(UserProperty(UserProperty::LENGTH, _("Full length in video frames at DCP rate"), c.frames_round(frc.dcp))); + p.push_back(UserProperty(UserProperty::LENGTH, _("Full length in video frames at DCP rate"), c.frames_round(frc.dcp()))); } diff --git a/src/lib/audio_mapping.cc b/src/lib/audio_mapping.cc index 939a03414..c926437ea 100644 --- a/src/lib/audio_mapping.cc +++ b/src/lib/audio_mapping.cc @@ -54,26 +54,26 @@ using dcp::raw_convert; * @param input_channels Number of input channels. * @param output_channels Number of output channels. */ -AudioMapping::AudioMapping (int input_channels, int output_channels) +AudioMapping::AudioMapping(int input_channels, int output_channels) { - setup (input_channels, output_channels); + setup(input_channels, output_channels); } void -AudioMapping::setup (int input_channels, int output_channels) +AudioMapping::setup(int input_channels, int output_channels) { _gain.resize(input_channels); for (int i = 0; i < input_channels; ++i) { _gain[i].resize(output_channels); } - make_zero (); + make_zero(); } void -AudioMapping::make_zero () +AudioMapping::make_zero() { for (auto& input: _gain) { for (auto& output: input) { @@ -85,50 +85,50 @@ AudioMapping::make_zero () struct ChannelRegex { - ChannelRegex (string regex_, int channel_) - : regex (regex_) - , channel (channel_) + ChannelRegex(string regex_, dcp::Channel channel_) + : regex(regex_) + , channel(channel_) {} string regex; - int channel; + dcp::Channel channel; }; void -AudioMapping::make_default (AudioProcessor const * processor, optional<boost::filesystem::path> filename) +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); if (processor) { - processor->make_audio_mapping_default (*this); + processor->make_audio_mapping_default(*this); } else { - make_zero (); + make_zero(); if (input_channels() == 1) { bool guessed = false; /* See if we can guess where this stream should go */ 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()) { - set (0, regex[i].channel, 1); + boost::regex e(regex[i].regex, boost::regex::icase); + if (boost::regex_match(filename->filename().string(), e) && static_cast<int>(regex[i].channel) < output_channels()) { + set(0, regex[i].channel, 1); guessed = true; } } @@ -136,41 +136,41 @@ AudioMapping::make_default (AudioProcessor const * processor, optional<boost::fi if (!guessed) { /* If we have no idea, just put it on centre */ - set (0, static_cast<int>(dcp::Channel::CENTRE), 1); + set(0, static_cast<int>(dcp::Channel::CENTRE), 1); } } else { /* 1:1 mapping */ - for (int i = 0; i < min (input_channels(), output_channels()); ++i) { - set (i, i, 1); + for (int i = 0; i < min(input_channels(), output_channels()); ++i) { + set(i, i, 1); } } } } -AudioMapping::AudioMapping (cxml::ConstNodePtr node, int state_version) +AudioMapping::AudioMapping(cxml::ConstNodePtr node, int state_version) { if (state_version < 32) { - setup (node->number_child<int>("ContentChannels"), MAX_DCP_AUDIO_CHANNELS); + setup(node->number_child<int>("ContentChannels"), MAX_DCP_AUDIO_CHANNELS); } else { - setup (node->number_child<int>("InputChannels"), node->number_child<int>("OutputChannels")); + setup(node->number_child<int>("InputChannels"), node->number_child<int>("OutputChannels")); } if (state_version <= 5) { /* Old-style: on/off mapping */ - for (auto i: node->node_children ("Map")) { - set (i->number_child<int>("ContentIndex"), i->number_child<int>("DCP"), 1); + for (auto i: node->node_children("Map")) { + set(i->number_child<int>("ContentIndex"), i->number_child<int>("DCP"), 1); } } else { for (auto i: node->node_children("Gain")) { if (state_version < 32) { - set ( + set( i->number_attribute<int>("Content"), i->number_attribute<int>("DCP"), raw_convert<float>(i->content()) ); } else { - set ( + set( number_attribute<int>(i, "Input", "input"), number_attribute<int>(i, "Output", "output"), raw_convert<float>(i->content()) @@ -182,40 +182,40 @@ AudioMapping::AudioMapping (cxml::ConstNodePtr node, int state_version) void -AudioMapping::set (dcp::Channel input_channel, int output_channel, float g) +AudioMapping::set(dcp::Channel input_channel, int output_channel, float g) { - set (static_cast<int>(input_channel), output_channel, g); + set(static_cast<int>(input_channel), output_channel, g); } void -AudioMapping::set (int input_channel, dcp::Channel output_channel, float g) +AudioMapping::set(int input_channel, dcp::Channel output_channel, float g) { - set (input_channel, static_cast<int>(output_channel), g); + set(input_channel, static_cast<int>(output_channel), g); } void -AudioMapping::set (int input_channel, int output_channel, float g) +AudioMapping::set(int input_channel, int output_channel, float g) { - DCPOMATIC_ASSERT (input_channel < int(_gain.size())); - DCPOMATIC_ASSERT (output_channel < int(_gain[0].size())); + DCPOMATIC_ASSERT(input_channel < int(_gain.size())); + DCPOMATIC_ASSERT(output_channel < int(_gain[0].size())); _gain[input_channel][output_channel] = g; } float -AudioMapping::get (int input_channel, dcp::Channel output_channel) const +AudioMapping::get(int input_channel, dcp::Channel output_channel) const { - return get (input_channel, static_cast<int>(output_channel)); + return get(input_channel, static_cast<int>(output_channel)); } float -AudioMapping::get (int input_channel, int output_channel) const +AudioMapping::get(int input_channel, int output_channel) const { - DCPOMATIC_ASSERT (input_channel < int (_gain.size())); - DCPOMATIC_ASSERT (output_channel < int (_gain[0].size())); + DCPOMATIC_ASSERT(input_channel < int(_gain.size())); + DCPOMATIC_ASSERT(output_channel < int(_gain[0].size())); return _gain[input_channel][output_channel]; } @@ -244,7 +244,7 @@ AudioMapping::as_xml(xmlpp::Element* element) const * differentiation between different AudioMappings. */ string -AudioMapping::digest () const +AudioMapping::digest() const { Digester digester; digester.add(input_channels()); @@ -255,12 +255,12 @@ AudioMapping::digest () const } } - return digester.get (); + return digester.get(); } list<int> -AudioMapping::mapped_output_channels () const +AudioMapping::mapped_output_channels() const { static float const minus_96_db = 0.000015849; @@ -269,20 +269,20 @@ AudioMapping::mapped_output_channels () const for (auto const& i: _gain) { for (auto j: dcp::used_audio_channels()) { if (abs(i[static_cast<int>(j)]) > minus_96_db) { - mapped.push_back (static_cast<int>(j)); + mapped.push_back(static_cast<int>(j)); } } } - mapped.sort (); - mapped.unique (); + mapped.sort(); + mapped.unique(); return mapped; } void -AudioMapping::unmap_all () +AudioMapping::unmap_all() { for (auto& i: _gain) { for (auto& j: i) { diff --git a/src/lib/audio_mapping.h b/src/lib/audio_mapping.h index 68487d908..0dc80193b 100644 --- a/src/lib/audio_mapping.h +++ b/src/lib/audio_mapping.h @@ -46,40 +46,40 @@ class AudioProcessor; class AudioMapping { public: - AudioMapping () {} - AudioMapping (int input_channels, int output_channels); - AudioMapping (cxml::ConstNodePtr, int); + AudioMapping() {} + AudioMapping(int input_channels, int output_channels); + AudioMapping(cxml::ConstNodePtr, int); /* Default copy constructor is fine */ void as_xml(xmlpp::Element*) const; - void make_zero (); - void make_default (AudioProcessor const * processor, boost::optional<boost::filesystem::path> filename = boost::optional<boost::filesystem::path>()); + void make_zero(); + void make_default(AudioProcessor const * processor, boost::optional<boost::filesystem::path> filename = boost::optional<boost::filesystem::path>()); - void set (dcp::Channel input_channel, int output_channel, float); - void set (int input_channel, int output_channel, float); - void set (int input_channel, dcp::Channel output_channel, float); - float get (int input_channel, int output_channel) const; - float get (int input_channel, dcp::Channel output_channel) const; + void set(dcp::Channel input_channel, int output_channel, float); + void set(int input_channel, int output_channel, float); + void set(int input_channel, dcp::Channel output_channel, float); + float get(int input_channel, int output_channel) const; + float get(int input_channel, dcp::Channel output_channel) const; - int input_channels () const { + int input_channels() const { return _gain.size(); } - int output_channels () const { + int output_channels() const { return _gain.empty() ? 0 : _gain[0].size(); } - std::string digest () const; + std::string digest() const; - std::list<int> mapped_output_channels () const; - void unmap_all (); + std::list<int> mapped_output_channels() const; + void unmap_all(); void take_from(AudioMapping const& other); private: - void setup (int input_channels, int output_channels); + void setup(int input_channels, int output_channels); /** Linear gains */ std::vector<std::vector<float>> _gain; diff --git a/src/lib/cinema_sound_processor.cc b/src/lib/cinema_sound_processor.cc index 434fdd1cf..2ddbb9086 100644 --- a/src/lib/cinema_sound_processor.cc +++ b/src/lib/cinema_sound_processor.cc @@ -42,12 +42,12 @@ vector<unique_ptr<const CinemaSoundProcessor>> CinemaSoundProcessor::_cinema_sou /** @param i Our id. * @param n User-visible name. */ -CinemaSoundProcessor::CinemaSoundProcessor (string i, string n, float knee, float below, float above) - : _id (i) - , _name (n) - , _knee (knee) - , _below (below) - , _above (above) +CinemaSoundProcessor::CinemaSoundProcessor(string i, string n, float knee, float below, float above) + : _id(i) + , _name(n) + , _knee(knee) + , _below(below) + , _above(above) { } @@ -55,11 +55,11 @@ CinemaSoundProcessor::CinemaSoundProcessor (string i, string n, float knee, floa /** @return All available sound processors */ vector<CinemaSoundProcessor const *> -CinemaSoundProcessor::all () +CinemaSoundProcessor::all() { vector<CinemaSoundProcessor const *> raw; for (auto& processor: _cinema_sound_processors) { - raw.push_back (processor.get()); + raw.push_back(processor.get()); } return raw; } @@ -69,11 +69,11 @@ CinemaSoundProcessor::all () * methods are used. */ void -CinemaSoundProcessor::setup_cinema_sound_processors () +CinemaSoundProcessor::setup_cinema_sound_processors() { - _cinema_sound_processors.push_back (unique_ptr<CinemaSoundProcessor>(new DolbyCP750)); - _cinema_sound_processors.push_back (unique_ptr<CinemaSoundProcessor>(new USL)); - _cinema_sound_processors.push_back (unique_ptr<CinemaSoundProcessor>(new DatasatAP2x)); + _cinema_sound_processors.push_back(unique_ptr<CinemaSoundProcessor>(new DolbyCP750)); + _cinema_sound_processors.push_back(unique_ptr<CinemaSoundProcessor>(new USL)); + _cinema_sound_processors.push_back(unique_ptr<CinemaSoundProcessor>(new DatasatAP2x)); } @@ -81,14 +81,14 @@ CinemaSoundProcessor::setup_cinema_sound_processors () * @return Corresponding sound processor, or 0. */ CinemaSoundProcessor const * -CinemaSoundProcessor::from_id (string id) +CinemaSoundProcessor::from_id(string id) { - auto i = _cinema_sound_processors.begin (); + auto i = _cinema_sound_processors.begin(); while (i != _cinema_sound_processors.end() && (*i)->id() != id) { ++i; } - if (i == _cinema_sound_processors.end ()) { + if (i == _cinema_sound_processors.end()) { return nullptr; } @@ -100,36 +100,36 @@ CinemaSoundProcessor::from_id (string id) * @return Corresponding sound processor. */ CinemaSoundProcessor const * -CinemaSoundProcessor::from_index (int i) +CinemaSoundProcessor::from_index(int i) { - DCPOMATIC_ASSERT (i >= 0 && i < int(_cinema_sound_processors.size())); + DCPOMATIC_ASSERT(i >= 0 && i < int(_cinema_sound_processors.size())); return _cinema_sound_processors[i].get(); } float -CinemaSoundProcessor::db_for_fader_change (float from, float to) const +CinemaSoundProcessor::db_for_fader_change(float from, float to) const { float db = 0; if (from < to) { if (from <= _knee) { - float const t = min (to, _knee); + float const t = min(to, _knee); db += (t - from) * _below; } if (to > 4) { - float const t = max (from, _knee); + float const t = max(from, _knee); db += (to - t) * _above; } } else { if (from >= _knee) { - float const t = max (to, _knee); + float const t = max(to, _knee); db -= (from - t) * _above; } if (to < _knee) { - float const t = min (from, _knee); + float const t = min(from, _knee); db -= (t - to) * _below; } } diff --git a/src/lib/cinema_sound_processor.h b/src/lib/cinema_sound_processor.h index 3ccaa5c9b..411a70366 100644 --- a/src/lib/cinema_sound_processor.h +++ b/src/lib/cinema_sound_processor.h @@ -43,28 +43,28 @@ class CinemaSoundProcessor { public: - CinemaSoundProcessor (std::string i, std::string n, float knee, float below, float above); - virtual ~CinemaSoundProcessor () {} + CinemaSoundProcessor(std::string i, std::string n, float knee, float below, float above); + virtual ~CinemaSoundProcessor() {} - CinemaSoundProcessor (CinemaSoundProcessor const&) = delete; + CinemaSoundProcessor(CinemaSoundProcessor const&) = delete; CinemaSoundProcessor& operator=(CinemaSoundProcessor const&) = delete; - float db_for_fader_change (float from, float to) const; + float db_for_fader_change(float from, float to) const; /** @return id for our use */ - std::string id () const { + std::string id() const { return _id; } /** @return user-visible name for this sound processor */ - std::string name () const { + std::string name() const { return _name; } - static std::vector<CinemaSoundProcessor const *> all (); - static void setup_cinema_sound_processors (); - static CinemaSoundProcessor const * from_id (std::string id); - static CinemaSoundProcessor const * from_index (int); + static std::vector<CinemaSoundProcessor const *> all(); + static void setup_cinema_sound_processors(); + static CinemaSoundProcessor const * from_id(std::string id); + static CinemaSoundProcessor const * from_index(int); private: /** id for our use */ diff --git a/src/lib/content.cc b/src/lib/content.cc index 8f486380a..067086509 100644 --- a/src/lib/content.cc +++ b/src/lib/content.cc @@ -431,7 +431,7 @@ Content::active_video_frame_rate(shared_ptr<const Film> film) const prepared for any concurrent video content or perhaps just the DCP rate. */ - return film->active_frame_rate_change(position()).source; + return film->active_frame_rate_change(position()).source(); } diff --git a/src/lib/create_cli.cc b/src/lib/create_cli.cc index 32834be23..3ef61fe11 100644 --- a/src/lib/create_cli.cc +++ b/src/lib/create_cli.cc @@ -85,6 +85,8 @@ help() " --left-eye next piece of content is for the left eye\n" " --right-eye next piece of content is for the right eye\n" " --auto-crop next piece of content should be auto-cropped\n" + " --fill-crop next piece of content should be cropped to fit the container\n" + " (e.g. to crop the letterboxing from a scope-in-flat image)\n" " --colourspace next piece of content is in the given colourspace: " + colour_conversions + "\n" " --colorspace same as --colourspace\n" " --channel <channel> next piece of content should be mapped to audio channel L, R, C, Lfe, Ls, Rs, BsL, BsR, HI, VI\n" @@ -184,6 +186,7 @@ CreateCLI::CreateCLI(int argc, char* argv[]) optional<string> next_colour_conversion; auto next_frame_type = VideoFrameType::TWO_D; auto next_auto_crop = false; + auto next_fill_crop = false; optional<dcp::Channel> channel; optional<float> gain; optional<float> fade_in; @@ -225,6 +228,9 @@ CreateCLI::CreateCLI(int argc, char* argv[]) } else if (a == "--auto-crop") { next_auto_crop = true; claimed = true; + } else if (a == "--fill-crop") { + next_fill_crop = true; + claimed = true; } else if (a == "--twok") { _twok = true; claimed = true; @@ -331,6 +337,7 @@ CreateCLI::CreateCLI(int argc, char* argv[]) c.path = a; c.frame_type = next_frame_type; c.auto_crop = next_auto_crop; + c.fill_crop = next_fill_crop; c.colour_conversion = next_colour_conversion; c.channel = channel; c.gain = gain; @@ -341,6 +348,7 @@ CreateCLI::CreateCLI(int argc, char* argv[]) content.push_back(c); next_frame_type = VideoFrameType::TWO_D; next_auto_crop = false; + next_fill_crop = false; next_colour_conversion = {}; channel = {}; gain = {}; @@ -555,6 +563,30 @@ CreateCLI::make_film(function<void (string)> error) const video->set_crop(crop); } + if (cli_content.fill_crop && video->size()) { + auto const source_ratio = video->size()->ratio(); + Crop crop; + if (source_ratio < film->container().ratio()) { + /* Part to extract is wider than the source */ + auto const height = video->size()->width / film->container().ratio(); + crop.top = crop.bottom = (video->size()->height - height) / 2; + } else { + /* Container is wider than the source */ + auto const width = video->size()->height * film->container().ratio(); + crop.left = crop.right = (video->size()->width - width) / 2; + } + + error(fmt::format( + "Cropped {} to {} left, {} right, {} top and {} bottom", + film_content->path(0).string(), + crop.left, + crop.right, + crop.top, + crop.bottom + )); + + video->set_crop(crop); + } if (cli_content.colour_conversion) { video->set_colour_conversion(PresetColourConversion::from_id(*cli_content.colour_conversion).conversion); } diff --git a/src/lib/create_cli.h b/src/lib/create_cli.h index 00abf85e5..cde8598cd 100644 --- a/src/lib/create_cli.h +++ b/src/lib/create_cli.h @@ -42,6 +42,7 @@ public: boost::filesystem::path path; VideoFrameType frame_type = VideoFrameType::TWO_D; bool auto_crop = false; + bool fill_crop = false; boost::optional<std::string> colour_conversion; boost::optional<dcp::Channel> channel; boost::optional<float> gain; diff --git a/src/lib/dcp_subtitle_content.cc b/src/lib/dcp_subtitle_content.cc index 21159fcac..ac8c4245b 100644 --- a/src/lib/dcp_subtitle_content.cc +++ b/src/lib/dcp_subtitle_content.cc @@ -38,22 +38,25 @@ using std::list; using std::make_shared; using std::shared_ptr; using std::string; +using std::vector; using boost::optional; using namespace dcpomatic; -DCPSubtitleContent::DCPSubtitleContent (boost::filesystem::path path) - : Content (path) +DCPSubtitleContent::DCPSubtitleContent(boost::filesystem::path path) + : Content(path) { - text.push_back (make_shared<TextContent>(this, TextType::OPEN_SUBTITLE, TextType::OPEN_SUBTITLE)); + text = vector<shared_ptr<TextContent>>{make_shared<TextContent>(this, TextType::OPEN_SUBTITLE, TextType::OPEN_SUBTITLE)}; + /* Default to turning these subtitles on */ + only_text()->set_use(true); } DCPSubtitleContent::DCPSubtitleContent(cxml::ConstNodePtr node, boost::optional<boost::filesystem::path> film_directory, int version) - : Content (node, film_directory) - , _length (node->number_child<ContentTime::Type> ("Length")) + : Content(node, film_directory) + , _length(node->number_child<ContentTime::Type>("Length")) { list<string> notes; - text = TextContent::from_xml (this, node, version, notes); + text = TextContent::from_xml(this, node, version, notes); } void @@ -63,20 +66,16 @@ DCPSubtitleContent::examine(shared_ptr<const Film> film, shared_ptr<Job> job, bo auto subtitle_asset = load(path(0)); - auto iop = dynamic_pointer_cast<dcp::InteropTextAsset>(subtitle_asset); - auto smpte = dynamic_pointer_cast<dcp::SMPTETextAsset>(subtitle_asset); - if (smpte) { + if (auto smpte = dynamic_pointer_cast<dcp::SMPTETextAsset>(subtitle_asset)) { set_video_frame_rate(film, smpte->edit_rate().numerator); } - boost::mutex::scoped_lock lm (_mutex); - - /* Default to turning these subtitles on */ - only_text()->set_use (true); + boost::mutex::scoped_lock lm(_mutex); _length = ContentTime::from_seconds(subtitle_asset->latest_text_out().as_seconds()); subtitle_asset->fix_empty_font_ids(); + only_text()->clear_fonts(); add_fonts(only_text(), subtitle_asset); } @@ -115,26 +114,26 @@ DCPSubtitleContent::add_fonts(shared_ptr<TextContent> content, shared_ptr<dcp::T DCPTime -DCPSubtitleContent::full_length (shared_ptr<const Film> film) const +DCPSubtitleContent::full_length(shared_ptr<const Film> film) const { - FrameRateChange const frc (film, shared_from_this()); - return DCPTime (_length, frc); + FrameRateChange const frc(film, shared_from_this()); + return DCPTime(_length, frc); } DCPTime -DCPSubtitleContent::approximate_length () const +DCPSubtitleContent::approximate_length() const { - return DCPTime (_length, FrameRateChange()); + return DCPTime(_length, FrameRateChange()); } string -DCPSubtitleContent::summary () const +DCPSubtitleContent::summary() const { return path_summary() + " " + _("[subtitles]"); } string -DCPSubtitleContent::technical_summary () const +DCPSubtitleContent::technical_summary() const { return Content::technical_summary() + " - " + _("DCP XML subtitles"); } diff --git a/src/lib/dcp_subtitle_content.h b/src/lib/dcp_subtitle_content.h index dde3139a8..5b1c8426d 100644 --- a/src/lib/dcp_subtitle_content.h +++ b/src/lib/dcp_subtitle_content.h @@ -24,12 +24,12 @@ class DCPSubtitleContent : public DCPSubtitle, public Content { public: - DCPSubtitleContent (boost::filesystem::path); - DCPSubtitleContent (cxml::ConstNodePtr, boost::optional<boost::filesystem::path> film_directory, int); + DCPSubtitleContent(boost::filesystem::path); + DCPSubtitleContent(cxml::ConstNodePtr, boost::optional<boost::filesystem::path> film_directory, int); - void examine (std::shared_ptr<const Film> film, std::shared_ptr<Job>, bool tolerant) override; - std::string summary () const override; - std::string technical_summary () const override; + void examine(std::shared_ptr<const Film> film, std::shared_ptr<Job>, bool tolerant) override; + std::string summary() const override; + std::string technical_summary() const override; void as_xml( xmlpp::Element* element, @@ -38,8 +38,8 @@ public: boost::optional<boost::filesystem::path> film_directory ) const override; - dcpomatic::DCPTime full_length (std::shared_ptr<const Film> film) const override; - dcpomatic::DCPTime approximate_length () const override; + dcpomatic::DCPTime full_length(std::shared_ptr<const Film> film) const override; + dcpomatic::DCPTime approximate_length() const override; private: void add_fonts(std::shared_ptr<TextContent> content, std::shared_ptr<dcp::TextAsset> subtitle_asset); diff --git a/src/lib/dcp_video.cc b/src/lib/dcp_video.cc index 775298091..66f4a3c4c 100644 --- a/src/lib/dcp_video.cc +++ b/src/lib/dcp_video.cc @@ -135,16 +135,32 @@ DCPVideo::get_size() const void DCPVideo::convert_to_xyz(uint16_t* dst) const { - DCPOMATIC_ASSERT(_frame->colour_conversion()); + auto conversion = [](AVPixelFormat fmt) { + return fmt == AV_PIX_FMT_XYZ12LE ? AV_PIX_FMT_XYZ12LE : AV_PIX_FMT_RGB48LE; + }; - auto image = _frame->image(force(AV_PIX_FMT_RGB48LE), VideoRange::FULL, false); - dcp::rgb_to_xyz( - image->data()[0], - dst, - image->size(), - image->stride()[0], - _frame->colour_conversion().get() - ); + auto image = _frame->image(conversion, VideoRange::FULL, false); + + if (_frame->colour_conversion()) { + dcp::rgb_to_xyz( + image->data()[0], + dst, + image->size(), + image->stride()[0], + _frame->colour_conversion().get() + ); + } else { + auto const size = image->size(); + auto const row_bytes = static_cast<size_t>(size.width) * 3 * sizeof(uint16_t); + auto src = image->data()[0]; + auto const src_stride = image->stride()[0]; + auto out = reinterpret_cast<uint8_t*>(dst); + for (int y = 0; y < size.height; ++y) { + memcpy(out, src, row_bytes); + src += src_stride; + out += row_bytes; + } + } } diff --git a/src/lib/dcpomatic_socket.cc b/src/lib/dcpomatic_socket.cc index d3bfbc309..876fa47d3 100644 --- a/src/lib/dcpomatic_socket.cc +++ b/src/lib/dcpomatic_socket.cc @@ -50,7 +50,11 @@ Socket::Socket (int timeout) void Socket::check () { +#if BOOST_VERSION >= 108700 if (_deadline.expiry() <= std::chrono::system_clock::now()) { +#else + if (_deadline.expires_at() <= std::chrono::system_clock::now()) { +#endif _socket.close(); _deadline.expires_at(std::chrono::time_point<std::chrono::system_clock>::max()); } @@ -321,7 +325,11 @@ Socket::set_send_buffer_size (int size) void Socket::set_deadline_from_now(int seconds) { +#if BOOST_VERSION >= 108700 _deadline.expires_after(std::chrono::seconds(seconds)); +#else + _deadline.expires_from_now(std::chrono::seconds(seconds)); +#endif } void diff --git a/src/lib/dcpomatic_time.cc b/src/lib/dcpomatic_time.cc index 60fc5342a..2b1400ccf 100644 --- a/src/lib/dcpomatic_time.cc +++ b/src/lib/dcpomatic_time.cc @@ -48,7 +48,7 @@ dcpomatic::operator<=(HMSF const& a, HMSF const& b) template <> Time<ContentTimeDifferentiator, DCPTimeDifferentiator>::Time (DCPTime d, FrameRateChange f) - : _t (llrint(d.get() * f.speed_up)) + : _t (llrint(d.get() * f.speed_up())) { } @@ -56,7 +56,7 @@ Time<ContentTimeDifferentiator, DCPTimeDifferentiator>::Time (DCPTime d, FrameRa template <> Time<DCPTimeDifferentiator, ContentTimeDifferentiator>::Time (ContentTime d, FrameRateChange f) - : _t (llrint(d.get() / f.speed_up)) + : _t (llrint(d.get() / f.speed_up())) { } 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/encode_server.h b/src/lib/encode_server.h index 276212583..ea769d4fe 100644 --- a/src/lib/encode_server.h +++ b/src/lib/encode_server.h @@ -32,9 +32,9 @@ #include "exception_store.h" #include "server.h" #include <boost/asio.hpp> -#include <boost/atomic.hpp> #include <boost/thread.hpp> #include <boost/thread/condition.hpp> +#include <atomic> #include <string> @@ -72,7 +72,7 @@ private: bool _verbose; int _num_threads; Waker _waker; - boost::atomic<int> _frames_encoded; + std::atomic<int> _frames_encoded; struct Broadcast { diff --git a/src/lib/encode_server_finder.cc b/src/lib/encode_server_finder.cc index d2ecd03b7..a873b258a 100644 --- a/src/lib/encode_server_finder.cc +++ b/src/lib/encode_server_finder.cc @@ -54,69 +54,69 @@ using namespace boost::placeholders; EncodeServerFinder* EncodeServerFinder::_instance = 0; -EncodeServerFinder::EncodeServerFinder () - : _stop (false) +EncodeServerFinder::EncodeServerFinder() + : _stop(false) { - Config::instance()->Changed.connect (boost::bind (&EncodeServerFinder::config_changed, this, _1)); + Config::instance()->Changed.connect(boost::bind(&EncodeServerFinder::config_changed, this, _1)); } void -EncodeServerFinder::start () +EncodeServerFinder::start() { - _search_thread = boost::thread (boost::bind(&EncodeServerFinder::search_thread, this)); - _listen_thread = boost::thread (boost::bind(&EncodeServerFinder::listen_thread, this)); + _search_thread = boost::thread(boost::bind(&EncodeServerFinder::search_thread, this)); + _listen_thread = boost::thread(boost::bind(&EncodeServerFinder::listen_thread, this)); #ifdef DCPOMATIC_LINUX - pthread_setname_np (_search_thread.native_handle(), "encode-server-search"); - pthread_setname_np (_listen_thread.native_handle(), "encode-server-listen"); + pthread_setname_np(_search_thread.native_handle(), "encode-server-search"); + pthread_setname_np(_listen_thread.native_handle(), "encode-server-listen"); #endif } -EncodeServerFinder::~EncodeServerFinder () +EncodeServerFinder::~EncodeServerFinder() { - stop (); + stop(); } void -EncodeServerFinder::stop () +EncodeServerFinder::stop() { boost::this_thread::disable_interruption dis; _stop = true; - _search_condition.notify_all (); + _search_condition.notify_all(); try { _search_thread.join(); } catch (...) {} _listen_io_context.stop(); try { - _listen_thread.join (); + _listen_thread.join(); } catch (...) {} - boost::mutex::scoped_lock lm (_servers_mutex); - _servers.clear (); + boost::mutex::scoped_lock lm(_servers_mutex); + _servers.clear(); } void -EncodeServerFinder::search_thread () +EncodeServerFinder::search_thread() try { - start_of_thread ("EncodeServerFinder-search"); + start_of_thread("EncodeServerFinder-search"); boost::system::error_code error; dcpomatic::io_context io_context; boost::asio::ip::udp::socket socket(io_context); - socket.open (boost::asio::ip::udp::v4(), error); + socket.open(boost::asio::ip::udp::v4(), error); if (error) { - throw NetworkError ("failed to set up broadcast socket"); + throw NetworkError("failed to set up broadcast socket"); } - socket.set_option (boost::asio::ip::udp::socket::reuse_address(true)); - socket.set_option (boost::asio::socket_base::broadcast(true)); + socket.set_option(boost::asio::ip::udp::socket::reuse_address(true)); + socket.set_option(boost::asio::socket_base::broadcast(true)); string const data = DCPOMATIC_HELLO; int const interval = 10; @@ -125,8 +125,8 @@ try if (Config::instance()->use_any_servers()) { /* Broadcast to look for servers */ try { - boost::asio::ip::udp::endpoint end_point (boost::asio::ip::address_v4::broadcast(), HELLO_PORT); - socket.send_to (boost::asio::buffer(data.c_str(), data.size() + 1), end_point); + boost::asio::ip::udp::endpoint end_point(boost::asio::ip::address_v4::broadcast(), HELLO_PORT); + socket.send_to(boost::asio::buffer(data.c_str(), data.size() + 1), end_point); } catch (...) { } @@ -152,14 +152,14 @@ try /* Discard servers that we haven't seen for a while */ bool removed = false; { - boost::mutex::scoped_lock lm (_servers_mutex); + boost::mutex::scoped_lock lm(_servers_mutex); auto i = _servers.begin(); while (i != _servers.end()) { if (i->last_seen_seconds() > 2 * interval) { auto j = i; ++j; - _servers.erase (i); + _servers.erase(i); i = j; removed = true; } else { @@ -169,49 +169,49 @@ try } if (removed) { - emit (boost::bind(boost::ref(ServersListChanged))); + emit(boost::bind(boost::ref(ServersListChanged))); } - boost::mutex::scoped_lock lm (_search_condition_mutex); - _search_condition.timed_wait (lm, boost::get_system_time() + boost::posix_time::seconds(interval)); + boost::mutex::scoped_lock lm(_search_condition_mutex); + _search_condition.timed_wait(lm, boost::get_system_time() + boost::posix_time::seconds(interval)); } } catch (...) { - store_current (); + store_current(); } void -EncodeServerFinder::listen_thread () +EncodeServerFinder::listen_thread() try { - start_of_thread ("EncodeServerFinder-listen"); + start_of_thread("EncodeServerFinder-listen"); using namespace boost::asio::ip; try { - _listen_acceptor.reset ( + _listen_acceptor.reset( new tcp::acceptor(_listen_io_context, tcp::endpoint(tcp::v4(), is_batch_converter ? BATCH_SERVER_PRESENCE_PORT : MAIN_SERVER_PRESENCE_PORT)) ); } catch (...) { boost::throw_exception(NetworkError(variant::insert_dcpomatic(_("Could not listen for remote encode servers. Perhaps another instance of {} is running.")))); } - start_accept (); + start_accept(); _listen_io_context.run(); } catch (...) { - store_current (); + store_current(); } void -EncodeServerFinder::start_accept () +EncodeServerFinder::start_accept() { _accept_socket = make_shared<Socket>(); - _listen_acceptor->async_accept ( + _listen_acceptor->async_accept( _accept_socket->socket(), boost::bind(&EncodeServerFinder::handle_accept, this, boost::asio::placeholders::error) ); @@ -219,10 +219,10 @@ EncodeServerFinder::start_accept () void -EncodeServerFinder::handle_accept (boost::system::error_code ec) +EncodeServerFinder::handle_accept(boost::system::error_code ec) { if (ec) { - start_accept (); + start_accept(); return; } @@ -230,8 +230,8 @@ EncodeServerFinder::handle_accept (boost::system::error_code ec) try { uint32_t length; - _accept_socket->read (reinterpret_cast<uint8_t*>(&length), sizeof(uint32_t)); - length = ntohl (length); + _accept_socket->read(reinterpret_cast<uint8_t*>(&length), sizeof(uint32_t)); + length = ntohl(length); if (length > 65536) { start_accept(); @@ -239,7 +239,7 @@ EncodeServerFinder::handle_accept (boost::system::error_code ec) } scoped_array<char> buffer(new char[length]); - _accept_socket->read (reinterpret_cast<uint8_t*>(buffer.get()), length); + _accept_socket->read(reinterpret_cast<uint8_t*>(buffer.get()), length); server_available = buffer.get(); } catch (NetworkError&) { /* Maybe the server went away; let's just try again */ @@ -253,7 +253,7 @@ EncodeServerFinder::handle_accept (boost::system::error_code ec) auto const ip = _accept_socket->socket().remote_endpoint().address().to_string(); bool changed = false; { - boost::mutex::scoped_lock lm (_servers_mutex); + boost::mutex::scoped_lock lm(_servers_mutex); auto i = _servers.begin(); while (i != _servers.end() && i->host_name() != ip) { ++i; @@ -262,26 +262,26 @@ EncodeServerFinder::handle_accept (boost::system::error_code ec) if (i != _servers.end()) { i->set_seen(); } else { - EncodeServerDescription sd (ip, xml->number_child<int>("Threads"), xml->optional_number_child<int>("Version").get_value_or(0)); - _servers.push_back (sd); + EncodeServerDescription sd(ip, xml->number_child<int>("Threads"), xml->optional_number_child<int>("Version").get_value_or(0)); + _servers.push_back(sd); changed = true; } } if (changed) { - emit (boost::bind(boost::ref (ServersListChanged))); + emit(boost::bind(boost::ref(ServersListChanged))); } - start_accept (); + start_accept(); } EncodeServerFinder* -EncodeServerFinder::instance () +EncodeServerFinder::instance() { if (!_instance) { - _instance = new EncodeServerFinder (); - _instance->start (); + _instance = new EncodeServerFinder(); + _instance->start(); } return _instance; @@ -289,7 +289,7 @@ EncodeServerFinder::instance () void -EncodeServerFinder::drop () +EncodeServerFinder::drop() { delete _instance; _instance = nullptr; @@ -297,22 +297,22 @@ EncodeServerFinder::drop () list<EncodeServerDescription> -EncodeServerFinder::servers () const +EncodeServerFinder::servers() const { - boost::mutex::scoped_lock lm (_servers_mutex); + boost::mutex::scoped_lock lm(_servers_mutex); return _servers; } void -EncodeServerFinder::config_changed (Config::Property what) +EncodeServerFinder::config_changed(Config::Property what) { if (what == Config::USE_ANY_SERVERS || what == Config::SERVERS) { { - boost::mutex::scoped_lock lm (_servers_mutex); - _servers.clear (); + boost::mutex::scoped_lock lm(_servers_mutex); + _servers.clear(); } - ServersListChanged (); - _search_condition.notify_all (); + ServersListChanged(); + _search_condition.notify_all(); } } diff --git a/src/lib/encode_server_finder.h b/src/lib/encode_server_finder.h index 722786b77..ae83b9609 100644 --- a/src/lib/encode_server_finder.h +++ b/src/lib/encode_server_finder.h @@ -47,28 +47,28 @@ class Socket; class EncodeServerFinder : public Signaller, public ExceptionStore { public: - static EncodeServerFinder* instance (); - static void drop (); + static EncodeServerFinder* instance(); + static void drop(); - std::list<EncodeServerDescription> servers () const; + std::list<EncodeServerDescription> servers() const; /** Emitted whenever the list of servers changes */ boost::signals2::signal<void ()> ServersListChanged; private: - EncodeServerFinder (); - ~EncodeServerFinder (); + EncodeServerFinder(); + ~EncodeServerFinder(); - void start (); - void stop (); + void start(); + void stop(); - void search_thread (); - void listen_thread (); + void search_thread(); + void listen_thread(); - void start_accept (); - void handle_accept (boost::system::error_code ec); + void start_accept(); + void handle_accept(boost::system::error_code ec); - void config_changed (Config::Property what); + void config_changed(Config::Property what); /** Thread to periodically issue broadcasts and requests to find encoding servers */ boost::thread _search_thread; diff --git a/src/lib/ffmpeg.cc b/src/lib/ffmpeg.cc index d7c741d09..50e4cf41d 100644 --- a/src/lib/ffmpeg.cc +++ b/src/lib/ffmpeg.cc @@ -54,68 +54,68 @@ using namespace dcpomatic; boost::mutex FFmpeg::_mutex; -FFmpeg::FFmpeg (std::shared_ptr<const FFmpegContent> c) - : _ffmpeg_content (c) +FFmpeg::FFmpeg(std::shared_ptr<const FFmpegContent> c) + : _ffmpeg_content(c) { - setup_general (); - setup_decoders (); + setup_general(); + setup_decoders(); } -FFmpeg::~FFmpeg () +FFmpeg::~FFmpeg() { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); for (auto& i: _codec_context) { - avcodec_free_context (&i); + avcodec_free_context(&i); } - av_frame_free (&_video_frame); + av_frame_free(&_video_frame); for (auto& audio_frame: _audio_frame) { - av_frame_free (&audio_frame.second); + av_frame_free(&audio_frame.second); } - avformat_close_input (&_format_context); + avformat_close_input(&_format_context); } static int -avio_read_wrapper (void* data, uint8_t* buffer, int amount) +avio_read_wrapper(void* data, uint8_t* buffer, int amount) { - return reinterpret_cast<FFmpeg*>(data)->avio_read (buffer, amount); + return reinterpret_cast<FFmpeg*>(data)->avio_read(buffer, amount); } static int64_t -avio_seek_wrapper (void* data, int64_t offset, int whence) +avio_seek_wrapper(void* data, int64_t offset, int whence) { - return reinterpret_cast<FFmpeg*>(data)->avio_seek (offset, whence); + return reinterpret_cast<FFmpeg*>(data)->avio_seek(offset, whence); } void -FFmpeg::setup_general () +FFmpeg::setup_general() { - _file_group.set_paths (_ffmpeg_content->paths ()); - _avio_buffer = static_cast<uint8_t*> (wrapped_av_malloc(_avio_buffer_size)); - _avio_context = avio_alloc_context (_avio_buffer, _avio_buffer_size, 0, this, avio_read_wrapper, 0, avio_seek_wrapper); + _file_group.set_paths(_ffmpeg_content->paths()); + _avio_buffer = static_cast<uint8_t*>(wrapped_av_malloc(_avio_buffer_size)); + _avio_context = avio_alloc_context(_avio_buffer, _avio_buffer_size, 0, this, avio_read_wrapper, 0, avio_seek_wrapper); if (!_avio_context) { - throw std::bad_alloc (); + throw std::bad_alloc(); } - _format_context = avformat_alloc_context (); + _format_context = avformat_alloc_context(); if (!_format_context) { - throw std::bad_alloc (); + throw std::bad_alloc(); } _format_context->pb = _avio_context; AVDictionary* options = nullptr; - int e = avformat_open_input (&_format_context, 0, 0, &options); + int e = avformat_open_input(&_format_context, 0, 0, &options); if (e < 0) { - throw OpenFileError (_ffmpeg_content->path(0).string(), e, OpenFileError::READ); + throw OpenFileError(_ffmpeg_content->path(0).string(), e, OpenFileError::READ); } - if (avformat_find_stream_info (_format_context, 0) < 0) { - throw DecodeError (_("could not find stream information")); + if (avformat_find_stream_info(_format_context, 0) < 0) { + throw DecodeError(_("could not find stream information")); } /* Find video stream */ @@ -147,15 +147,15 @@ FFmpeg::setup_general () _video_stream = video_stream_undefined_frame_rate.get(); } - _video_frame = av_frame_alloc (); + _video_frame = av_frame_alloc(); if (_video_frame == nullptr) { - throw std::bad_alloc (); + throw std::bad_alloc(); } } void -FFmpeg::setup_decoders () +FFmpeg::setup_decoders() { for (uint32_t i = 0; i < _format_context->nb_streams; ++i) { setup_decoder(i); @@ -166,7 +166,7 @@ FFmpeg::setup_decoders () void FFmpeg::setup_decoder(int stream_index) { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); if (stream_index >= static_cast<int>(_codec_context.size())) { _codec_context.resize(stream_index + 1); @@ -211,7 +211,7 @@ FFmpeg::setup_decoder(int stream_index) AVCodecContext * -FFmpeg::video_codec_context () const +FFmpeg::video_codec_context() const { if (!_video_stream) { return nullptr; @@ -222,7 +222,7 @@ FFmpeg::video_codec_context () const AVCodecContext * -FFmpeg::subtitle_codec_context () const +FFmpeg::subtitle_codec_context() const { auto str = _ffmpeg_content->subtitle_stream(); if (!str) { @@ -234,7 +234,7 @@ FFmpeg::subtitle_codec_context () const int -FFmpeg::avio_read (uint8_t* buffer, int const amount) +FFmpeg::avio_read(uint8_t* buffer, int const amount) { auto result = _file_group.read(buffer, amount); if (result.eof && result.bytes_read == 0) { @@ -245,20 +245,20 @@ FFmpeg::avio_read (uint8_t* buffer, int const amount) int64_t -FFmpeg::avio_seek (int64_t const pos, int whence) +FFmpeg::avio_seek(int64_t const pos, int whence) { if (whence == AVSEEK_SIZE) { - return _file_group.length (); + return _file_group.length(); } - return _file_group.seek (pos, whence); + return _file_group.seek(pos, whence); } FFmpegSubtitlePeriod -FFmpeg::subtitle_period (AVPacket const* packet, AVStream const* stream, AVSubtitle const & sub) +FFmpeg::subtitle_period(AVPacket const* packet, AVStream const* stream, AVSubtitle const & sub) { - auto const packet_time = ContentTime::from_seconds (packet->pts * av_q2d(stream->time_base)); + auto const packet_time = ContentTime::from_seconds(packet->pts * av_q2d(stream->time_base)); auto const start = packet_time + ContentTime::from_seconds(sub.start_display_time / 1e3); if (sub.end_display_time == 0 || sub.end_display_time == static_cast<uint32_t>(-1)) { @@ -270,7 +270,7 @@ FFmpeg::subtitle_period (AVPacket const* packet, AVStream const* stream, AVSubti } } - return FFmpegSubtitlePeriod (start, packet_time + ContentTime::from_seconds(sub.end_display_time / 1e3)); + return FFmpegSubtitlePeriod(start, packet_time + ContentTime::from_seconds(sub.end_display_time / 1e3)); } @@ -280,7 +280,7 @@ FFmpeg::subtitle_period (AVPacket const* packet, AVStream const* stream, AVSubti * in FFmpeg. */ ContentTime -FFmpeg::pts_offset (vector<shared_ptr<FFmpegAudioStream>> audio_streams, optional<ContentTime> first_video, double video_frame_rate) const +FFmpeg::pts_offset(vector<shared_ptr<FFmpegAudioStream>> audio_streams, optional<ContentTime> first_video, double video_frame_rate) const { /* Audio and video frame PTS values may not start with 0. We want to fiddle them so that: @@ -298,15 +298,15 @@ FFmpeg::pts_offset (vector<shared_ptr<FFmpegAudioStream>> audio_streams, optiona /* First, make one of them start at 0 */ - auto po = ContentTime::min (); + auto po = ContentTime::min(); if (first_video) { - po = - first_video.get (); + po = - first_video.get(); } for (auto i: audio_streams) { if (i->first_audio) { - po = max (po, - i->first_audio.get ()); + po = max(po, - i->first_audio.get()); } } @@ -316,14 +316,14 @@ FFmpeg::pts_offset (vector<shared_ptr<FFmpegAudioStream>> audio_streams, optiona I don't think we ever want to do that, as it seems things at -ve PTS are not meant to be seen (use for alignment bars etc.); see mantis #418. */ - if (po > ContentTime ()) { - po = ContentTime (); + if (po > ContentTime()) { + po = ContentTime(); } /* Now adjust so that the video pts starts on a frame */ if (first_video) { auto const fvc = first_video.get() + po; - po += fvc.ceil (video_frame_rate) - fvc; + po += fvc.ceil(video_frame_rate) - fvc; } return po; @@ -331,14 +331,14 @@ FFmpeg::pts_offset (vector<shared_ptr<FFmpegAudioStream>> audio_streams, optiona AVFrame * -FFmpeg::audio_frame (shared_ptr<const FFmpegAudioStream> stream) +FFmpeg::audio_frame(shared_ptr<const FFmpegAudioStream> stream) { auto iter = _audio_frame.find(stream); if (iter != _audio_frame.end()) { return iter->second; } - auto frame = av_frame_alloc (); + auto frame = av_frame_alloc(); if (frame == nullptr) { throw std::bad_alloc(); } diff --git a/src/lib/ffmpeg.h b/src/lib/ffmpeg.h index 63446e5cd..f64f7c7bc 100644 --- a/src/lib/ffmpeg.h +++ b/src/lib/ffmpeg.h @@ -47,25 +47,25 @@ class Log; class FFmpeg { public: - explicit FFmpeg (std::shared_ptr<const FFmpegContent>); - virtual ~FFmpeg (); + explicit FFmpeg(std::shared_ptr<const FFmpegContent>); + virtual ~FFmpeg(); - std::shared_ptr<const FFmpegContent> ffmpeg_content () const { + std::shared_ptr<const FFmpegContent> ffmpeg_content() const { return _ffmpeg_content; } - int avio_read (uint8_t *, int); - int64_t avio_seek (int64_t, int); + int avio_read(uint8_t *, int); + int64_t avio_seek(int64_t, int); protected: - AVCodecContext* video_codec_context () const; - AVCodecContext* subtitle_codec_context () const; - dcpomatic::ContentTime pts_offset ( + AVCodecContext* video_codec_context() const; + AVCodecContext* subtitle_codec_context() const; + dcpomatic::ContentTime pts_offset( std::vector<std::shared_ptr<FFmpegAudioStream>> audio_streams, boost::optional<dcpomatic::ContentTime> first_video, double video_frame_rate ) const; void setup_decoder(int stream_index); - static FFmpegSubtitlePeriod subtitle_period (AVPacket const* packet, AVStream const* stream, AVSubtitle const & sub); + static FFmpegSubtitlePeriod subtitle_period(AVPacket const* packet, AVStream const* stream, AVSubtitle const & sub); std::shared_ptr<const FFmpegContent> _ffmpeg_content; @@ -82,7 +82,7 @@ protected: /** Index of video stream within AVFormatContext */ boost::optional<int> _video_stream; - AVFrame* audio_frame (std::shared_ptr<const FFmpegAudioStream> stream); + AVFrame* audio_frame(std::shared_ptr<const FFmpegAudioStream> stream); /* It would appear (though not completely verified) that one must have a mutex around calls to avcodec_open* and avcodec_close... and here @@ -91,8 +91,8 @@ protected: static boost::mutex _mutex; private: - void setup_general (); - void setup_decoders (); + void setup_general(); + void setup_decoders(); /** AVFrames used for decoding audio streams; accessed with audio_frame() */ std::map<std::shared_ptr<const FFmpegAudioStream>, AVFrame*> _audio_frame; diff --git a/src/lib/ffmpeg_audio_stream.cc b/src/lib/ffmpeg_audio_stream.cc index e0da3a22d..f56e04753 100644 --- a/src/lib/ffmpeg_audio_stream.cc +++ b/src/lib/ffmpeg_audio_stream.cc @@ -42,8 +42,7 @@ FFmpegAudioStream::FFmpegAudioStream (cxml::ConstNodePtr node, int version) node->optional_number_child<int>("BitDepth") ) { - optional<ContentTime::Type> const f = node->optional_number_child<ContentTime::Type>("FirstAudio"); - if (f) { + if (auto f = node->optional_number_child<ContentTime::Type>("FirstAudio")) { first_audio = ContentTime(f.get()); } codec_name = node->optional_string_child("CodecName"); diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc index 322553586..3ab9bfb0c 100644 --- a/src/lib/ffmpeg_content.cc +++ b/src/lib/ffmpeg_content.cc @@ -421,7 +421,7 @@ FFmpegContent::full_length(shared_ptr<const Film> film) const if (audio) { DCPTime longest; for (auto i: audio->streams()) { - longest = max(longest, DCPTime::from_frames(llrint(i->length() / frc.speed_up), i->frame_rate())); + longest = max(longest, DCPTime::from_frames(llrint(i->length() / frc.speed_up()), i->frame_rate())); } return longest; } diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc index 0f38b3247..d37b59fa9 100644 --- a/src/lib/ffmpeg_decoder.cc +++ b/src/lib/ffmpeg_decoder.cc @@ -38,7 +38,9 @@ #include "frame_interval_checker.h" #include "image.h" #include "log.h" +#include "passthrough_packet_queue.h" #include "raw_image_proxy.h" +#include "subtitle_sync_packet_queue.h" #include "text_content.h" #include "text_decoder.h" #include "util.h" @@ -73,17 +75,17 @@ using dcp::Size; using namespace dcpomatic; -FFmpegDecoder::FFmpegDecoder (shared_ptr<const Film> film, shared_ptr<const FFmpegContent> c, bool fast) - : FFmpeg (c) - , Decoder (film) +FFmpegDecoder::FFmpegDecoder(shared_ptr<const Film> film, shared_ptr<const FFmpegContent> c, bool fast) + : FFmpeg(c) + , Decoder(film) , _filter_graphs(c->filters(), dcp::Fraction(lrint(_ffmpeg_content->video_frame_rate().get_value_or(24) * 1000), 1000)) { if (c->video && c->video->use()) { video = make_shared<VideoDecoder>(this, c); - _pts_offset = pts_offset (c->ffmpeg_audio_streams(), c->first_video(), c->active_video_frame_rate(film)); + _pts_offset = pts_offset(c->ffmpeg_audio_streams(), c->first_video(), c->active_video_frame_rate(film)); /* It doesn't matter what size or pixel format this is, it just needs to be black */ - _black_image = make_shared<Image>(AV_PIX_FMT_RGB24, dcp::Size (128, 128), Image::Alignment::PADDED); - _black_image->make_black (); + _black_image = make_shared<Image>(AV_PIX_FMT_RGB24, dcp::Size(128, 128), Image::Alignment::PADDED); + _black_image->make_black(); } else { _pts_offset = {}; } @@ -93,7 +95,7 @@ FFmpegDecoder::FFmpegDecoder (shared_ptr<const Film> film, shared_ptr<const FFmp } if (c->only_text()) { - text.push_back (make_shared<TextDecoder>(this, c->only_text())); + text.push_back(make_shared<TextDecoder>(this, c->only_text())); /* XXX: we should be calling maybe_set_position() on this TextDecoder, but we can't easily find * the time of the first subtitle at this point. */ @@ -104,15 +106,27 @@ FFmpegDecoder::FFmpegDecoder (shared_ptr<const Film> film, shared_ptr<const FFmp } _dropped_time.resize(_format_context->nb_streams); + + if (video && !text.empty()) { + _packet_queue.reset(new SubtitleSyncPacketQueue()); + } else { + _packet_queue.reset(new PassthroughPacketQueue()); + } } FFmpegDecoder::FlushResult -FFmpegDecoder::flush () +FFmpegDecoder::flush() { LOG_DEBUG_PLAYER("DEC: Flush FFmpeg decoder: current state {}", static_cast<int>(_flush_state)); switch (_flush_state) { + case FlushState::PACKET_QUEUE: + if (!process_from_packet_queue(true)) { + LOG_DEBUG_PLAYER("DEC: Finished flushing packets"); + _flush_state = FlushState::CODECS; + } + break; case FlushState::CODECS: if (flush_codecs() == FlushResult::DONE) { LOG_DEBUG_PLAYER("DEC: Finished flushing codecs"); @@ -151,14 +165,14 @@ FFmpegDecoder::flush_codecs() for (auto i: ffmpeg_content()->ffmpeg_audio_streams()) { auto context = _codec_context[i->index(_format_context)]; - int r = avcodec_send_packet (context, nullptr); + int r = avcodec_send_packet(context, nullptr); if (r < 0 && r != AVERROR_EOF) { /* EOF can happen if we've already sent a flush packet */ - throw DecodeError (N_("avcodec_send_packet"), N_("FFmpegDecoder::flush"), r); + throw DecodeError(N_("avcodec_send_packet"), N_("FFmpegDecoder::flush"), r); } - r = avcodec_receive_frame (context, audio_frame(i)); + r = avcodec_receive_frame(context, audio_frame(i)); if (r >= 0) { - process_audio_frame (i); + process_audio_frame(i); did_something = true; } } @@ -175,8 +189,8 @@ FFmpegDecoder::flush_fill() bool did_something = false; auto const frc = film()->active_frame_rate_change(_ffmpeg_content->position()); - ContentTime full_length (_ffmpeg_content->full_length(film()), frc); - full_length = full_length.ceil (frc.source); + ContentTime full_length(_ffmpeg_content->full_length(film()), frc); + full_length = full_length.ceil(frc.source()); if (video && !video->ignore()) { double const vfr = _ffmpeg_content->video_frame_rate().get(); auto const v = video->position(film()).get_value_or(ContentTime()) + ContentTime::from_frames(1, vfr); @@ -187,7 +201,7 @@ FFmpegDecoder::flush_fill() } if (audio && !audio->ignore()) { - for (auto i: _ffmpeg_content->ffmpeg_audio_streams ()) { + for (auto i: _ffmpeg_content->ffmpeg_audio_streams()) { auto const a = audio->stream_position(film(), i); /* Unfortunately if a is 0 that really means that we don't know the stream position since there has been no data on it since the last seek. In this case we'll just do nothing @@ -195,10 +209,10 @@ FFmpegDecoder::flush_fill() */ if (a > ContentTime() && a < full_length) { LOG_DEBUG_PLAYER("DEC: Flush inserts silence at {}", to_string(a)); - auto to_do = min (full_length - a, ContentTime::from_seconds (0.1)); - auto silence = make_shared<AudioBuffers>(i->channels(), to_do.frames_ceil (i->frame_rate())); - silence->make_silent (); - audio->emit (film(), i, silence, a, true); + auto to_do = min(full_length - a, ContentTime::from_seconds(0.1)); + auto silence = make_shared<AudioBuffers>(i->channels(), to_do.frames_ceil(i->frame_rate())); + silence->make_silent(); + audio->emit(film(), i, silence, a, true); did_something = true; } } @@ -209,12 +223,47 @@ FFmpegDecoder::flush_fill() bool -FFmpegDecoder::pass () +FFmpegDecoder::process_from_packet_queue(bool flushing) +{ + auto process = _packet_queue->get(flushing); + if (!process) { + return false; + } + + auto packet = boost::get<AVPacket*>(&process->first); + + switch (process->second) { + case PacketQueue::Type::VIDEO: + decode_and_process_video_packet(*packet); + break; + case PacketQueue::Type::SUBTITLE: + decode_and_process_subtitle_packet(*packet); + break; + case PacketQueue::Type::AUDIO: + decode_and_process_audio_packet(*packet); + break; + case PacketQueue::Type::DROP: + { + auto info = boost::get<PacketQueue::PacketInfo>(process->first); + DCPOMATIC_ASSERT(static_cast<int>(_dropped_time.size()) > info.stream_index); + _dropped_time[info.stream_index] = dcpomatic::ContentTime::from_seconds(info.dts * av_q2d(_format_context->streams[info.stream_index]->time_base) + _pts_offset.seconds()); + break; + } + } + + av_packet_free(packet); + + return true; +} + + +bool +FFmpegDecoder::pass() { auto packet = av_packet_alloc(); - DCPOMATIC_ASSERT (packet); + DCPOMATIC_ASSERT(packet); - int r = av_read_frame (_format_context, packet); + int r = av_read_frame(_format_context, packet); /* AVERROR_INVALIDDATA can apparently be returned sometimes even when av_read_frame has pretty-much succeeded (and hence generated data which should be processed). @@ -225,11 +274,11 @@ FFmpegDecoder::pass () if (r != AVERROR_EOF) { /* Maybe we should fail here, but for now we'll just finish off instead */ char buf[256]; - av_strerror (r, buf, sizeof(buf)); - LOG_ERROR (N_("error on av_read_frame ({}) ({})"), &buf[0], r); + av_strerror(r, buf, sizeof(buf)); + LOG_ERROR(N_("error on av_read_frame ({}) ({})"), &buf[0], r); } - av_packet_free (&packet); + av_packet_free(&packet); return flush() == FlushResult::DONE; } else if (r == AVERROR_INVALIDDATA) { LOG_DEBUG_PLAYER("DEC: av_read_frame gave INVALIDDATA but we carry on"); @@ -238,15 +287,21 @@ FFmpegDecoder::pass () int const si = packet->stream_index; auto fc = _ffmpeg_content; + optional<PacketQueue::Type> type; + if (_video_stream && si == _video_stream.get() && video && !video->ignore()) { - decode_and_process_video_packet (packet); + type = PacketQueue::Type::VIDEO; } else if (fc->subtitle_stream() && fc->subtitle_stream()->uses_index(_format_context, si) && !only_text()->ignore()) { - decode_and_process_subtitle_packet (packet); + type = PacketQueue::Type::SUBTITLE; } else if (audio) { - decode_and_process_audio_packet (packet); + type = PacketQueue::Type::AUDIO; } else { - DCPOMATIC_ASSERT(static_cast<int>(_dropped_time.size()) > si); - _dropped_time[si] = dcpomatic::ContentTime::from_seconds(packet->dts * av_q2d(_format_context->streams[si]->time_base) + _pts_offset.seconds()); + type = PacketQueue::Type::DROP; + } + + if (type) { + _packet_queue->add(packet, *type); + process_from_packet_queue(false); } if (_have_current_subtitle && _current_subtitle_to && position() > *_current_subtitle_to) { @@ -254,7 +309,6 @@ FFmpegDecoder::pass () _have_current_subtitle = false; } - av_packet_free (&packet); return false; } @@ -283,7 +337,7 @@ deinterleave_audio(AVFrame* frame) switch (format) { case AV_SAMPLE_FMT_U8: { - auto p = reinterpret_cast<uint8_t *> (frame->data[0]); + auto p = reinterpret_cast<uint8_t *>(frame->data[0]); int sample = 0; int channel = 0; for (int i = 0; i < total_samples; ++i) { @@ -300,7 +354,7 @@ deinterleave_audio(AVFrame* frame) case AV_SAMPLE_FMT_S16: { - auto p = reinterpret_cast<int16_t *> (frame->data[0]); + auto p = reinterpret_cast<int16_t *>(frame->data[0]); int sample = 0; int channel = 0; for (int i = 0; i < total_samples; ++i) { @@ -317,7 +371,7 @@ deinterleave_audio(AVFrame* frame) case AV_SAMPLE_FMT_S16P: { - auto p = reinterpret_cast<int16_t **> (frame->data); + auto p = reinterpret_cast<int16_t **>(frame->data); for (int i = 0; i < channels; ++i) { for (int j = 0; j < frames; ++j) { data[i][j] = static_cast<float>(p[i][j]) / (1 << 15); @@ -328,7 +382,7 @@ deinterleave_audio(AVFrame* frame) case AV_SAMPLE_FMT_S32: { - auto p = reinterpret_cast<int32_t *> (frame->data[0]); + auto p = reinterpret_cast<int32_t *>(frame->data[0]); int sample = 0; int channel = 0; for (int i = 0; i < total_samples; ++i) { @@ -345,7 +399,7 @@ deinterleave_audio(AVFrame* frame) case AV_SAMPLE_FMT_S32P: { - auto p = reinterpret_cast<int32_t **> (frame->data); + auto p = reinterpret_cast<int32_t **>(frame->data); for (int i = 0; i < channels; ++i) { for (int j = 0; j < frames; ++j) { data[i][j] = static_cast<float>(p[i][j]) / 2147483648; @@ -356,7 +410,7 @@ deinterleave_audio(AVFrame* frame) case AV_SAMPLE_FMT_FLT: { - auto p = reinterpret_cast<float*> (frame->data[0]); + auto p = reinterpret_cast<float*>(frame->data[0]); int sample = 0; int channel = 0; for (int i = 0; i < total_samples; ++i) { @@ -373,15 +427,15 @@ deinterleave_audio(AVFrame* frame) case AV_SAMPLE_FMT_FLTP: { - auto p = reinterpret_cast<float**> (frame->data); + auto p = reinterpret_cast<float**>(frame->data); for (int i = 0; i < channels; ++i) { - memcpy (data[i], p[i], frames * sizeof(float)); + memcpy(data[i], p[i], frames * sizeof(float)); } } break; default: - throw DecodeError (fmt::format(_("Unrecognised audio sample format ({})"), static_cast<int>(format))); + throw DecodeError(fmt::format(_("Unrecognised audio sample format ({})"), static_cast<int>(format))); } return audio; @@ -389,31 +443,32 @@ deinterleave_audio(AVFrame* frame) AVSampleFormat -FFmpegDecoder::audio_sample_format (shared_ptr<FFmpegAudioStream> stream) const +FFmpegDecoder::audio_sample_format(shared_ptr<FFmpegAudioStream> stream) const { return static_cast<AVSampleFormat>(stream->stream(_format_context)->codecpar->format); } int -FFmpegDecoder::bytes_per_audio_sample (shared_ptr<FFmpegAudioStream> stream) const +FFmpegDecoder::bytes_per_audio_sample(shared_ptr<FFmpegAudioStream> stream) const { - return av_get_bytes_per_sample (audio_sample_format (stream)); + return av_get_bytes_per_sample(audio_sample_format(stream)); } void -FFmpegDecoder::seek (ContentTime time, bool accurate) +FFmpegDecoder::seek(ContentTime time, bool accurate) { - Decoder::seek (time, accurate); + Decoder::seek(time, accurate); - _flush_state = FlushState::CODECS; + _flush_state = FlushState::PACKET_QUEUE; + _packet_queue->clear(); /* If we are doing an `accurate' seek, we need to use pre-roll, as we don't really know what the seek will give us. */ - auto pre_roll = accurate ? ContentTime::from_seconds (2) : ContentTime (0); + auto pre_roll = accurate ? ContentTime::from_seconds(2) : ContentTime(0); time -= pre_roll; /* XXX: it seems debatable whether PTS should be used here... @@ -431,18 +486,18 @@ FFmpegDecoder::seek (ContentTime time, bool accurate) stream = streams[0]->index(_format_context); } - DCPOMATIC_ASSERT (stream); + DCPOMATIC_ASSERT(stream); auto u = time - _pts_offset; - if (u < ContentTime ()) { - u = ContentTime (); + if (u < ContentTime()) { + u = ContentTime(); } auto seek = [&](int flag) { return av_seek_frame( _format_context, stream.get(), - u.seconds() / av_q2d (_format_context->streams[stream.get()]->time_base), + u.seconds() / av_q2d(_format_context->streams[stream.get()]->time_base), flag ); }; @@ -456,16 +511,16 @@ FFmpegDecoder::seek (ContentTime time, bool accurate) */ _filter_graphs.clear(); - if (video_codec_context ()) { - avcodec_flush_buffers (video_codec_context()); + if (video_codec_context()) { + avcodec_flush_buffers(video_codec_context()); } for (auto i: ffmpeg_content()->ffmpeg_audio_streams()) { - avcodec_flush_buffers (_codec_context[i->index(_format_context)]); + avcodec_flush_buffers(_codec_context[i->index(_format_context)]); } - if (subtitle_codec_context ()) { - avcodec_flush_buffers (subtitle_codec_context ()); + if (subtitle_codec_context()) { + avcodec_flush_buffers(subtitle_codec_context()); } _have_current_subtitle = false; @@ -481,7 +536,7 @@ FFmpegDecoder::seek (ContentTime time, bool accurate) shared_ptr<FFmpegAudioStream> -FFmpegDecoder::audio_stream_from_index (int index) const +FFmpegDecoder::audio_stream_from_index(int index) const { /* XXX: inefficient */ auto streams = ffmpeg_content()->ffmpeg_audio_streams(); @@ -490,7 +545,7 @@ FFmpegDecoder::audio_stream_from_index (int index) const ++stream; } - if (stream == streams.end ()) { + if (stream == streams.end()) { return {}; } @@ -499,9 +554,9 @@ FFmpegDecoder::audio_stream_from_index (int index) const void -FFmpegDecoder::process_audio_frame (shared_ptr<FFmpegAudioStream> stream) +FFmpegDecoder::process_audio_frame(shared_ptr<FFmpegAudioStream> stream) { - auto frame = audio_frame (stream); + auto frame = audio_frame(stream); auto data = deinterleave_audio(frame); auto const time_base = stream->stream(_format_context)->time_base; @@ -516,7 +571,7 @@ FFmpegDecoder::process_audio_frame (shared_ptr<FFmpegAudioStream> stream) ct = *_next_time[stream]; } } else { - ct = ContentTime::from_seconds ( + ct = ContentTime::from_seconds( frame->best_effort_timestamp * av_q2d(time_base)) + _pts_offset; @@ -534,14 +589,14 @@ FFmpegDecoder::process_audio_frame (shared_ptr<FFmpegAudioStream> stream) if (ct < ContentTime()) { /* Discard audio data that comes before time 0 */ - auto const remove = min (int64_t(data->frames()), (-ct).frames_ceil(double(stream->frame_rate()))); - data->move (data->frames() - remove, remove, 0); - data->set_frames (data->frames() - remove); - ct += ContentTime::from_frames (remove, stream->frame_rate()); + auto const remove = min(int64_t(data->frames()), (-ct).frames_ceil(double(stream->frame_rate()))); + data->move(data->frames() - remove, remove, 0); + data->set_frames(data->frames() - remove); + ct += ContentTime::from_frames(remove, stream->frame_rate()); } if (ct < ContentTime()) { - LOG_WARNING ( + LOG_WARNING( "Crazy timestamp {} for {} samples in stream {} (ts={} tb={}, off={})", to_string(ct), data->frames(), @@ -554,29 +609,29 @@ FFmpegDecoder::process_audio_frame (shared_ptr<FFmpegAudioStream> stream) /* Give this data provided there is some, and its time is sane */ if (ct >= ContentTime() && data->frames() > 0) { - audio->emit (film(), stream, data, ct); + audio->emit(film(), stream, data, ct); } } void -FFmpegDecoder::decode_and_process_audio_packet (AVPacket* packet) +FFmpegDecoder::decode_and_process_audio_packet(AVPacket* packet) { - auto stream = audio_stream_from_index (packet->stream_index); + auto stream = audio_stream_from_index(packet->stream_index); if (!stream) { return; } auto context = _codec_context[stream->index(_format_context)]; - auto frame = audio_frame (stream); + auto frame = audio_frame(stream); LOG_DEBUG_PLAYER("DEC: Send audio packet on stream {}", stream->index(_format_context)); - int r = avcodec_send_packet (context, packet); + int r = avcodec_send_packet(context, packet); if (r < 0) { LOG_WARNING("avcodec_send_packet returned {} for an audio packet", r); } while (r >= 0) { - r = avcodec_receive_frame (context, frame); + r = avcodec_receive_frame(context, frame); if (r == AVERROR(EAGAIN)) { /* More input is required */ LOG_DEBUG_PLAYER("DEC: EAGAIN after trying to receive audio frame"); @@ -587,22 +642,22 @@ FFmpegDecoder::decode_and_process_audio_packet (AVPacket* packet) * data to decode even if an error occurred. #352 may be related (though this was * when we were using an old version of the FFmpeg API). */ - process_audio_frame (stream); + process_audio_frame(stream); } } bool -FFmpegDecoder::decode_and_process_video_packet (AVPacket* packet) +FFmpegDecoder::decode_and_process_video_packet(AVPacket* packet) { - DCPOMATIC_ASSERT (_video_stream); + DCPOMATIC_ASSERT(_video_stream); auto context = video_codec_context(); bool pending = false; do { LOG_DEBUG_PLAYER("DEC: Send video packet"); - int r = avcodec_send_packet (context, packet); + int r = avcodec_send_packet(context, packet); if (r < 0) { LOG_WARNING("avcodec_send_packet returned {} for a video packet", r); } @@ -611,17 +666,17 @@ FFmpegDecoder::decode_and_process_video_packet (AVPacket* packet) pending = r == AVERROR(EAGAIN); while (true) { - r = avcodec_receive_frame (context, _video_frame); + r = avcodec_receive_frame(context, _video_frame); if (r == AVERROR(EAGAIN) || r == AVERROR_EOF || (r < 0 && !packet)) { /* More input is required, no more frames are coming, or we are flushing and there was * some error which we just want to ignore. */ return false; } else if (r < 0) { - throw DecodeError (N_("avcodec_receive_frame"), N_("FFmpeg::decode_and_process_video_packet"), r); + throw DecodeError(N_("avcodec_receive_frame"), N_("FFmpeg::decode_and_process_video_packet"), r); } - process_video_frame (); + process_video_frame(); } } while (pending); @@ -630,10 +685,10 @@ FFmpegDecoder::decode_and_process_video_packet (AVPacket* packet) void -FFmpegDecoder::process_video_frame () +FFmpegDecoder::process_video_frame() { auto graph = _filter_graphs.get(dcp::Size(_video_frame->width, _video_frame->height), static_cast<AVPixelFormat>(_video_frame->format)); - auto images = graph->process (_video_frame); + auto images = graph->process(_video_frame); for (auto const& i: images) { @@ -643,20 +698,20 @@ FFmpegDecoder::process_video_frame () double const pts = i.second * av_q2d(_format_context->streams[_video_stream.get()]->time_base) + _pts_offset.seconds(); LOG_DEBUG_PLAYER("DEC: Process video with timestamp {}", to_string(ContentTime::from_seconds(pts))) - video->emit ( + video->emit( film(), make_shared<RawImageProxy>(image), ContentTime::from_seconds(pts) ); } else { - LOG_WARNING ("Dropping frame without PTS"); + LOG_WARNING("Dropping frame without PTS"); } } } void -FFmpegDecoder::decode_and_process_subtitle_packet (AVPacket* packet) +FFmpegDecoder::decode_and_process_subtitle_packet(AVPacket* packet) { auto context = subtitle_codec_context(); if (!context) { @@ -669,21 +724,21 @@ FFmpegDecoder::decode_and_process_subtitle_packet (AVPacket* packet) return; } - auto sub_period = subtitle_period (packet, ffmpeg_content()->subtitle_stream()->stream(_format_context), sub); + auto sub_period = subtitle_period(packet, ffmpeg_content()->subtitle_stream()->stream(_format_context), sub); /* Stop any current subtitle, either at the time it was supposed to stop, or now if now is sooner */ if (_have_current_subtitle) { if (_current_subtitle_to) { - only_text()->emit_stop (min(*_current_subtitle_to, sub_period.from + _pts_offset)); + only_text()->emit_stop(min(*_current_subtitle_to, sub_period.from + _pts_offset)); } else { - only_text()->emit_stop (sub_period.from + _pts_offset); + only_text()->emit_stop(sub_period.from + _pts_offset); } _have_current_subtitle = false; } if (sub.num_rects <= 0) { /* Nothing new in this subtitle */ - avsubtitle_free (&sub); + avsubtitle_free(&sub); return; } @@ -713,7 +768,7 @@ FFmpegDecoder::decode_and_process_subtitle_packet (AVPacket* packet) cout << "XXX: SUBTITLE_TEXT " << rect->text << "\n"; break; case SUBTITLE_ASS: - process_ass_subtitle (rect->ass, from); + process_ass_subtitle(rect->ass, from); break; } } @@ -722,17 +777,17 @@ FFmpegDecoder::decode_and_process_subtitle_packet (AVPacket* packet) only_text()->emit_bitmap_start(bitmap_text); } - avsubtitle_free (&sub); + avsubtitle_free(&sub); } BitmapText -FFmpegDecoder::process_bitmap_subtitle (AVSubtitleRect const * rect) +FFmpegDecoder::process_bitmap_subtitle(AVSubtitleRect const * rect) { /* Note BGRA is expressed little-endian, so the first byte in the word is B, second G, third R, fourth A. */ - auto image = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size (rect->w, rect->h), Image::Alignment::PADDED); + auto image = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size(rect->w, rect->h), Image::Alignment::PADDED); #ifdef DCPOMATIC_HAVE_AVSUBTITLERECT_PICT /* Start of the first line in the subtitle */ @@ -753,11 +808,11 @@ FFmpegDecoder::process_bitmap_subtitle (AVSubtitleRect const * rect) chosen by the user; created a `mapped' palette from those settings. */ auto colour_map = ffmpeg_content()->subtitle_stream()->colours(); - vector<RGBA> mapped_palette (rect->nb_colors); + vector<RGBA> mapped_palette(rect->nb_colors); for (int i = 0; i < rect->nb_colors; ++i) { - RGBA c (palette[2], palette[1], palette[0], palette[3]); - auto j = colour_map.find (c); - if (j != colour_map.end ()) { + RGBA c(palette[2], palette[1], palette[0], palette[3]); + auto j = colour_map.find(c); + if (j != colour_map.end()) { mapped_palette[i] = j->second; } else { /* This colour was not found in the FFmpegSubtitleStream's colour map; probably because @@ -815,7 +870,7 @@ FFmpegDecoder::process_bitmap_subtitle (AVSubtitleRect const * rect) DCPOMATIC_ASSERT(target_width > 0); DCPOMATIC_ASSERT(target_height > 0); - dcpomatic::Rect<double> const scaled_rect ( + dcpomatic::Rect<double> const scaled_rect( static_cast<double>(rect->x + x_offset) / target_width, static_cast<double>(rect->y + y_offset) / target_height, static_cast<double>(rect->w) / target_width, @@ -827,7 +882,7 @@ FFmpegDecoder::process_bitmap_subtitle (AVSubtitleRect const * rect) void -FFmpegDecoder::process_ass_subtitle (string ass, ContentTime from) +FFmpegDecoder::process_ass_subtitle(string ass, ContentTime from) { /* We have no styles and no Format: line, so I'm assuming that FFmpeg produces a single format of Dialogue: lines... @@ -843,7 +898,7 @@ FFmpegDecoder::process_ass_subtitle (string ass, ContentTime from) } } - if (text.empty ()) { + if (text.empty()) { return; } @@ -854,7 +909,7 @@ FFmpegDecoder::process_ass_subtitle (string ass, ContentTime from) auto const raw = sub::SSAReader::parse_line({}, text, context); for (auto const& i: sub::collect<vector<sub::Subtitle>>(raw)) { - only_text()->emit_plain_start (from, i); + only_text()->emit_plain_start(from, i); } } diff --git a/src/lib/ffmpeg_decoder.h b/src/lib/ffmpeg_decoder.h index 022c5625b..795320280 100644 --- a/src/lib/ffmpeg_decoder.h +++ b/src/lib/ffmpeg_decoder.h @@ -27,6 +27,7 @@ #include "bitmap_text.h" #include "decoder.h" #include "ffmpeg.h" +#include "packet_queue.h" #include "video_filter_graph_set.h" extern "C" { #include <libavcodec/avcodec.h> @@ -39,6 +40,7 @@ class AudioBuffers; class FFmpegAudioStream; class Image; class Log; +class PacketQueue; class VideoFilterGraph; struct ffmpeg_pts_offset_test; @@ -49,10 +51,10 @@ struct ffmpeg_pts_offset_test; class FFmpegDecoder : public FFmpeg, public Decoder { public: - FFmpegDecoder (std::shared_ptr<const Film> film, std::shared_ptr<const FFmpegContent>, bool fast); + FFmpegDecoder(std::shared_ptr<const Film> film, std::shared_ptr<const FFmpegContent>, bool fast); - bool pass () override; - void seek (dcpomatic::ContentTime time, bool) override; + bool pass() override; + void seek(dcpomatic::ContentTime time, bool) override; dcpomatic::ContentTime position() const override; private: @@ -64,23 +66,24 @@ private: }; FlushResult flush(); + bool process_from_packet_queue(bool flushing); - AVSampleFormat audio_sample_format (std::shared_ptr<FFmpegAudioStream> stream) const; - int bytes_per_audio_sample (std::shared_ptr<FFmpegAudioStream> stream) const; + AVSampleFormat audio_sample_format(std::shared_ptr<FFmpegAudioStream> stream) const; + int bytes_per_audio_sample(std::shared_ptr<FFmpegAudioStream> stream) const; - std::shared_ptr<FFmpegAudioStream> audio_stream_from_index (int index) const; - void process_audio_frame (std::shared_ptr<FFmpegAudioStream> stream); + std::shared_ptr<FFmpegAudioStream> audio_stream_from_index(int index) const; + void process_audio_frame(std::shared_ptr<FFmpegAudioStream> stream); - void process_video_frame (); + void process_video_frame(); - bool decode_and_process_video_packet (AVPacket* packet); - void decode_and_process_audio_packet (AVPacket* packet); - void decode_and_process_subtitle_packet (AVPacket* packet); + bool decode_and_process_video_packet(AVPacket* packet); + void decode_and_process_audio_packet(AVPacket* packet); + void decode_and_process_subtitle_packet(AVPacket* packet); - BitmapText process_bitmap_subtitle (AVSubtitleRect const * rect); - void process_ass_subtitle (std::string ass, dcpomatic::ContentTime from); + BitmapText process_bitmap_subtitle(AVSubtitleRect const * rect); + void process_ass_subtitle(std::string ass, dcpomatic::ContentTime from); - void maybe_add_subtitle (); + void maybe_add_subtitle(); FlushResult flush_codecs(); FlushResult flush_fill(); @@ -97,12 +100,14 @@ private: std::map<std::shared_ptr<FFmpegAudioStream>, boost::optional<dcpomatic::ContentTime>> _next_time; enum class FlushState { + PACKET_QUEUE, CODECS, AUDIO_DECODER, FILL, }; - FlushState _flush_state = FlushState::CODECS; + FlushState _flush_state = FlushState::PACKET_QUEUE; std::vector<boost::optional<dcpomatic::ContentTime>> _dropped_time; + std::unique_ptr<PacketQueue> _packet_queue; }; diff --git a/src/lib/ffmpeg_examiner.cc b/src/lib/ffmpeg_examiner.cc index 6b60f6de3..48b354394 100644 --- a/src/lib/ffmpeg_examiner.cc +++ b/src/lib/ffmpeg_examiner.cc @@ -221,7 +221,7 @@ FFmpegExaminer::check_for_duplicate_ids() std::set<int> stream_ids; if (_video_stream) { - stream_ids.insert(*_video_stream); + stream_ids.insert(_format_context->streams[*_video_stream]->id); } for (auto stream: _audio_streams) { diff --git a/src/lib/file_group.cc b/src/lib/file_group.cc index 8ff684ed3..44ebe5075 100644 --- a/src/lib/file_group.cc +++ b/src/lib/file_group.cc @@ -37,42 +37,42 @@ using std::vector; /** Construct a FileGroup with no files */ -FileGroup::FileGroup () +FileGroup::FileGroup() { } /** Construct a FileGroup with a single file */ -FileGroup::FileGroup (boost::filesystem::path p) +FileGroup::FileGroup(boost::filesystem::path p) { - _paths.push_back (p); - ensure_open_path (0); - seek (0, SEEK_SET); + _paths.push_back(p); + ensure_open_path(0); + seek(0, SEEK_SET); } /** Construct a FileGroup with multiple files */ -FileGroup::FileGroup (vector<boost::filesystem::path> const & p) - : _paths (p) +FileGroup::FileGroup(vector<boost::filesystem::path> const & p) + : _paths(p) { - ensure_open_path (0); - seek (0, SEEK_SET); + ensure_open_path(0); + seek(0, SEEK_SET); } void -FileGroup::set_paths (vector<boost::filesystem::path> const & p) +FileGroup::set_paths(vector<boost::filesystem::path> const & p) { _paths = p; - ensure_open_path (0); - seek (0, SEEK_SET); + ensure_open_path(0); + seek(0, SEEK_SET); } /** Ensure that the given path index in the content is the _current_file */ void -FileGroup::ensure_open_path (size_t p) const +FileGroup::ensure_open_path(size_t p) const { if (_current_file && _current_path == p) { /* Already open */ @@ -95,7 +95,7 @@ FileGroup::ensure_open_path (size_t p) const int64_t -FileGroup::seek (int64_t pos, int whence) const +FileGroup::seek(int64_t pos, int whence) const { switch (whence) { case SEEK_SET: @@ -122,10 +122,10 @@ FileGroup::seek (int64_t pos, int whence) const } if (i < _paths.size()) { - ensure_open_path (i); + ensure_open_path(i); _current_file->seek(sub_pos, SEEK_SET); } else { - ensure_open_path (_paths.size() - 1); + ensure_open_path(_paths.size() - 1); _current_file->seek(_current_size, SEEK_SET); } @@ -138,9 +138,9 @@ FileGroup::seek (int64_t pos, int whence) const * @param amount Number of bytes to read. */ FileGroup::Result -FileGroup::read (uint8_t* buffer, int amount) const +FileGroup::read(uint8_t* buffer, int amount) const { - DCPOMATIC_ASSERT (_current_file); + DCPOMATIC_ASSERT(_current_file); int read = 0; while (true) { @@ -148,7 +148,7 @@ FileGroup::read (uint8_t* buffer, int amount) const bool eof = false; size_t to_read = amount - read; - DCPOMATIC_ASSERT (_current_file); + DCPOMATIC_ASSERT(_current_file); auto const current_position = _current_file->tell(); if (current_position == -1) { @@ -168,7 +168,7 @@ FileGroup::read (uint8_t* buffer, int amount) const } if (_current_file->error()) { - throw FileError (fmt::format("fread error {}", errno), _paths[_current_path]); + throw FileError(fmt::format("fread error {}", errno), _paths[_current_path]); } if (eof) { @@ -176,7 +176,7 @@ FileGroup::read (uint8_t* buffer, int amount) const if ((_current_path + 1) >= _paths.size()) { return { read, true }; } - ensure_open_path (_current_path + 1); + ensure_open_path(_current_path + 1); } } @@ -186,7 +186,7 @@ FileGroup::read (uint8_t* buffer, int amount) const /** @return Combined length of all the files */ int64_t -FileGroup::length () const +FileGroup::length() const { int64_t len = 0; for (size_t i = 0; i < _paths.size(); ++i) { diff --git a/src/lib/file_group.h b/src/lib/file_group.h index aac72c228..c16b50f89 100644 --- a/src/lib/file_group.h +++ b/src/lib/file_group.h @@ -40,14 +40,14 @@ class FileGroup { public: - FileGroup (); - explicit FileGroup (boost::filesystem::path); - explicit FileGroup (std::vector<boost::filesystem::path> const &); + FileGroup(); + explicit FileGroup(boost::filesystem::path); + explicit FileGroup(std::vector<boost::filesystem::path> const &); - FileGroup (FileGroup const&) = delete; - FileGroup& operator= (FileGroup const&) = delete; + FileGroup(FileGroup const&) = delete; + FileGroup& operator=(FileGroup const&) = delete; - void set_paths (std::vector<boost::filesystem::path> const &); + void set_paths(std::vector<boost::filesystem::path> const &); struct Result { Result(int bytes_read_, bool eof_) @@ -59,12 +59,12 @@ public: bool eof = false; }; - int64_t seek (int64_t, int) const; - Result read (uint8_t*, int) const; - int64_t length () const; + int64_t seek(int64_t, int) const; + Result read(uint8_t*, int) const; + int64_t length() const; private: - void ensure_open_path (size_t) const; + void ensure_open_path(size_t) const; std::vector<boost::filesystem::path> _paths; /** Index of path that we are currently reading from */ 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 3aef1e27e..09b51202c 100644 --- a/src/lib/film.h +++ b/src/lib/film.h @@ -19,7 +19,7 @@ */ -/** @file src/film.h +/** @file src/lib/film.h * @brief A representation of some audio and video content, and details of * how they should be presented in a DCP. */ @@ -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/frame_rate_change.cc b/src/lib/frame_rate_change.cc index 69296c970..6057f9ca3 100644 --- a/src/lib/frame_rate_change.cc +++ b/src/lib/frame_rate_change.cc @@ -31,74 +31,76 @@ using std::shared_ptr; using std::string; -FrameRateChange::FrameRateChange () +FrameRateChange::FrameRateChange() { } -FrameRateChange::FrameRateChange (double source_, int dcp_) +FrameRateChange::FrameRateChange(double source, int dcp) { - source = source_; - dcp = dcp_; + _source = source; + _dcp = dcp; - if (fabs(source / 2.0 - dcp) < fabs(source - dcp)) { + if (fabs(_source / 2.0 - _dcp) < fabs(_source - _dcp)) { /* The difference between source and DCP frame rate will be lower (i.e. better) if we skip. */ - skip = true; - } else if (fabs(source * 2 - dcp) < fabs(source - dcp)) { + _skip = round(source / dcp) - 1; + } else if (fabs(_source * 2 - _dcp) < fabs(_source - _dcp)) { /* The difference between source and DCP frame rate would be better if we repeated each frame once; it may be better still if we repeated more than once. Work out the required repeat. */ - repeat = round (dcp / source); + _repeat = round(_dcp / _source); } - speed_up = dcp / (source * factor()); + _speed_up = _dcp / (_source * factor()); auto about_equal = [](double a, double b) { - return (fabs (a - b) < VIDEO_FRAME_RATE_EPSILON); + return fabs(a - b) < VIDEO_FRAME_RATE_EPSILON; }; - change_speed = !about_equal (speed_up, 1.0); + _change_speed = !about_equal(_speed_up, 1.0); } -FrameRateChange::FrameRateChange (shared_ptr<const Film> film, shared_ptr<const Content> content) - : FrameRateChange (content->active_video_frame_rate(film), film->video_frame_rate()) +FrameRateChange::FrameRateChange(shared_ptr<const Film> film, shared_ptr<const Content> content) + : FrameRateChange(content->active_video_frame_rate(film), film->video_frame_rate()) { } -FrameRateChange::FrameRateChange (shared_ptr<const Film> film, Content const * content) - : FrameRateChange (content->active_video_frame_rate(film), film->video_frame_rate()) +FrameRateChange::FrameRateChange(shared_ptr<const Film> film, Content const * content) + : FrameRateChange(content->active_video_frame_rate(film), film->video_frame_rate()) { } string -FrameRateChange::description () const +FrameRateChange::description() const { string description; - if (!skip && repeat == 1 && !change_speed) { + if (_skip == 0 && _repeat == 1 && !_change_speed) { description = _("Content and DCP have the same rate.\n"); } else { - if (skip) { + if (_skip == 1) { description = _("DCP will use every other frame of the content.\n"); - } else if (repeat == 2) { + } else if (_skip >= 2) { + description = fmt::format(_("DCP will contain 1 out of every {} frames of the content.\n"), _skip + 1); + } else if (_repeat == 2) { description = _("Each content frame will be doubled in the DCP.\n"); - } else if (repeat > 2) { - description = fmt::format(_("Each content frame will be repeated {} more times in the DCP.\n"), repeat - 1); + } else if (_repeat > 2) { + description = fmt::format(_("Each content frame will be repeated {} more times in the DCP.\n"), _repeat - 1); } - if (change_speed) { - double const pc = dcp * 100 / (source * factor()); + if (_change_speed) { + double const pc = _dcp * 100 / (_source * factor()); char buffer[256]; - snprintf (buffer, sizeof(buffer), _("DCP will run at %.1f%% of the content speed.\n"), pc); + snprintf(buffer, sizeof(buffer), _("DCP will run at %.1f%% of the content speed.\n"), pc); description += buffer; } } diff --git a/src/lib/frame_rate_change.h b/src/lib/frame_rate_change.h index c28342e92..b58e499d8 100644 --- a/src/lib/frame_rate_change.h +++ b/src/lib/frame_rate_change.h @@ -27,36 +27,65 @@ #include <string> -class Film; class Content; +class Film; class FrameRateChange { public: - FrameRateChange (); - FrameRateChange (double, int); - FrameRateChange (std::shared_ptr<const Film> film, std::shared_ptr<const Content> content); - FrameRateChange (std::shared_ptr<const Film> film, Content const * content); + FrameRateChange(); + FrameRateChange(double, int); + FrameRateChange(std::shared_ptr<const Film> film, std::shared_ptr<const Content> content); + FrameRateChange(std::shared_ptr<const Film> film, Content const * content); /** @return factor by which to multiply a source frame rate to get the effective rate after any skip or repeat has happened. */ - double factor () const { - if (skip) { - return 0.5; + double factor() const { + if (_skip > 0) { + return 1.0 / (_skip + 1); } - return repeat; + return _repeat; } - double source = 24; - int dcp = 24; + std::string description() const; - /** true to skip every other frame */ - bool skip = false; + int skip() const { + return _skip; + } + + int repeat() const { + return _repeat; + } + + double speed_up() const { + return _speed_up; + } + + bool change_speed() const { + return _change_speed; + } + + double source() const { + return _source; + } + + int dcp() const { + return _dcp; + } + +private: + double _source = 24; + int _dcp = 24; + + /** Frames to skip between each one to use, e.g. + * 0 to skip no frames, 1 to skip every other one, 2 to skip 2 out of 3, etc. + */ + int _skip = 0; /** number of times to use each frame (e.g. 1 is normal, 2 means repeat each frame once, and so on) */ - int repeat = 1; + int _repeat = 1; /** true if this DCP will run its video faster or slower than the source * without taking into account `repeat' nor `skip'. * (e.g. change_speed will be true if @@ -66,14 +95,12 @@ public: * source is 15.00fps, DCP is 30fps * source is 12.50fps, DCP is 25fps) */ - bool change_speed = false; + bool _change_speed = false; /** Amount by which the video is being sped-up in the DCP; e.g. for a * 24fps source in a 25fps DCP this would be 25/24. */ - double speed_up = 1.0; - - std::string description () const; + double _speed_up = 1.0; }; diff --git a/src/lib/hints.cc b/src/lib/hints.cc index 99882ec0e..071e63761 100644 --- a/src/lib/hints.cc +++ b/src/lib/hints.cc @@ -44,16 +44,19 @@ #include <fmt/format.h> #include <boost/algorithm/string.hpp> #include <iostream> +#include <numeric> #include "i18n.h" using std::cout; using std::make_shared; +using std::map; using std::max; using std::shared_ptr; using std::string; using std::weak_ptr; +using std::vector; using boost::optional; using namespace dcpomatic; #if BOOST_VERSION >= 106100 @@ -227,7 +230,7 @@ Hints::check_speed_up() optional<double> lowest_speed_up; optional<double> highest_speed_up; for (auto i: film()->content()) { - double spu = film()->active_frame_rate_change(i->position()).speed_up; + double spu = film()->active_frame_rate_change(i->position()).speed_up(); if (!lowest_speed_up || spu < *lowest_speed_up) { lowest_speed_up = spu; } @@ -367,14 +370,6 @@ Hints::check_loudness() } -static -bool -subtitle_mxf_too_big(shared_ptr<dcp::TextAsset> asset) -{ - return asset && asset->file() && dcp::filesystem::file_size(*asset->file()) >= (MAX_TEXT_MXF_SIZE - SIZE_SLACK); -} - - void Hints::check_out_of_range_markers() { @@ -497,10 +492,6 @@ try hint(_("At least one of your subtitle lines has more than 79 characters. You should make each line 79 characters at most in length.")); } - bool ccap_xml_too_big = false; - bool ccap_mxf_too_big = false; - bool subs_mxf_too_big = false; - auto dcp_dir = film->dir("hints") / dcpomatic::get_process_id(); dcp::filesystem::remove_all(dcp_dir); @@ -509,31 +500,39 @@ try dcp::DCP dcp(dcp_dir); dcp.read(); DCPOMATIC_ASSERT(dcp.cpls().size() == 1); + optional<size_t> largest_ccap_xml; + optional<size_t> largest_ccap_mxf; + optional<size_t> largest_sub_mxf; for (auto reel: dcp.cpls()[0]->reels()) { for (auto ccap: reel->closed_captions()) { - if (ccap->asset() && ccap->asset()->xml_as_string().length() > static_cast<size_t>(MAX_CLOSED_CAPTION_XML_SIZE - SIZE_SLACK) && !ccap_xml_too_big) { - hint(_( - "At least one of your closed caption files' XML part is larger than " MAX_CLOSED_CAPTION_XML_SIZE_TEXT - ". You should divide the DCP into shorter reels." - )); - ccap_xml_too_big = true; - } - if (subtitle_mxf_too_big(ccap->asset()) && !ccap_mxf_too_big) { - hint(_( - "At least one of your closed caption files is larger than " MAX_TEXT_MXF_SIZE_TEXT - " in total. You should divide the DCP into shorter reels." - )); - ccap_mxf_too_big = true; + largest_ccap_xml = std::max(ccap->asset()->xml_as_string().length(), largest_ccap_xml.get_value_or(0)); + if (ccap->asset() && ccap->asset()->file()) { + largest_ccap_mxf = std::max(dcp::filesystem::file_size(*ccap->asset()->file()), static_cast<uintmax_t>(largest_ccap_mxf.get_value_or(0))); } } - if (reel->main_subtitle() && subtitle_mxf_too_big(reel->main_subtitle()->asset()) && !subs_mxf_too_big) { - hint(_( - "At least one of your subtitle files is larger than " MAX_TEXT_MXF_SIZE_TEXT " in total. " - "You should divide the DCP into shorter reels." - )); - subs_mxf_too_big = true; + if (reel->main_subtitle() && reel->main_subtitle()->asset() && reel->main_subtitle()->asset()->file()) { + largest_sub_mxf = std::max(dcp::filesystem::file_size(*reel->main_subtitle()->asset()->file()), static_cast<uintmax_t>(largest_sub_mxf.get_value_or(0))); } } + + if (largest_ccap_xml && *largest_ccap_xml > static_cast<size_t>(MAX_CLOSED_CAPTION_XML_SIZE - SIZE_SLACK)) { + hint(fmt::format(_( + "At least one of your closed caption files' XML part is larger than " MAX_CLOSED_CAPTION_XML_SIZE_TEXT + ". The largest XML part is {}KB. You should divide the DCP into shorter reels." + ), *largest_ccap_xml / 1000)); + } + if (largest_ccap_mxf && *largest_ccap_mxf >= (MAX_TEXT_MXF_SIZE - SIZE_SLACK)) { + hint(fmt::format(_( + "At least one of your closed caption files is larger than " MAX_TEXT_MXF_SIZE_TEXT + " in total. The largest file is {}MB. You should divide the DCP into shorter reels." + ), *largest_ccap_mxf / 1000000)); + } + if (largest_sub_mxf && *largest_sub_mxf >= (MAX_TEXT_MXF_SIZE - SIZE_SLACK)) { + hint(fmt::format(_( + "At least one of your subtitle files is larger than " MAX_TEXT_MXF_SIZE_TEXT " in total. " + "The largest file is {}MB. You should divide the DCP into shorter reels." + ), *largest_sub_mxf / 1000000)); + } dcp::filesystem::remove_all(dcp_dir); emit(boost::bind(boost::ref(Finished))); @@ -584,24 +583,42 @@ Hints::text(PlayerText text, TextType type, optional<DCPTextTrack> track, DCPTim void Hints::closed_caption(PlayerText text, DCPTimePeriod period) { - int lines = text.string.size(); - for (auto i: text.string) { - if (utf8_strlen(i.text()) > MAX_CLOSED_CAPTION_LENGTH) { - ++lines; - if (!_long_ccap) { - _long_ccap = true; - hint( - fmt::format( - "At least one of your closed caption lines has more than {} characters. " - "It is advisable to make each line {} characters at most in length.", - MAX_CLOSED_CAPTION_LENGTH, - MAX_CLOSED_CAPTION_LENGTH) - ); + map<float, vector<StringText>> lines; + for (auto const& line: text.string) { + bool added = false; + for (auto& existing: lines) { + if (std::abs(existing.first - line.v_position()) < dcp::ALIGN_EPSILON) { + existing.second.push_back(line); + added = true; } } + if (!added) { + lines[line.v_position()] = { line }; + } + } + + for (auto const& line: lines) { + int const length = std::accumulate( + line.second.begin(), + line.second.end(), + 0, + [](int acc, StringText const& text) { + return acc + dcp::utf8_strlen(text.text()); + }); + + if (length > MAX_CLOSED_CAPTION_LENGTH && !_long_ccap) { + _long_ccap = true; + hint( + fmt::format( + "At least one of your closed caption lines has more than {} characters. " + "It is advisable to make each line {} characters at most in length.", + MAX_CLOSED_CAPTION_LENGTH, + MAX_CLOSED_CAPTION_LENGTH) + ); + } } - if (!_too_many_ccap_lines && lines > MAX_CLOSED_CAPTION_LINES) { + if (!_too_many_ccap_lines && lines.size() > MAX_CLOSED_CAPTION_LINES) { hint(fmt::format(_("Some of your closed captions span more than {} lines, so they will be truncated."), MAX_CLOSED_CAPTION_LINES)); _too_many_ccap_lines = true; } diff --git a/src/lib/hints.h b/src/lib/hints.h index b17da2c99..78cc615d3 100644 --- a/src/lib/hints.h +++ b/src/lib/hints.h @@ -26,8 +26,8 @@ #include "signaller.h" #include "text_type.h" #include "weak_film.h" -#include <boost/atomic.hpp> #include <boost/signals2.hpp> +#include <atomic> #include <string> #include <vector> @@ -111,7 +111,7 @@ private: bool _very_long_subtitle = false; boost::optional<dcpomatic::DCPTimePeriod> _last_subtitle; - boost::atomic<bool> _stop; + std::atomic<bool> _stop; bool _disable_audio_analysis = false; }; diff --git a/src/lib/image.cc b/src/lib/image.cc index 51e894900..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; } @@ -1219,6 +1219,17 @@ Image::bytes_per_pixel(int component) const } #endif + if ( + _pixel_format == AV_PIX_FMT_0RGB || + _pixel_format == AV_PIX_FMT_RGB0 || + _pixel_format == AV_PIX_FMT_0BGR || + _pixel_format == AV_PIX_FMT_BGR0) { + /* Each pixel has an empty byte which we need to account for when allocating, + * otherwise we'll corrupt the image. + */ + bpp[3] = bpp[0]; + } + if ((d->flags & AV_PIX_FMT_FLAG_PLANAR) == 0) { /* Not planar; sum them up */ return bpp[0] + bpp[1] + bpp[2] + bpp[3]; @@ -1573,17 +1584,18 @@ Image::fade(float f) case AV_PIX_FMT_RGB48LE: /* 16-bit little-endian */ for (int c = 0; c < 3; ++c) { - int const stride_pixels = stride()[c] / 2; - int const line_size_pixels = line_size()[c] / 2; + /* Number of R, G, B values */ + int const stride_values = stride()[c] / 2; + int const line_size_values = line_size()[c] / 2; uint16_t* p = reinterpret_cast<uint16_t*>(data()[c]); int const lines = sample_size(c).height; for (int y = 0; y < lines; ++y) { uint16_t* q = p; - for (int x = 0; x < line_size_pixels; ++x) { - *q = int(float(*q) * f); + for (int x = 0; x < line_size_values; ++x) { + *q = int(*q * f); ++q; } - p += stride_pixels; + p += stride_values; } } break; diff --git a/src/lib/image_content.cc b/src/lib/image_content.cc index 8d3092196..4e9eff237 100644 --- a/src/lib/image_content.cc +++ b/src/lib/image_content.cc @@ -46,33 +46,33 @@ using boost::optional; using namespace dcpomatic; -ImageContent::ImageContent (boost::filesystem::path p) +ImageContent::ImageContent(boost::filesystem::path p) { video = make_shared<VideoContent>(this); if (dcp::filesystem::is_regular_file(p) && valid_image_file(p)) { - add_path (p); + add_path(p); } else { _path_to_scan = p; } - set_default_colour_conversion (); + set_default_colour_conversion(); } ImageContent::ImageContent(cxml::ConstNodePtr node, boost::optional<boost::filesystem::path> film_directory, int version) : Content(node, film_directory) { - video = VideoContent::from_xml (this, node, version, VideoRange::FULL); + video = VideoContent::from_xml(this, node, version, VideoRange::FULL); } string -ImageContent::summary () const +ImageContent::summary() const { - string s = path_summary () + " "; + string s = path_summary() + " "; /* Get the string() here so that the name does not have quotes around it */ - if (still ()) { + if (still()) { s += _("[still]"); } else { s += _("[moving images]"); @@ -83,12 +83,12 @@ ImageContent::summary () const string -ImageContent::technical_summary () const +ImageContent::technical_summary() const { string s = Content::technical_summary() + " - " + video->technical_summary() + " - "; - if (still ()) { + if (still()) { s += _("still"); } else { s += _("moving"); @@ -114,92 +114,92 @@ void ImageContent::examine(shared_ptr<const Film> film, shared_ptr<Job> job, bool tolerant) { if (_path_to_scan) { - job->sub (_("Scanning image files")); + job->sub(_("Scanning image files")); vector<boost::filesystem::path> paths; int n = 0; for (auto i: dcp::filesystem::directory_iterator(*_path_to_scan)) { if (dcp::filesystem::is_regular_file(i.path()) && valid_image_file(i.path())) { - paths.push_back (i.path()); + paths.push_back(i.path()); } ++n; if ((n % 1000) == 0) { - job->set_progress_unknown (); + job->set_progress_unknown(); } } if (paths.empty()) { - throw FileError (_("No valid image files were found in the folder."), *_path_to_scan); + throw FileError(_("No valid image files were found in the folder."), *_path_to_scan); } - sort (paths.begin(), paths.end(), ImageFilenameSorter()); - set_paths (paths); + sort(paths.begin(), paths.end(), ImageFilenameSorter()); + set_paths(paths); } Content::examine(film, job, tolerant); auto examiner = make_shared<ImageExaminer>(film, shared_from_this(), job); video->take_from_examiner(film, examiner); - set_default_colour_conversion (); + set_default_colour_conversion(); } DCPTime -ImageContent::full_length (shared_ptr<const Film> film) const +ImageContent::full_length(shared_ptr<const Film> film) const { - FrameRateChange const frc (film, shared_from_this()); - return DCPTime::from_frames (llrint(video->length_after_3d_combine() * frc.factor()), film->video_frame_rate()); + FrameRateChange const frc(film, shared_from_this()); + return DCPTime::from_frames(llrint(video->length_after_3d_combine() * frc.factor()), film->video_frame_rate()); } DCPTime -ImageContent::approximate_length () const +ImageContent::approximate_length() const { - return DCPTime::from_frames (video->length_after_3d_combine(), 24); + return DCPTime::from_frames(video->length_after_3d_combine(), 24); } string -ImageContent::identifier () const +ImageContent::identifier() const { char buffer[256]; - snprintf (buffer, sizeof(buffer), "%s_%s_%" PRId64, Content::identifier().c_str(), video->identifier().c_str(), video->length()); + snprintf(buffer, sizeof(buffer), "%s_%s_%" PRId64, Content::identifier().c_str(), video->identifier().c_str(), video->length()); return buffer; } bool -ImageContent::still () const +ImageContent::still() const { return number_of_paths() == 1; } void -ImageContent::set_default_colour_conversion () +ImageContent::set_default_colour_conversion() { for (auto i: paths()) { if (valid_j2k_file (i)) { /* We default to no colour conversion if we have JPEG2000 files */ - video->unset_colour_conversion (); + video->unset_colour_conversion(); return; } } - bool const s = still (); + bool const s = still(); - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); if (s) { - video->set_colour_conversion (PresetColourConversion::from_id ("srgb").conversion); + video->set_colour_conversion(PresetColourConversion::from_id("srgb").conversion); } else { - video->set_colour_conversion (PresetColourConversion::from_id ("rec709").conversion); + video->set_colour_conversion(PresetColourConversion::from_id("rec709").conversion); } } void -ImageContent::add_properties (shared_ptr<const Film> film, list<UserProperty>& p) const +ImageContent::add_properties(shared_ptr<const Film> film, list<UserProperty>& p) const { - Content::add_properties (film, p); - video->add_properties (p); + Content::add_properties(film, p); + video->add_properties(p); } diff --git a/src/lib/image_content.h b/src/lib/image_content.h index 4b3b13380..04318ae0d 100644 --- a/src/lib/image_content.h +++ b/src/lib/image_content.h @@ -26,20 +26,20 @@ class ImageContent : public Content { public: - ImageContent (boost::filesystem::path); - ImageContent (cxml::ConstNodePtr, boost::optional<boost::filesystem::path> film_directory, int); + ImageContent(boost::filesystem::path); + ImageContent(cxml::ConstNodePtr, boost::optional<boost::filesystem::path> film_directory, int); - std::shared_ptr<ImageContent> shared_from_this () { - return std::dynamic_pointer_cast<ImageContent> (Content::shared_from_this ()); + std::shared_ptr<ImageContent> shared_from_this() { + return std::dynamic_pointer_cast<ImageContent>(Content::shared_from_this()); }; - std::shared_ptr<const ImageContent> shared_from_this () const { - return std::dynamic_pointer_cast<const ImageContent> (Content::shared_from_this ()); + std::shared_ptr<const ImageContent> shared_from_this() const { + return std::dynamic_pointer_cast<const ImageContent>(Content::shared_from_this()); }; void examine(std::shared_ptr<const Film> film, std::shared_ptr<Job>, bool tolerant) override; - std::string summary () const override; - std::string technical_summary () const override; + std::string summary() const override; + std::string technical_summary() const override; void as_xml( xmlpp::Element* element, @@ -48,17 +48,17 @@ public: boost::optional<boost::filesystem::path> film_directory ) const override; - dcpomatic::DCPTime full_length (std::shared_ptr<const Film> film) const override; - dcpomatic::DCPTime approximate_length () const override; + dcpomatic::DCPTime full_length(std::shared_ptr<const Film> film) const override; + dcpomatic::DCPTime approximate_length() const override; - std::string identifier () const override; + std::string identifier() const override; - void set_default_colour_conversion (); + void set_default_colour_conversion(); - bool still () const; + bool still() const; private: - void add_properties (std::shared_ptr<const Film> film, std::list<UserProperty>& p) const override; + void add_properties(std::shared_ptr<const Film> film, std::list<UserProperty>& p) const override; boost::optional<boost::filesystem::path> _path_to_scan; }; diff --git a/src/lib/image_decoder.cc b/src/lib/image_decoder.cc index 527a98c7d..29e4a2f07 100644 --- a/src/lib/image_decoder.cc +++ b/src/lib/image_decoder.cc @@ -43,16 +43,16 @@ using dcp::Size; using namespace dcpomatic; -ImageDecoder::ImageDecoder (shared_ptr<const Film> film, shared_ptr<const ImageContent> c) - : Decoder (film) - , _image_content (c) +ImageDecoder::ImageDecoder(shared_ptr<const Film> film, shared_ptr<const ImageContent> c) + : Decoder(film) + , _image_content(c) { video = make_shared<VideoDecoder>(this, c); } bool -ImageDecoder::pass () +ImageDecoder::pass() { if (_frame_video_position >= _image_content->video->length()) { return true; @@ -60,8 +60,8 @@ ImageDecoder::pass () if (!_image_content->still() || !_image) { /* Either we need an image or we are using moving images, so load one */ - auto path = _image_content->path (_image_content->still() ? 0 : _frame_video_position); - if (valid_j2k_file (path)) { + auto path = _image_content->path(_image_content->still() ? 0 : _frame_video_position); + if (valid_j2k_file(path)) { AVPixelFormat pf; if (_image_content->video->colour_conversion()) { /* We have a specified colour conversion: assume the image is RGB */ @@ -88,8 +88,8 @@ ImageDecoder::pass () void -ImageDecoder::seek (ContentTime time, bool accurate) +ImageDecoder::seek(ContentTime time, bool accurate) { - Decoder::seek (time, accurate); - _frame_video_position = time.frames_round (_image_content->active_video_frame_rate(film())); + Decoder::seek(time, accurate); + _frame_video_position = time.frames_round(_image_content->active_video_frame_rate(film())); } diff --git a/src/lib/image_decoder.h b/src/lib/image_decoder.h index 41924735c..2b07e6b28 100644 --- a/src/lib/image_decoder.h +++ b/src/lib/image_decoder.h @@ -31,14 +31,14 @@ class ImageProxy; class ImageDecoder : public Decoder { public: - ImageDecoder (std::shared_ptr<const Film> film, std::shared_ptr<const ImageContent> c); + ImageDecoder(std::shared_ptr<const Film> film, std::shared_ptr<const ImageContent> c); - std::shared_ptr<const ImageContent> content () { + std::shared_ptr<const ImageContent> content() { return _image_content; } - bool pass () override; - void seek (dcpomatic::ContentTime, bool) override; + bool pass() override; + void seek(dcpomatic::ContentTime, bool) override; private: diff --git a/src/lib/image_examiner.cc b/src/lib/image_examiner.cc index 4a91a103f..f39500781 100644 --- a/src/lib/image_examiner.cc +++ b/src/lib/image_examiner.cc @@ -44,16 +44,16 @@ using std::sort; using boost::optional; -ImageExaminer::ImageExaminer (shared_ptr<const Film> film, shared_ptr<const ImageContent> content, shared_ptr<Job>) - : _film (film) - , _image_content (content) +ImageExaminer::ImageExaminer(shared_ptr<const Film> film, shared_ptr<const ImageContent> content, shared_ptr<Job>) + : _film(film) + , _image_content(content) { auto path = content->path(0); - if (valid_j2k_file (path)) { + if (valid_j2k_file(path)) { auto size = dcp::filesystem::file_size(path); dcp::File f(path, "rb"); if (!f) { - throw FileError ("Could not open file for reading", path); + throw FileError("Could not open file for reading", path); } std::vector<uint8_t> buffer(size); f.checked_read(buffer.data(), size); @@ -70,23 +70,23 @@ ImageExaminer::ImageExaminer (shared_ptr<const Film> film, shared_ptr<const Imag _has_alpha = image.image->has_alpha(); } - if (content->still ()) { - _video_length = Config::instance()->default_still_length() * video_frame_rate().get_value_or (film->video_frame_rate ()); + if (content->still()) { + _video_length = Config::instance()->default_still_length() * video_frame_rate().get_value_or(film->video_frame_rate()); } else { - _video_length = _image_content->number_of_paths (); + _video_length = _image_content->number_of_paths(); } } optional<dcp::Size> -ImageExaminer::video_size () const +ImageExaminer::video_size() const { return _video_size; } optional<double> -ImageExaminer::video_frame_rate () const +ImageExaminer::video_frame_rate() const { if (_image_content->video_frame_rate()) { /* The content already knows what frame rate it should be */ @@ -99,7 +99,7 @@ ImageExaminer::video_frame_rate () const bool -ImageExaminer::yuv () const +ImageExaminer::yuv() const { /* We never convert ImageSource from YUV to RGB (though maybe sometimes we should) so it makes sense to just say they are never YUV so the option of a conversion diff --git a/src/lib/image_examiner.h b/src/lib/image_examiner.h index d6cdfac53..dddb6544f 100644 --- a/src/lib/image_examiner.h +++ b/src/lib/image_examiner.h @@ -25,21 +25,21 @@ class ImageContent; class ImageExaminer : public VideoExaminer { public: - ImageExaminer (std::shared_ptr<const Film>, std::shared_ptr<const ImageContent>, std::shared_ptr<Job>); + ImageExaminer(std::shared_ptr<const Film>, std::shared_ptr<const ImageContent>, std::shared_ptr<Job>); - bool has_video () const override { + bool has_video() const override { return true; } - boost::optional<double> video_frame_rate () const override; + boost::optional<double> video_frame_rate() const override; boost::optional<dcp::Size> video_size() const override; - Frame video_length () const override { + Frame video_length() const override { return _video_length; } - bool yuv () const override; - VideoRange range () const override { + bool yuv() const override; + VideoRange range() const override { return VideoRange::FULL; } - PixelQuanta pixel_quanta () const override { + PixelQuanta pixel_quanta() const override { /* See ::yuv - we're assuming the image is not YUV and so not subsampled */ return {}; } diff --git a/src/lib/j2k_image_proxy.cc b/src/lib/j2k_image_proxy.cc index 8fb387158..c2058794e 100644 --- a/src/lib/j2k_image_proxy.cc +++ b/src/lib/j2k_image_proxy.cc @@ -51,57 +51,57 @@ using dcp::ArrayData; /** Construct a J2KImageProxy from a JPEG2000 file */ -J2KImageProxy::J2KImageProxy (boost::filesystem::path path, dcp::Size size, AVPixelFormat pixel_format) - : _data (new dcp::ArrayData(path)) - , _size (size) - , _pixel_format (pixel_format) - , _error (false) +J2KImageProxy::J2KImageProxy(boost::filesystem::path path, dcp::Size size, AVPixelFormat pixel_format) + : _data(new dcp::ArrayData(path)) + , _size(size) + , _pixel_format(pixel_format) + , _error(false) { /* ::image assumes 16bpp */ - DCPOMATIC_ASSERT (_pixel_format == AV_PIX_FMT_RGB48 || _pixel_format == AV_PIX_FMT_XYZ12LE); + DCPOMATIC_ASSERT(_pixel_format == AV_PIX_FMT_RGB48 || _pixel_format == AV_PIX_FMT_XYZ12LE); } -J2KImageProxy::J2KImageProxy ( +J2KImageProxy::J2KImageProxy( shared_ptr<const dcp::MonoJ2KPictureFrame> frame, dcp::Size size, AVPixelFormat pixel_format, optional<int> forced_reduction ) - : _data (frame) - , _size (size) - , _pixel_format (pixel_format) - , _forced_reduction (forced_reduction) - , _error (false) + : _data(frame) + , _size(size) + , _pixel_format(pixel_format) + , _forced_reduction(forced_reduction) + , _error(false) { /* ::image assumes 16bpp */ - DCPOMATIC_ASSERT (_pixel_format == AV_PIX_FMT_RGB48 || _pixel_format == AV_PIX_FMT_XYZ12LE); + DCPOMATIC_ASSERT(_pixel_format == AV_PIX_FMT_RGB48 || _pixel_format == AV_PIX_FMT_XYZ12LE); } -J2KImageProxy::J2KImageProxy ( +J2KImageProxy::J2KImageProxy( shared_ptr<const dcp::StereoJ2KPictureFrame> frame, dcp::Size size, dcp::Eye eye, AVPixelFormat pixel_format, optional<int> forced_reduction ) - : _data (eye == dcp::Eye::LEFT ? frame->left() : frame->right()) - , _size (size) - , _eye (eye) - , _pixel_format (pixel_format) - , _forced_reduction (forced_reduction) - , _error (false) + : _data(eye == dcp::Eye::LEFT ? frame->left() : frame->right()) + , _size(size) + , _eye(eye) + , _pixel_format(pixel_format) + , _forced_reduction(forced_reduction) + , _error(false) { /* ::image assumes 16bpp */ - DCPOMATIC_ASSERT (_pixel_format == AV_PIX_FMT_RGB48 || _pixel_format == AV_PIX_FMT_XYZ12LE); + DCPOMATIC_ASSERT(_pixel_format == AV_PIX_FMT_RGB48 || _pixel_format == AV_PIX_FMT_XYZ12LE); } -J2KImageProxy::J2KImageProxy (shared_ptr<cxml::Node> xml, shared_ptr<Socket> socket) - : _error (false) +J2KImageProxy::J2KImageProxy(shared_ptr<cxml::Node> xml, shared_ptr<Socket> socket) + : _error(false) { - _size = dcp::Size (xml->number_child<int>("Width"), xml->number_child<int>("Height")); + _size = dcp::Size(xml->number_child<int>("Width"), xml->number_child<int>("Height")); if (xml->optional_number_child<int>("Eye")) { _eye = static_cast<dcp::Eye>(xml->number_child<int>("Eye")); } @@ -111,18 +111,18 @@ J2KImageProxy::J2KImageProxy (shared_ptr<cxml::Node> xml, shared_ptr<Socket> soc encode servers). So we can put anything in here. It's a bit of a hack. */ _pixel_format = AV_PIX_FMT_XYZ12LE; - socket->read (data->data(), data->size()); + socket->read(data->data(), data->size()); _data = data; } int -J2KImageProxy::prepare (Image::Alignment alignment, optional<dcp::Size> target_size) const +J2KImageProxy::prepare(Image::Alignment alignment, optional<dcp::Size> target_size) const { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); if (_image && target_size == _target_size) { - DCPOMATIC_ASSERT (_reduce); + DCPOMATIC_ASSERT(_reduce); return *_reduce; } @@ -136,15 +136,15 @@ J2KImageProxy::prepare (Image::Alignment alignment, optional<dcp::Size> target_s } --reduce; - reduce = max (0, reduce); + reduce = max(0, reduce); } try { /* XXX: should check that potentially trashing _data here doesn't matter */ - auto decompressed = dcp::decompress_j2k (const_cast<uint8_t*>(_data->data()), _data->size(), reduce); + auto decompressed = dcp::decompress_j2k(const_cast<uint8_t*>(_data->data()), _data->size(), reduce); _image = make_shared<Image>(_pixel_format, decompressed->size(), alignment); - int const shift = 16 - decompressed->precision (0); + int const shift = 16 - decompressed->precision(0); /* Copy data in whatever format (sRGB or XYZ) into our Image; I'm assuming the data is 12-bit either way. @@ -153,9 +153,9 @@ J2KImageProxy::prepare (Image::Alignment alignment, optional<dcp::Size> target_s int const width = decompressed->size().width; int p = 0; - int* decomp_0 = decompressed->data (0); - int* decomp_1 = decompressed->data (1); - int* decomp_2 = decompressed->data (2); + int* decomp_0 = decompressed->data(0); + int* decomp_1 = decompressed->data(1); + int* decomp_2 = decompressed->data(2); for (int y = 0; y < decompressed->size().height; ++y) { auto q = reinterpret_cast<uint16_t *>(_image->data()[0] + y * _image->stride()[0]); for (int x = 0; x < width; ++x) { @@ -167,7 +167,7 @@ J2KImageProxy::prepare (Image::Alignment alignment, optional<dcp::Size> target_s } } catch (dcp::J2KDecompressionError& e) { _image = make_shared<Image>(_pixel_format, _size, alignment); - _image->make_black (); + _image->make_black(); _error = true; } @@ -179,14 +179,14 @@ J2KImageProxy::prepare (Image::Alignment alignment, optional<dcp::Size> target_s ImageProxy::Result -J2KImageProxy::image (Image::Alignment alignment, optional<dcp::Size> target_size) const +J2KImageProxy::image(Image::Alignment alignment, optional<dcp::Size> target_size) const { - int const r = prepare (alignment, target_size); + int const r = prepare(alignment, target_size); /* I think this is safe without a lock on mutex. _image is guaranteed to be set up when prepare() has happened. */ - return Result (_image, r, _error); + return Result(_image, r, _error); } @@ -204,14 +204,14 @@ J2KImageProxy::add_metadata(xmlpp::Element* element) const void -J2KImageProxy::write_to_socket (shared_ptr<Socket> socket) const +J2KImageProxy::write_to_socket(shared_ptr<Socket> socket) const { - socket->write (_data->data(), _data->size()); + socket->write(_data->data(), _data->size()); } bool -J2KImageProxy::same (shared_ptr<const ImageProxy> other) const +J2KImageProxy::same(shared_ptr<const ImageProxy> other) const { auto jp = dynamic_pointer_cast<const J2KImageProxy>(other); if (!jp) { @@ -222,19 +222,19 @@ J2KImageProxy::same (shared_ptr<const ImageProxy> other) const } -J2KImageProxy::J2KImageProxy (ArrayData data, dcp::Size size, AVPixelFormat pixel_format) - : _data (new ArrayData(data)) - , _size (size) - , _pixel_format (pixel_format) - , _error (false) +J2KImageProxy::J2KImageProxy(ArrayData data, dcp::Size size, AVPixelFormat pixel_format) + : _data(new ArrayData(data)) + , _size(size) + , _pixel_format(pixel_format) + , _error(false) { /* ::image assumes 16bpp */ - DCPOMATIC_ASSERT (_pixel_format == AV_PIX_FMT_RGB48 || _pixel_format == AV_PIX_FMT_XYZ12LE); + DCPOMATIC_ASSERT(_pixel_format == AV_PIX_FMT_RGB48 || _pixel_format == AV_PIX_FMT_XYZ12LE); } size_t -J2KImageProxy::memory_used () const +J2KImageProxy::memory_used() const { size_t m = _data->size(); if (_image) { diff --git a/src/lib/j2k_image_proxy.h b/src/lib/j2k_image_proxy.h index 1d2d5cc21..40504ddd5 100644 --- a/src/lib/j2k_image_proxy.h +++ b/src/lib/j2k_image_proxy.h @@ -34,16 +34,16 @@ namespace dcp { class J2KImageProxy : public ImageProxy { public: - J2KImageProxy (boost::filesystem::path path, dcp::Size, AVPixelFormat pixel_format); + J2KImageProxy(boost::filesystem::path path, dcp::Size, AVPixelFormat pixel_format); - J2KImageProxy ( + J2KImageProxy( std::shared_ptr<const dcp::MonoJ2KPictureFrame> frame, dcp::Size, AVPixelFormat pixel_format, boost::optional<int> forced_reduction ); - J2KImageProxy ( + J2KImageProxy( std::shared_ptr<const dcp::StereoJ2KPictureFrame> frame, dcp::Size, dcp::Eye, @@ -51,35 +51,35 @@ public: boost::optional<int> forced_reduction ); - J2KImageProxy (std::shared_ptr<cxml::Node> xml, std::shared_ptr<Socket> socket); + J2KImageProxy(std::shared_ptr<cxml::Node> xml, std::shared_ptr<Socket> socket); /* For tests */ - J2KImageProxy (dcp::ArrayData data, dcp::Size size, AVPixelFormat pixel_format); + J2KImageProxy(dcp::ArrayData data, dcp::Size size, AVPixelFormat pixel_format); - Result image ( + Result image( Image::Alignment alignment, - boost::optional<dcp::Size> size = boost::optional<dcp::Size> () + boost::optional<dcp::Size> size = boost::optional<dcp::Size>() ) const override; void add_metadata(xmlpp::Element*) const override; - void write_to_socket (std::shared_ptr<Socket> override) const override; + void write_to_socket(std::shared_ptr<Socket> override) const override; /** @return true if our image is definitely the same as another, false if it is probably not */ - bool same (std::shared_ptr<const ImageProxy>) const override; - int prepare (Image::Alignment alignment, boost::optional<dcp::Size> = boost::optional<dcp::Size>()) const override; + bool same(std::shared_ptr<const ImageProxy>) const override; + int prepare(Image::Alignment alignment, boost::optional<dcp::Size> = boost::optional<dcp::Size>()) const override; - std::shared_ptr<const dcp::Data> j2k () const { + std::shared_ptr<const dcp::Data> j2k() const { return _data; } - dcp::Size size () const { + dcp::Size size() const { return _size; } - boost::optional<dcp::Eye> eye () const { + boost::optional<dcp::Eye> eye() const { return _eye; } - size_t memory_used () const override; + size_t memory_used() const override; private: std::shared_ptr<const dcp::Data> _data; diff --git a/src/lib/job.h b/src/lib/job.h index f435d815a..34f7b0526 100644 --- a/src/lib/job.h +++ b/src/lib/job.h @@ -30,12 +30,12 @@ #include "signaller.h" #include <dcp/warnings.h> -#include <boost/atomic.hpp> LIBDCP_DISABLE_WARNINGS #include <boost/signals2.hpp> LIBDCP_ENABLE_WARNINGS #include <boost/thread.hpp> #include <boost/thread/mutex.hpp> +#include <atomic> #include <string> @@ -174,7 +174,7 @@ private: /** true to limit emissions of the progress signal so that they don't * come too often. */ - boost::atomic<bool> _rate_limit_progress; + std::atomic<bool> _rate_limit_progress; /** condition to signal changes to pause/resume so that we know when to wake; this could be a general _state_change if it made more sense. diff --git a/src/lib/kdm_cli.cc b/src/lib/kdm_cli.cc index b115412a7..bd400b458 100644 --- a/src/lib/kdm_cli.cc +++ b/src/lib/kdm_cli.cc @@ -96,6 +96,7 @@ help(std::function<void (string)> out) out(" -S, --screen <name> screen name (when using -C) or screen name (to filter screens when using -c)"); out(" -C, --projector-certificate <file> file containing projector certificate"); out(" -T, --trusted-device-certificate <file> file containing a trusted device's certificate"); + out(" --trusted-device-chain <file> file containing a trusted device's chain; the leaf certificate will be used"); out(" --decryption-key <file> file containing the private key which can decrypt the given DKDM"); out(variant::insert_dcpomatic(" ({}'s configured private key will be used otherwise)")); out(" --cinemas-file <file> use the given file as a list of cinemas instead of the current configuration"); @@ -525,12 +526,13 @@ try { "screen", required_argument, 0, 'S' }, { "projector-certificate", required_argument, 0, 'C' }, { "trusted-device-certificate", required_argument, 0, 'T' }, + { "trusted-device-chain", required_argument, 0, 'H' }, { "decryption-key", required_argument, 0, 'G' }, { "cinemas-file", required_argument, 0, 'E' }, { 0, 0, 0, 0 } }; - int c = getopt_long(argc, argv, "ho:K:Z:f:t:d:F:pae::zvc:S:C:T:E:G", long_options, &option_index); + int c = getopt_long(argc, argv, "ho:K:Z:f:t:d:F:pae::zvc:S:C:T:E:G:H", long_options, &option_index); if (c == -1) { break; @@ -603,6 +605,12 @@ try case 'T': trusted_devices.push_back(TrustedDevice(dcp::Certificate(dcp::file_to_string(optarg)))); break; + case 'H': + { + auto chain = dcp::CertificateChain(dcp::file_to_string(optarg)); + trusted_devices.push_back(TrustedDevice(chain.leaf())); + break; + } case 'G': decryption_key = optarg; break; @@ -718,6 +726,11 @@ try valid_to = valid_from.get() + duration_from_string(*duration_string); } + if (!trusted_devices.empty() && (formulation != dcp::Formulation::MULTIPLE_MODIFIED_TRANSITIONAL_1 && formulation != dcp::Formulation::DCI_SPECIFIC)) { + out("You have given one or more trusted devices but the KDM formulation you specified will not write them to the KDM. " + "Consider using --formulation multiple-modified-transitional-1"); + } + if (verbose) { out(fmt::format("Making KDMs valid from {} to {}", boost::posix_time::to_simple_string(valid_from.get()), boost::posix_time::to_simple_string(valid_to.get()))); } diff --git a/src/lib/log.cc b/src/lib/log.cc index aae492faf..e5d1a8206 100644 --- a/src/lib/log.cc +++ b/src/lib/log.cc @@ -40,30 +40,30 @@ using std::shared_ptr; using std::string; -Log::Log () +Log::Log() { } void -Log::log (shared_ptr<const LogEntry> e) +Log::log(shared_ptr<const LogEntry> e) { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); if ((_types & e->type()) == 0) { return; } - do_log (e); + do_log(e); } /** @param n String to log */ void -Log::log (string message, int type) +Log::log(string message, int type) { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); if ((_types & type) == 0) { return; @@ -71,30 +71,30 @@ Log::log (string message, int type) auto e = make_shared<StringLogEntry>(type, message); - do_log (e); + do_log(e); } void -Log::dcp_log (dcp::NoteType type, string m) +Log::dcp_log(dcp::NoteType type, string m) { switch (type) { case dcp::NoteType::PROGRESS: - do_log (make_shared<StringLogEntry>(LogEntry::TYPE_GENERAL, m)); + do_log(make_shared<StringLogEntry>(LogEntry::TYPE_GENERAL, m)); break; case dcp::NoteType::ERROR: - do_log (make_shared<StringLogEntry>(LogEntry::TYPE_ERROR, m)); + do_log(make_shared<StringLogEntry>(LogEntry::TYPE_ERROR, m)); break; case dcp::NoteType::NOTE: - do_log (make_shared<StringLogEntry>(LogEntry::TYPE_WARNING, m)); + do_log(make_shared<StringLogEntry>(LogEntry::TYPE_WARNING, m)); break; } } void -Log::set_types (int t) +Log::set_types(int t) { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); _types = t; } diff --git a/src/lib/log.h b/src/lib/log.h index c6685bda1..e372e618f 100644 --- a/src/lib/log.h +++ b/src/lib/log.h @@ -45,25 +45,25 @@ LIBDCP_ENABLE_WARNINGS class Log { public: - Log (); - virtual ~Log () {} + Log(); + virtual ~Log() {} - Log (Log const&) = delete; - Log& operator= (Log const&) = delete; + Log(Log const&) = delete; + Log& operator=(Log const&) = delete; - void log (std::shared_ptr<const LogEntry> entry); - void log (std::string message, int type); - void dcp_log (dcp::NoteType type, std::string message); + void log(std::shared_ptr<const LogEntry> entry); + void log(std::string message, int type); + void dcp_log(dcp::NoteType type, std::string message); - void set_types (int types); - int types () const { + void set_types(int types); + int types() const { return _types; } /** @param amount Approximate number of bytes to return; the returned value * may be shorter or longer than this. */ - virtual std::string head_and_tail (int amount = 1024) const { + virtual std::string head_and_tail(int amount = 1024) const { (void) amount; return ""; } @@ -74,7 +74,7 @@ protected: mutable boost::mutex _mutex; private: - virtual void do_log (std::shared_ptr<const LogEntry> entry) = 0; + virtual void do_log(std::shared_ptr<const LogEntry> entry) = 0; /** bit-field of log types which should be put into the log (others are ignored) */ int _types = 0; diff --git a/src/lib/memory_util.cc b/src/lib/memory_util.cc index 00117855d..e32756276 100644 --- a/src/lib/memory_util.cc +++ b/src/lib/memory_util.cc @@ -25,17 +25,58 @@ extern "C" { #include <libavutil/avutil.h> } LIBDCP_ENABLE_WARNINGS +#include <algorithm> #include <new> #include <stdexcept> 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/nanomsg.cc b/src/lib/nanomsg.cc index fe3827247..4ec37635e 100644 --- a/src/lib/nanomsg.cc +++ b/src/lib/nanomsg.cc @@ -36,9 +36,9 @@ using boost::optional; #define NANOMSG_URL "ipc:///tmp/dcpomatic.ipc" -Nanomsg::Nanomsg (bool server) +Nanomsg::Nanomsg(bool server) { - _socket = nn_socket (AF_SP, NN_PAIR); + _socket = nn_socket(AF_SP, NN_PAIR); if (_socket < 0) { throw runtime_error("Could not set up nanomsg socket"); } @@ -54,21 +54,21 @@ Nanomsg::Nanomsg (bool server) } -Nanomsg::~Nanomsg () +Nanomsg::~Nanomsg() { - nn_shutdown (_socket, _endpoint); - nn_close (_socket); + nn_shutdown(_socket, _endpoint); + nn_close(_socket); } bool -Nanomsg::send (string s, int timeout) +Nanomsg::send(string s, int timeout) { if (timeout != 0) { - nn_setsockopt (_socket, NN_SOL_SOCKET, NN_SNDTIMEO, &timeout, sizeof(int)); + nn_setsockopt(_socket, NN_SOL_SOCKET, NN_SNDTIMEO, &timeout, sizeof(int)); } - int const r = nn_send (_socket, s.c_str(), s.length(), timeout ? 0 : NN_DONTWAIT); + int const r = nn_send(_socket, s.c_str(), s.length(), timeout ? 0 : NN_DONTWAIT); if (r < 0) { if (errno == ETIMEDOUT || errno == EAGAIN) { return false; @@ -83,7 +83,7 @@ Nanomsg::send (string s, int timeout) optional<string> -Nanomsg::get_from_pending () +Nanomsg::get_from_pending() { if (_pending.empty()) { return {}; @@ -96,10 +96,10 @@ Nanomsg::get_from_pending () void -Nanomsg::recv_and_parse (int flags) +Nanomsg::recv_and_parse(int flags) { char* buf = 0; - int const received = nn_recv (_socket, &buf, NN_MSG, flags); + int const received = nn_recv(_socket, &buf, NN_MSG, flags); if (received < 0) { if (errno == ETIMEDOUT || errno == EAGAIN) { @@ -107,36 +107,35 @@ Nanomsg::recv_and_parse (int flags) } LOG_DISK("nn_recv failed"); - throw CommunicationFailedError (); + throw CommunicationFailedError(); } char* p = buf; for (int i = 0; i < received; ++i) { if (*p == '\n') { - _pending.push_front (_current); + _pending.push_front(_current); _current = ""; } else { _current += *p; } ++p; } - nn_freemsg (buf); + nn_freemsg(buf); } optional<string> -Nanomsg::receive (int timeout) +Nanomsg::receive(int timeout) { if (timeout != 0) { - nn_setsockopt (_socket, NN_SOL_SOCKET, NN_RCVTIMEO, &timeout, sizeof(int)); + nn_setsockopt(_socket, NN_SOL_SOCKET, NN_RCVTIMEO, &timeout, sizeof(int)); } - auto l = get_from_pending (); - if (l) { + if (auto l = get_from_pending()) { return *l; } - recv_and_parse (timeout ? 0 : NN_DONTWAIT); + recv_and_parse(timeout ? 0 : NN_DONTWAIT); - return get_from_pending (); + return get_from_pending(); } diff --git a/src/lib/nanomsg.h b/src/lib/nanomsg.h index 8d89d6d99..bd15a670f 100644 --- a/src/lib/nanomsg.h +++ b/src/lib/nanomsg.h @@ -27,27 +27,27 @@ class Nanomsg { public: - explicit Nanomsg (bool server); - ~Nanomsg (); + explicit Nanomsg(bool server); + ~Nanomsg(); - Nanomsg (Nanomsg const&) = delete; - Nanomsg& operator= (Nanomsg const&) = delete; + Nanomsg(Nanomsg const&) = delete; + Nanomsg& operator=(Nanomsg const&) = delete; /** Try to send a message, waiting for some timeout before giving up. * @param timeout Timeout in milliseconds, or -1 for infinite timeout. * @return true if the send happened, false if there was a timeout. */ - bool send (std::string s, int timeout); + bool send(std::string s, int timeout); /** Try to receive a message, waiting for some timeout before giving up. * @param timeout Timeout in milliseconds, or -1 for infinite timeout. * @return Empty if the timeout was reached, otherwise the received string. */ - boost::optional<std::string> receive (int timeout); + boost::optional<std::string> receive(int timeout); private: - boost::optional<std::string> get_from_pending (); - void recv_and_parse (int flags); + boost::optional<std::string> get_from_pending(); + void recv_and_parse(int flags); int _socket; int _endpoint; diff --git a/src/lib/packet_queue.cc b/src/lib/packet_queue.cc new file mode 100644 index 000000000..9cdc7bc53 --- /dev/null +++ b/src/lib/packet_queue.cc @@ -0,0 +1,35 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "packet_queue.h" +extern "C" { +#include <libavcodec/packet.h> +} + + +PacketQueue::PacketInfo::PacketInfo(AVPacket* packet) + : stream_index(packet->stream_index) + , dts(packet->dts) +{ + +} + + diff --git a/src/lib/packet_queue.h b/src/lib/packet_queue.h new file mode 100644 index 000000000..60bd4e8af --- /dev/null +++ b/src/lib/packet_queue.h @@ -0,0 +1,83 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#ifndef DCPOMATIC_PACKET_QUEUE_H +#define DCPOMATIC_PACKET_QUEUE_H + + +/** @file src/lib/packet_queue.h + * @brief PacketQueue parent class. + */ + + +#include <boost/optional.hpp> +#include <boost/variant.hpp> +#include <cstdint> +#include <deque> + +struct AVPacket; + + +/** @class PacketQueue + * @brief Parent class for things which take and then return AVPackets, possibly + * re-ordering them. + */ +class PacketQueue +{ +public: + virtual ~PacketQueue() = default; + + enum class Type { + VIDEO, + AUDIO, + SUBTITLE, + DROP, + }; + + /** Container for the only information we need to keep from a DROP packet */ + struct PacketInfo { + PacketInfo(AVPacket* packet); + + int stream_index; + int64_t dts; + }; + + typedef boost::variant<AVPacket*, PacketInfo> Packet; + + /** Add a packet to the queue. Does not ref the packet; we expect + * the packet to be freed when it comes out of get() (or by clear()). + */ + virtual void add(AVPacket* packet, Type type) = 0; + + /** Get the next packet to process. + * @param flushing should be true if we are flushing at the end of a decode. + * When this is true the queue will be emptied without trying to re-order it. + * Returns boost::none when there are no more packets to get. + */ + virtual boost::optional<std::pair<Packet, Type>> get(bool flushing) = 0; + + /** Clear the queue. Packets will be freed. */ + virtual void clear() = 0; +}; + + +#endif + diff --git a/src/lib/passthrough_packet_queue.cc b/src/lib/passthrough_packet_queue.cc new file mode 100644 index 000000000..03038ff5f --- /dev/null +++ b/src/lib/passthrough_packet_queue.cc @@ -0,0 +1,56 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "dcpomatic_assert.h" +#include "passthrough_packet_queue.h" +#include <boost/core/exchange.hpp> +#include <boost/optional.hpp> +#include <utility> + + +using boost::optional; + + +void +PassthroughPacketQueue::add(AVPacket* packet, Type type) +{ + DCPOMATIC_ASSERT(!_store); + if (type == PacketQueue::Type::DROP) { + _store = std::make_pair(PacketInfo(packet), type); + } else { + _store = std::make_pair(Packet(packet), type); + } +} + + +optional<std::pair<PacketQueue::Packet, PacketQueue::Type>> +PassthroughPacketQueue::get(bool) +{ + return boost::exchange(_store, boost::none); +} + + +void +PassthroughPacketQueue::clear() +{ + _store = boost::none; +} + diff --git a/src/lib/passthrough_packet_queue.h b/src/lib/passthrough_packet_queue.h new file mode 100644 index 000000000..56ebf3867 --- /dev/null +++ b/src/lib/passthrough_packet_queue.h @@ -0,0 +1,45 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "packet_queue.h" +#include <boost/optional.hpp> + + +class PassthroughPacketQueue : public PacketQueue +{ +public: + void add(AVPacket* packet, Type type) override; + + /** Get the next packet to process. + * @param flushing should be true if we are flushing at the end of a decode. + * When this is true the queue will be emptied without trying to re-order it. + * Returns { nullptr, VIDEO } when there are no more packets to get. + */ + boost::optional<std::pair<Packet, Type>> get(bool flushing) override; + + /** Clear the queue. Packets will be freed. */ + void clear() override; + +private: + boost::optional<std::pair<Packet, Type>> _store; +}; + + diff --git a/src/lib/player.cc b/src/lib/player.cc index 7498ca4e7..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); @@ -542,7 +546,7 @@ Player::dcp_to_content_video(shared_ptr<const Piece> piece, DCPTime t) const Instead we convert the DCPTime using the DCP video rate then account for any skip/repeat. */ - return s.frames_floor(piece->frc.dcp) / piece->frc.factor(); + return s.frames_floor(piece->frc.dcp()) / piece->frc.factor(); } @@ -550,7 +554,7 @@ DCPTime Player::content_video_to_dcp(shared_ptr<const Piece> piece, Frame f) const { /* See comment in dcp_to_content_video */ - auto const d = DCPTime::from_frames(f * piece->frc.factor(), piece->frc.dcp) - DCPTime(piece->content->trim_start(), piece->frc); + auto const d = DCPTime::from_frames(f * piece->frc.factor(), piece->frc.dcp()) - DCPTime(piece->content->trim_start(), piece->frc); return d + piece->content->position(); } @@ -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 4a1cf5f55..2ae60c287 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -39,7 +39,7 @@ #include "player_text.h" #include "position_image.h" #include "shuffler.h" -#include <boost/atomic.hpp> +#include <atomic> #include <list> @@ -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; @@ -192,36 +193,36 @@ private: std::shared_ptr<const Playlist> _playlist; /** > 0 if we are suspended (i.e. pass() and seek() do nothing) */ - boost::atomic<int> _suspended; + std::atomic<int> _suspended; std::vector<std::shared_ptr<Piece>> _pieces; /** Size of the image we are rendering to; this may be the DCP frame size, or * the size of preview in a window. */ - boost::atomic<dcp::Size> _video_container_size; + std::atomic<dcp::Size> _video_container_size; mutable boost::mutex _black_image_mutex; std::shared_ptr<Image> _black_image; /** true if the player should ignore all video; i.e. never produce any */ - boost::atomic<bool> _ignore_video; - boost::atomic<bool> _ignore_audio; + std::atomic<bool> _ignore_video; + std::atomic<bool> _ignore_audio; /** true if the player should ignore all text; i.e. never produce any */ - boost::atomic<bool> _ignore_text; - boost::atomic<bool> _always_burn_open_subtitles; + std::atomic<bool> _ignore_text; + std::atomic<bool> _always_burn_open_subtitles; /** true if we should try to be fast rather than high quality */ - boost::atomic<bool> _fast; + std::atomic<bool> _fast; /** true if we should keep going in the face of `survivable' errors */ bool _tolerant; /** true if we should `play' (i.e output) referenced DCP data (e.g. for preview) */ - boost::atomic<bool> _play_referenced; + std::atomic<bool> _play_referenced; /** Time of the next video that we will emit, or the time of the last accurate seek */ boost::optional<dcpomatic::DCPTime> _next_video_time; /** Time of the next audio that we will emit, or the time of the last accurate seek */ boost::optional<dcpomatic::DCPTime> _next_audio_time; - boost::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; @@ -250,7 +251,7 @@ private: std::shared_ptr<AudioProcessor> _audio_processor; bool _disable_audio_processor = false; - boost::atomic<dcpomatic::DCPTime> _playback_length; + std::atomic<dcpomatic::DCPTime> _playback_length; /** Alignment for subtitle images that we create */ Image::Alignment _subtitle_alignment = Image::Alignment::PADDED; diff --git a/src/lib/playlist.cc b/src/lib/playlist.cc index d3315a722..05c2a7e9e 100644 --- a/src/lib/playlist.cc +++ b/src/lib/playlist.cc @@ -730,12 +730,12 @@ Playlist::speed_up_range(int dcp_video_frame_rate) const } if (i->video_frame_rate()) { FrameRateChange const frc(i->video_frame_rate().get(), dcp_video_frame_rate); - range.first = min(range.first, frc.speed_up); - range.second = max(range.second, frc.speed_up); + range.first = min(range.first, frc.speed_up()); + range.second = max(range.second, frc.speed_up()); } else { FrameRateChange const frc(dcp_video_frame_rate, dcp_video_frame_rate); - range.first = min(range.first, frc.speed_up); - range.second = max(range.second, frc.speed_up); + range.first = min(range.first, frc.speed_up()); + range.second = max(range.second, frc.speed_up()); } } diff --git a/src/lib/po/cs_CZ.po b/src/lib/po/cs_CZ.po index 5bb0feaac..406b0d1fd 100644 --- a/src/lib/po/cs_CZ.po +++ b/src/lib/po/cs_CZ.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2025-06-10 15:13+0200\n" "Last-Translator: Tomáš Begeni <begeni@razdva.cz>\n" "Language-Team: \n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.6\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -27,7 +27,7 @@ msgstr "" "\n" "Snímková frekvence obsahu %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -36,7 +36,7 @@ msgstr "" "\n" "Oříznout na {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -45,7 +45,7 @@ msgstr "" "\n" "Poměr stran displeje %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -54,7 +54,7 @@ msgstr "" "\n" "Vyplněné černou, aby se zmenšil do kontejneru {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "Měřítko {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -103,7 +103,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", poměr stran obrazových bodů %.2f:1" @@ -176,7 +176,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "3D denoiser" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -228,7 +228,7 @@ msgstr "" "a><li><a href=\"https://dcpomatic.com/donate_amount?amount=10\">Přejít na " "Paypal a darovat€10</a></ul><p>Mockrát děkuji!</font>" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -256,7 +256,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "Reklama" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -267,7 +267,7 @@ msgstr "" "Bude použit letter-box uvnitř rámečku Flat (1.85:1). Můžete nastavit DCP " "kontejner na Scope (2.39:1) v záložce \"DCP\"." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -290,24 +290,24 @@ msgstr "Analýza zvuku" msgid "Analysing subtitles" msgstr "Analýza titulků" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "Značka která přijde po konci projektu, bude ignorována." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Jeden z vašich souborů skrytých titulků je větší než " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "Jeden z vašich XML souborů se skrytými titulky je větší než " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Jeden z vašich souborů s titulky je větší než " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -315,7 +315,7 @@ msgstr "" "Jeden z vašich řádků s titulky má více než 52 znaků. Doporučuje se, aby " "každý řádek měl maximálně 52 znaků." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -323,7 +323,7 @@ msgstr "" "Jeden z vašich titulků má více než 79 znaků. Každý řádek by měl být dlouhý " "maximálně 79 znaků." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -331,7 +331,7 @@ msgstr "" "Jeden z vašich titulků má více než 3 řádky. Doporučuje se použít maximálně 3 " "řádky." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -339,7 +339,7 @@ msgstr "" "Jeden z vašich titulků trvá méně než 15 snímků. Doporučuje se, aby každý " "podnadpis měl délku alespoň 15 snímků." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -347,7 +347,7 @@ msgstr "" "Jeden z vašich titulků začíná méně než 2 snímky po předchozím. Doporučuje " "se, aby mezera mezi titulky byla alespoň 2 snímky." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -680,7 +680,7 @@ msgid "Content to be joined must use the same text language." msgstr "" "Obsah, ke kterému se chcete připojit, musí používat stejný jazyk textu." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Video je {}x{}" @@ -821,7 +821,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML titulky" @@ -829,7 +829,12 @@ msgstr "DCP XML titulky" msgid "DCP sample rate" msgstr "Snímková frekvence DCP" -#: src/lib/frame_rate_change.cc:101 +#: 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 bude používat každý druhý frame obsahu \n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP bude běžet na %.1f%% obsahu videa.\n" @@ -924,11 +929,11 @@ msgstr "Stahování selhalo ({} error {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Každý frame bude zdvojený v DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Každý frame bude opakovaný {} krát v DCP.\n" @@ -977,11 +982,11 @@ msgstr "Chyba: {}" msgid "Event" msgstr "Událost" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "Zkoumání zvuku" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Zkoumání zvuku, titulků a skrytých titulků" @@ -993,7 +998,7 @@ msgstr "Zkoumání obsahu" msgid "Examining subtitles" msgstr "Zkoumání titulků" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Zkoumání titulků a skrytých titulků" @@ -1147,11 +1152,11 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "Používáte-li 25fps, měli byste změnit váš standard DCP na SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " @@ -1161,7 +1166,7 @@ msgstr "" "používat Interop. Je vhodné nastavit váš DCP tak, aby používal standard " "SMPTE v záložce „DCP“." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1207,7 +1212,7 @@ msgstr "Left rear surround (Levý zadní surround)" msgid "Left surround" msgstr "Left surround (Levý surround)" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Délka" @@ -1395,7 +1400,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1514,7 +1519,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1580,7 +1585,7 @@ msgstr "Short (Krátky film)" msgid "Sign" msgstr "Podepsat" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Velikost" @@ -1627,7 +1632,7 @@ msgstr "" "Tyto soubory budou nyní znovu přezkoumány, takže bude pravděpodobně nutné " "zkontrolovat jejich nastavení." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1636,7 +1641,7 @@ msgstr "" "Některé ze skrytých titulků jsou rozloženy na více než {} řádcích, takže " "budou zkráceny." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1646,7 +1651,7 @@ msgstr "" "nastavit jazyk zvuku na kartě „DCP“, pokud váš zvuk neobsahuje žádné mluvené " "části." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1667,7 +1672,7 @@ msgstr "Část vašeho obsahu potřebuje KDM" msgid "Some of your content needs an OV" msgstr "Část vašeho obsahu potřebuje OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1736,7 +1741,7 @@ msgstr "Řetěz certifikátů pro podepisování je neplatný" msgid "The certificate chain for signing is invalid ({})" msgstr "Řetěz certifikátů pro podepisování je neplatný ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1751,7 +1756,7 @@ msgstr "" "tlačítko „Re-make certificates and key...“ (Znovu vytvořit certifikáty a " "klíče...) na stránce Keys (Klíče) v okně Preferences (Předvolby)." -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1806,7 +1811,7 @@ msgstr "Soubor {} byl oříznut o {} milisekund méně." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Soubor {} byl oříznut o {} milisekund více." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1826,7 +1831,7 @@ msgstr "" "směru než dříve. Měli byste zkontrolovat všechny titulky ve svém projektu " "a ujistit se, že jsou umístěny tam, kde je chcete mít." -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1853,12 +1858,12 @@ msgstr "" "Zbývá málo paměti. Pokud je váš systém 32-bitový, zkuste snížit počet " "enkódovacích threadov v záložce Všeobecné, v nastavení." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "Tento KDM byl vytvořen pro {}, ale ne pro jeho listový certifikát." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "Tento KDM nebyl vytvořen pro dešifrovací certifikát {}." @@ -2051,7 +2056,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Ještě další deinterlacing filter" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2062,7 +2067,7 @@ msgstr "" "není podporována všemi projektory. Doporučujeme změnit snímkovou frekvenci " "DCP na {} fps." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2073,7 +2078,7 @@ msgstr "" "není podporována všemi projektory. Možná budete chtít změnit snímkovou " "frekvenci na {} fps." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2081,7 +2086,7 @@ msgstr "" "Nastavili jste pro DCP snímkovou frekvenci na 30fps, která není podporována " "všemi projektory. Mějte na paměti, že můžete mít potíže s kompatibilitou." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2089,7 +2094,7 @@ msgstr "" "Používáte 3D obsah, ale váš DCP je nastaven na 2D. Nastavte DCP na 3D, pokud " "chcete přehrávat ve 3D systému (např. Real-D, MasterImage atd.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2108,7 +2113,7 @@ msgstr "" "Máte více než jednu část obsahu Atmos která nemá stejnou snímkovou " "frekvenci. Musíte odstranit nějaký obsah Atmos." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2116,7 +2121,7 @@ msgstr "" "Máte překrývající se skryté titulky, které nejsou povoleny v Interop DCPs. " "Změňte standard DCP na SMPTE." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2124,7 +2129,7 @@ msgstr "" "Zadali jste soubor písma, který je větší než 640kB. Pravděpodobně to může " "způsobit problémy při přehrávání." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2137,7 +2142,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Musíte přidat obsah do DCP před tím než ho vytvoříte" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2150,7 +2155,7 @@ msgstr "" "Nezáleží na tom, zda má váš obsah méně kanálů, protože {} vyplní přídavky " "tichem." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2161,7 +2166,7 @@ msgstr "" "někteří distributoři při kontrole vašeho DCP zvýší chyby kontroly kvality. " "Abyste tomu zabránili, nastavte zvukové kanály DCP na 8 nebo 16." -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2169,7 +2174,7 @@ msgstr "" "Vaše DCP používá neobvyklý poměr. To může u některých projektorů způsobit " "problémy. Pokud je to možné, použijte pro poměr DCP formát Flat nebo Scope." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2198,7 +2203,7 @@ msgstr "[přesouvám obrázky]" msgid "[still]" msgstr "[stále]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[titulky]" @@ -2214,7 +2219,7 @@ msgstr "_reel{}" msgid "bits" msgstr "bity" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "spojení vypršelo" @@ -2270,22 +2275,22 @@ msgstr "nemohu číst ze souboru {} ({})" msgid "could not write to file {} ({})" msgstr "nemohu zapisovat do souboru {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "chyba při async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, c++-format msgid "error during async_connect: ({})" msgstr "chyba při async_connect: ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "chyba při async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "chyba při async_write ({})" @@ -2415,7 +2420,7 @@ msgstr "stále" msgid "unknown" msgstr "neznáme" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "video snímky" diff --git a/src/lib/po/da_DK.po b/src/lib/po/da_DK.po index 69e4894aa..03ac44501 100644 --- a/src/lib/po/da_DK.po +++ b/src/lib/po/da_DK.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2019-04-06 12:29+0200\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,7 +17,7 @@ msgstr "" "X-Generator: Poedit 2.1.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Indholds billedhastighed %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Beskåret til {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Skærmformat %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Udfyldt med sort for at tilpasse til container {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Skaleret til {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", pixel format %.2f:1" @@ -176,7 +176,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "3D-denoiser" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -214,7 +214,7 @@ msgid "" "donate €10</a></ul><p>Thank you!</font>" msgstr "" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -241,7 +241,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "Reklamer (ADV)" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -253,7 +253,7 @@ msgstr "" "billede. Du vil måske foretrække at sætte din DCP's container til Scope " "(2.39:1) i fanen \"DCP\"." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 #, fuzzy msgid "" "All of your content narrower than 1.90:1 but your DCP's container is Scope " @@ -279,54 +279,54 @@ msgstr "Analyserer lyd" msgid "Analysing subtitles" msgstr "Undersøger undertekster" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "" -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "" -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -673,7 +673,7 @@ msgstr "Indhold der skal splejses skal bruge samme tekstningsstrøm." msgid "Content to be joined must use the same text language." msgstr "Indhold der skal splejses skal bruge samme skrifttype." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Indholdsvideo er {}x{}" @@ -814,7 +814,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML undertekster" @@ -822,7 +822,12 @@ msgstr "DCP XML undertekster" msgid "DCP sample rate" msgstr "DCP sample rate" -#: src/lib/frame_rate_change.cc:101 +#: 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 vil bruge hvert andet billede fra indholdet.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP vil køre ved %.1f%% af indholdshastigheden.\n" @@ -912,11 +917,11 @@ msgstr "Download fejlede ({} fejl {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Hvert billede i indholdet vil blive brugt to gange i DCP'en.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "" @@ -966,12 +971,12 @@ msgstr "Fejl: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Undersøger undertekster" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 #, fuzzy msgid "Examining audio, subtitles and closed captions" msgstr "Undersøger billedtekster" @@ -984,7 +989,7 @@ msgstr "Undersøger indhold" msgid "Examining subtitles" msgstr "Undersøger undertekster" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 #, fuzzy msgid "Examining subtitles and closed captions" msgstr "Undersøger billedtekster" @@ -1141,18 +1146,18 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "Når du benytter 25bps bør du ændre DCP standard til SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1196,7 +1201,7 @@ msgstr "Venstre bag surround" msgid "Left surround" msgstr "Venstre surround" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Længde" @@ -1388,7 +1393,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, fuzzy, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1507,7 +1512,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1570,7 +1575,7 @@ msgstr "Short" msgid "Sign" msgstr "" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Størrelse" @@ -1623,7 +1628,7 @@ msgstr "" "De bliver nu undersøgt igen, og det kan være nødvendigt at gennemse deres " "indstillinger bagefter." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1631,14 +1636,14 @@ msgid "" msgstr "" "Nogle af underteksterne er på mere end {} linjer, så de bliver beskåret." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1660,7 +1665,7 @@ msgstr "Noget af dit indhold mangler en KDM" msgid "Some of your content needs an OV" msgstr "Noget af dit indhold mangler en OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1726,7 +1731,7 @@ msgstr "Certifikatkæden til signering er ugyldig" msgid "The certificate chain for signing is invalid ({})" msgstr "Certifikatkæden til signering er ugyldig ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1736,7 +1741,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1782,7 +1787,7 @@ msgstr "Filen {} er blevet trimmet {} millisekunder kortere." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Filen {} er blevet trimmet {} millisekunder længere." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1796,7 +1801,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 #, fuzzy msgid "" "There is a large difference between the frame rate of your DCP and that of " @@ -1825,13 +1830,13 @@ msgstr "" "kører på et 32 bit operativsystem, så prøv at reducere antallet af " "genereringstråde i fanebladet Generelt i Indstillinger." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, fuzzy, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" "KDM var genereret til DCP-o-matic, men ikke til dens 'leaf' certifikat." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, fuzzy, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "KDM var ikke genereret til DCP-o-matics dekrypterings certifikat." @@ -2020,7 +2025,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Endnu et Deinterlacing Filter" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2031,7 +2036,7 @@ msgstr "" "billedhastighed understøttes ikke af alle projektorer. Du rådes til at " "ændre DCP-billedhastigheden til {} fps." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2042,7 +2047,7 @@ msgstr "" "billedhastighed understøttes ikke af alle projektorer. Du rådes til at " "ændre billedhastigheden til {} fps." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2051,7 +2056,7 @@ msgstr "" "understøttes af alle projektorer. Vær opmærksom på at der kan opstå " "kompatibilitetsproblemer." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2059,7 +2064,7 @@ msgstr "" "Du benytter 3D indhold, men har sat DCPen til 2D. Sæt DCPen til 3D hvis du " "vil afspille på et 3D-system. (f.eks. Real-D, MasterImage, etc.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2077,14 +2082,14 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 #, fuzzy msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "Du har overlappende undertekster, hvilket ikke er tilladt." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2092,7 +2097,7 @@ msgstr "" "Du har valgt en font-fil der er større end 640 kB. Dette vil højst " "sandsynligt give problemer ved afspilningen." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2105,7 +2110,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Du er nødt til at tilføje indhold til DCP'en før du kan danne den" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2114,7 +2119,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2122,7 +2127,7 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 #, fuzzy msgid "" "Your DCP uses an unusual container ratio. This may cause problems on some " @@ -2132,7 +2137,7 @@ msgstr "" "projektorer. Brug Flat eller Scope som DCPens indholdsformat, hvis det er " "muligt" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2160,7 +2165,7 @@ msgstr "[levende billeder]" msgid "[still]" msgstr "[stillbillede]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[undertekster]" @@ -2176,7 +2181,7 @@ msgstr "_spole{}" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "forbindelsestimeout" @@ -2232,22 +2237,22 @@ msgstr "kunne ikke læse fra fil {} ({})" msgid "could not write to file {} ({})" msgstr "kunne ikke skrive til fil {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "fejl ved async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "fejl ved async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "fejl ved async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "fejl ved async_write ({})" @@ -2375,7 +2380,7 @@ msgstr "stille" msgid "unknown" msgstr "ukendt" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "videobilleder" diff --git a/src/lib/po/de_DE.po b/src/lib/po/de_DE.po index da338451b..6f2c276f1 100644 --- a/src/lib/po/de_DE.po +++ b/src/lib/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2021-08-20 20:44+0200\n" "Last-Translator: Carsten Kurz\n" "Language-Team: DCP-o-matic translators\n" @@ -18,7 +18,7 @@ msgstr "" "X-Generator: Poedit 3.0\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -27,7 +27,7 @@ msgstr "" "\n" "Bildrate %.4f fps\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -36,7 +36,7 @@ msgstr "" "\n" "Beschnitten zu {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -45,7 +45,7 @@ msgstr "" "\n" "Anzeigeseitenverhältnis (DAR) %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -54,7 +54,7 @@ msgstr "" "\n" "Mit Schwarz gefüllt auf Containerformat {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "Skaliert auf {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -104,7 +104,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", Pixelseitenverhältnis %.2f:1" @@ -178,7 +178,7 @@ msgstr "2.39:1 (DCI Scope)" msgid "3D denoiser" msgstr "3D Rauschunterdrückung" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -232,7 +232,7 @@ msgstr "" "href=\"https://dcpomatic.com/donate_amount?amount=10\">Spende über Paypal " "£10</a></ul><p>Dankeschön!</font>" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -260,7 +260,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "Werbung - ADV" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -274,7 +274,7 @@ msgstr "" "Containertyp auf Scope (2.39:1) einstellen. Für Scope-Trailer ist diese " "'letter-boxed' Darstellung in einem Flat-Vorprogramm jedoch übliche Praxis." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 #, fuzzy msgid "" "All of your content narrower than 1.90:1 but your DCP's container is Scope " @@ -300,28 +300,28 @@ msgstr "Audio wird analysiert" msgid "Analysing subtitles" msgstr "Untertitel analysieren" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" "Mindestens ein Marker ist hinter dem Ende des Projekts platziert und wird " "daher ignoriert." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Mindestens eine Ihrer Closed Captions (CCAP) ist grösser als " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" "Mindestens eine Ihrer Closed Captions (CCAP) -Dateien (XML-Format) ist " "grösser als " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Mindestens eine Ihrer Untertiteldateien ist grösser als " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -330,7 +330,7 @@ msgstr "" "empfohlen, jede Untertitelzeile auf eine Länge von maximal 52 Zeichen zu " "beschränken." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -338,7 +338,7 @@ msgstr "" "Mindestens eine Ihrer Untertitel-Zeilen hat mehr als 79 Zeichen. Sie sollten " "jede Untertitelzeile auf eine Länge von maximal 79 Zeichen begrenzen." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -346,7 +346,7 @@ msgstr "" "Mindesteins einer Ihrer Untertitel hat mehr als drei Zeilen. Es ist ratsam, " "nicht mehr als drei Zeilen für einen Untertitel zu nutzen." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -354,7 +354,7 @@ msgstr "" "Mindestens einer Ihrer Untertitel dauert weniger als 15 Frames. Es ist " "ratsam, jeden Untertitel eine Länge von mindestens 15 Frames zuzuordnen." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -363,7 +363,7 @@ msgstr "" "vorherigen Untertitel. Es ist ratsam, die Lücke zwischen Untertiteln auf " "mindestens 2 Frames zu vergrössern." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 #, fuzzy msgid "" "At least one piece of subtitle content has no specified language. It is " @@ -727,7 +727,7 @@ msgstr "" "Zu verbindende Inhalte müssen die gleichen Zeichensätze für Untertitel " "verwenden." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Inhalt Video ist {}x{}" @@ -868,7 +868,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML Untertitel" @@ -876,7 +876,12 @@ msgstr "DCP XML Untertitel" msgid "DCP sample rate" msgstr "Audio Abtastrate (angepasst für DCP/48KHz)" -#: src/lib/frame_rate_change.cc:101 +#: 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 verwendet nur jedes zweite Bild des Quelle.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP läuft mit %.1f%% der Originalgeschwindigkeit der Quelle.\n" @@ -967,11 +972,11 @@ msgstr "Herunterladen fehlgeschlagen ({} Fehler {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Jedes Bild der Quelle wird im DCP verdoppelt.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Jedes Bild der Quelle wird {} mal im DCP wiederholt.\n" @@ -1020,12 +1025,12 @@ msgstr "Fehler: ({})" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Analysiere Untertitel" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 #, fuzzy msgid "Examining audio, subtitles and closed captions" msgstr "Untersuche Closed Captions (CCAP)" @@ -1038,7 +1043,7 @@ msgstr "Inhalt wird überprüft" msgid "Examining subtitles" msgstr "Analysiere Untertitel" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 #, fuzzy msgid "Examining subtitles and closed captions" msgstr "Untersuche Closed Captions (CCAP)" @@ -1194,13 +1199,13 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" "Sofern Sie eine Bildrate von 25fps verwenden, sollten Sie den DCP Standard " "für dieses Projekt auf 'SMPTE' setzen!" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 #, fuzzy msgid "" "In general it is now advisable to make SMPTE DCPs unless you have a " @@ -1212,7 +1217,7 @@ msgstr "" "den SMPTE-Standard für das DCP zu setzen. Nutzen Sie dazu den \"DCP\" " "Tabreiter." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1259,7 +1264,7 @@ msgstr "Surround hinten links" msgid "Left surround" msgstr "Surround links" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Länge" @@ -1457,7 +1462,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, fuzzy, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1576,7 +1581,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1647,7 +1652,7 @@ msgstr "Kurzfilm - SHR" msgid "Sign" msgstr "Signatur" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Größe" @@ -1704,7 +1709,7 @@ msgstr "" "Diese Inhalte werden nun neu untersucht, ggfs. müssen Sie bei Änderungen " "deren typspezifische Einstellungen überprüfen!" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1713,7 +1718,7 @@ msgstr "" "Einige ihrer Closed Captions (CCAP) sind länger als {} Zeile(n). Sie werden " "abgeschnitten." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1723,7 +1728,7 @@ msgstr "" "festgelegt. Es ist ratsam, die Audio-Sprache im \"DCP\" Tabreiter zu setzen, " "außer Ihre Audiospuren haben keine gesprochenen Teile." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1745,7 +1750,7 @@ msgstr "Teile ihrer Quellinhalte (DCP) benötigen eine KDM" msgid "Some of your content needs an OV" msgstr "Teile ihrer Quellinhalte (DCP) benötigen eine OV-CPL" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1812,7 +1817,7 @@ msgstr "Die Zertifikatskette für die Signatur ist ungültig" msgid "The certificate chain for signing is invalid ({})" msgstr "Die Zertifikatskette für Signaturen ist ungültig ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1822,7 +1827,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1872,7 +1877,7 @@ msgstr "Die Spur {} wurde um {} Millisekunden gekürzt." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Die Spur {} wurde um {} Millisekunden verlängert." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1886,7 +1891,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 #, fuzzy msgid "" "There is a large difference between the frame rate of your DCP and that of " @@ -1916,14 +1921,14 @@ msgstr "" "32-Bit-Betriebssystem ausführen, versuchen Sie, die Anzahl der Rechen-" "Threads in den Voreinstellungen n zu reduzieren." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, fuzzy, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" "KDM ist zwar für DCP-o-matic ausgestellt, jedoch nicht für das Leaf-" "Zertifikat dieser Installation." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, fuzzy, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -2123,7 +2128,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Und ein weiterer De-Interlacer ('YADIF')" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2135,7 +2140,7 @@ msgstr "" "abweichend von 24fps oder 48fps(3D) nicht leichtfertig! Ändern Sie die " "Bildrate gegebenenfalls in {} fps." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2147,7 +2152,7 @@ msgstr "" "abweichend von 24fps oder 48fps(3D) nicht leichtfertig! Ändern Sie die " "Bildrate gegebenenfalls in {} fps!" -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2156,7 +2161,7 @@ msgstr "" "nicht von allen Projektionssystemen unterstützt! Wählen Sie Bildraten " "abweichend von 24fps oder 48fps(3D) nicht leichtfertig!" -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2165,7 +2170,7 @@ msgstr "" "ihre Inhalte in 3D wiedergeben wollen, wählen Sie unter dem DCP-Reiter " "'Bild' '3D DCP' aus. Andernfalls wird ein 2D-DCP erzeugt." -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2187,7 +2192,7 @@ msgstr "" "unterschiedliche Frame-Raten. Entfernen Sie die Inhalte, welche die " "unpassenden Frame-Raten haben." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2196,7 +2201,7 @@ msgstr "" "nicht zulässig! Bitte entfernen Sie die Überlappung oder ändern Sie den DCP " "Wrapping Typ auf 'SMPTE'." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2207,7 +2212,7 @@ msgstr "" "speziellen Zeichensatz angewiesen sind, googlen Sie nach 'TI Font " "Compressor' und verwenden Sie ggfs. dieses Tool zur Behebung des Problems." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2221,7 +2226,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Sie müssen erst Inhalte hinzufügen bevor Sie ein DCP erstellen können!" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, fuzzy, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2235,7 +2240,7 @@ msgstr "" "Audiokanäle haben, werden die nicht genutzten Audiokanäle automatisch mit " "Stille aufgefüllt." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2243,7 +2248,7 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2252,7 +2257,7 @@ msgstr "" "Projektionssystemen Probleme verursachen. Bitte verwenden Sie wann immer " "möglich Flat oder Scope Container." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2288,7 +2293,7 @@ msgstr "[Bewegte Bilder]" msgid "[still]" msgstr "[Standbild]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[Untertitel]" @@ -2304,7 +2309,7 @@ msgstr "_reel{}" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "Zeit für Verbindungsaufbau abgelaufen" @@ -2360,22 +2365,22 @@ msgstr "Datei {} konnte nicht gelesen werden ({})" msgid "could not write to file {} ({})" msgstr "Datei {} konnte nicht geschrieben werden ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "error during async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "error during async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "error during async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "error during async_write ({})" @@ -2527,7 +2532,7 @@ msgstr "Standbild" msgid "unknown" msgstr "unbekannt" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "Video Bilder" diff --git a/src/lib/po/el_GR.po b/src/lib/po/el_GR.po index 82705cdda..845004e7a 100644 --- a/src/lib/po/el_GR.po +++ b/src/lib/po/el_GR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,42 +17,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" "Content frame rate %.4f\n" msgstr "" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" "Cropped to {}x{}" msgstr "" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" "Display aspect ratio %.2f:1" msgstr "" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" "Padded with black to fit container {} ({}x{})" msgstr "" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" "Scaled to {}x{}" msgstr "" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr "" @@ -155,7 +155,7 @@ msgstr "" msgid "3D denoiser" msgstr "" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -193,7 +193,7 @@ msgid "" "donate €10</a></ul><p>Thank you!</font>" msgstr "" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -216,7 +216,7 @@ msgstr "" msgid "Advertisement" msgstr "" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -224,7 +224,7 @@ msgid "" "tab." msgstr "" -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -244,54 +244,54 @@ msgstr "" msgid "Analysing subtitles" msgstr "" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "" -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "" -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -614,7 +614,7 @@ msgstr "" msgid "Content to be joined must use the same text language." msgstr "" -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "" @@ -750,7 +750,7 @@ msgstr "" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "" @@ -758,7 +758,12 @@ msgstr "" msgid "DCP sample rate" msgstr "" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "" @@ -835,11 +840,11 @@ msgstr "" msgid "EC" msgstr "" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "" @@ -888,11 +893,11 @@ msgstr "" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "" @@ -904,7 +909,7 @@ msgstr "" msgid "Examining subtitles" msgstr "" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "" @@ -1055,18 +1060,18 @@ msgstr "" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1110,7 +1115,7 @@ msgstr "" msgid "Left surround" msgstr "" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "" @@ -1293,7 +1298,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1409,7 +1414,7 @@ msgstr "" msgid "SMPTE 240M" msgstr "" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1471,7 +1476,7 @@ msgstr "" msgid "Sign" msgstr "" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "" @@ -1505,21 +1510,21 @@ msgid "" "need to check their settings." msgstr "" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1540,7 +1545,7 @@ msgstr "" msgid "Some of your content needs an OV" msgstr "" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1604,7 +1609,7 @@ msgstr "" msgid "The certificate chain for signing is invalid ({})" msgstr "" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1614,7 +1619,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1658,7 +1663,7 @@ msgstr "" msgid "The file {} has been trimmed by {} milliseconds more." msgstr "" -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1672,7 +1677,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1692,12 +1697,12 @@ msgid "" "tab of Preferences." msgstr "" -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -1875,7 +1880,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -1883,7 +1888,7 @@ msgid "" "to {} fps." msgstr "" -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -1891,19 +1896,19 @@ msgid "" "rate to {} fps." msgstr "" -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." msgstr "" -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" msgstr "" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -1917,19 +1922,19 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." msgstr "" -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -1940,7 +1945,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -1949,7 +1954,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -1957,13 +1962,13 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." msgstr "" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -1989,7 +1994,7 @@ msgstr "" msgid "[still]" msgstr "" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "" @@ -2005,7 +2010,7 @@ msgstr "" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "" @@ -2061,22 +2066,22 @@ msgstr "" msgid "could not write to file {} ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, c++-format msgid "error during async_connect: ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "" @@ -2199,7 +2204,7 @@ msgstr "" msgid "unknown" msgstr "" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "" diff --git a/src/lib/po/es_ES.po b/src/lib/po/es_ES.po index 6ac02b4e0..dcc644703 100644 --- a/src/lib/po/es_ES.po +++ b/src/lib/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: LIBDCPOMATIC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2021-10-17 22:41-0400\n" "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n" "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.0\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Velocidad del contenido %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Recortado a {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Proporción de aspecto mostrada %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Completado con negro para cubrir el contenedor {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Redimensionado a {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", proporción de aspecto de pixel %.2f:1" @@ -176,7 +176,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "reducción de ruido 3D" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -228,7 +228,7 @@ msgstr "" "Paypal para donar €20</a><li><a href=“https://dcpomatic.com/donate_amount?" "amount=10”>Ir a Paypal para donar€10</a></ul><p>¡Muchas gracias!" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -257,7 +257,7 @@ msgstr "ARIB STD-B67 ('Log-gamma híbrido')" msgid "Advertisement" msgstr "Publicidad" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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 +268,7 @@ msgstr "" "(1.85:1). Esto creará bandas negras horizontales. Puede que prefieras " "seleccionar el contenedor DCP en Scope (2.39:1) en la pestaña \"DCP\"." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -291,25 +291,25 @@ msgstr "Analizaando audio" msgid "Analysing subtitles" msgstr "Analizando subtítulos" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" "Al menos un marcador aparece después del final del proyecto y será ignorado." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Al menos uno de los ficheros de subtítulos cerrados es mayor que " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "Al menos uno de los ficheros XML de subtítulos cerrados es mayor que " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Al menos uno de los ficheros de subtítulos es mayor que " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -317,7 +317,7 @@ msgstr "" "Al menos una de las líneas de subtítulos tiene más de 52 caracteres. Se " "recomienda un máximo de 52 caracteres por línea." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -325,7 +325,7 @@ msgstr "" "Al menos una de las líneas de subtítulos tiene más de 79 caracteres. Cada " "línea debe tener un máximo de 79 caracteres." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -333,7 +333,7 @@ msgstr "" "Al menos uno de los subtítulos tiene más de 3 líneas. Se recomienda no usar " "más de 3 líneas." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -341,7 +341,7 @@ msgstr "" "Al menos uno de los subtítulos dura menos de 15 imágenes. Se recomienda que " "un subtítulo dure al menos 15 imágenes." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -349,7 +349,7 @@ msgstr "" "Al menos uno de los subtítulos empieza menos de 2 imágenes tras el " "precedente. Se recomienda dejar al menos 2 imágenes entre subtítulos." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 #, fuzzy msgid "" "At least one piece of subtitle content has no specified language. It is " @@ -690,7 +690,7 @@ msgstr "Para unir contenido debe tener el mismo tipo de subtítulos." msgid "Content to be joined must use the same text language." msgstr "Para unir contenidos deben tener la misma lengua de texto." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "El video es {}x{}" @@ -831,7 +831,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "Subtítulos DCP XML" @@ -839,7 +839,12 @@ msgstr "Subtítulos DCP XML" msgid "DCP sample rate" msgstr "Velocidad del DCP" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, fuzzy, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "El DCP usará una de cada dos imágenes de la fuente.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "El DCP se reproducirá al %.1f%% de la velocidad de la fuente.\n" @@ -928,11 +933,11 @@ msgstr "Descarga fallida ({} error {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Se doblará cada imagen en el DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Cada imagen será repetida otras {} veces en el DCP.\n" @@ -981,12 +986,12 @@ msgstr "Error: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Examinando subtítulos" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Examinando audio, subtítulos, abiertos y cerrados" @@ -998,7 +1003,7 @@ msgstr "Examinando contenido" msgid "Examining subtitles" msgstr "Examinando subtítulos" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Examinando subtítulos abiertos y cerrados" @@ -1152,11 +1157,11 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "Si usas 25 ípsilons deberías cambiar el standard DCP a SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 #, fuzzy msgid "" "In general it is now advisable to make SMPTE DCPs unless you have a " @@ -1167,7 +1172,7 @@ msgstr "" "importante para elegir Interop. Deberías elegir el standard SMPTE en la " "pestaña “DCP”." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1213,7 +1218,7 @@ msgstr "Surround trasero izquierda" msgid "Left surround" msgstr "Surround izquierda" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Duración" @@ -1406,7 +1411,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, fuzzy, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1525,7 +1530,7 @@ msgstr "SMPTE 2085, Y’D’zD’x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1592,7 +1597,7 @@ msgstr "Cortometraje" msgid "Sign" msgstr "Signo" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Tamaño" @@ -1641,7 +1646,7 @@ msgstr "" "\n" "Estos ficheros serán reexaminados ahora, necesitarás confirmar las opciones." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1649,7 +1654,7 @@ msgid "" msgstr "" "Algunos d los subtítulos cerrados tienen más de {} líneas, serán cortados." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1659,7 +1664,7 @@ msgstr "" "recomendable indicar la lengua del audio en la pestaña “DCP”, a menos que el " "audio no contenga texto hablado." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1681,7 +1686,7 @@ msgstr "Parte del contenido necesita una KDM" msgid "Some of your content needs an OV" msgstr "Parte del contenido necesita una OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1748,7 +1753,7 @@ msgstr "La cadena de certificados para firmar no es válida" msgid "The certificate chain for signing is invalid ({})" msgstr "La cadena de certificados para firmar no es válida ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1758,7 +1763,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1807,7 +1812,7 @@ msgstr "El fichero {} ha sido recortado en {} milisegundos." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "El fichero {} ha sido alargado con {} milisegundos." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1821,7 +1826,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 #, fuzzy msgid "" "There is a large difference between the frame rate of your DCP and that of " @@ -1850,12 +1855,12 @@ msgstr "" "sistema operativo de 32 bits, trate de reducir el número de hilos de " "codificación en la sección General de las preferencias." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, fuzzy, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "Este KDM se hizo para DCP-o-matic pero no para su certificado hoja." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, fuzzy, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -2050,7 +2055,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2061,7 +2066,7 @@ msgstr "" "soportada por todos los proyectores. Te recomendamos cambiar la velocidad a " "{} ips." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2072,7 +2077,7 @@ msgstr "" "soportada por todos los proyectores. Considera cambiar la velocidad a {} " "ips." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2081,7 +2086,7 @@ msgstr "" "todos los proyectores. Sé consciente de que puede haber problemas de " "compatibilidad." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2089,7 +2094,7 @@ msgstr "" "Estás usando contenido 3D pero el DCP es 2D. Cambia el DCP a 3D si quieres " "que funcione en un sistema 3D (ej.: Real-D, MasterImage, etc.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2108,7 +2113,7 @@ msgstr "" "Hay más d aun contenido Atmos, y no tienen la misma velocidad. Debes quitar " "algún contenido Atmos." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2116,7 +2121,7 @@ msgstr "" "Tienes subtítulos cerrados superpuestos, que no están permitidos en DCPs " "Interop. Cambia el standard DCP a SMPTE." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2124,7 +2129,7 @@ msgstr "" "Has seleccionado una fuente de más de 640 Kb. Es muy posible que cause " "problemas en la reproducción." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2137,7 +2142,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Tiene que añadir contenido al DCP antes de crearlo" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, fuzzy, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2150,7 +2155,7 @@ msgstr "" "que el contenido tenga menos canales, DCP-o-matic añadirá silencio en los " "canales sin audio." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2158,7 +2163,7 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2167,7 +2172,7 @@ msgstr "" "algunos proyectores. Si es posible, utiliza Flat o Scope como contenedor " "DCP." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2195,7 +2200,7 @@ msgstr "[imágenes en movimiento]" msgid "[still]" msgstr "[imagen fija]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[subtítulos]" @@ -2211,7 +2216,7 @@ msgstr "_bobina{}" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "tiempo de conexión agotado" @@ -2267,22 +2272,22 @@ msgstr "no se pudo leer del fichero {} ({})" msgid "could not write to file {} ({})" msgstr "no se pudo escribir en el fichero {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "error durante async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "error durante async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "error durante async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "error durante async_write ({})" @@ -2417,7 +2422,7 @@ msgstr "imagen fija" msgid "unknown" msgstr "desconocido" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "fotogramas" diff --git a/src/lib/po/fa_IR.po b/src/lib/po/fa_IR.po index a2d78c768..636631b6f 100644 --- a/src/lib/po/fa_IR.po +++ b/src/lib/po/fa_IR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2024-10-05 18:17+0330\n" "Last-Translator: Soleyman Rahmani Aghdam <Soleyman.rahmani@gmail.com>\n" "Language-Team: \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.5\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -27,7 +27,7 @@ msgstr "" "\n" "تعداد فریم محتوا در ثانیه %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -36,7 +36,7 @@ msgstr "" "\n" "بریده شد به {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -45,7 +45,7 @@ msgstr "" "\n" "نسبت ابعاد صفحه نمایش %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -54,7 +54,7 @@ msgstr "" "\n" "با نوار مشکی تا هم اندازه ظرف محتوا پوشیده شد {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "تغییر مقیاس به {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -103,7 +103,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$نام_عملیات: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", نسبت ابعاد پیکسلها %.2f:1" @@ -176,7 +176,7 @@ msgstr "2/39(اسکوپ)" msgid "3D denoiser" msgstr "ضد نویز سه بعدی" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -231,7 +231,7 @@ msgstr "" "</a></ul><p>\n" "متشکرم! </font>" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -259,7 +259,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "تبلیغات بازرگانی" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -271,7 +271,7 @@ msgstr "" "میگیرد. ممکن است ترجیح دهید ظرف دی سی پی را در زبانه \"دی سی پی\" بزرگتر و " "روی اسکوپ (2/39 به 1) قرار دهید." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -294,24 +294,24 @@ msgstr "آنالیز صدا" msgid "Analysing subtitles" msgstr "آنالیز زیرنویس" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "حداقل یک نشانه در آخر پروژه قرار گرفته که از آن صرف نظر شد." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "حداقل یکی از فایلهای زیرنویس شما بزرگتر است از " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "حداقل یکی از قسمتهای XML فایلهای زیرنویس شما بزرگتر است از " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "حداقل یکی از فایلهای زیرنویس شما بزرگتر است از " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -319,7 +319,7 @@ msgstr "" "حداقل یکی از خطهای زیرنویس شما بیشتر از 52 حرف دارد. توصیه میشود طول هر خط " "را حداکثر به 52 حرف تغییر دهید." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -327,7 +327,7 @@ msgstr "" "حداقل یکی از خطهای زیرنویس شما بیش از 79 حرف دارد. شما باید طول هر خط را " "حداکثر به 79 حرف تغییر دهید." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -335,7 +335,7 @@ msgstr "" "حداقل یکی از زیرنویسهای شما بیش از 3 خط دارد. توصیه میشود بیش از سه خط " "استفاده نکنید." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -343,7 +343,7 @@ msgstr "" "حداقل یک زیرنویس وجود دارد که زمان آن کمتر از 15 فریم است. توصیه میشود زمان " "هر زیرنویس حداقل 15 فریم بر ثانیه باشد." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -351,7 +351,7 @@ msgstr "" "حداقل یکی از زیرنویسهای شما کمتر از 2 فریم بعد از زیرنویس قبلی شروع میشود. " "توصیه میشود زمان بین دو زیرنویس حداقل 2 فریم باشد." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -680,7 +680,7 @@ msgstr "محتوایی که الحاق میشود باید رشته کد زیر msgid "Content to be joined must use the same text language." msgstr "محتوایی که الحاق میشود باید زبان نوشتاری مشابه داشته باشد." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "محتوای ویدیو {}x{} است" @@ -821,7 +821,7 @@ msgstr "دی بی پی" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "زیرنویس های XML دی سی پی" @@ -829,7 +829,12 @@ msgstr "زیرنویس های XML دی سی پی" msgid "DCP sample rate" msgstr "نرخ نمونه دی سی پی" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, fuzzy, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "دی سی پی از هر فریم دیگر محتوا استفاده میکند.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "دی سی پی با %.1f%% سرعت محتوا اجرا خواهد شد.\n" @@ -924,11 +929,11 @@ msgstr "دانلود با خطا مواجه شد({} خطا{})" msgid "EC" msgstr "c" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "هر فریم محتوا در دی سی پی دوبرابر خواهد شد.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "هر فریم محتوا {}بار در دی سی پی تکرار خواهد شد.\n" @@ -977,11 +982,11 @@ msgstr "خطا: {}" msgid "Event" msgstr "رویداد" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "بررسی صدا" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "بررسی صدا، زیرنویس و فایل زیرنویس" @@ -993,7 +998,7 @@ msgstr "بررسی محتوا" msgid "Examining subtitles" msgstr "بررسی زیرنویس" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "بررسی فایل های زیرنویس" @@ -1146,13 +1151,13 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" "اگر از 25 فریم بر ثانیه استفاده میکنید استاندارد دی سی پی خود را به اس ام پی " "تی ای تغییر دهید." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " @@ -1162,7 +1167,7 @@ msgstr "" "معینی برای استفاده از اینتروپ دارید. توصیه میشود که در زبانه \"دی سی پی\" " "استاندارد اس ام پی تی ای را برای دی سی پی خودتان انتخاب کنید." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1208,7 +1213,7 @@ msgstr "پشت سر- چپ سراوند" msgid "Left surround" msgstr "چپ سراوند" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "مدت" @@ -1399,7 +1404,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, fuzzy, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1518,7 +1523,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1584,7 +1589,7 @@ msgstr "کوتاه" msgid "Sign" msgstr "امضاء" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "اندازه" @@ -1629,7 +1634,7 @@ msgstr "" "\n" "این فایلها بررسی مجدد میشوند، ممکن است نیاز باشد تنظیمات آنها را کنترل کنید." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, fuzzy, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1637,7 +1642,7 @@ msgid "" msgstr "" "برخی از زیرنویسهای شما بیش از % 1 خطوط را شامل میشوند، بنابراین کوتاه میشوند." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1646,7 +1651,7 @@ msgstr "" "بخش از محتوای شما صدا دارد اما شما زبان آنرا تنظیم نکرده اید. توصیه میشود که " "زبان را در زبانه \"دی سی پی\" تنظیم کنید حتی اگرسکوت دارد." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1667,7 +1672,7 @@ msgstr "بخشی از محتوای شما نیازمند کلید است" msgid "Some of your content needs an OV" msgstr "بخشی از محتوای شما نیازمند یک نسخه اصلی است(OV)" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1732,7 +1737,7 @@ msgstr "زنجیره گواهینامه نامعتبر است" msgid "The certificate chain for signing is invalid ({})" msgstr "زنجیره گواهینامه نامعتبر است({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, fuzzy, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1746,7 +1751,7 @@ msgstr "" "اجرا نشوند. توصیه میشود با مراجعه به اولویتها در زبانه کلید توسط \"ساخت مجدد " "گواهی نامه و کلید..\" مجدد زنجیره گواهی نامه را ایجاد کنید." -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, fuzzy, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1798,7 +1803,7 @@ msgstr "فایل {} به مدت {} میلی ثانیه تنظیم وکوتاه msgid "The file {} has been trimmed by {} milliseconds more." msgstr "فایل {} به مدت {} میلی ثانیه تنظیم وبلند شد." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1818,7 +1823,7 @@ msgstr "" "بود. اما شما باید همه زیرنویسهای پروژه خود را برای اطمینان از جانمایی درست " "بررسی کنید." -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1845,12 +1850,12 @@ msgstr "" "میکنید سعی کنید تعداد رشته های رمزگذاری را از طریق زبانه کلی در اولویتها " "کاهش دهید." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, fuzzy, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "این کلید برای 1% ساخته شده اما نه برای گواهی برگ آن." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, fuzzy, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "این کلید برای گواهی نامه 1% ساخته نشده است." @@ -2040,7 +2045,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "با این حال یک فیلتر ضد اینترلیس دیگر" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2051,7 +2056,7 @@ msgstr "" "پروژکتورها پشتیبانی نمیشود. توصیه میشود نرخ فریم دی سی پی را به {} فریم بر " "ثانیه تغییر دهید." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2062,7 +2067,7 @@ msgstr "" "پروژکتورها پشتیبانی نمیشود. ممکن است بخواهید نرخ فریم را به {} فریم بر ثانیه " "تغییر دهید." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2070,7 +2075,7 @@ msgstr "" "تنظیمات دی سی پی را روی 30 فریم بر ثانیه قرار داده اید که همه پروژکتورها " "قادر به نمایش آن نیستند. از این عدم سازگاری آگاه باشد." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2079,7 +2084,7 @@ msgstr "" "قرار است روی سیستم سه بعدی پلی شود تنظیم دی سی پی خود را روی سه بعدی قرار " "دهید(مانند Real-D، MasterImage، وغیره.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2098,7 +2103,7 @@ msgstr "" "شما بیش از یک محتوای اتمز دارید که نرخ فریم مشابهی ندارند. باید برخی از آنها " "را حذف کنید." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2106,7 +2111,7 @@ msgstr "" "زیرنویسهای شما همپوشانی دارند، که در استاندارد اینتروپ مجاز نیست. استاندارد " "دی سی پی خود را به اس ام پی تی ای تغییر دهید." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2114,7 +2119,7 @@ msgstr "" "یک فایل فونت با اندازه بزرگتر از 640 کیلوبایت مشخص شده است. به احتمال زیاد " "هنگام پلی فیلم مشکل ساز است." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2127,7 +2132,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "شما قبل از ساخت دی س پی باید به آن تعدادی محتوا اضافه کنید" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, fuzzy, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2140,7 +2145,7 @@ msgstr "" "محتوای شما تعداد کانال کمتری دارد مساله ای نیست، 1% کانالهای اضافه را با " "سکوت پر میکند." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2151,7 +2156,7 @@ msgstr "" "سنجی دی سی پی شما توسط دفاتر پخش با خطای کیفی مواجه شود. برای پرهیز از خطا، " "تعداد کانالهای دی سی پی خود را روی 8 یا 16 قرار دهید." -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2159,7 +2164,7 @@ msgstr "" "دی سی پی شما نسبت ابعاد تصویر نامتعارفی دارد. این ممکن در برخی پروژکتورها " "مشکل ایجاد کند. اگر ممکن است، از نسبت ابعاد تخت یا اسکوپ استفاده کنید." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2186,7 +2191,7 @@ msgstr "[تصاویر متحرک]" msgid "[still]" msgstr "[تصویرثابت]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[زیرنویسها]" @@ -2202,7 +2207,7 @@ msgstr "_حلقه{}" msgid "bits" msgstr "بیتها" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "زمان اتصال تمام شد" @@ -2258,22 +2263,22 @@ msgstr "نمیتوان از فایل خواند{}({})" msgid "could not write to file {} ({})" msgstr "نمیتوان در فایل نوشت{}({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "خطا در هنگام async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "خطا در هنگام async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "خطا در هنگام async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "خطا در هنگام async_write ({})" @@ -2405,7 +2410,7 @@ msgstr "تصویرثابت" msgid "unknown" msgstr "ناشناخته" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "فریم های ویدیو" diff --git a/src/lib/po/fr_FR.po b/src/lib/po/fr_FR.po index bd5f68789..2915dc9b5 100644 --- a/src/lib/po/fr_FR.po +++ b/src/lib/po/fr_FR.po @@ -7,17 +7,17 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" -"PO-Revision-Date: 2025-09-28 14:37+0200\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" +"PO-Revision-Date: 2026-04-22 00:09+0200\n" "Last-Translator: Dan Cohen <thedan.cohen@protonmail.com>\n" "Language-Team: \n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.7\n" +"X-Generator: Poedit 3.9\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Fréquence d'images du contenu %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Rogné à {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Rapport d'aspect de l'écran %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Ajout de bandes noires pour remplir le format image cible {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Mis à l'échelle à {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", rapport d'aspect des pixels %.2f:1" @@ -175,7 +175,7 @@ msgstr "2,39 (Scope)" msgid "3D denoiser" msgstr "Débruitage 3D" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -202,7 +202,7 @@ msgid "; {} remaining; finishing at {}{}" msgstr "; {} restant ; fin prévue à {}{}" #: 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 " @@ -220,16 +220,16 @@ msgstr "" "src=\"memory:me.jpg\" align=\"center\"><p>Bonjour. Je m'appelle Carl et je " "suis le développeur de {}. Je travaille sur ce logiciel pendant mon temps " "libre (avec l'aide d'une équipe bénévole de testeurs et de traducteurs) et " -"je le publie en tant que logiciel libre.<p>Si vous trouvez {} utile, merci " -"de penser à faire un don au projet. Une aide financière m'aidera à passer " -"plus de temps sur {} et à l'améliorer !<p><ul><li><a href=\"https://" +"je le publie en tant que logiciel libre.<p>Si vous trouvez {} utile, " +"n’hésitez pas à faire un don au projet. Une aide financière m'aidera à " +"passer plus de temps sur {} et à l'améliorer !<p><ul><li><a href=\"https://" "dcpomatic.com/donate_amount?amount=40\">Aller sur Paypal pour faire un don " "de 40€</a><li><a href=\"https://dcpomatic.com/donate_amount?" "amount=20\">Aller sur Paypal pour faire un don de 20€</a><li><a " "href=\"https://dcpomatic.com/donate_amount?amount=10\">Aller sur Paypal pour " "faire un don de 10€</a></ul><p>Merci !</p>" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -258,7 +258,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "Publicité" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -270,7 +270,7 @@ msgstr "" "Ajuster le conteneur de votre DCP en Scope (2,39:1) dans l'onglet \"DCP\", " "si vous voulez l'éviter." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -293,24 +293,24 @@ msgstr "Analyse de l'audio" msgid "Analysing subtitles" msgstr "Analyse des sous-titres" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "Au moins un marqueur tombe après la fin du projet et sera ignoré." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Au moins un de vos fichiers de sous-titres codés est plus gros que " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "Au moins un de vos sous-titres codés a une partie XML plus grosse que " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Au moins un de vos fichiers de sous-titres est plus gros que " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -319,7 +319,7 @@ msgstr "" "Il est recommandé de faire en sorte que chaque ligne ait une longueur de 52 " "caractères au maximum." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -327,7 +327,7 @@ msgstr "" "Au moins une de vos lignes de sous-titres comporte plus de 79 caractères. " "Vous devez faire en sorte que chaque ligne ait 79 caractères au maximum." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -335,7 +335,7 @@ msgstr "" "Au moins un de vos sous-titres comporte plus de 3 lignes. Il est conseillé " "de ne pas utiliser plus de 3 lignes." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -343,7 +343,7 @@ msgstr "" "Au moins un de vos sous-titres dure moins de 15 images. Il est conseillé de " "faire en sorte que chaque sous-titre dure au moins 15 images." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -352,7 +352,7 @@ msgstr "" "précédent. Il est conseillé de faire en sorte que l'écart entre les sous-" "titres soit d'au moins 2 images." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -444,7 +444,7 @@ msgstr "C" #: src/lib/exceptions.cc:196 #, c++-format msgid "CPL {} not found" -msgstr "" +msgstr "CPL {} non trouvé" #: src/lib/job.cc:657 msgid "Cancelled" @@ -476,6 +476,9 @@ 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 "" +"Vérifiez les paramètres du serveurs dans l’onglet des préférences TMS, ou " +"décochez «Téléverser le DCP vers TMS après la création» si vous ne voulez " +"pas téléverser votre DCP." #: src/lib/transcode_job.cc:106 msgid "Check their new settings, then try again." @@ -687,7 +690,7 @@ msgstr "Le contenu à joindre doit utiliser le même flux de sous-titres." msgid "Content to be joined must use the same text language." msgstr "Le contenu à joindre doit utiliser la même langue de texte." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Le contenu vidéo est {}x{}" @@ -706,9 +709,8 @@ msgid "Copying DCPs to {}" msgstr "Copie des DCPs vers {}" #: src/lib/reel_writer.cc:194 -#, fuzzy msgid "Copying existing asset" -msgstr "Vérification des données d'image existantes" +msgstr "Copie des ressources existantes" #: src/lib/copy_to_drive_job.cc:58 #, c++-format @@ -828,7 +830,7 @@ msgstr "DCP" msgid "DCP (via {})" msgstr "DCP (via {})" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "Sous-titres XML de DCP" @@ -836,7 +838,12 @@ msgstr "Sous-titres XML de DCP" msgid "DCP sample rate" msgstr "Fréquence d'échantillonnage du DCP" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "Le DCP utilisera une image sur {} du contenu.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "Le DCP sera lu à %.1f%% de la vitesse du contenu source.\n" @@ -927,15 +934,14 @@ msgstr "Échec du téléchargement (erreur {} {})" #. 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 "C" +msgstr "EC" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Chaque image du contenu sera doublée dans le DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Chaque image de contenu sera répétée {} fois de plus dans le DCP.\n" @@ -986,11 +992,11 @@ msgstr "Erreur : {}" msgid "Event" msgstr "Événement" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "Examen de l'audio" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Examen de l'audio, des sous-titres et des sous-titres codés" @@ -1002,7 +1008,7 @@ msgstr "Examen du contenu" msgid "Examining subtitles" msgstr "Examen des sous-titres" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Examen des sous-titres et des sous-titres codés" @@ -1154,15 +1160,15 @@ msgstr "IEC61966-2-4" #. "FFOI" and "LFOI" ({First, Last} Frame of Intermission) #: src/lib/layout_markers.cc:142 msgid "IN" -msgstr "" +msgstr "IN" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" "Si vous utilisez 25 images par seconde, vous devez changer votre standard " "DCP en SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " @@ -1172,7 +1178,7 @@ msgstr "" "avez une raison particulière d'utiliser Interop. Il est conseillé de " "paramétrer votre DCP pour utiliser la norme SMPTE dans l'onglet \"DCP\"." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1218,7 +1224,7 @@ msgstr "Ambiance arrière gauche" msgid "Left surround" msgstr "Ambiance gauche" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Durée" @@ -1264,9 +1270,8 @@ msgstr "Ls" #. 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 "C" +msgstr "MC" #: src/lib/mid_side_decoder.cc:39 msgid "Mid-side decoder" @@ -1312,12 +1317,11 @@ msgstr "Désentrelaceur à compensation de mouvement" #: src/lib/dcp_content.cc:212 msgid "No ASSETMAP or ASSETMAP.xml file found: is this a DCP?" -msgstr "" +msgstr "Aucun fichier ASSETMAP ou ASSETMAP.xml trouvé: est-ce un DCP?" #: src/lib/dcp_examiner.cc:115 -#, fuzzy msgid "No CPLs found in DCP" -msgstr "Aucune CPL trouvée dans le DCP." +msgstr "Aucune CPL trouvée dans le DCP" #: src/lib/dcp_decoder.cc:114 msgid "No CPLs found in DCP." @@ -1403,17 +1407,17 @@ msgstr "Réduction de bruit par ondelettes" #: 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:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1455,9 +1459,8 @@ msgstr "D" #. 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 "D" +msgstr "RB" #: src/lib/ffmpeg_content.cc:644 msgid "RGB / sRGB (IEC61966-2-1)" @@ -1532,7 +1535,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1548,9 +1551,8 @@ msgid "SMPTE ST 2084 for 10, 12, 14 and 16 bit systems" msgstr "SMPTE ST 2084 pour systèmes 10, 12, 14 et 16 bits" #: 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" @@ -1599,7 +1601,7 @@ msgstr "Court métrage" msgid "Sign" msgstr "Signe" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Taille" @@ -1637,17 +1639,14 @@ msgstr "" "vérifier leurs paramètres." #: 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 "" -"Certains fichiers ont été modifiés depuis qu'ils ont été ajoutés au projet.\n" -"\n" -"Ces fichiers seront maintenant réexaminés, vous devrez donc peut-être " -"vérifier leurs paramètres." +"Certains fichiers doivent être re-examinés suite à la résolution d’un bug " +"dans DCP-o-matic. Vous devez vérifier leurs paramètres." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1656,7 +1655,7 @@ msgstr "" "Certaines de vos sous-titres codés font plus de {} lignes, ils seront donc " "tronqués." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1666,7 +1665,7 @@ msgstr "" "langue audio. Il est conseillé de définir la langue audio dans l'onglet " "\"DCP\", sauf si votre audio ne comporte pas de parties parlées." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1674,6 +1673,11 @@ msgid "" "in doubt, set everything (picture, sound and text) to be either encrypted or " "not." msgstr "" +"Une partie de votre contenu est chiffré, mais l’autre non. Même si certains " +"distributeurs (ex : Netflix) demandent des sous-titres non chiffrés (même si " +"le son et l’image le sont), d’autres pointeront des erreurs avec le DCP fait " +"depuis ce projet. Dans le doute, chiffrez tout ou rien (image, son et " +"texte)." #: src/lib/make_dcp.cc:69 msgid "Some of your content is missing" @@ -1687,7 +1691,7 @@ msgstr "Certains de vos contenus ont besoin d'un KDM" msgid "Some of your content needs an OV" msgstr "Une partie de votre contenu a besoin d'une OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1723,9 +1727,8 @@ msgstr "Dimanche" #. 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 "C" +msgstr "TC" #: src/lib/dcp_content_type.cc:60 msgid "Teaser" @@ -1757,7 +1760,7 @@ msgstr "La chaîne de certificats pour la signature n'est pas valide" msgid "The certificate chain for signing is invalid ({})" msgstr "La chaîne de certificats pour la signature n'est pas valide ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1772,7 +1775,7 @@ msgstr "" "certificats de signature en cliquant sur le bouton \"Re-créer les " "certificats et la clé...\" dans la page Clés des préférences." -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1826,7 +1829,7 @@ msgstr "Le fichier {} a été raccourci de {} millisecondes." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Le fichier {} a été allongé de {} millisecondes." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1847,7 +1850,7 @@ msgstr "" "devriez vérifier tous les sous-titres de votre projet pour vous assurer " "qu'ils sont placés là où vous le souhaitez." -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1876,13 +1879,13 @@ msgstr "" "système d'exploitation 32 bits, essayez de réduire le nombre de threads " "d'encodage dans l'onglet Général des préférences." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" "Ce KDM a été fait pour {} mais pas pour son certificat d'entité finale." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "Ce KDM n'a pas été fait pour le certificat de décryptage de {}." @@ -2065,17 +2068,17 @@ msgstr "YCOCG" #: src/lib/ffmpeg_content.cc:661 msgid "YCgCo-R, even addition" -msgstr "" +msgstr "YCg-Co-R, ajout pair" #: src/lib/ffmpeg_content.cc:662 msgid "YCgCo-R, odd addition" -msgstr "" +msgstr "YCg-Co-R, ajout impair" #: src/lib/filter.cc:98 msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2086,7 +2089,7 @@ msgstr "" "par tous les projecteurs. Nous vous conseillons de modifier la cadence " "d'images de votre DCP à {} ips." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2097,7 +2100,7 @@ msgstr "" "Cette fréquence d'images n'est pas supportée par tous les projecteurs. Vous " "pourriez envisager de modifier la fréquence d'images de votre DCP à {} ips." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2106,7 +2109,7 @@ msgstr "" "qui n'est pas supportée par tous les projecteurs. Attention à de probables " "problèmes de compatibilité." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2115,7 +2118,7 @@ msgstr "" "DCP sur 3D si vous souhaitez le projeter sur un système 3D (par exemple : " "Real-D, MasterImage, etc.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2135,7 +2138,7 @@ msgstr "" "Vous avez plus d'un morceau de contenu Atmos, et ils n'ont pas la même " "fréquence d'images. Vous devez supprimer une partie du contenu Atmos." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2143,7 +2146,7 @@ msgstr "" "Des sous-titres se chevauchent, ce qui n'est pas autorisé dans les DCP au " "standard Interop. Modifiez votre standard de DCP en SMPTE." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2151,7 +2154,7 @@ msgstr "" "Vous avez spécifié un fichier de police dont la taille est supérieure à " "640kB. Cela risque fort de poser des problèmes lors de la lecture." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2164,7 +2167,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Vous devez ajouter du contenu au DCP avant de le créer" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2177,7 +2180,7 @@ msgstr "" "canaux. Cela n'a pas d'importance si votre contenu a moins de canaux, car " "{} remplira les extras de silence." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2188,7 +2191,7 @@ msgstr "" "erreur lors de la vérification par votre distributeur. Sélectionnez 8 ou 16 " "canaux audio pour éviter cela." -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2197,7 +2200,7 @@ msgstr "" "problèmes sur certains projecteurs. Si possible, utilisez Flat ou Scope " "pour le ratio du DCP." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2229,7 +2232,7 @@ msgstr "[séquence d'images]" msgid "[still]" msgstr "[image fixe]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[sous-titres]" @@ -2245,7 +2248,7 @@ msgstr "_bobine{}" msgid "bits" msgstr "bits" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "la connexion a expiré" @@ -2301,22 +2304,22 @@ msgstr "impossible de lire depuis le fichier {} ({})" msgid "could not write to file {} ({})" msgstr "impossible d'écrire dans le fichier {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "erreur pendant async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, c++-format msgid "error during async_connect: ({})" msgstr "erreur pendant async_connect : ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "erreur pendant async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "erreur pendant async_write ({})" @@ -2416,7 +2419,6 @@ msgstr "nom" #. 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." @@ -2450,7 +2452,7 @@ msgstr "fixe" msgid "unknown" msgstr "inconnu" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "images vidéo" diff --git a/src/lib/po/hu_HU.po b/src/lib/po/hu_HU.po index 87860dae9..93f2f7862 100644 --- a/src/lib/po/hu_HU.po +++ b/src/lib/po/hu_HU.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2022-08-31 21:35+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.1.1\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Tartalom képkockaszáma %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Méretre vágva: {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Megjelenítési arány: %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Fekete kerettel körbekerítve, hogy beleférjen a {} ({}x{}) konténerbe." -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Skálázva a következő méretre: {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", pixel arány %.2f:1" @@ -175,7 +175,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "3D denoiser" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -227,7 +227,7 @@ msgstr "" "dcpomatic.com/donate_amount?amount=10”>€10 támogatása PayPal-on keresztül</" "a></ul><p>Nagyon szépen köszönöm!" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -258,7 +258,7 @@ msgstr "ARIB STD-B67 (‘Hybrid log-gamma’)" msgid "Advertisement" msgstr "Advertisement" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -269,7 +269,7 @@ msgstr "" "(1.85:1). Ez egy fekete keretet fog eredményezni. Javasoljuk a DCP konténer " "Scope (2.39:1) használatát a “DCP’ fülön belül." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -292,26 +292,26 @@ msgstr "Hang vizsgálata" msgid "Analysing subtitles" msgstr "Felirat vizsgálata" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" "Legalább egy jelölő a projekt vége után van beállítva. Ez nem lesz " "figyelembe véve." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Legalább egy hangleíró felirat nagyobb, mint " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "Legalább egy hangleíró felirat XML fájlja nagyobb, mint " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Legalább egy felirat nagyobb, mint " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -319,7 +319,7 @@ msgstr "" "Legalább egy felirat sor több karaktert tartalmaz, mint 52. Javasolt, hogy " "egy sor felirat maximum 52 karakter legyen." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -327,7 +327,7 @@ msgstr "" "Legalább egy felirat sor több karaktert tartalmaz, mint 79. Javasolt, hogy " "egy sor felirat maximum 79 karakter legyen." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -335,7 +335,7 @@ msgstr "" "Legalább egy felirat bekezdése több, mint 3 sort tartalmaz. Javasolt, hogy " "ne legyen egy bekezdés 3 sornál több." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -343,7 +343,7 @@ msgstr "" "Legalább egy felirat képkocka száma kisebb, mint 15. Javasolt, hogy egy " "felirat legalább 15 képkocka hosszú legyen." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -351,7 +351,7 @@ msgstr "" "Legalább egy felirat kevesebb, mint 2 képkockával következik a másik után. " "Javasolt, hogy legalább 2 képkockányi hely legyen két felirat között." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 #, fuzzy msgid "" "At least one piece of subtitle content has no specified language. It is " @@ -691,7 +691,7 @@ msgstr "" msgid "Content to be joined must use the same text language." msgstr "" -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "" @@ -830,7 +830,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML feliratok" @@ -838,7 +838,12 @@ msgstr "DCP XML feliratok" msgid "DCP sample rate" msgstr "" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "" @@ -927,11 +932,11 @@ msgstr "Letöltés közben hiba lépett fel ({} hiba {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "" @@ -980,12 +985,12 @@ msgstr "Hiba: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Feliratok vizsgálata" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Hang, feliratok és hangleíró feliratok vizsgálata" @@ -997,7 +1002,7 @@ msgstr "Tartalom vizsgálata" msgid "Examining subtitles" msgstr "Feliratok vizsgálata" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Feliratok és hangleíró feliratok vizsgálata" @@ -1150,18 +1155,18 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1205,7 +1210,7 @@ msgstr "Bal hátsó térhangzás" msgid "Left surround" msgstr "Bal térhangzás" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Hossz" @@ -1395,7 +1400,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, fuzzy, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1514,7 +1519,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1581,7 +1586,7 @@ msgstr "Short" msgid "Sign" msgstr "Aláírás" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Méret" @@ -1615,21 +1620,21 @@ msgid "" "need to check their settings." msgstr "" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1650,7 +1655,7 @@ msgstr "" msgid "Some of your content needs an OV" msgstr "" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1716,7 +1721,7 @@ msgstr "" msgid "The certificate chain for signing is invalid ({})" msgstr "" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1726,7 +1731,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1770,7 +1775,7 @@ msgstr "" msgid "The file {} has been trimmed by {} milliseconds more." msgstr "" -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1784,7 +1789,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1804,12 +1809,12 @@ msgid "" "tab of Preferences." msgstr "" -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -1987,7 +1992,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -1995,7 +2000,7 @@ msgid "" "to {} fps." msgstr "" -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2003,19 +2008,19 @@ msgid "" "rate to {} fps." msgstr "" -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." msgstr "" -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" msgstr "" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2029,19 +2034,19 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." msgstr "" -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2052,7 +2057,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2061,7 +2066,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2069,13 +2074,13 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." msgstr "" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2101,7 +2106,7 @@ msgstr "[mozgó képek]" msgid "[still]" msgstr "[álló]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[felirat]" @@ -2117,7 +2122,7 @@ msgstr "_reel{}" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "időtúllépés csatlakozás közben" @@ -2173,22 +2178,22 @@ msgstr "hiba a fájlból olvasás közben {} ({})" msgid "could not write to file {} ({})" msgstr "hiba a fájlba írás közben {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "hiba a csatlakozás közben ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "hiba a csatlakozás közben ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "hiba az olvasás közben ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "hiba az írás közben ({})" @@ -2311,7 +2316,7 @@ msgstr "még" msgid "unknown" msgstr "ismeretlen" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "videó képkockái" diff --git a/src/lib/po/it_IT.po b/src/lib/po/it_IT.po index 0642acf7c..a1e4126d6 100644 --- a/src/lib/po/it_IT.po +++ b/src/lib/po/it_IT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2018-09-30 14:16+0200\n" "Last-Translator: William Fanelli <william.f@impronte.com>\n" "Language-Team: \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.0.7\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Frequenza fotogrammi del contenuto %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Ritagliato a {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Rapporto schermo %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Aggiunto nero per adattare al contenitore {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Scalato a {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$NOME_LAVORO: $STATO_LAVORO" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", rapporto pixel %.2f:1" @@ -176,7 +176,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "Riduzione rumore 3D" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -214,7 +214,7 @@ msgid "" "donate €10</a></ul><p>Thank you!</font>" msgstr "" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -241,7 +241,7 @@ msgstr "ARIB STD-B67 ('log-gamma ibrido')" msgid "Advertisement" msgstr "Pubblicità" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -253,7 +253,7 @@ msgstr "" "Forse è preferibile impostare il contenitore DCP su Scope (2.39:1) nel tab " "\"DCP\"." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 #, fuzzy msgid "" "All of your content narrower than 1.90:1 but your DCP's container is Scope " @@ -279,54 +279,54 @@ msgstr "Analizza l'audio" msgid "Analysing subtitles" msgstr "Trova sottotitoli" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "" -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "" -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -672,7 +672,7 @@ msgstr "Il contenuto da unire deve usare lo stesso flusso di sottotitoli." msgid "Content to be joined must use the same text language." msgstr "Il contenuto da unire deve usare gli stessi caratteri." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Il contenuto video è {}x{}" @@ -814,7 +814,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML sottotitoli" @@ -822,7 +822,12 @@ msgstr "DCP XML sottotitoli" msgid "DCP sample rate" msgstr "DCP frequenza di campionamento" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, fuzzy, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "Il DCP utilizzerà ogni altro fotogramma del contenuto.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "Il DCP andrà al %.1f%% della velocità originale.\n" @@ -912,11 +917,11 @@ msgstr "Download fallito ({}/{} errore {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Ogni fotogramma del contenuto sarà duplicato nel DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Ogni fotogramma del contenuto sarà ripetuto {} più volte nel DCP.\n" @@ -965,12 +970,12 @@ msgstr "Errore: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Trova sottotitoli" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 #, fuzzy msgid "Examining audio, subtitles and closed captions" msgstr "Esamino il contenuto" @@ -984,7 +989,7 @@ msgstr "Analisi contenuto" msgid "Examining subtitles" msgstr "Trova sottotitoli" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 #, fuzzy msgid "Examining subtitles and closed captions" msgstr "Esamino il contenuto" @@ -1142,18 +1147,18 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1197,7 +1202,7 @@ msgstr "Surround posteriore sinistro" msgid "Left surround" msgstr "Surround sinistro" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Lunghezza" @@ -1387,7 +1392,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1504,7 +1509,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1567,7 +1572,7 @@ msgstr "Corto" msgid "Sign" msgstr "" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Dimensione" @@ -1601,21 +1606,21 @@ msgid "" "need to check their settings." msgstr "" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1637,7 +1642,7 @@ msgstr "Alcuni dei tuoi contenuti richiedono una KDM" msgid "Some of your content needs an OV" msgstr "Alcuni dei tuoi contenuti richiedono un OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1703,7 +1708,7 @@ msgstr "La catena del certificato per la firma non è valida" msgid "The certificate chain for signing is invalid ({})" msgstr "La catena del certificato per la firma non è valida ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1713,7 +1718,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1759,7 +1764,7 @@ msgstr "Il file {} é stato tagliato di {} millisecondi in meno." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Il file {} é stato tagliato di {} millisecondi in piú." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1773,7 +1778,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 #, fuzzy msgid "" "There is a large difference between the frame rate of your DCP and that of " @@ -1803,12 +1808,12 @@ msgstr "" "operativo a 32 bit, provare a ridurre il numero di thread di codifica nella " "scheda Generale delle Preferenze." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -1999,7 +2004,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Altro filtro di deinterlacciamento" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2010,7 +2015,7 @@ msgstr "" "supportata . Si consiglia di modificare la frequenza fotogrammi del DCP o di " "creare un DCP SMPTE." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2021,7 +2026,7 @@ msgstr "" "supportata . Si consiglia di modificare la frequenza fotogrammi del DCP o di " "creare un DCP SMPTE." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 #, fuzzy msgid "" "You are set up for a DCP frame rate of 30fps, which is not supported by all " @@ -2031,7 +2036,7 @@ msgstr "" "supportata . Si consiglia di modificare la frequenza fotogrammi del DCP o di " "creare un DCP SMPTE." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2040,7 +2045,7 @@ msgstr "" "3D se vuoi vedere il contenuto su un vero sistema 3D (come Real-D, " "MasterImage, ecc.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2058,13 +2063,13 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2072,7 +2077,7 @@ msgstr "" "Hai specificato un font la cui dimensione supera i 640kB. Probabilmente ci " "saranno problemi nella riproduzione." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2085,7 +2090,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Devi aggiungere dei contenuti al DCP prima di crearlo" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2094,7 +2099,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2102,7 +2107,7 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 #, fuzzy msgid "" "Your DCP uses an unusual container ratio. This may cause problems on some " @@ -2112,7 +2117,7 @@ msgstr "" "causare problemi su alcuni proiettori. Se possibile, usa Flat o Scope come " "contenitore per il DCP" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2144,7 +2149,7 @@ msgstr "[spostamento immagini]" msgid "[still]" msgstr "[fermo immagine]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[sottotitoli]" @@ -2160,7 +2165,7 @@ msgstr "" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "connessione scaduta" @@ -2216,22 +2221,22 @@ msgstr "Impossibile leggere dal file {} ({})" msgid "could not write to file {} ({})" msgstr "Impossibile scrivere il file {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "errore durante la connessione asincrona ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "errore durante la connessione asincrona ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "errore durante la lettura asincrona ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "errore durante la scrittura asincrona ({})" @@ -2361,7 +2366,7 @@ msgstr "fermo immagine" msgid "unknown" msgstr "sconosciuto" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "fotogrammi video" diff --git a/src/lib/po/ja_JP.po b/src/lib/po/ja_JP.po index d8d43a137..6ec5315d1 100644 --- a/src/lib/po/ja_JP.po +++ b/src/lib/po/ja_JP.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-02-15 21:03+0100\n" -"PO-Revision-Date: 2026-03-23 22:33+0900\n" +"PO-Revision-Date: 2026-04-25 20:27+0900\n" "Last-Translator: \n" "Language-Team: \n" "Language: ja_JP\n" @@ -33,7 +33,7 @@ msgid "" "Cropped to {}x{}" msgstr "" "\n" -"トリミング: {}x{}" +"切り抜きサイズ: {}x{}" #: src/lib/video_content.cc:467 #, c-format @@ -193,7 +193,7 @@ msgstr "; {} fps" #: src/lib/job.cc:633 msgid "; {} remaining; finishing at {}{}" -msgstr "" +msgstr "; 残り時間 {} ; 終了予定 {}{}" #: src/lib/analytics.cc:58 #, c-format @@ -210,17 +210,17 @@ msgid "" "href=\"https://dcpomatic.com/donate_amount?amount=10\">Go to Paypal to " "donate €10</a></ul><p>Thank you!</font>" msgstr "" -"<h2>{} を使用して {} 個の DCP を作成しました!</h2><img width=\"20%%\" " -"src=\"memory:me.jpg\" align=\"center\"><font size=\"+1\"><p>こんにちは。私は " -"Carl、{} の開発者です。私は空き時間に(テスターと翻訳者のボランティア チーム" -"の協力を得て){} の開発に取り組んでおり、フリー ソフトウェアとしてリリースし" -"ています。<p>{} が役に立つと思われる場合は、プロジェクトへの寄付をご検討くだ" -"さい。資金援助をしていただけると、{} の開発と改善にさらに時間を費やすことがで" -"きます。<p><ul><li><a href=\"https://dcpomatic.com/donate_amount?" -"amount=40\">Paypal で €40 を寄付</a><li><a href=\"https://dcpomatic.com/" -"donate_amount?amount=20\">Paypal で €20 を寄付</a><li><a href=\"https://" -"dcpomatic.com/donate_amount?amount=10\">Paypal で €10 を寄付</a></ul><p>あり" -"がとうございます。</font>" +"<h2>{}を使用して{}個のDCPを作成しました!</h2><img width=\"20%%\" " +"src=\"memory:me.jpg\" align=\"center\"><font size=\"+1\"><p>こんにちは。私は" +"Carl、{}の開発者です。私は空き時間に(テスターと翻訳者のボランティア チームの" +"協力を得て){}の開発に取り組んでおり、フリー ソフトウェアとしてリリースしてい" +"ます。<p>{}が役に立つと思われる場合はプロジェクトへの寄付をご検討ください。資" +"金援助をしていただけると、{}の開発と改善にさらに時間を費やすことができます。" +"<p><ul><li><a href=\"https://dcpomatic.com/donate_amount?amount=40\">Paypalで" +"€40 を寄付</a><li><a href=\"https://dcpomatic.com/donate_amount?" +"amount=20\">Paypal で €20 を寄付</a><li><a href=\"https://dcpomatic.com/" +"donate_amount?amount=10\">Paypal で €10 を寄付</a></ul><p>ありがとうございま" +"す。</font>" #: src/lib/hints.cc:176 msgid "" @@ -530,9 +530,8 @@ msgid "Colourspace" msgstr "カラースペース" #: src/lib/combine_dcp_job.cc:48 -#, fuzzy msgid "Combine DCPs" -msgstr "DCPを結合" +msgstr "複数のDCPを結合" #: src/lib/writer.cc:522 #, fuzzy @@ -563,12 +562,16 @@ msgid "Content to be joined must all have or not have audio" msgstr "結合するコンテンツはすべて音声付きまたは音声なしである必要があります" #: src/lib/ffmpeg_content.cc:152 +#, fuzzy msgid "Content to be joined must all have or not have subtitles or captions" msgstr "" +"参加するコンテンツは字幕またはキャプションがすべて付いているか、付いていない" +"かのいずれかである必要があります。" #: src/lib/ffmpeg_content.cc:146 +#, fuzzy msgid "Content to be joined must all have or not have video" -msgstr "" +msgstr "参加するコンテンツはすべて動画を含むか含まないかのいずれかである。" #: src/lib/text_content.cc:302 msgid "" @@ -610,7 +613,8 @@ msgstr "結合するコンテンツは同じ色変換になっている必要が #: src/lib/video_content.cc:215 msgid "Content to be joined must have the same crop." -msgstr "結合するコンテンツは同じトリミングである必要があります。" +msgstr "" +"結合するコンテンツは同じ切り抜き(クロップ)サイズである必要があります。" #: src/lib/video_content.cc:219 msgid "Content to be joined must have the same custom ratio setting." @@ -943,9 +947,8 @@ msgid "Email problem report for {}" msgstr "{} の問題レポートをメールで送信" #: src/lib/dcp_film_encoder.cc:120 src/lib/ffmpeg_film_encoder.cc:134 -#, fuzzy msgid "Encoding" -msgstr "エンコード済" +msgstr "エンコード進捗" #: src/lib/dcp_content_type.cc:67 msgid "Episode" @@ -1330,7 +1333,7 @@ msgstr "OK" #: src/lib/job.cc:652 msgid "OK (ran for {} from {} to {})" -msgstr "" +msgstr "OK ( 処理時間 {} 、 開始時刻 {} 、 終了時刻 {} )" #: src/lib/job.cc:650 msgid "OK (ran for {})" @@ -1779,15 +1782,14 @@ msgid "The file {} has been trimmed by {} milliseconds more." msgstr "{}はさらにに{}ms短縮されました。" #: src/lib/hints.cc:267 -#, fuzzy 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 " "really wants an old-style MPEG2 DCP." msgstr "" -"ヨーロッパ、オーストララシア、北米の映画館の大多数は、MPEG2ではなくJPEG2000で" -"エンコードされたDCPを想定しています。ご利用予定の映画館が本当に旧式のMPEG2 " -"DCPを必要としているかどうかを必ずご確認ください。" +"ヨーロッパ・オーストララシア・北米の映画館の大多数はMPEG2ではなくJPEG2000でエ" +"ンコードされたDCPを想定しています。ご利用予定の映画館が本当に旧式のMPEG2 DCP" +"を必要としているかどうかを必ずご確認ください。" #: src/lib/release_notes.cc:87 #, fuzzy @@ -2074,13 +2076,12 @@ msgstr "" "ンテンツの一部を削除する必要があります。" #: src/lib/hints.cc:612 -#, fuzzy msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -"字幕が重複していますが、これは相互運用可能なDCPでは許可されていません。DCP規" -"格をSMPTEに変更してください。" +"字幕が重複していますが、これはInterop DCPでは許可されていません。DCP規格を" +"SMPTEに変更してください。" #: src/lib/hints.cc:290 msgid "" @@ -2417,13 +2418,12 @@ msgstr "" "形式の可能性があります。" #: src/lib/film.cc:1829 -#, fuzzy msgid "" "{} had to change your settings for referring to DCPs as OV. Please review " "those settings to make sure they are what you want." msgstr "" -"{} は DCP を OV として参照するために設定を変更する必要がありました。設定を確" -"認し、正しいことを確認してください。" +"{}はDCPをOVとして参照するために設定を変更する必要がありました。設定を確認し、" +"正しいことを確認してください。" #: src/lib/film.cc:1795 #, fuzzy diff --git a/src/lib/po/ko_KR.po b/src/lib/po/ko_KR.po index c8c4179f6..9ae621413 100644 --- a/src/lib/po/ko_KR.po +++ b/src/lib/po/ko_KR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2026-03-06 17:22+0900\n" "Last-Translator: \n" "Language-Team: \n" @@ -18,7 +18,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 3.8\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -27,7 +27,7 @@ msgstr "" "\n" "콘텐츠 프레임 레이트 %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -36,7 +36,7 @@ msgstr "" "\n" "{}x{}로 크롭됨" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -45,7 +45,7 @@ msgstr "" "\n" "디스플레이 화면 비율 %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -54,7 +54,7 @@ msgstr "" "\n" "컨테이너 {} ({}x{})에 맞게 블랙 패딩 추가됨" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "{}x{}로 스케일 조정됨" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -103,7 +103,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", 픽셀 화면 비율 %.2f:1" @@ -176,7 +176,7 @@ msgstr "2.39 (스코프)" msgid "3D denoiser" msgstr "3D 노이즈 제거기" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -227,7 +227,7 @@ msgstr "" "amount=20\">Paypal로 20€ 기부하기</a><li><a href=\"https://dcpomatic.com/" "donate_amount?amount=10\">Paypal로 10€ 기부하기</a></ul><p>감사합니다!</font>" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -255,7 +255,7 @@ msgstr "ARIB STD-B67 ('하이브리드 로그-감마')" msgid "Advertisement" msgstr "광고" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -266,7 +266,7 @@ msgstr "" "되어 있습니다. 이 경우 플랫 프레임 내에 레터박스가 생기게 됩니다. \"DCP\" 탭" "에서 컨테이너를 스코프(2.39:1)로 설정하는 것이 좋을 수 있습니다." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -289,24 +289,24 @@ msgstr "오디오 분석" msgid "Analysing subtitles" msgstr "자막 분석" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "최소 하나의 마커가 프로젝트 종료 지점 이후에 위치하여 무시됩니다." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "폐쇄 자막 파일 중 적어도 하나가 다음보다 큽니다: " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "폐쇄 자막 파일의 XML 부분 중 적어도 하나가 다음보다 큽니다: " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "자막 파일 중 적어도 하나가 다음보다 큽니다: " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 #, fuzzy msgid "" "At least one of your subtitle lines has more than 52 characters. It is " @@ -315,7 +315,7 @@ msgstr "" "자막 중 한 줄에 52자 이상이 포함되어 있습니다. 각 줄을 최대 52자 이내로 구성" "하는 것을 권장합니다." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 #, fuzzy msgid "" "At least one of your subtitle lines has more than 79 characters. You should " @@ -324,7 +324,7 @@ msgstr "" "자막 중 한 줄에 79자 이상이 포함되어 있습니다. 각 줄을 최대 79자 이내로 구성" "해야 합니다." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -332,7 +332,7 @@ msgstr "" "자막 중 3줄을 초과하는 것이 있습니다. 자막은 3줄 이내로 유지하는 것이 좋습니" "다." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -340,7 +340,7 @@ msgstr "" "하나 이상의 자막이 15프레임보다 짧게 표시됩니다. 각 자막은 최소 15프레임 이" "상 유지되도록 설정하는 것이 좋습니다." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -348,7 +348,7 @@ msgstr "" "하나 이상의 자막이 이전 자막 종료 후 2프레임 미만 간격으로 시작됩니다. 자막 " "사이의 간격은 최소 2프레임 이상으로 설정하는 것이 좋습니다." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 #, fuzzy msgid "" "At least one piece of subtitle content has no specified language. It is " @@ -679,7 +679,7 @@ msgstr "결합할 콘텐츠는 동일한 자막 스트림을 사용해야 합니 msgid "Content to be joined must use the same text language." msgstr "결합할 콘텐츠는 동일한 텍스트 언어를 사용해야 합니다." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "콘텐츠 비디오는 {}x{}입니다" @@ -823,7 +823,7 @@ msgstr "DCP" msgid "DCP (via {})" msgstr "DCP ({} 경유)" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML 자막" @@ -831,7 +831,12 @@ msgstr "DCP XML 자막" msgid "DCP sample rate" msgstr "DCP 샘플 레이트" -#: src/lib/frame_rate_change.cc:101 +#: 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에서 콘텐츠의 매 두 번째 프레임을 사용합니다.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP가 콘텐츠 속도의 %.1f%%로 재생됩니다.\n" @@ -926,11 +931,11 @@ msgstr "다운로드 실패 ({} 오류 {})" msgid "EC" msgstr "EC" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "DCP에서 각 콘텐츠 프레임이 두 번씩 반복됩니다.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "DCP에서 각 콘텐츠 프레임이 {}번 더 반복됩니다.\n" @@ -979,11 +984,11 @@ msgstr "오류: {}" msgid "Event" msgstr "이벤트" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "오디오 분석" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "오디오, 자막 및 폐쇄형 자막 분석" @@ -995,7 +1000,7 @@ msgstr "콘텐츠 분석" msgid "Examining subtitles" msgstr "자막 분석" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "자막 및 폐쇄형 자막 분석" @@ -1148,11 +1153,11 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "IN" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "25fps를 사용하는 경우 DCP 표준을 SMPTE로 변경해야 합니다." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " @@ -1161,7 +1166,7 @@ msgstr "" "특별한 이유가 없다면 Interop 대신 SMPTE DCP를 제작하는 것이 권장됩니다. " "\"DCP\" 탭에서 표준을 SMPTE로 설정하십시오." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1207,7 +1212,7 @@ msgstr "좌측 후방 서라운드" msgid "Left surround" msgstr "좌측 서라운드" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "길이" @@ -1390,7 +1395,7 @@ msgstr "P3 D65 (~6500K)" msgid "P3 DCI (~6300K)" msgstr "P3 DCI (~6300K)" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1508,7 +1513,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1575,7 +1580,7 @@ msgstr "단편 (Short)" msgid "Sign" msgstr "사인" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "크기" @@ -1618,14 +1623,14 @@ msgstr "" "DCP-o-matic의 버그 수정으로 인해 일부 파일을 다시 분석해야 합니다. 파일 설정" "을 확인해 보십시오." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "폐쇄형 자막 중 일부가 {}줄을 초과하여 끝부분이 잘릴 수 있습니다." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1634,7 +1639,7 @@ msgstr "" "오디오가 포함된 콘텐츠가 있으나 오디오 언어가 설정되지 않았습니다. 대사가 없" "는 경우가 아니라면 \"DCP\" 탭에서 오디오 언어를 설정하는 것이 좋습니다." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1659,7 +1664,7 @@ msgstr "일부 콘텐츠에 KDM이 필요합니다" msgid "Some of your content needs an OV" msgstr "일부 콘텐츠에 OV가 필요합니다" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1727,7 +1732,7 @@ msgstr "서명용 인증서 체인이 유효하지 않습니다" msgid "The certificate chain for signing is invalid ({})" msgstr "서명용 인증서 체인이 유효하지 않습니다 ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1741,7 +1746,7 @@ msgstr "" "서 및 키 다시 만들기...\" 버튼을 클릭하여 인증서 체인을 재생성하는 것을 권장" "합니다." -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1794,7 +1799,7 @@ msgstr "파일 {}의 트리밍이 {}밀리초만큼 줄었습니다." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "파일 {}의 트리밍이 {}밀리초만큼 늘었습니다." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1812,7 +1817,7 @@ msgstr "" "일부 자막의 수직 오프셋 조절 방식이 이전과 반대 방향으로 변경되었습니다. 프" "로젝트 내의 자막 위치가 의도한 대로 배치되었는지 확인해 주십시오." -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1837,14 +1842,14 @@ msgstr "" "메모리가 부족합니다. 32비트 운영체제를 사용 중이라면 환경 설정의 '일반' 탭에" "서 인코딩 스레드 수를 줄여 보십시오." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" "이 KDM은 {}를 위해 제작되었으나 해당 단말 인증서(leaf certificate)를 위한 것" "이 아닙니다." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "이 KDM은 {}의 복호화 인증서를 위해 제작되지 않았습니다." @@ -2034,7 +2039,7 @@ msgstr "YCgCo-R, 홀수 가산" msgid "Yet Another Deinterlacing Filter" msgstr "또 다른 디인터레이싱 필터 (YADIF)" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2044,7 +2049,7 @@ msgstr "" "DCP 프레임 레이트가 {} fps로 설정되어 있습니다. 이 레이트는 일부 프로젝터에" "서 지원되지 않을 수 있습니다. {} fps로 변경하는 것을 권장합니다." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2054,7 +2059,7 @@ msgstr "" "DCP 프레임 레이트가 {} fps로 설정되어 있습니다. 이 레이트는 일부 프로젝터에" "서 지원되지 않을 수 있으므로, {} fps로 변경하는 것을 고려해 보십시오." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2062,7 +2067,7 @@ msgstr "" "DCP 프레임 레이트가 30fps로 설정되어 있습니다. 이는 일부 프로젝터에서 지원되" "지 않으므로 호환성 문제가 발생할 수 있음에 유의하십시오." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2070,7 +2075,7 @@ msgstr "" "3D 콘텐츠를 사용 중이지만 DCP가 2D로 설정되어 있습니다. 3D 시스템(Real-D, " "MasterImage 등)에서 상영하려면 DCP를 3D로 설정하십시오." -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2089,7 +2094,7 @@ msgstr "" "프레임 레이트가 다른 여러 개의 Atmos 콘텐츠가 포함되어 있습니다. 일부 Atmos " "콘텐츠를 제거해야 합니다." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2097,7 +2102,7 @@ msgstr "" "폐쇄형 자막이 겹쳐 있습니다. 이는 Interop DCP에서 허용되지 않으므로 DCP 표준" "을 SMPTE로 변경하십시오." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2105,7 +2110,7 @@ msgstr "" "지정한 폰트 파일이 640kB를 초과합니다. 재생 시 문제가 발생할 가능성이 매우 높" "습니다." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2118,7 +2123,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "DCP를 제작하기 전에 콘텐츠를 추가해야 합니다" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2130,7 +2135,7 @@ msgstr "" "채널로 설정하는 것이 좋습니다. 콘텐츠 채널이 적더라도 {}에서 나머지를 무음으" "로 채웁니다." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2140,7 +2145,7 @@ msgstr "" "DCP 오디오 채널이 8 또는 16이 아닌 {}개입니다. 배급사 검수시 오류로 처리될 " "수 있으니 오디오 채널을 8 또는 16으로 설정하십시오." -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2148,7 +2153,7 @@ msgstr "" "DCP가 비표준 컨테이너 비율을 사용하고 있습니다. 일부 프로젝터에서 문제가 발" "생할 수 있으므로 가급적 플랫(Flat) 또는 스코프(Scope)를 사용하십시오." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2178,7 +2183,7 @@ msgstr "[동영상]" msgid "[still]" msgstr "[정지 영상]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[자막]" @@ -2194,7 +2199,7 @@ msgstr "_릴{}" msgid "bits" msgstr "비트" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "연결 시간 초과" @@ -2250,22 +2255,22 @@ msgstr "파일 {}에서 읽을 수 없습니다 ({})" msgid "could not write to file {} ({})" msgstr "파일 {}에 쓸 수 없습니다 ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "비동기 연결 중 오류 발생 ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, c++-format msgid "error during async_connect: ({})" msgstr "비동기 연결 중 오류 발생: ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "비동기 읽기 중 오류 발생 ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "비동기 쓰기 중 오류 발생 ({})" @@ -2394,7 +2399,7 @@ msgstr "스틸" msgid "unknown" msgstr "알 수 없음" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "비디오 프레임" diff --git a/src/lib/po/nl_NL.po b/src/lib/po/nl_NL.po index c1e1e1f1f..2981fcaa2 100644 --- a/src/lib/po/nl_NL.po +++ b/src/lib/po/nl_NL.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" -"PO-Revision-Date: 2026-03-23 13:14+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" +"PO-Revision-Date: 2026-04-21 18:10+0200\n" "Last-Translator: Rob van Nieuwkerk <dcpomatic-translations@berrymount.nl>\n" "Language-Team: Rob van Nieuwkerk <dcpomatic-translations@berrymount.nl>\n" "Language: nl_NL\n" @@ -18,7 +18,7 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Poedit 3.8\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -27,7 +27,7 @@ msgstr "" "\n" "Content frame rate %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -36,7 +36,7 @@ msgstr "" "\n" "Bijgesneden naar {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -45,7 +45,7 @@ msgstr "" "\n" "Weergave-beeldverhouding %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -54,7 +54,7 @@ msgstr "" "\n" "Opgevuld met zwart om in container {} ({}x{}) te passen" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "Geschaald naar {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -103,7 +103,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", pixel-beeldverhouding %.2f:1" @@ -176,7 +176,7 @@ msgstr "2,39:1 (Scope)" msgid "3D denoiser" msgstr "3D-ruisonderdrukking" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -229,7 +229,7 @@ msgstr "" "href=\"https://dcpomatic.com/donate_amount?amount=10\">Ga naar Paypal om €10 " "te doneren</a></ul><p>Dank u wel!</font>" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -258,7 +258,7 @@ msgstr "ARIB STD-B67 ('Hybrid Log-Gamma')" msgid "Advertisement" msgstr "Advertisement" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -270,7 +270,7 @@ msgstr "" "balken zullen komen. Mogelijk wilt u de DCP-container op Scope (2,39:1) " "instellen bij de DCP-instellingen." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -294,26 +294,26 @@ msgstr "Analyseren audio" msgid "Analysing subtitles" msgstr "Analyseren ondertitels" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" "Ten minste één marker komt na het einde van het project en wordt genegeerd." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Ten minste één van uw closed caption bestanden is groter dan " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" "Ten minste één XML-gedeelte van uw closed caption bestanden is groter dan " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Ten minste één van uw ondertitelbestanden is groter dan " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -321,7 +321,7 @@ msgstr "" "Ten minste één van uw ondertitel-regels heeft meer dan 52 tekens. Het wordt " "aanbevolen om niet meer dan 52 tekens in een regel te gebruiken." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -329,7 +329,7 @@ msgstr "" "Ten minste één van uw ondertitel-regels heeft meer dan 79 tekens. U moet " "elke regel maximaal 79 tekens lang maken." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -337,7 +337,7 @@ msgstr "" "Ten minste één van uw ondertitels heeft meer dan 3 regels. Het is " "verstandig om niet meer dan 3 regels te gebruiken." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -345,7 +345,7 @@ msgstr "" "Ten minste één van uw ondertitels duurt minder dan 15 frames. Het is " "verstandig om elke ondertitel minstens 15 frames lang te maken." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -353,7 +353,7 @@ msgstr "" "Ten minste één van uw ondertitels begint minder dan 2 frames na de vorige. " "Het is verstandig om minstens 2 frames tussen ondertitels te laten." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -708,7 +708,7 @@ msgstr "Samen te voegen content moet dezelfde ondertitel-stream gebruiken." msgid "Content to be joined must use the same text language." msgstr "Samen te voegen content moet dezelfde tekst-taal hebben." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Content-video is {}x{}" @@ -848,7 +848,7 @@ msgstr "DCP" msgid "DCP (via {})" msgstr "DCP (via {})" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML ondertitels" @@ -856,7 +856,12 @@ msgstr "DCP XML ondertitels" msgid "DCP sample rate" msgstr "DCP sample rate" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "DCP zal 1 van elke {} frames van de content gebruiken.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP zal afspelen met %.1f%% van de content-snelheid.\n" @@ -950,11 +955,11 @@ msgstr "Download mislukt ({} fout {})" msgid "EC" msgstr "EC" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Elk content frame zal dubbel gebruikt worden in de DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Elk content frame zal {} keer herhaald worden in de DCP.\n" @@ -1003,11 +1008,11 @@ msgstr "Fout: {}" msgid "Event" msgstr "Event" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "Onderzoeken audio" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Onderzoeken audio, ondertitels en closed captions" @@ -1019,7 +1024,7 @@ msgstr "Onderzoeken content" msgid "Examining subtitles" msgstr "Onderzoeken ondertitels" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Onderzoeken ondertitels en closed captions" @@ -1173,13 +1178,13 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "IN" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" "Als u een frame rate van 25 fps gebruikt, moet u de DCP-standaard wijzigen " "in SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 +1194,7 @@ msgstr "" "bepaalde reden heeft om Interop te gebruiken. U wordt geadviseerd om de DCP-" "standaard op SMPTE in te stellen in het \"DCP\"-tabblad." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1235,7 +1240,7 @@ msgstr "Achter surround links (BsL)" msgid "Left surround" msgstr "Links surround (Ls)" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Lengte" @@ -1428,7 +1433,7 @@ msgstr "P3 D65 (~6500K)" msgid "P3 DCI (~6300K)" msgstr "P3 DCI (~6300K)" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1546,7 +1551,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1612,7 +1617,7 @@ msgstr "Short" msgid "Sign" msgstr "Sign" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Grootte" @@ -1657,7 +1662,7 @@ msgstr "" "Sommige bestanden moeten opnieuw worden onderzocht vanwege een bugfix in DCP-" "o-matic. Het kan nodig zijn om hun instellingen te controleren." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1666,7 +1671,7 @@ msgstr "" "Een deel van uw closed captions heeft meer dan {} regels, dus worden ze " "afgekapt." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1676,7 +1681,7 @@ msgstr "" "ingesteld. Het is raadzaam om de audio-taal in te stellen in het \"DCP\"-" "tabblad, tenzij uw audio geen gesproken delen heeft." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1702,7 +1707,7 @@ msgstr "Een deel van uw content heeft een KDM nodig" msgid "Some of your content needs an OV" msgstr "Een deel van uw content heeft een OV nodig" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1771,7 +1776,7 @@ msgstr "De certificaat-keten voor ondertekening is ongeldig" msgid "The certificate chain for signing is invalid ({})" msgstr "De certificaat-keten voor ondertekening is ongeldig ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1786,7 +1791,7 @@ msgstr "" "keten opnieuw aan te maken door op de knop \"Maak certificaten en sleutel " "opnieuw...\" in het \"Sleutels\"-tabblad bij Voorkeuren te klikken." -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1841,7 +1846,7 @@ msgstr "Van het bestand {} is {} milliseconden minder weggeknipt." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Van het bestand {} is {} milliseconden meer weggeknipt." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1862,7 +1867,7 @@ msgstr "" "ondertitels in uw project om er zeker van te zijn dat ze op de gewenste " "plaats staan." -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1891,12 +1896,12 @@ msgstr "" "threads te verminderen in het \"Algemeen\"-tabblad bij Voorkeuren als u een " "32-bits operating system draait." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "Deze KDM is gemaakt voor {} maar niet voor het leaf-certificaat." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "Deze KDM is niet gemaakt voor het ontsleutelings-certificaat van {}." @@ -2088,7 +2093,7 @@ msgstr "YCgCo-R, oneven toevoeging" msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2099,7 +2104,7 @@ msgstr "" "wordt niet door alle projectoren ondersteund. U wordt geadviseerd om de DCP " "frame rate te wijzigen in {} fps." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2110,7 +2115,7 @@ msgstr "" "wordt niet door alle projectoren ondersteund. U kunt overwegen om de DCP " "frame rate te wijzigen in {} fps." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2119,7 +2124,7 @@ msgstr "" "wordt niet door alle projectoren ondersteund. Houd er rekening mee dat u " "compatibiliteitsproblemen kunt krijgen." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2127,7 +2132,7 @@ msgstr "" "U gebruikt 3D-content, maar uw DCP is op 2D ingesteld. Stel de DCP in op 3D " "als u hem wilt afspelen op een 3D-systeem (bv. Real-D, MasterImage etc.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2147,7 +2152,7 @@ msgstr "" "U heeft meer dan één stuk Atmos-content en ze hebben niet dezelfde frame " "rate. U moet een deel van de Atmos-content verwijderen." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2155,7 +2160,7 @@ msgstr "" "U heeft overlappende closed captions. Die zijn niet toegestaan in Interop " "DCP's. Verander uw DCP-standaard in SMPTE." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2163,7 +2168,7 @@ msgstr "" "U heeft een font-bestand gespecificeerd dat groter is dan 640kB. Dit zal " "zeer waarschijnlijk problemen bij het afspelen geven." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2176,7 +2181,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "U moet content aan de DCP toevoegen voor hij gemaakt kan worden" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2189,7 +2194,7 @@ msgstr "" "maakt niet uit of uw content minder kanalen heeft, {} vult de extra kanalen " "met stilte." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2201,7 +2206,7 @@ msgstr "" "DCP controleren. Om dit te voorkomen, stelt u het aantal audio-kanalen van " "de DCP in op 8 of 16." -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2210,7 +2215,7 @@ msgstr "" "problemen geven met sommige projectoren. Gebruik, indien mogelijk, Flat of " "Scope voor de container-beeldverhouding van de DCP." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2241,7 +2246,7 @@ msgstr "[bewegende beelden]" msgid "[still]" msgstr "[stilstaand beeld]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[ondertitels]" @@ -2257,7 +2262,7 @@ msgstr "_reel{}" msgid "bits" msgstr "bits" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "time-out van verbinding" @@ -2313,22 +2318,22 @@ msgstr "kan niet lezen uit bestand {} ({})" msgid "could not write to file {} ({})" msgstr "kan niet schrijven naar bestand {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "fout tijdens async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, c++-format msgid "error during async_connect: ({})" msgstr "fout tijdens async_connect: ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "fout tijdens async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "fout tijdens async_write ({})" @@ -2461,7 +2466,7 @@ msgstr "stilstaand beeld" msgid "unknown" msgstr "onbekend" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "video frames" diff --git a/src/lib/po/pl_PL.po b/src/lib/po/pl_PL.po index 905cda145..8413e9aad 100644 --- a/src/lib/po/pl_PL.po +++ b/src/lib/po/pl_PL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2022-05-10 16:47+0200\n" "Last-Translator: Michał Tomaszewski <goku1933@gmail.com>\n" "Language-Team: Polish <http://translations.dcpomatic.com/projects/dcpomatic/" @@ -20,7 +20,7 @@ msgstr "" "|| n%100>=20) ? 1 : 2;\n" "X-Generator: Poedit 3.0.1\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -29,7 +29,7 @@ msgstr "" "\n" "Liczba kl/s pliku video %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -38,7 +38,7 @@ msgstr "" "\n" "Wykadrowany do {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -47,7 +47,7 @@ msgstr "" "\n" "Proporcje obrazu %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -56,7 +56,7 @@ msgstr "" "\n" "Dodane czarne pasy, aby dopasować do formatu {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -65,7 +65,7 @@ msgstr "" "\n" "Przeskalowany do {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -105,7 +105,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", proporcje piksela %.2f:1" @@ -179,7 +179,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "Odszumianie 3D" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -232,7 +232,7 @@ msgstr "" "dcpomatic.com/donate_mount?amount=10\">Przejdź do PayPal i wpłać 10 EUR</a></" "ul><p>Dziękuję!" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -262,7 +262,7 @@ msgstr "ARIB STD-B67 ('Hybrydowa log-gamma')" msgid "Advertisement" msgstr "Reklama" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -274,7 +274,7 @@ msgstr "" "skompensować różnice formatów. Być może lepiej ustawić kontener DCP na " "Scope (2.39:1) w zakładce \"DCP\"." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -298,27 +298,27 @@ msgstr "Analizuję dźwięk" msgid "Analysing subtitles" msgstr "Analizuję napisy" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" "Znaczniki, które pojawiają się za czasem końcowym Projektu zostaną " "zignorowane." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Co najmniej jeden z plików napisów kodowanych jest większy niż " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" "Co najmniej jedna część pliku XML z napisami kodowanymi jest większa niż " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Co najmniej jeden z plików z napisami jest większy niż " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -326,7 +326,7 @@ msgstr "" "W napisach znajdują się linie, które mają powyżej 52 znaków. Zaleca się, " "aby żadna z linii nie przekraczała 52 znaków." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -334,7 +334,7 @@ msgstr "" "W napisach znajdują się linie, które mają powyżej 79 znaków. Żadna linia " "nie powinna przekraczać 79 znaków." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -342,7 +342,7 @@ msgstr "" "W pliku znajdują się napisy, które mają ponad 3 linie. Zaleca się użycie " "maksymalnie 3 linii." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -351,7 +351,7 @@ msgstr "" "obrazu. Zaleca się, aby każdy napis był widoczny co najmniej przez 15 " "klatek obrazu." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -359,7 +359,7 @@ msgstr "" "Niektóre napisy w pliku mają odstęp czasowy poniżej 2 klatek obrazu. Zaleca " "się, aby odstęp między napisami wynosił co najmniej 2 klatki obrazu." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 #, fuzzy msgid "" "At least one piece of subtitle content has no specified language. It is " @@ -698,7 +698,7 @@ msgstr "Łączone pliki muszą używać tego samego źródła napisów." msgid "Content to be joined must use the same text language." msgstr "Łączone pliki muszą mieć taki sam język napisów." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Rozdzielczość pliku video {}x{}" @@ -839,7 +839,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "Napisy DCP XML" @@ -847,7 +847,12 @@ msgstr "Napisy DCP XML" msgid "DCP sample rate" msgstr "Liczba kl/s DCP" -#: src/lib/frame_rate_change.cc:101 +#: 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 będzie używał co drugiej klatki materiału.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP będzie odtwarzany z %.1f%% prędkości.\n" @@ -936,11 +941,11 @@ msgstr "Pobieranie nie powiodło się ({} błąd {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Każda klatka materiału zostanie zdublowana w DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Każda klatka materiału będzie powtórzona {} razy w DCP.\n" @@ -989,12 +994,12 @@ msgstr "Błąd: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Analizowanie napisów" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Sprawdzam audio, napisy i napisy kodowane" @@ -1006,7 +1011,7 @@ msgstr "Analizowanie materiału" msgid "Examining subtitles" msgstr "Analizowanie napisów" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Analizowanie napisów i napisów kodowanych" @@ -1161,11 +1166,11 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "Przy 25 FPS powinieneś zmienić standard paczki DCP na SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 #, fuzzy msgid "" "In general it is now advisable to make SMPTE DCPs unless you have a " @@ -1176,7 +1181,7 @@ msgstr "" "użycie standardu Interlop jest uzasadnione. Zaleca się wybranie standardu " "SMPTE z zakładki „DCP” dla tego Projektu." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1222,7 +1227,7 @@ msgstr "Lewy tylny surround" msgid "Left surround" msgstr "Lewy surround" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Długość" @@ -1412,7 +1417,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, fuzzy, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1531,7 +1536,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1598,7 +1603,7 @@ msgstr "Krótkometrażowy" msgid "Sign" msgstr "Podpis" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Rozdzielczość" @@ -1642,7 +1647,7 @@ msgstr "" "\n" "Pliki te zostaną ponownie zbadane, sprawdź ustawienia." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1651,7 +1656,7 @@ msgstr "" "Niektóre z napisów dzielą się na więcej niż {} linii, dlatego zostaną " "przycięte." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1661,7 +1666,7 @@ msgstr "" "języka. Zaleca się, aby określić język dźwięku w zakładce „DCP”, chyba że " "materiał nie posiada dialogów." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1683,7 +1688,7 @@ msgstr "Część twoich materiałów wymaga klucza KDM" msgid "Some of your content needs an OV" msgstr "Część twoich materiałów wymaga wersji OV paczki DCP" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1751,7 +1756,7 @@ msgstr "Certyfikat jest nieprawidłowy" msgid "The certificate chain for signing is invalid ({})" msgstr "Certyfikat jest nieprawidłowy ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1761,7 +1766,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1810,7 +1815,7 @@ msgstr "Długość pliku {} została skrócona o {} milisekund." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Długość pliku {} została wydłużona o {} milisekund." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1824,7 +1829,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 #, fuzzy msgid "" "There is a large difference between the frame rate of your DCP and that of " @@ -1852,14 +1857,14 @@ msgstr "" "Brakuje pamięci, aby wykonać tę operację. Jeśli twój system jest 32-bitowy, " "spróbuj zmniejszyć liczbę wątków kodujących w Preferencjach." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, fuzzy, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" "Ten klucz KDM jest kompatybilny z programem DCP-o-matic, ale zawarty " "certyfikat jest błędny." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, fuzzy, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -2054,7 +2059,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "I jeszcze jeden filtr usuwania przeplotu" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2065,7 +2070,7 @@ msgstr "" "obsługiwana przez wszystkie projektory. Zaleca się zmianę liczby klatek/s " "na wartość {} FPS." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2076,7 +2081,7 @@ msgstr "" "obsługiwana przez wszystkie projektory. Rozważ zmianę liczby klatek/s na " "wartość {} FPS." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2085,7 +2090,7 @@ msgstr "" "przez wszystkie projektory. Paczka może nie być kompatybilna ze wszystkimi " "systemami." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2094,7 +2099,7 @@ msgstr "" "opcje DCP na 3D, jeśli chcesz odtwarzać go na systemach 3D (jak Real-D, " "MasterImage itd.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2114,7 +2119,7 @@ msgstr "" "Co najmniej jeden z twoich materiałów zawiera dźwięk Atmos, a materiały mają " "różne wartości klatek/s. Musisz usunąć materiał z dźwiękiem Atmos." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2122,7 +2127,7 @@ msgstr "" "Projekt zawiera nakładające się napisy, które nie są dozwolone w standardzie " "Interlop. Zmień standard paczki na SMPTE." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2130,7 +2135,7 @@ msgstr "" "Wskazana przez ciebie czcionka ma rozmiar większy niż 640kB. " "Najprawdopodobniej spowoduje to problemy podczas odtwarzania." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2143,7 +2148,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Musisz najpierw dodać materiały zanim utworzysz DCP" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, fuzzy, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2156,7 +2161,7 @@ msgstr "" "kanałów dźwiękowych. Dodane materiały mogą mieć mniej kanałów dźwiękowych, " "DCP-o-matic wypełni nieużywane kanały ciszą." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2164,7 +2169,7 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2173,7 +2178,7 @@ msgstr "" "problemy z odtwarzaniem na niektórych serwerach. Jeśli to możliwe, ustaw " "kontener DCP na Flat lub Scope." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2205,7 +2210,7 @@ msgstr "[ruchome obrazy]" msgid "[still]" msgstr "[stopklatka]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[napisy]" @@ -2221,7 +2226,7 @@ msgstr "_rolka{}" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "przekroczenie limitu czasu połączenia" @@ -2277,22 +2282,22 @@ msgstr "nie udało się odczytać pliku {} ({})" msgid "could not write to file {} ({})" msgstr "nie udało się zapisać do pliku {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "wystąpił błąd podczas async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "wystąpił błąd podczas async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "wystąpił błąd podczas async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "wystąpił błąd podczas async_write ({})" @@ -2427,7 +2432,7 @@ msgstr "stopklatka" msgid "unknown" msgstr "nieznany" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "klatki obrazu" diff --git a/src/lib/po/pt_BR.po b/src/lib/po/pt_BR.po index 02e6eb82f..7e7779402 100644 --- a/src/lib/po/pt_BR.po +++ b/src/lib/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2018-01-15 16:19-0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.0.5\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Taxa de quadros do conteúdo %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Redimensionado para {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Proporções de exibição %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Preenchido com barras pretas {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Redimensionado para {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", aspect ratio do pixel %.2f:1" @@ -176,7 +176,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "Redutor de ruído 3D" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -214,7 +214,7 @@ msgid "" "donate €10</a></ul><p>Thank you!</font>" msgstr "" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -242,7 +242,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "Comercial" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -254,7 +254,7 @@ msgstr "" "superior e inferior do frame Flat. Talvez seja mais indicado criar um DCP " "Scope, escolhendo Scope (2.39:1) no tab \"DCP\"." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 #, fuzzy msgid "" "All of your content narrower than 1.90:1 but your DCP's container is Scope " @@ -281,54 +281,54 @@ msgstr "Analisar áudio" msgid "Analysing subtitles" msgstr "Buscando legendas" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "" -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "" -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -692,7 +692,7 @@ msgstr "O conteúdo a ser concatenado deve usar a mesma faixa de legendas." msgid "Content to be joined must use the same text language." msgstr "O conteúdo a ser concatenado deve usar as mesmas fontes." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "O conteúdo tem {}x{}" @@ -834,7 +834,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "Legendas XML do DCP" @@ -842,7 +842,12 @@ msgstr "Legendas XML do DCP" msgid "DCP sample rate" msgstr "Taxa de quadros do DCP" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, fuzzy, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "O DCP vai utilizar frames intercalados do conteúdo.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "O DCP vai ser exibido a %.1f%% da velocidade do conteúdo.\n" @@ -932,11 +937,11 @@ msgstr "Download falhou ({}/{} erro {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Cada quadro do conteúdo será duplicado no DCP\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Cada quadro do conteúdo será repetido {} vezes no DCP\n" @@ -985,12 +990,12 @@ msgstr "Erro: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Buscando legendas" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "" @@ -1004,7 +1009,7 @@ msgstr "Examinar conteúdo" msgid "Examining subtitles" msgstr "Buscando legendas" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 #, fuzzy msgid "Examining subtitles and closed captions" msgstr "Buscando legendas" @@ -1162,18 +1167,18 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1217,7 +1222,7 @@ msgstr "Surround traseiro esquerdo" msgid "Left surround" msgstr "Surround esquerdo" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Duração" @@ -1406,7 +1411,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1523,7 +1528,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1586,7 +1591,7 @@ msgstr "Curta-metragem" msgid "Sign" msgstr "" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Tamanho" @@ -1620,21 +1625,21 @@ msgid "" "need to check their settings." msgstr "" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1658,7 +1663,7 @@ msgstr "uma parte do seu conteúdo necessita de KDM" msgid "Some of your content needs an OV" msgstr "uma parte do seu conteúdo necessita de uma versão original (OV)" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1724,7 +1729,7 @@ msgstr "A cadeia de certificado para assinatura é inválida" msgid "The certificate chain for signing is invalid ({})" msgstr "A cadeia de certificado para assinatura é inválida ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1734,7 +1739,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1780,7 +1785,7 @@ msgstr "O arquivo {} foi cortado por {} milissegundos a menos." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "O arquivo {} foi cortado por {} milissegundos a mais." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1794,7 +1799,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1817,12 +1822,12 @@ msgstr "" "de 32 bits, tente reduzir o número de threads para codificação no tab Geral " "das Preferências, no menu Editar." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -2014,7 +2019,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter (YADIF)" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2025,7 +2030,7 @@ msgstr "" "suportada. Recomendamos a alteração da taxa de quadros do seu DCP para um " "valor padrão, ou que faça um DCP SMPTE." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2036,7 +2041,7 @@ msgstr "" "suportada. Recomendamos a alteração da taxa de quadros do seu DCP para um " "valor padrão, ou que faça um DCP SMPTE." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 #, fuzzy msgid "" "You are set up for a DCP frame rate of 30fps, which is not supported by all " @@ -2046,7 +2051,7 @@ msgstr "" "suportada. Recomendamos a alteração da taxa de quadros do seu DCP para um " "valor padrão, ou que faça um DCP SMPTE." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2055,7 +2060,7 @@ msgstr "" "o DCP para 3D se quiser reprodução correta em um sistema 3D (por exemplo " "Real-D, MasterImage, etc.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2069,13 +2074,13 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2083,7 +2088,7 @@ msgstr "" "Você especificou um arquivo de fonte que tem mais de 640kB. Isso muito " "provavelmente causará problemas na reprodução." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2097,7 +2102,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "você precisa adicionar conteúdo ao DCP antes de criá-lo" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2106,7 +2111,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2114,7 +2119,7 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 #, fuzzy msgid "" "Your DCP uses an unusual container ratio. This may cause problems on some " @@ -2124,7 +2129,7 @@ msgstr "" "alguns projetores. Se possível, use apenas Flat ou Scope nos formatos de " "container." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2155,7 +2160,7 @@ msgstr "[sequência de imagens]" msgid "[still]" msgstr "[imagem estática]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[legendas]" @@ -2171,7 +2176,7 @@ msgstr "" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "connect timed out" @@ -2227,22 +2232,22 @@ msgstr "não foi possível ler do arquivo {} ({})" msgid "could not write to file {} ({})" msgstr "não foi possível modificar o arquivo {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "erro durante async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "erro durante async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "erro durante async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "erro durante async_write ({})" @@ -2377,7 +2382,7 @@ msgstr "imagem estática" msgid "unknown" msgstr "desconhecido" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "quadros de vídeo" diff --git a/src/lib/po/pt_PT.po b/src/lib/po/pt_PT.po index 816ef8096..aa0060f1f 100644 --- a/src/lib/po/pt_PT.po +++ b/src/lib/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic PORTUGUESE (Portugal)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2016-03-19 18:19+0000\n" "Last-Translator: Tiago Casal Ribeiro <tiago@casalribeiro.com>\n" "Language-Team: \n" @@ -18,7 +18,7 @@ msgstr "" "X-Generator: Poedit 1.8.7.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, fuzzy, c-format msgid "" "\n" @@ -27,7 +27,7 @@ msgstr "" "\n" "Cadência de fotogramas do conteúdo %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, fuzzy, c++-format msgid "" "\n" @@ -36,7 +36,7 @@ msgstr "" "\n" "Recortado para {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, fuzzy, c-format msgid "" "\n" @@ -45,7 +45,7 @@ msgstr "" "\n" "Rácio do ecrã %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, fuzzy, c++-format msgid "" "\n" @@ -54,7 +54,7 @@ msgstr "" "\n" "Preenchido com negro para caber no contentor {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, fuzzy, c++-format msgid "" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "Redimensionado para {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr "" @@ -93,7 +93,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, fuzzy, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", rácio de pixeis %.2f:1" @@ -169,7 +169,7 @@ msgstr "" msgid "3D denoiser" msgstr "Remoção de ruído 3D" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -207,7 +207,7 @@ msgid "" "donate €10</a></ul><p>Thank you!</font>" msgstr "" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -230,7 +230,7 @@ msgstr "" msgid "Advertisement" msgstr "Publicidade" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -238,7 +238,7 @@ msgid "" "tab." msgstr "" -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -260,54 +260,54 @@ msgstr "Analizar áudio" msgid "Analysing subtitles" msgstr "À procura das legendas" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "" -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "" -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -659,7 +659,7 @@ msgstr "O conteúdo a ser unido deve usar o mesmo fluxo de legendas." msgid "Content to be joined must use the same text language." msgstr "O conteúdo a ser unido deve usar os mesmos tipos de letra." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "O vídeo do conteúdo tem {}x{}" @@ -803,7 +803,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "Legendas XML DCP" @@ -812,7 +812,12 @@ msgstr "Legendas XML DCP" msgid "DCP sample rate" msgstr "Cadência de fotogramas do DCP" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, fuzzy, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "O DCP usará todos os outros fotogramas do conteúdo.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "O DCP será reproduzido a %.1f%% da velocidade do conteúdo.\n" @@ -902,11 +907,11 @@ msgstr "O download falhou ({}/{} erro {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Cada fotograma do conteúdo será duplicado no DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Cada fotograma do conteúdo será repetido {} vezes no DCP.\n" @@ -955,12 +960,12 @@ msgstr "Erro: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "À procura das legendas" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 #, fuzzy msgid "Examining audio, subtitles and closed captions" msgstr "Examen du contenu" @@ -975,7 +980,7 @@ msgstr "Examinar conteúdo" msgid "Examining subtitles" msgstr "À procura das legendas" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 #, fuzzy msgid "Examining subtitles and closed captions" msgstr "Examen du contenu" @@ -1137,18 +1142,18 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1192,7 +1197,7 @@ msgstr "Esquerdo traseiro surround" msgid "Left surround" msgstr "Esquerdo surround" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Duração" @@ -1380,7 +1385,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1499,7 +1504,7 @@ msgstr "" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1564,7 +1569,7 @@ msgstr "Curta-metragem" msgid "Sign" msgstr "" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Tamanho" @@ -1598,21 +1603,21 @@ msgid "" "need to check their settings." msgstr "" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1633,7 +1638,7 @@ msgstr "" msgid "Some of your content needs an OV" msgstr "" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1698,7 +1703,7 @@ msgstr "A cadeia de certificação para assinatura é inválida" msgid "The certificate chain for signing is invalid ({})" msgstr "A cadeia de certificação para assinatura é inválida" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1708,7 +1713,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1754,7 +1759,7 @@ msgstr "" msgid "The file {} has been trimmed by {} milliseconds more." msgstr "" -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1768,7 +1773,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1791,12 +1796,12 @@ msgstr "" "sistema de 32-bit tente reduzir o número de linhas de execução na aba Geral " "das Preferências." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -1986,7 +1991,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -1994,7 +1999,7 @@ msgid "" "to {} fps." msgstr "" -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2002,19 +2007,19 @@ msgid "" "rate to {} fps." msgstr "" -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." msgstr "" -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" msgstr "" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2028,19 +2033,19 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." msgstr "" -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2052,7 +2057,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Deve adicionar algum conteúdo ao DCP antes de o criar" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2061,7 +2066,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2069,13 +2074,13 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." msgstr "" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2101,7 +2106,7 @@ msgstr "[moving images]" msgid "[still]" msgstr "[still]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[subtitles]" @@ -2117,7 +2122,7 @@ msgstr "" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "Ligação expirou" @@ -2173,22 +2178,22 @@ msgstr "não foi possível ler do ficheiro {} ({})" msgid "could not write to file {} ({})" msgstr "não foi possível escrever para o ficheiro {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "erro durante conexão assíncrona ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "erro durante conexão assíncrona ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "erro durante leitura assíncrona ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "erro durante escrita assíncrona ({})" @@ -2317,7 +2322,7 @@ msgstr "imagem estática" msgid "unknown" msgstr "desconhecido" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "fotogramas de vídeo" diff --git a/src/lib/po/ru_RU.po b/src/lib/po/ru_RU.po index ee54ce3eb..d55497a90 100644 --- a/src/lib/po/ru_RU.po +++ b/src/lib/po/ru_RU.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2025-06-08 20:12+0300\n" "Last-Translator: Mikhail Epshteyn <virus-2006@yandex.ru>\n" "Language-Team: Mikhail Epshteyn\n" @@ -17,7 +17,7 @@ msgstr "" "X-Poedit-Basepath: .\n" "X-Poedit-SearchPath-0: .\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Частота кадров контента: %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Размер при кадрировании: {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Соотношение сторон экрана - %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Заполнено черным для подгонки под контейнер {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Масштаб: {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", соотношение сторон пикселя %.2f:1" @@ -175,7 +175,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "Подавитель шума 3D" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -228,7 +228,7 @@ msgstr "" "donate_amount?amount=10\">Перейти в Paypal для пожертвования €10</a></" "ul><p>Благодарю вас!</font>" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -256,7 +256,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "ADV (Рекламный)" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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 +268,7 @@ msgstr "" "Вы можете изменить формат контейнера DCP на SCOPE (2.39:1) на вкладке " "\"DCP\"." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -292,26 +292,26 @@ msgstr "Анализ аудио" msgid "Analysing subtitles" msgstr "Анализ субтитров" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" "Найдены маркеры, установленные после окончания проекта. Они будут " "проигнорированы." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Найдены файлы с субтитрами CC, которые больше, чем " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "Найдены файлы с субтитрами CC, XML-часть которых больше, чем " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Найдены файлы с субтитрами, которые больше, чем " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -319,7 +319,7 @@ msgstr "" "Найдена строка субтитров, которая длиннее 52 символов. Рекомендуется " "ограничить длину всех строк до 52 символов." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -327,7 +327,7 @@ msgstr "" "Найдена строка субтитров, которая длиннее 79 символов. Вы должны ограничить " "длину всех строк до 79 символов." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -335,7 +335,7 @@ msgstr "" "Найдены субтитры из более трёх строк. Рекомендуется использовать не более " "трёх строк." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -343,7 +343,7 @@ msgstr "" "Найдены субтитры, продолжительность которых менее 15 кадров. Рекомендуется " "задать продолжительность для всех субтитров как минимум 15 кадров." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -352,7 +352,7 @@ msgstr "" "предыдущего. Рекомендуется задать промежуток между субтитрами как минимум 2 " "кадра." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -696,7 +696,7 @@ msgstr "Весь добавляемый контент должен иметь msgid "Content to be joined must use the same text language." msgstr "Весь добавляемый контент должен иметь одинаковый язык текста." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Разрешение контента: {}x{}" @@ -837,7 +837,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML субтитры" @@ -845,7 +845,12 @@ msgstr "DCP XML субтитры" msgid "DCP sample rate" msgstr "Частота кадров DCP" -#: src/lib/frame_rate_change.cc:101 +#: 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 будет использовать каждый второй кадр контента.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP будет воспроизводиться на %.1f%% от скорости контента.\n" @@ -942,11 +947,11 @@ msgstr "Ошибка загрузки ({} ошибка {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Каждый кадр контента будет дублирован в DCP-пакете.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "" @@ -996,11 +1001,11 @@ msgstr "Ошибка: ({})" msgid "Event" msgstr "Событие" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "Проверка звука" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Проверка аудио, открытых и скрытых субтитров" @@ -1012,7 +1017,7 @@ msgstr "Проверка контента" msgid "Examining subtitles" msgstr "Проверка субтитров" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Проверка субтитров" @@ -1167,13 +1172,13 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" "Если вы используете 25 кадр/сек, вам следует изменить стандарт вашего DCP на " "SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " @@ -1183,7 +1188,7 @@ msgstr "" "причины для использования Interop. Рекомендуется изменить стандарт DCP на " "SMPTE на вкладке \"DCP\"." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1229,7 +1234,7 @@ msgstr "LRS - Левый задний объёмный" msgid "Left surround" msgstr "LS - Левый объёмный" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Длительность" @@ -1417,7 +1422,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1536,7 +1541,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1603,7 +1608,7 @@ msgstr "SHR (Короткометражный фильм)" msgid "Sign" msgstr "Жест" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Размер" @@ -1650,7 +1655,7 @@ msgstr "" "Эти файлы сейчас будут перепроверены. Возможно, вам придётся проверить их " "настройки." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1659,7 +1664,7 @@ msgstr "" "Некоторые из ваших скрытых субтитров занимают более {} строк. Они будут " "обрезаны." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1668,7 +1673,7 @@ msgstr "" "Часть вашего контента содержит аудио, у которого не задан язык. Если ваше " "аудио содержит речь, то рекомендуется задать язык аудио на вкладке \"DCP\"." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1689,7 +1694,7 @@ msgstr "Часть вашего контента требует KDM" msgid "Some of your content needs an OV" msgstr "Часть вашего контента требует OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1758,7 +1763,7 @@ msgstr "Цепочка сертификатов для подписи невер msgid "The certificate chain for signing is invalid ({})" msgstr "Цепочка сертификатов для подписи неверна ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, fuzzy, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1773,7 +1778,7 @@ msgstr "" "сертификатов, нажав кнопку \"Переделать сертификаты и ключи...\" на странице " "настроек \"Ключи\"." -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, fuzzy, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1827,7 +1832,7 @@ msgstr "Файл {} был обрезан на {} миллисекунд мен msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Файл {} был обрезан на {} миллисекунд больше." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1848,7 +1853,7 @@ msgstr "" "обратном направлении, чем раньше. Вам следует проверить все субтитры в вашем " "проекте, чтобы убедиться, что они размещены там, где вы хотите." -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1876,12 +1881,12 @@ msgstr "" "попробуйте уменьшить число потоков кодирования в Настройках на вкладке " "\"Основные\"." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "Этот KDM был сделан для {}, но не для его конечного сертификата." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "Этот KDM не был сделан для сертификата расшифровки {}." @@ -2073,7 +2078,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Фильтр деинтерлейсинга YADIF" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2084,7 +2089,7 @@ msgstr "" "не всеми проекторами. Рекомендуется изменить частоту кадров вашего DCP на {} " "кадр/сек." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2095,7 +2100,7 @@ msgstr "" "поддерживается не всеми проекторами. Возможно, вы захотите изменить частоту " "на {} кадр/сек." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2104,7 +2109,7 @@ msgstr "" "поддерживается не всеми проекторами. Учтите, что у вас могут быть проблемы " "совместимости." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2113,7 +2118,7 @@ msgstr "" "если хотите воспроизвести его на 3D-системе (напр. Real-D, MasterImage и " "т.п.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2133,7 +2138,7 @@ msgstr "" "Обнаружено несколько частей контента Atmos с разной частотой кадров. Вам " "нужно удалить часть контента Atmos." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2141,7 +2146,7 @@ msgstr "" "Ваши скрытые субтитры содержат пересечения (overlap), которые не допускаются " "для Interop DCP. Измените ваш стандарт DCP на SMPTE." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2149,7 +2154,7 @@ msgstr "" "Вы выбрали файл шрифта, размер которого больше 640 кБ. Весьма вероятно, что " "это вызовет проблемы при воспроизведении." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2162,7 +2167,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Вам необходимо добавить контент в DCP перед его созданием" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2175,7 +2180,7 @@ msgstr "" "Даже если у вас меньше каналов, {} автоматически заполнит недостающие " "тишиной." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, fuzzy, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2187,7 +2192,7 @@ msgstr "" "при проверке вашего DCP. Чтобы избежать этого, установите для аудиоканалов " "DCP значение 8 или 16." -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2196,7 +2201,7 @@ msgstr "" "привести к проблемам на некоторых проекторах. Если возможно, используйте " "соотношение сторон Flat или Scope для контейнера DCP." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2228,7 +2233,7 @@ msgstr "[движущийся]" msgid "[still]" msgstr "[статичный]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[субтитры]" @@ -2244,7 +2249,7 @@ msgstr "_reel{}" msgid "bits" msgstr "бит" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "таймаут соединения" @@ -2300,22 +2305,22 @@ msgstr "не удалось прочитать из файла {} ({})" msgid "could not write to file {} ({})" msgstr "не удалось записать в файл {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "ошибка во время async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, c++-format msgid "error during async_connect: ({})" msgstr "ошибка во время async_connect: ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "ошибка во время async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "ошибка во время async_write ({})" @@ -2447,7 +2452,7 @@ msgstr "статичный" msgid "unknown" msgstr "неизвестно" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "видеокадры" diff --git a/src/lib/po/sk_SK.po b/src/lib/po/sk_SK.po index 95b2e2363..0748a301d 100644 --- a/src/lib/po/sk_SK.po +++ b/src/lib/po/sk_SK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2016-01-06 00:23+0100\n" "Last-Translator: Tomáš Hlaváč\n" "Language-Team: \n" @@ -18,7 +18,7 @@ msgstr "" "X-Generator: Poedit 1.8.6\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, fuzzy, c-format msgid "" "\n" @@ -27,7 +27,7 @@ msgstr "" "\n" "Snímacia frekvencia obsahu %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, fuzzy, c++-format msgid "" "\n" @@ -36,7 +36,7 @@ msgstr "" "\n" "Zmenšené na {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, fuzzy, c-format msgid "" "\n" @@ -45,7 +45,7 @@ msgstr "" "\n" "Pomer strán displeja %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, fuzzy, c++-format msgid "" "\n" @@ -54,7 +54,7 @@ msgstr "" "\n" "Vyplnené čiernou, aby sa zmestil do kontajnera {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, fuzzy, c++-format msgid "" "\n" @@ -63,7 +63,7 @@ msgstr "" "\n" "Zmenšené na {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr "" @@ -93,7 +93,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, fuzzy, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", pomer strán obrazových bodov %.2f:1" @@ -169,7 +169,7 @@ msgstr "" msgid "3D denoiser" msgstr "3D denoiser" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -207,7 +207,7 @@ msgid "" "donate €10</a></ul><p>Thank you!</font>" msgstr "" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -230,7 +230,7 @@ msgstr "" msgid "Advertisement" msgstr "Reklama" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -238,7 +238,7 @@ msgid "" "tab." msgstr "" -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -260,54 +260,54 @@ msgstr "Analyzovať zvuk" msgid "Analysing subtitles" msgstr "Hľadám titulky" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "" -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "" -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -655,7 +655,7 @@ msgstr "Aby sa spojil obsah, musí používať rovnaký titulkový stream." msgid "Content to be joined must use the same text language." msgstr "Aby sa spojil obsah, musí používať rovnaké písma." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Video je {}x{}" @@ -799,7 +799,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML titulky" @@ -808,7 +808,12 @@ msgstr "DCP XML titulky" msgid "DCP sample rate" msgstr "Snímacia frekvencia obsahu" -#: src/lib/frame_rate_change.cc:101 +#: 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 bude používať každý druhý frame obsahu \n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP bude bežať na %.1f%% obsahu videa.\n" @@ -898,11 +903,11 @@ msgstr "Sťahovanie zlyhalo ({}/{} chyba {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Každý frame bude zdvojený v DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Každý frame bude opakovaný {} krát v DCP.\n" @@ -951,12 +956,12 @@ msgstr "Chyba: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Hľadám titulky" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "" @@ -970,7 +975,7 @@ msgstr "Vypočítavam obsah" msgid "Examining subtitles" msgstr "Hľadám titulky" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 #, fuzzy msgid "Examining subtitles and closed captions" msgstr "Hľadám titulky" @@ -1133,18 +1138,18 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1188,7 +1193,7 @@ msgstr "Left rear surround (Ľavý zadný priestorový)" msgid "Left surround" msgstr "Left surround (Ľavý zadný)" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "" @@ -1374,7 +1379,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1493,7 +1498,7 @@ msgstr "" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1558,7 +1563,7 @@ msgstr "Short (Krátky film)" msgid "Sign" msgstr "" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "" @@ -1592,21 +1597,21 @@ msgid "" "need to check their settings." msgstr "" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1627,7 +1632,7 @@ msgstr "" msgid "Some of your content needs an OV" msgstr "" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1693,7 +1698,7 @@ msgstr "Reťaz certifikátov pre podpisovanie je neplatná" msgid "The certificate chain for signing is invalid ({})" msgstr "Reťaz certifikátov pre podpisovanie je neplatná" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1703,7 +1708,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1749,7 +1754,7 @@ msgstr "" msgid "The file {} has been trimmed by {} milliseconds more." msgstr "" -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1763,7 +1768,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1785,12 +1790,12 @@ msgstr "" "Zostáva málo pamäte. Ak je váš operačný system 32-bitový, skúste znížiť " "počet enkódovacích threadov v záložke Všeobecné, v nastaveniach." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -1978,7 +1983,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Len ďalší deinterlacing filter" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -1986,7 +1991,7 @@ msgid "" "to {} fps." msgstr "" -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -1994,19 +1999,19 @@ msgid "" "rate to {} fps." msgstr "" -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." msgstr "" -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" msgstr "" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2020,19 +2025,19 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." msgstr "" -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2044,7 +2049,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Musíte pridať obsah do DCP pred tým, ako ho vytvoríte" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2053,7 +2058,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2061,13 +2066,13 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." msgstr "" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2093,7 +2098,7 @@ msgstr "[presúvam obrázky]" msgid "[still]" msgstr "[stále]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[titulky]" @@ -2109,7 +2114,7 @@ msgstr "" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "spojenie vypršalo" @@ -2165,22 +2170,22 @@ msgstr "nemôžem čítať zo súboru {} ({})" msgid "could not write to file {} ({})" msgstr "nemôžem zapisovať do súboru {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "chyba počas async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "chyba počas async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "chyba počas async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "chyba počas async_write ({})" @@ -2309,7 +2314,7 @@ msgstr "stále" msgid "unknown" msgstr "neznáme" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "video snímky" diff --git a/src/lib/po/sl_SI.po b/src/lib/po/sl_SI.po index c1d1c418f..7c7801f47 100644 --- a/src/lib/po/sl_SI.po +++ b/src/lib/po/sl_SI.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2024-02-10 16:15+0100\n" "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n" "Language-Team: \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.2.1\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Hitrost vsebine v sličicah %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Obrezano na {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Prikazano razmerje stranic %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Obdano s črnino, da se prilega vsebniku {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Velikost spremenjena na {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", razmerje stranic slikovne točke %.2f:1" @@ -175,7 +175,7 @@ msgstr "2,39 (široki/scope)" msgid "3D denoiser" msgstr "3D-razšumnik" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -227,7 +227,7 @@ msgstr "" "donirajte €20</a></li><li><a href=\"https://dcpomatic.com/donate_amount?" "amount=10\">Pojdite na PayPal in donirajte 10 €</a></li></ul><p>Hvala!" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -256,7 +256,7 @@ msgstr "ARIB STD-B67 (»Hibridna log-gama«)" msgid "Advertisement" msgstr "Oglas" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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 +268,7 @@ msgstr "" "zgoraj in spodaj v ravnem prikazu (1,85:1, Flat). Vsebnik DCP-ja bi morda " "raje nastavili na ukrivljeni format (2,39:1, Scope) na zavihku »DCP«." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -292,24 +292,24 @@ msgstr "Analiziranje zvoka" msgid "Analysing subtitles" msgstr "Analiziranje podnaslovov" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "Vsaj ena oznaka sledi po koncu projekta in bo prezrta." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Vsaj ena od datotek z zaprtimi napisi je večja od " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "Vsaj en del datotek XML zaprtih napisov je večji od " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Vsaj ena od datotek podnaslovov je večja od " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." @@ -317,7 +317,7 @@ msgstr "" "Vsaj ena od vrstic podnaslovov ima več kot 52 znakov. Priporočljivo je, da " "ima vsaka vrstica največ 52 znakov." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." @@ -325,7 +325,7 @@ msgstr "" "Vsaj ena od vrstic podnaslovov ima več kot 79 znakov. Priporočljivo je, da " "ima vsaka vrstica največ 79 znakov." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -333,7 +333,7 @@ msgstr "" "Vsaj eden od vaših podnaslovov ima več kot 3 vrstice. Priporočljivo je " "uporabiti največ 3 vrstice." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -341,7 +341,7 @@ msgstr "" "Vsaj en vaš podnaslov traja manj kot 15 sličic. Priporočljivo je, da vsak " "podnaslov dolg vsaj 15 sličic." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -349,7 +349,7 @@ msgstr "" "Vsaj eden od vaših podnaslovov se začne manj kot 2 sličici po prejšnjem. " "Priporočljivo je, da je vrzel med podnaslovi vsaj 2 sličici." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -699,7 +699,7 @@ msgstr "Vsebina, ki jo želite združiti, mora uporabljati isti tok podnaslovov. msgid "Content to be joined must use the same text language." msgstr "Vsebina, ki jo želite združiti, mora uporabljati isti jezik besedila." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Video vsebine je {}x{}" @@ -840,7 +840,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "Podnaslovi DCP XML" @@ -848,7 +848,12 @@ msgstr "Podnaslovi DCP XML" msgid "DCP sample rate" msgstr "Mera vzorčenja DCP" -#: src/lib/frame_rate_change.cc:101 +#: 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 bo uporabil vsako drugo sličico vsebine.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP bo predvajan pri %.1f%% hitrosti vsebine.\n" @@ -937,11 +942,11 @@ msgstr "Prenos ni uspel ({} napaka {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Vsaka sličica vsebine bo podvojena v DCP.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Vsaka sličice vsebine bo v DCP {}-krat ponovljena1.\n" @@ -990,11 +995,11 @@ msgstr " Napaka: {}" msgid "Event" msgstr "Dogodek" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "Preučevanje zvoka" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Preučevanje zvoka, podnaslovov in zaprtih napisov" @@ -1006,7 +1011,7 @@ msgstr "Preučevanje vsebine" msgid "Examining subtitles" msgstr "Preučevanje podnaslovov" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Preučevanje podnaslovov in zaprtih napisov" @@ -1159,11 +1164,11 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "Če uporabljate 25 sl/s, morate spremeniti standard DCP v SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " @@ -1173,7 +1178,7 @@ msgstr "" "poseben razlog za uporabo Interop. Svetujemo, da vaš DCP uporablja standard " "SMPTE, kar določite na zavihku »DCP«." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1219,7 +1224,7 @@ msgstr "Levo, zadaj, okolica" msgid "Left surround" msgstr "Levo, okolica" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Dolžina" @@ -1410,7 +1415,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1527,7 +1532,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1594,7 +1599,7 @@ msgstr "Kratki film" msgid "Sign" msgstr "Sign" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Velikost" @@ -1641,7 +1646,7 @@ msgstr "" "Te datoteke bodo zdaj ponovno pregledane, zato boste morda morali preveriti " "njihove nastavitve." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1649,7 +1654,7 @@ msgid "" msgstr "" "Nekateri vaši zaprti napisi segajo presegajo {} vrstic, zato bodo odrezani." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1659,7 +1664,7 @@ msgstr "" "Priporočljivo je nastaviti jezik zvočnega zapisa na zavihku »DCP«, razen če " "vaš zvočni zapis nima govorjenih delov." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1680,7 +1685,7 @@ msgstr "Nekatere vaše vsebine potrebujejo KDM" msgid "Some of your content needs an OV" msgstr "Nekatere vaše vsebine potrebujejo OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1745,7 +1750,7 @@ msgstr "Veriga potrdil za podpisovanje ni veljavna" msgid "The certificate chain for signing is invalid ({})" msgstr "Veriga potrdil za podpisovanje ni veljavna ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, fuzzy, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1760,7 +1765,7 @@ msgstr "" "verigo potrdil za podpisovanje s klikom gumba »Ponovno izdelaj potrdila in " "ključ …« na strani Ključi v Nastavitvah." -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, fuzzy, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1814,7 +1819,7 @@ msgstr "Datoteka {} je bila obrezana za {} milisekund manj." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Datoteka {} je bila obrezana za {} milisekund več." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1833,7 +1838,7 @@ msgstr "" "preveriti vse podnaslove v svojem projektu, da se prepričate, da so umeščeni " "na želeno mesto." -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1861,13 +1866,13 @@ msgstr "" "sistem, poskusite zmanjšati število niti šifriranja na zavihku Splošno v " "Nastavitvah." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, fuzzy, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" "Ta KDM je bil izdelan za DCP-o-matic, vendar ne za njegovo listno potrdilo." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, fuzzy, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "Ta KDM ni bil narejen za potrdilo za dešifriranje DCP-o-matic." @@ -2059,7 +2064,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Še en filter za razpletanje" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2070,7 +2075,7 @@ msgstr "" "podpirajo vsi projektorji. Svetujemo vam, da spremenite hitrost predvajanja " "DCP na {} sl/s." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2081,7 +2086,7 @@ msgstr "" "podpirajo vsi projektorji. Morda boste želeli razmisliti o spremembi " "hitrosti sličic na {} sl/s." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2089,7 +2094,7 @@ msgstr "" "Nastavljeno imate za hitrost sličic DCP 30 sl/s, ki je ne podpirajo vsi " "projektorji. Zavedajte se, da imate morda težave z združljivostjo." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2097,7 +2102,7 @@ msgstr "" "Uporabljate 3D-vsebino, vendar je vaš DCP nastavljen na 2D. Nastavite DCP " "na 3D, če ga želite predvajati na 3D-sistemu (npr. Real-D, MasterImage itn.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2117,7 +2122,7 @@ msgstr "" "Imate več kot en kos vsebine Atmos, in nimajo enake hitrosti sličic. " "Odstraniti morate nekaj vsebine Atmos." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2125,7 +2130,7 @@ msgstr "" "Imate prekrivanje zaprtih napisov, ki niso dovoljeni v DCP-jih Interop. " "Spremenite standard DCP v SMPTE." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2133,7 +2138,7 @@ msgstr "" "Določili ste datoteko pisave, ki je večja od 640 kB. To bo najverjetneje " "povzročilo težave pri predvajanju." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2146,7 +2151,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Preden jo ustvarite, morate DCP-ju dodati nekaj vsebin" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, fuzzy, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2159,7 +2164,7 @@ msgstr "" "pomembno, ali ima vaša vsebina manj kanalov, saj bo DCP-o-matic dodatne " "napolnil s tišino." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2170,7 +2175,7 @@ msgstr "" "distributerji pri preverjanju kakovosti vašega DCP sporočijo napake. Če se " "želite temu izogniti, nastavite število zvočnih kanalov DCP na 8 ali 16." -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2179,7 +2184,7 @@ msgstr "" "nekaterih projektorjih. Če je mogoče, uporabite plosko (flat) ali široko " "(scope) za razmerje vsebnika DCP." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2210,7 +2215,7 @@ msgstr "[gibljive slike]" msgid "[still]" msgstr "[fotografija]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[podnaslovi]" @@ -2226,7 +2231,7 @@ msgstr "_reel{}" msgid "bits" msgstr "bitov" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "povezava je potekla" @@ -2282,22 +2287,22 @@ msgstr "ni mogoče brati iz datoteke {} ({})" msgid "could not write to file {} ({})" msgstr "ni mogoče pisati v datoteko {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "napaka med async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "napaka med async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "napaka med async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "napaka med async_write ({})" @@ -2432,7 +2437,7 @@ msgstr "fotografija" msgid "unknown" msgstr "neznano" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "video sličice" diff --git a/src/lib/po/sv_SE.po b/src/lib/po/sv_SE.po index 2798482d7..91c46db76 100644 --- a/src/lib/po/sv_SE.po +++ b/src/lib/po/sv_SE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2021-12-28 14:46+0100\n" "Last-Translator: Mattias Mattsson <vitplister@gmail.com>\n" "Language-Team: \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "X-Generator: Poedit 2.3\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -26,7 +26,7 @@ msgstr "" "\n" "Källmaterialets bildhastighet är %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -35,7 +35,7 @@ msgstr "" "\n" "Beskuren till {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -44,7 +44,7 @@ msgstr "" "\n" "Bildformat %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -53,7 +53,7 @@ msgstr "" "\n" "Svarta kanter tillagda för att passa {}-behållaren ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -62,7 +62,7 @@ msgstr "" "\n" "Skalat till {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -102,7 +102,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", pixlarnas höjd/bredd-förhållande %.2f:1" @@ -176,7 +176,7 @@ msgstr "2,39 (Scope)" msgid "3D denoiser" msgstr "3D brusreducering" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -228,7 +228,7 @@ msgstr "" "via Paypal</a><li><a href=\"https://dcpomatic.com/donate_amount?" "amount=10\">Ge 10 EUR via Paypal</a></ul><p>Stort tack!" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -257,7 +257,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "Advertisement" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -269,7 +269,7 @@ msgstr "" "upp- och nertill inuti en 1,85:1-ruta. Rekommenderat är att istället välja " "DCP-behållare Scope (2.39:1) på \"DCP\"-fliken." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -293,26 +293,26 @@ msgstr "Analyserar ljud" msgid "Analysing subtitles" msgstr "Analyserar undertexter" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" "Åtminstone en markering kommer efter slutet av projektet och kommer att " "ignoreras." -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "Åtminstone en av dina undertextfiler är större än " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "Åtminstone en av dina undertextfilers XML-del är större än " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "Åtminstone en av dina undertextfiler är större än " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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 +320,7 @@ msgstr "" "Åtminstone en av dina rader i undertexten är längre än 52 bokstaver. Det är " "lämpligt att se till att varje rad är max 52 bokstäver låg." -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 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,7 +328,7 @@ msgstr "" "Åtminstone en av dina rader i undertexten är längre än 79 bokstaver. Det är " "lämpligt att se till att varje rad är max 79 bokstäver låg." -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." @@ -336,7 +336,7 @@ msgstr "" "Åtminstone en av dina undertexter innehåller mer än 3 rader. Det är lämpligt " "att använda max 3 rader." -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." @@ -344,7 +344,7 @@ msgstr "" "Åtminstone en av dina undertexter är kortare än 15 bildrutor. Det är " "lämpligt att använda minst 15 bildrutor." -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." @@ -352,7 +352,7 @@ msgstr "" "Åtminstone en av dina undertexter börjar mindre än 2 bildrutor efter " "föregående undertext. Det är lämpligt att använda minst 2 bildrutor mellan." -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 #, fuzzy msgid "" "At least one piece of subtitle content has no specified language. It is " @@ -706,7 +706,7 @@ msgstr "Källmaterial som ska sammanfogas måste använda undertext-ström." msgid "Content to be joined must use the same text language." msgstr "Källmaterial som ska sammanfogas måste använda samma språk för text." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Källmaterialet är {}x{}" @@ -847,7 +847,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML-undertexter" @@ -855,7 +855,12 @@ msgstr "DCP XML-undertexter" msgid "DCP sample rate" msgstr "DCP:ns samplingsfrekvens" -#: src/lib/frame_rate_change.cc:101 +#: 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:n kommer använda varannan bild från källmaterialet.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP:n kommer spelas upp i %.1f %% av källmaterialets hastighet.\n" @@ -944,12 +949,12 @@ msgstr "Nedladdning misslyckades ({} fel {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "" "Varje bildruta från källmaterialet kommer användas två gånger i DCP:n.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "" @@ -999,12 +1004,12 @@ msgstr "Fel: {}" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Läser undertexter" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "Undersöker ljud och undertexter" @@ -1016,7 +1021,7 @@ msgstr "Läser källmaterial" msgid "Examining subtitles" msgstr "Läser undertexter" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "Undersöker undertexter" @@ -1172,11 +1177,11 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "Om 25 fps används bör DCP-standard vara SMPTE." -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 #, fuzzy msgid "" "In general it is now advisable to make SMPTE DCPs unless you have a " @@ -1187,7 +1192,7 @@ msgstr "" "specifikt skäl till att använda Interop. Du bör säkerställa att din DCP " "använder SMPTE under fliken \"DCP\"." -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1233,7 +1238,7 @@ msgstr "Vänster baksurround" msgid "Left surround" msgstr "Vänster surround" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Speltid" @@ -1423,7 +1428,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, fuzzy, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1542,7 +1547,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1608,7 +1613,7 @@ msgstr "Short" msgid "Sign" msgstr "Tecken" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Upplösning" @@ -1661,7 +1666,7 @@ msgstr "" "Dessa filer kommer nu att genomsökas på nytt, deras inställningar kan " "därefter behöva kontrolleras." -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " @@ -1670,7 +1675,7 @@ msgstr "" "Några av dina dolda undertext-block har fler än {} rader. De överskjutande " "raderna kommer förmodligen klippas bort." -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1679,7 +1684,7 @@ msgstr "" "Innehållet har ljudspår, men inget språk är angivit. Det rekommenderas att " "sätta ljudspårets språk i \"DCP\"-fliken." -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1701,7 +1706,7 @@ msgstr "En del av ditt källmaterial behöver en KDM" msgid "Some of your content needs an OV" msgstr "En del av ditt källmaterial behöver en OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1767,7 +1772,7 @@ msgstr "Certifikatkedjan för att signera är ogiltig" msgid "The certificate chain for signing is invalid ({})" msgstr "Certifikatkedjan för att signera är ogiltig ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1777,7 +1782,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1826,7 +1831,7 @@ msgstr "Filen {} har trimmats med {} millisekunder mindre." msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Filen {} har trimmats med {} millisekunder mer." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1840,7 +1845,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 #, fuzzy msgid "" "There is a large difference between the frame rate of your DCP and that of " @@ -1869,12 +1874,12 @@ msgstr "" "operativsystem, försök att minska antalet kodnings-trådar i Allmänt-fliken " "under Inställningar." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, fuzzy, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "Denna KDM är skapad för DCP-o-matic men inte för dess löv-certifikat." -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, fuzzy, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "Denna KDM är inte gjord för DCP-o-matics dekrypterings-certifikat." @@ -2067,7 +2072,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Yet Another Deinterlacing Filter" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2077,7 +2082,7 @@ msgstr "" "Vald bildhastighet är {} fps. Denna bildhastighet stöds inte av all " "uppspelningsutrustning. Rekommenderat är att ändra bildhastighet till {} fps." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2087,7 +2092,7 @@ msgstr "" "Vald bildhastighet är {} fps. Denna bildhastighet stöds inte av all " "uppspelningsutrustning. Överväg att ändra bildhastighet till {} fps." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." @@ -2095,7 +2100,7 @@ msgstr "" "Vald bildhastighet är 30 fps. Denna bildhastighet stöds inte av all " "uppspelningsutrustning. Problem vid uppspelning kan förekomma." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2104,7 +2109,7 @@ msgstr "" "för 3D om du vill spela upp den med 3D-utrustning (t.ex. Real-D, MasterImage " "etc.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2124,7 +2129,7 @@ msgstr "" "Du har mer än en Atmos-del i innehållet, och de har inte samma " "bildhastighet. Du måste ta bort någon/några Atmos-delar." -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2132,7 +2137,7 @@ msgstr "" "Du har överlappande dolda undertextspår. Detta är inte tillåtet för Interop-" "DCP:er. Ändra DCP-standard till SMPTE." -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2140,7 +2145,7 @@ msgstr "" "Du använder en typsnittsfil som är större än 640kB. Risken är stor att detta " "leder till problem vid uppspelning." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2153,7 +2158,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Du måste lägga till källmaterial till DCP:n innan du skapar den" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, fuzzy, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2166,7 +2171,7 @@ msgstr "" "ditt innehåll har färre kanaler, DCP-o-matic fyller i de extra kanalerna med " "tystnad." -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2174,7 +2179,7 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2183,7 +2188,7 @@ msgstr "" "uppspelning på en del utrustning. Använd Flat eller Scope som bildformat om " "möjligt." -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2213,7 +2218,7 @@ msgstr "[bildsekvens]" msgid "[still]" msgstr "[stillbild]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[undertexter]" @@ -2229,7 +2234,7 @@ msgstr "_akt{}" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "uppkopplingen tog för lång tid" @@ -2285,22 +2290,22 @@ msgstr "kunde inte läsa från fil {} ({})" msgid "could not write to file {} ({})" msgstr "kunde inte skriva till fil {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "fel vid async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "fel vid async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "fel vid async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "fel vid async_write ({})" @@ -2432,7 +2437,7 @@ msgstr "stillbild" msgid "unknown" msgstr "okänd" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "bildrutor" diff --git a/src/lib/po/tr_TR.po b/src/lib/po/tr_TR.po index 82705cdda..845004e7a 100644 --- a/src/lib/po/tr_TR.po +++ b/src/lib/po/tr_TR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -17,42 +17,42 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" "Content frame rate %.4f\n" msgstr "" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" "Cropped to {}x{}" msgstr "" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" "Display aspect ratio %.2f:1" msgstr "" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" "Padded with black to fit container {} ({}x{})" msgstr "" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" "Scaled to {}x{}" msgstr "" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr "" @@ -82,7 +82,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr "" @@ -155,7 +155,7 @@ msgstr "" msgid "3D denoiser" msgstr "" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -193,7 +193,7 @@ msgid "" "donate €10</a></ul><p>Thank you!</font>" msgstr "" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -216,7 +216,7 @@ msgstr "" msgid "Advertisement" msgstr "" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -224,7 +224,7 @@ msgid "" "tab." msgstr "" -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -244,54 +244,54 @@ msgstr "" msgid "Analysing subtitles" msgstr "" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "" -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "" -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -614,7 +614,7 @@ msgstr "" msgid "Content to be joined must use the same text language." msgstr "" -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "" @@ -750,7 +750,7 @@ msgstr "" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "" @@ -758,7 +758,12 @@ msgstr "" msgid "DCP sample rate" msgstr "" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, c++-format +msgid "DCP will contain 1 out of every {} frames of the content.\n" +msgstr "" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "" @@ -835,11 +840,11 @@ msgstr "" msgid "EC" msgstr "" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "" @@ -888,11 +893,11 @@ msgstr "" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "" @@ -904,7 +909,7 @@ msgstr "" msgid "Examining subtitles" msgstr "" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "" @@ -1055,18 +1060,18 @@ msgstr "" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1110,7 +1115,7 @@ msgstr "" msgid "Left surround" msgstr "" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "" @@ -1293,7 +1298,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1409,7 +1414,7 @@ msgstr "" msgid "SMPTE 240M" msgstr "" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1471,7 +1476,7 @@ msgstr "" msgid "Sign" msgstr "" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "" @@ -1505,21 +1510,21 @@ msgid "" "need to check their settings." msgstr "" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1540,7 +1545,7 @@ msgstr "" msgid "Some of your content needs an OV" msgstr "" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1604,7 +1609,7 @@ msgstr "" msgid "The certificate chain for signing is invalid ({})" msgstr "" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1614,7 +1619,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1658,7 +1663,7 @@ msgstr "" msgid "The file {} has been trimmed by {} milliseconds more." msgstr "" -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1672,7 +1677,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1692,12 +1697,12 @@ msgid "" "tab of Preferences." msgstr "" -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -1875,7 +1880,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -1883,7 +1888,7 @@ msgid "" "to {} fps." msgstr "" -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -1891,19 +1896,19 @@ msgid "" "rate to {} fps." msgstr "" -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." msgstr "" -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" msgstr "" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -1917,19 +1922,19 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." msgstr "" -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -1940,7 +1945,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -1949,7 +1954,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -1957,13 +1962,13 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." msgstr "" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -1989,7 +1994,7 @@ msgstr "" msgid "[still]" msgstr "" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "" @@ -2005,7 +2010,7 @@ msgstr "" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "" @@ -2061,22 +2066,22 @@ msgstr "" msgid "could not write to file {} ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, c++-format msgid "error during async_connect: ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "" @@ -2199,7 +2204,7 @@ msgstr "" msgid "unknown" msgstr "" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "" diff --git a/src/lib/po/uk_UA.po b/src/lib/po/uk_UA.po index 1f27c9866..edf359d66 100644 --- a/src/lib/po/uk_UA.po +++ b/src/lib/po/uk_UA.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\n" "PO-Revision-Date: 2018-08-20 19:32+0300\n" "Last-Translator: Igor Voytovich <i.voyt@dualvfilms.com>\n" "Language-Team: Українська\n" @@ -15,7 +15,7 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/lib/video_content.cc:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -24,7 +24,7 @@ msgstr "" "\n" "Частота кадрів контенту %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -33,7 +33,7 @@ msgstr "" "\n" "Розмір при кадруванні: {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -42,7 +42,7 @@ msgstr "" "\n" "Співвідношення сторін контенту %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -51,7 +51,7 @@ msgstr "" "\n" "Заповнено чорним для підгонки контейнера {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -60,7 +60,7 @@ msgstr "" "\n" "Розмір при масштабуванні: {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -100,7 +100,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$JOB_NAME: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", співвідношення сторін пікселей %.2f:1" @@ -174,7 +174,7 @@ msgstr "2.39 (Scope)" msgid "3D denoiser" msgstr "Придушення шуму 3D" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -212,7 +212,7 @@ msgid "" "donate €10</a></ul><p>Thank you!</font>" msgstr "" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 #, fuzzy msgid "" "A few projectors have problems playing back very high bit-rate DCPs. It is " @@ -239,7 +239,7 @@ msgstr "ARIB STD-B67 ('Hybrid log-gamma')" msgid "Advertisement" msgstr "ADV (Реклама)" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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. " @@ -250,7 +250,7 @@ msgstr "" "означає, що у кадрі зверху та знизу вашого контенту будуть чорні області. Ви " "можете змінити формат кадра вашого DCP на SCOPE (2.39:1) на вкладці \"DCP\"." -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 #, fuzzy msgid "" "All of your content narrower than 1.90:1 but your DCP's container is Scope " @@ -277,54 +277,54 @@ msgstr "Аналіз аудіо" msgid "Analysing subtitles" msgstr "Пошук субтитрів" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "" -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "" -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "" -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -674,7 +674,7 @@ msgstr "Для приєднання контенту необхідно вико msgid "Content to be joined must use the same text language." msgstr "Для приєднання контенту має бути такий самий шрифт." -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "Розмір контенту: {}x{}" @@ -816,7 +816,7 @@ msgstr "DBP" msgid "DCP (via {})" msgstr "" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML субтитри" @@ -824,7 +824,12 @@ msgstr "DCP XML субтитри" msgid "DCP sample rate" msgstr "Частота кадрів DCP" -#: src/lib/frame_rate_change.cc:101 +#: 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 буде використовувати кажний другий кадр контенту.\n" + +#: src/lib/frame_rate_change.cc:103 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP буде програватися на %.1f%% від швидкості контенту.\n" @@ -914,11 +919,11 @@ msgstr "Помилка завантаження ({}/{} помилка {})" msgid "EC" msgstr "C" -#: src/lib/frame_rate_change.cc:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "Кожний кадр контенту буде задвоено у DCP-пакеті.\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "Кожний кадр контенту буде повторений {} раз у DCP-пакеті.\n" @@ -967,12 +972,12 @@ msgstr "Помилка: ({})" msgid "Event" msgstr "" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 #, fuzzy msgid "Examining audio" msgstr "Пошук субтитрів" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "" @@ -986,7 +991,7 @@ msgstr "Перевірка контенту" msgid "Examining subtitles" msgstr "Пошук субтитрів" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 #, fuzzy msgid "Examining subtitles and closed captions" msgstr "Пошук субтитрів" @@ -1144,18 +1149,18 @@ msgstr "IEC61966-2-4" msgid "IN" msgstr "" -#: src/lib/hints.cc:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " "the SMPTE standard in the \"DCP\" tab." msgstr "" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1199,7 +1204,7 @@ msgstr "Лівий тиловий surround" msgid "Left surround" msgstr "Лівий surround" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "Тривалість" @@ -1388,7 +1393,7 @@ msgstr "" msgid "P3 DCI (~6300K)" msgstr "" -#: src/lib/util.cc:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1505,7 +1510,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1568,7 +1573,7 @@ msgstr "SHR (Короткометражний фільм)" msgid "Sign" msgstr "" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "Розмір" @@ -1602,21 +1607,21 @@ msgid "" "need to check their settings." msgstr "" -#: src/lib/hints.cc:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " "has no spoken parts." msgstr "" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1638,7 +1643,7 @@ msgstr "Частина вашого контенту потребує KDM" msgid "Some of your content needs an OV" msgstr "Часть вашего контента требует OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1704,7 +1709,7 @@ msgstr "Ланцюг сертифікатів для підпису невірн msgid "The certificate chain for signing is invalid ({})" msgstr "Ланцюг сертифікатів для підпису невірний ({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1714,7 +1719,7 @@ msgid "" "Preferences." msgstr "" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1760,7 +1765,7 @@ msgstr "Файл {} був обрізаний на {} мілісекунд ме msgid "The file {} has been trimmed by {} milliseconds more." msgstr "Файл {} був обрізаний на {} мілісекунд більше." -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1774,7 +1779,7 @@ msgid "" "project to make sure that they are placed where you want them." msgstr "" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 #, fuzzy msgid "" "There is a large difference between the frame rate of your DCP and that of " @@ -1803,12 +1808,12 @@ msgstr "" "спробуйте зменшити кількість потоків кодування у \"Налаштуваннях\" у вкладці " "\"Основні\"." -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "" @@ -1998,7 +2003,7 @@ msgstr "" msgid "Yet Another Deinterlacing Filter" msgstr "Ще один фільтр деінтерлейсинга" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2008,7 +2013,7 @@ msgstr "" "Ви обрали для Interop DCP частоту кадрів, яка офіційно не підтримується. " "Радимо змінити частоту кадрів вашого DCP або замість цього зробити SMPTE DCP." -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, fuzzy, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2018,7 +2023,7 @@ msgstr "" "Ви обрали для Interop DCP частоту кадрів, яка офіційно не підтримується. " "Радимо змінити частоту кадрів вашого DCP або замість цього зробити SMPTE DCP." -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 #, fuzzy msgid "" "You are set up for a DCP frame rate of 30fps, which is not supported by all " @@ -2027,7 +2032,7 @@ msgstr "" "Ви обрали для Interop DCP частоту кадрів, яка офіційно не підтримується. " "Радимо змінити частоту кадрів вашого DCP або замість цього зробити SMPTE DCP." -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2036,7 +2041,7 @@ msgstr "" "3D, якщо хочете відтворити його на 3D-системі (напр. Real-D, MasterImage і " "т.п.)" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, fuzzy, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2054,13 +2059,13 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." msgstr "" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2068,7 +2073,7 @@ msgstr "" "Вы вибрали шрифт, розмір якого більше 640 кБ. Висока вірогідність, що це " "викликає проблеми при відтворенні." -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2081,7 +2086,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "Вам необхідно додати контент в DCP перед його створенням" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2090,7 +2095,7 @@ msgid "" "silence." msgstr "" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2098,7 +2103,7 @@ msgid "" "set the DCP audio channels to 8 or 16." msgstr "" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 #, fuzzy msgid "" "Your DCP uses an unusual container ratio. This may cause problems on some " @@ -2108,7 +2113,7 @@ msgstr "" "призвести к проблемам на деяких проекторах. Якщо можливо, використовуйте " "співвідношення сторін Flat або Scope для DCP" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2140,7 +2145,7 @@ msgstr "[послідовність]" msgid "[still]" msgstr "[статичний]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[субтитри]" @@ -2156,7 +2161,7 @@ msgstr "" msgid "bits" msgstr "" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "таймаут з'єднання" @@ -2212,22 +2217,22 @@ msgstr "не вдалося прочитати з файла {} ({})" msgid "could not write to file {} ({})" msgstr "не вдалося записати в файл {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "помилка під час async_connect ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, fuzzy, c++-format msgid "error during async_connect: ({})" msgstr "помилка під час async_connect ({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "помилка під час async_read ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "помилка під час async_write ({})" @@ -2358,7 +2363,7 @@ msgstr "статичний" msgid "unknown" msgstr "невідомо" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "відеокадри" diff --git a/src/lib/po/zh_CN.po b/src/lib/po/zh_CN.po index 5ae79a70f..db2ab4731 100644 --- a/src/lib/po/zh_CN.po +++ b/src/lib/po/zh_CN.po @@ -12,19 +12,19 @@ msgid "" msgstr "" "Project-Id-Version: LIBDCPOMATIC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-22 22:52+0100\n" -"PO-Revision-Date: 2025-10-05 13:31+0800\n" +"POT-Creation-Date: 2026-04-19 23:03+0200\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:513 +#: src/lib/video_content.cc:515 #, c-format msgid "" "\n" @@ -33,7 +33,7 @@ msgstr "" "\n" "源视频帧率 %.4f\n" -#: src/lib/video_content.cc:477 +#: src/lib/video_content.cc:479 #, c++-format msgid "" "\n" @@ -42,7 +42,7 @@ msgstr "" "\n" "裁剪为 {}x{}" -#: src/lib/video_content.cc:467 +#: src/lib/video_content.cc:469 #, c-format msgid "" "\n" @@ -51,7 +51,7 @@ msgstr "" "\n" "显示宽高比 %.2f:1" -#: src/lib/video_content.cc:501 +#: src/lib/video_content.cc:503 #, c++-format msgid "" "\n" @@ -60,7 +60,7 @@ msgstr "" "\n" "填充为黑色,以适应打包宽高比 {} ({}x{})" -#: src/lib/video_content.cc:491 +#: src/lib/video_content.cc:493 #, c++-format msgid "" "\n" @@ -69,7 +69,7 @@ msgstr "" "\n" "缩放到 {}x{}" -#: src/lib/video_content.cc:495 src/lib/video_content.cc:506 +#: src/lib/video_content.cc:497 src/lib/video_content.cc:508 #, c-format msgid " (%.2f:1)" msgstr " (%.2f:1)" @@ -109,7 +109,7 @@ msgstr "" msgid "$JOB_NAME: $JOB_STATUS" msgstr "$任务名称: $JOB_STATUS" -#: src/lib/video_content.cc:462 +#: src/lib/video_content.cc:464 #, c-format msgid ", pixel aspect ratio %.2f:1" msgstr ", 像素宽高比 %.2f:1" @@ -182,7 +182,7 @@ msgstr "2.39 (宽幅)" msgid "3D denoiser" msgstr "3D 降噪" -#: src/lib/hints.cc:219 +#: src/lib/hints.cc:222 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 " @@ -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 " @@ -231,7 +231,7 @@ msgstr "" "href=\"https://dcpomatic.com/donate_amount?amount=10\">去Paypal捐款10欧元</" "a></ul><p>谢谢您!</font>" -#: src/lib/hints.cc:176 +#: src/lib/hints.cc:179 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 " @@ -258,7 +258,7 @@ msgstr "ARIB STD-B67 (“HLG” HDR)" msgid "Advertisement" msgstr "广告片" -#: src/lib/hints.cc:153 +#: src/lib/hints.cc:156 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 +268,7 @@ msgstr "" "您添加的媒体画面宽高比为2.39:1,但是DCP容器设置为1.85:1的模式。这将会使您的画" "面在放映时存在上下黑边。建议把DCP容器设置为2.39:1的模式。" -#: src/lib/hints.cc:157 +#: src/lib/hints.cc:160 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 " @@ -290,55 +290,55 @@ msgstr "分析音频中" msgid "Analysing subtitles" msgstr "分析字幕中" -#: src/lib/hints.cc:384 +#: src/lib/hints.cc:379 msgid "" "At least one marker comes after the end of the project and will be ignored." msgstr "至少有一个标记出现在项目结束后,将被忽略。" -#: src/lib/hints.cc:523 +#: src/lib/hints.cc:526 msgid "At least one of your closed caption files is larger than " msgstr "至少有一个隐藏字幕文件过大了 " -#: src/lib/hints.cc:516 +#: src/lib/hints.cc:520 msgid "At least one of your closed caption files' XML part is larger than " msgstr "至少有一个隐藏式字幕文件的XML部分过大了 " -#: src/lib/hints.cc:531 +#: src/lib/hints.cc:532 msgid "At least one of your subtitle files is larger than " msgstr "至少有一个字幕文件过大了 " -#: src/lib/hints.cc:495 +#: src/lib/hints.cc:490 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." msgstr "至少有一行字幕超过52个字符, 建议每行最多52个字符。" -#: src/lib/hints.cc:497 +#: src/lib/hints.cc:492 msgid "" "At least one of your subtitle lines has more than 79 characters. You should " "make each line 79 characters at most in length." msgstr "至少有一行字幕超过79个字符, 你应该让每行最多79个字符。" -#: src/lib/hints.cc:664 +#: src/lib/hints.cc:681 msgid "" "At least one of your subtitles has more than 3 lines. It is advisable to " "use no more than 3 lines." msgstr "您的字幕中至少有一个超过3行, 建议使用不超过3行。" -#: src/lib/hints.cc:631 +#: src/lib/hints.cc:648 msgid "" "At least one of your subtitles lasts less than 15 frames. It is advisable " "to make each subtitle at least 15 frames long." msgstr "您的字幕中至少有一个持续时间少于15帧, 建议每个字幕至少15帧长。" -#: src/lib/hints.cc:636 +#: src/lib/hints.cc:653 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." msgstr "" "至少有一个字幕在前一个字幕后不到2帧开始, 建议字幕之间的间隔至少为2帧。" -#: src/lib/hints.cc:707 +#: src/lib/hints.cc:724 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 " @@ -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." @@ -663,7 +665,7 @@ msgstr "添加的内容字幕流必须相同。" msgid "Content to be joined must use the same text language." msgstr "添加的内容必须有相同的文字语言。" -#: src/lib/video_content.cc:453 +#: src/lib/video_content.cc:455 #, c++-format msgid "Content video is {}x{}" msgstr "源视频分辨率是 {}x{}" @@ -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 @@ -802,7 +803,7 @@ msgstr "DCP" msgid "DCP (via {})" msgstr "DCP (via {})" -#: src/lib/dcp_subtitle_content.cc:139 +#: src/lib/dcp_subtitle_content.cc:138 msgid "DCP XML subtitles" msgstr "DCP XML字幕" @@ -810,7 +811,12 @@ msgstr "DCP XML字幕" msgid "DCP sample rate" msgstr "DCP 采样率" -#: src/lib/frame_rate_change.cc:101 +#: src/lib/frame_rate_change.cc:93 +#, 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 #, c-format msgid "DCP will run at %.1f%% of the content speed.\n" msgstr "DCP队列将在速度 %.1f%% 下运行。\n" @@ -899,15 +905,14 @@ 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:93 +#: src/lib/frame_rate_change.cc:95 msgid "Each content frame will be doubled in the DCP.\n" msgstr "该DCP中每一帧将复制为两帧。\n" -#: src/lib/frame_rate_change.cc:95 +#: src/lib/frame_rate_change.cc:97 #, c++-format msgid "Each content frame will be repeated {} more times in the DCP.\n" msgstr "每个内容帧将在DCP中重复{}次。\n" @@ -956,11 +961,11 @@ msgstr "错误: ({})" msgid "Event" msgstr "事件" -#: src/lib/hints.cc:415 +#: src/lib/hints.cc:410 msgid "Examining audio" msgstr "正在检查音频" -#: src/lib/hints.cc:417 +#: src/lib/hints.cc:412 msgid "Examining audio, subtitles and closed captions" msgstr "检查音频、字幕和隐藏式字幕中" @@ -972,7 +977,7 @@ msgstr "分析内容中" msgid "Examining subtitles" msgstr "定位字幕中" -#: src/lib/hints.cc:413 +#: src/lib/hints.cc:408 msgid "Examining subtitles and closed captions" msgstr "检查字幕和隐藏式字幕中" @@ -1123,13 +1128,13 @@ 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:195 +#: src/lib/hints.cc:198 msgid "If you do use 25fps you should change your DCP standard to SMPTE." msgstr "如果您选择使用25fps,那就必须把DCP标准选线设置为SMPTE。" -#: src/lib/hints.cc:258 +#: src/lib/hints.cc:261 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 " @@ -1138,7 +1143,7 @@ msgstr "" "一般来说,现在建议制作SMPTE DCP,除非您有特殊的理由使用Interop。建议在“DCP”选" "项卡中将DCP设置为使用SMPTE标准。" -#: src/lib/hints.cc:624 +#: src/lib/hints.cc:641 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." @@ -1182,7 +1187,7 @@ msgstr "左后环绕" msgid "Left surround" msgstr "左环绕" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "Length" msgstr "长度" @@ -1226,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" @@ -1274,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." @@ -1357,17 +1360,17 @@ 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:1131 +#: src/lib/util.cc:1111 #, c++-format msgid "" "Please report this problem by using Help -> Report a problem or via email to " @@ -1407,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)" @@ -1484,7 +1486,7 @@ msgstr "SMPTE 2085, Y'D'zD'x" msgid "SMPTE 240M" msgstr "SMPTE 240M" -#: src/lib/hints.cc:689 +#: src/lib/hints.cc:706 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). " @@ -1498,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" @@ -1549,7 +1550,7 @@ msgstr "短片" msgid "Sign" msgstr "签名" -#: src/lib/video_content.cc:528 +#: src/lib/video_content.cc:530 msgid "Size" msgstr "大小" @@ -1584,23 +1585,21 @@ 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:605 +#: src/lib/hints.cc:622 #, c++-format msgid "" "Some of your closed captions span more than {} lines, so they will be " "truncated." msgstr "您的某些隐藏字幕跨度超过{}行,因此它将被截断,可能显示不完整。" -#: src/lib/hints.cc:727 +#: src/lib/hints.cc:744 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 " @@ -1609,7 +1608,7 @@ msgstr "" "您的某些内容有音频,但您尚未设置音频语言。建议在“DCP”选项卡设置音频语言,除非" "您的音频没有说话部分。" -#: src/lib/hints.cc:798 +#: src/lib/hints.cc:815 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 " @@ -1617,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" @@ -1630,7 +1632,7 @@ msgstr "一些内容需要KDM密钥" msgid "Some of your content needs an OV" msgstr "一些内容需要OV" -#: src/lib/hints.cc:781 +#: src/lib/hints.cc:798 #, c++-format msgid "" "Some of your video content contains an alpha channel, and {} cannot be " @@ -1665,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" @@ -1698,7 +1699,7 @@ msgstr "证书签名无效" msgid "The certificate chain for signing is invalid ({})" msgstr "证书签名无效({})" -#: src/lib/hints.cc:744 +#: src/lib/hints.cc:761 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs contains a " @@ -1711,7 +1712,7 @@ msgstr "" "议通过单击“首选项”的“密钥”页面中的“重新制作证书和密钥…”按钮来重新创建签名证书" "链。" -#: src/lib/hints.cc:752 +#: src/lib/hints.cc:769 #, c++-format msgid "" "The certificate chain that {} uses for signing DCPs and KDMs has a validity " @@ -1760,7 +1761,7 @@ msgstr "文件 {} 被缩短了 {} 毫秒。" msgid "The file {} has been trimmed by {} milliseconds more." msgstr "文件 {} 被延长了 {} 毫秒。" -#: src/lib/hints.cc:267 +#: src/lib/hints.cc:270 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 " @@ -1778,7 +1779,7 @@ msgstr "" "现在版本中的字幕的垂直偏移控制与以前版本中的方向相反。您应该检查项目中的所有" "字幕,以确保它们放置在您想要的位置。" -#: src/lib/hints.cc:248 +#: src/lib/hints.cc:251 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 " @@ -1801,12 +1802,12 @@ msgid "" "tab of Preferences." msgstr "内存不足,如您是32位系统,请重新设置运行线程数量来达到稳定运行。" -#: src/lib/util.cc:981 +#: src/lib/util.cc:961 #, c++-format msgid "This KDM was made for {} but not for its leaf certificate." msgstr "KDM是为 {}生成,但不是为它的叶子证书生成。" -#: src/lib/util.cc:979 +#: src/lib/util.cc:959 #, c++-format msgid "This KDM was not made for {}'s decryption certificate." msgstr "KDM不是为 {} 解密证书而生成。" @@ -1982,17 +1983,17 @@ 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" msgstr "反隔行扫描滤镜" -#: src/lib/hints.cc:208 +#: src/lib/hints.cc:211 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2002,7 +2003,7 @@ msgstr "" "您设置DCP的帧率为 {} fps的DCP。并非所有放映设备都支持此帧率。建议您将DCP帧率" "更改为 {} fps。" -#: src/lib/hints.cc:192 +#: src/lib/hints.cc:195 #, c++-format msgid "" "You are set up for a DCP at a frame rate of {} fps. This frame rate is not " @@ -2012,13 +2013,13 @@ msgstr "" "您设置的帧率为{} fps的DCP。并非所有放映设备都支持此帧率。建议您将帧率更改为 " "{} fps。" -#: src/lib/hints.cc:202 +#: src/lib/hints.cc:205 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." msgstr "您设置的DCP帧速率为30fps,这不是所有放映设备都支持 ,请注意兼容问题。" -#: src/lib/hints.cc:322 +#: src/lib/hints.cc:325 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.)" @@ -2026,7 +2027,7 @@ msgstr "" "您添加的内容是3D内容,但您的DCP包设置为2D模式,如果您想在3D放映系统(如Real-" "D, MasterImage等)上播放,请设置到3D模式。" -#: src/lib/hints.cc:125 +#: src/lib/hints.cc:128 #, c++-format msgid "" "You are using {}'s stereo-to-5.1 upmixer. This is experimental and may " @@ -2042,7 +2043,7 @@ msgid "" "frame rate. You must remove some Atmos content." msgstr "您有多个全景声内容片段,而它们的帧率不同。您必须删除一些全景声内容。" -#: src/lib/hints.cc:612 +#: src/lib/hints.cc:629 msgid "" "You have overlapping closed captions, which are not allowed in Interop " "DCPs. Change your DCP standard to SMPTE." @@ -2050,7 +2051,7 @@ msgstr "" "您有重叠的隐藏式字幕,这在 Interop DCP中是不允许的。请您的DCP标准更改为" "SMPTE。" -#: src/lib/hints.cc:290 +#: src/lib/hints.cc:293 msgid "" "You have specified a font file which is larger than 640kB. This is very " "likely to cause problems on playback." @@ -2058,7 +2059,7 @@ msgstr "" "您添加的字体文件超过了640KB,部分服务器不支持超过640KB大小的字体,可能在播放" "时出现问题。" -#: src/lib/hints.cc:306 +#: src/lib/hints.cc:309 #, c++-format msgid "" "You have {} files that look like they are VOB files from DVD. You should " @@ -2071,7 +2072,7 @@ msgstr "" msgid "You must add some content to the DCP before creating it" msgstr "在创建 DCP 之前,必须向其中添加一些内容" -#: src/lib/hints.cc:110 +#: src/lib/hints.cc:113 #, c++-format msgid "" "Your DCP has fewer than 6 audio channels. This may cause problems on some " @@ -2082,7 +2083,7 @@ msgstr "" "您的DCP的音轨少于6个,某些放映设备可能不支持。但是如果您的内容没有这么多的音" "轨,您可以设置成6个音轨, {} 将用空白音轨补齐。" -#: src/lib/hints.cc:770 +#: src/lib/hints.cc:787 #, c++-format msgid "" "Your DCP has {} audio channels, rather than 8 or 16. This may cause some " @@ -2092,7 +2093,7 @@ msgstr "" "您的DCP具有 {} 个音频通道,而不是8或16个通道。这可能导致一些发行商在检查您的 " "DCP 时出现 QC 报错。为防止这种情况,建议设置8或16个DCP音频通道。" -#: src/lib/hints.cc:167 +#: src/lib/hints.cc:170 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." @@ -2100,7 +2101,7 @@ msgstr "" "您的DCP使用了不常见的画幅比例,可能导致部分电影放映机无法正常播放,建议改成" "Flat (1.77/1.78/1.85) 或者Scope (2.35/2.39) 比例。" -#: src/lib/hints.cc:356 +#: src/lib/hints.cc:359 #, c++-format msgid "" "Your audio level is very high (on {}). You should reduce the gain of your " @@ -2126,7 +2127,7 @@ msgstr "[动态图像]" msgid "[still]" msgstr "[静态图像]" -#: src/lib/dcp_subtitle_content.cc:133 src/lib/fcpxml_content.cc:86 +#: src/lib/dcp_subtitle_content.cc:132 src/lib/fcpxml_content.cc:86 #: src/lib/string_text_file_content.cc:111 msgid "[subtitles]" msgstr "[字幕]" @@ -2142,7 +2143,7 @@ msgstr "_卷号{}" msgid "bits" msgstr "位" -#: src/lib/dcpomatic_socket.cc:82 src/lib/dcpomatic_socket.cc:112 +#: src/lib/dcpomatic_socket.cc:86 src/lib/dcpomatic_socket.cc:116 msgid "connect timed out" msgstr "连接超时" @@ -2198,22 +2199,22 @@ msgstr "无法从文件 {} 中读取({})" msgid "could not write to file {} ({})" msgstr "不能写入文件 {} ({})" -#: src/lib/dcpomatic_socket.cc:108 +#: src/lib/dcpomatic_socket.cc:112 #, c++-format msgid "error during async_connect ({})" msgstr "在async连接时出现错误 ({})" -#: src/lib/dcpomatic_socket.cc:78 +#: src/lib/dcpomatic_socket.cc:82 #, c++-format msgid "error during async_connect: ({})" msgstr "在async连接时出现错误:({})" -#: src/lib/dcpomatic_socket.cc:200 +#: src/lib/dcpomatic_socket.cc:204 #, c++-format msgid "error during async_read ({})" msgstr "在async读取时出现错误 ({})" -#: src/lib/dcpomatic_socket.cc:159 +#: src/lib/dcpomatic_socket.cc:163 #, c++-format msgid "error during async_write ({})" msgstr "在async写入时出现错误 ({})" @@ -2308,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 @@ -2338,7 +2338,7 @@ msgstr "静止图像" msgid "unknown" msgstr "未知" -#: src/lib/video_content.cc:526 +#: src/lib/video_content.cc:528 msgid "video frames" msgstr "视频帧" 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 */ diff --git a/src/lib/subtitle_sync_packet_queue.cc b/src/lib/subtitle_sync_packet_queue.cc new file mode 100644 index 000000000..6a96924df --- /dev/null +++ b/src/lib/subtitle_sync_packet_queue.cc @@ -0,0 +1,99 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "dcpomatic_log.h" +#include "subtitle_sync_packet_queue.h" +extern "C" { +#include <libavcodec/packet.h> +#include <libavutil/avutil.h> +} +#include <iostream> + + +using boost::optional; + + +void +SubtitleSyncPacketQueue::add(AVPacket* packet, Type type) +{ + switch (type) { + case Type::VIDEO: + ++_num_video; + _other.push_back({packet, type}); + break; + case Type::AUDIO: + _other.push_back({packet, type}); + break; + case Type::DROP: + _other.push_back({PacketInfo(packet), type}); + av_packet_free(&packet); + break; + case Type::SUBTITLE: + _subtitle.push_back(packet); + break; + } +} + + +optional<std::pair<PacketQueue::Packet, PacketQueue::Type>> +SubtitleSyncPacketQueue::get(bool flushing) +{ + if (!_subtitle.empty()) { + /* Any subtitle packets we have get returned first */ + auto packet = _subtitle.front(); + _subtitle.pop_front(); + return std::make_pair(Packet(packet), Type::SUBTITLE); + } + + if (_other.size() > 4096) { + LOG_WARNING("SubtitleSyncPacketQueue is getting large: {} (_num_video={})", _other.size(), _num_video); + } + + if ((!flushing && _num_video < 48 && _other.size() < 8192) || _other.empty()) { + /* We haven't queued up enough video yet, or we don't have anything */ + return boost::none; + } + + auto packet = _other.front(); + if (packet.second == Type::VIDEO) { + --_num_video; + } + _other.pop_front(); + return packet; +} + + +void +SubtitleSyncPacketQueue::clear() +{ + for (auto i: _other) { + if (auto packet = boost::get<AVPacket*>(&i.first)) { + av_packet_free(packet); + } + } + for (auto i: _subtitle) { + av_packet_free(&i); + } + _other.clear(); + _subtitle.clear(); + _num_video = 0; +} + diff --git a/src/lib/subtitle_sync_packet_queue.h b/src/lib/subtitle_sync_packet_queue.h new file mode 100644 index 000000000..203b99bf2 --- /dev/null +++ b/src/lib/subtitle_sync_packet_queue.h @@ -0,0 +1,62 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +/** @file src/lib/subtitle_sync_packet_queue.h + * @brief SubtitleSyncPacketQueue class. + */ + + +#include "packet_queue.h" +#include <boost/variant.hpp> +#include <cstdint> +#include <deque> + +struct AVPacket; + + +/** @class PacketQueue + * @brief A queue of FFmpeg packets, used to re-order them so that + * subtitles do not arrive too late. + */ +class SubtitleSyncPacketQueue : public PacketQueue +{ +public: + /** Add a packet to the queue. Does not ref the packet; we expect + * the packet to be freed when it comes out of get() (or by clear()). + */ + void add(AVPacket* packet, Type type) override; + + /** Get the next packet to process. + * @param flushing should be true if we are flushing at the end of a decode. + * When this is true the queue will be emptied without trying to re-order it. + * Returns boost::none when there are no more packets to get. + */ + boost::optional<std::pair<Packet, Type>> get(bool flushing) override; + + /** Clear the queue. Packets will be freed. */ + void clear() override; + +private: + int _num_video = 0; + std::deque<AVPacket*> _subtitle; + std::deque<std::pair<Packet, Type>> _other; +}; + diff --git a/src/lib/text_ring_buffers.cc b/src/lib/text_ring_buffers.cc index e2be7bf41..3650bf6a0 100644 --- a/src/lib/text_ring_buffers.cc +++ b/src/lib/text_ring_buffers.cc @@ -28,17 +28,17 @@ using namespace dcpomatic; void -TextRingBuffers::put (PlayerText text, DCPTextTrack track, DCPTimePeriod period) +TextRingBuffers::put(PlayerText text, DCPTextTrack track, DCPTimePeriod period) { - boost::mutex::scoped_lock lm (_mutex); - _data.push_back (Data(text, track, period)); + boost::mutex::scoped_lock lm(_mutex); + _data.push_back(Data(text, track, period)); } optional<TextRingBuffers::Data> -TextRingBuffers::get () +TextRingBuffers::get() { - boost::mutex::scoped_lock lm (_mutex); + boost::mutex::scoped_lock lm(_mutex); if (_data.empty()) { return {}; } @@ -50,7 +50,7 @@ TextRingBuffers::get () void -TextRingBuffers::clear () +TextRingBuffers::clear() { - _data.clear (); + _data.clear(); } diff --git a/src/lib/text_ring_buffers.h b/src/lib/text_ring_buffers.h index 1f366fc0b..b924a9634 100644 --- a/src/lib/text_ring_buffers.h +++ b/src/lib/text_ring_buffers.h @@ -33,13 +33,13 @@ class TextRingBuffers { public: - void put (PlayerText text, DCPTextTrack track, dcpomatic::DCPTimePeriod period); + void put(PlayerText text, DCPTextTrack track, dcpomatic::DCPTimePeriod period); struct Data { - Data (PlayerText text_, DCPTextTrack track_, dcpomatic::DCPTimePeriod period_) - : text (text_) - , track (track_) - , period (period_) + Data(PlayerText text_, DCPTextTrack track_, dcpomatic::DCPTimePeriod period_) + : text(text_) + , track(track_) + , period(period_) {} PlayerText text; @@ -47,8 +47,8 @@ public: dcpomatic::DCPTimePeriod period; }; - boost::optional<Data> get (); - void clear (); + boost::optional<Data> get(); + void clear(); private: boost::mutex _mutex; diff --git a/src/lib/util.cc b/src/lib/util.cc index adc347ab1..60b93a0c4 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -171,7 +171,7 @@ time_to_hmsf(DCPTime time, Frame rate) m -= h * 60; char buffer[64]; - snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d.%02d", h, m, s, static_cast<int>(f)); + snprintf(buffer, sizeof(buffer), "%02d:%02d:%02d:%02d", h, m, s, static_cast<int>(f)); return buffer; } @@ -842,26 +842,6 @@ remap(shared_ptr<const AudioBuffers> input, int output_channels, AudioMapping ma } -size_t -utf8_strlen(string s) -{ - size_t const len = s.length(); - int N = 0; - for (size_t i = 0; i < len; ++i) { - unsigned char c = s[i]; - if ((c & 0xe0) == 0xc0) { - ++i; - } else if ((c & 0xf0) == 0xe0) { - i += 2; - } else if ((c & 0xf8) == 0xf0) { - i += 3; - } - ++N; - } - return N; -} - - /** @param size Size of picture that the subtitle will be overlaid onto */ void emit_subtitle_image(ContentTimePeriod period, dcp::TextImage sub, dcp::Size size, shared_ptr<TextDecoder> decoder) diff --git a/src/lib/util.h b/src/lib/util.h index aa003ff00..9863e5d94 100644 --- a/src/lib/util.h +++ b/src/lib/util.h @@ -84,7 +84,6 @@ extern std::string atmos_asset_filename(std::shared_ptr<dcp::AtmosAsset> asset, extern std::string careful_string_filter(std::string s, std::wstring allowed = L"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.+"); extern std::pair<int, int> audio_channel_types(std::list<int> mapped, int channels); extern std::shared_ptr<AudioBuffers> remap(std::shared_ptr<const AudioBuffers> input, int output_channels, AudioMapping map); -extern size_t utf8_strlen(std::string s); extern void emit_subtitle_image(dcpomatic::ContentTimePeriod period, dcp::TextImage sub, dcp::Size size, std::shared_ptr<TextDecoder> decoder); extern void copy_in_bits(boost::filesystem::path from, boost::filesystem::path to, std::function<void (float)>); extern dcp::Size scale_for_display(dcp::Size s, dcp::Size display_container, dcp::Size film_container, PixelQuanta quanta); diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc index b6e350d34..25c0fac62 100644 --- a/src/lib/video_content.cc +++ b/src/lib/video_content.cc @@ -435,8 +435,10 @@ VideoContent::fade(shared_ptr<const Film> film, ContentTime time) const auto const fade_out_time = ContentTime::from_frames(fade_out(), vfr); auto const end = ContentTime::from_frames(length(), vfr) - _parent->trim_end(); auto const time_after_end_fade_start = time - (end - fade_out_time); + /* The first frame of the fade (at time 0) must have some fade */ + auto const fade_amount = time_after_end_fade_start + ContentTime::from_frames(1, vfr); if (time_after_end_fade_start > ContentTime()) { - return std::max(0.0, 1 - static_cast<double>(time_after_end_fade_start.get()) / fade_out_time.get()); + return std::max(0.0, 1 - static_cast<double>(fade_amount.get()) / fade_out_time.get()); } return {}; diff --git a/src/lib/video_mxf_content.cc b/src/lib/video_mxf_content.cc index a26c54473..1accd7a5c 100644 --- a/src/lib/video_mxf_content.cc +++ b/src/lib/video_mxf_content.cc @@ -41,8 +41,8 @@ using boost::optional; using namespace dcpomatic; -VideoMXFContent::VideoMXFContent (boost::filesystem::path path) - : Content (path) +VideoMXFContent::VideoMXFContent(boost::filesystem::path path) + : Content(path) { } @@ -51,12 +51,12 @@ VideoMXFContent::VideoMXFContent (boost::filesystem::path path) VideoMXFContent::VideoMXFContent(cxml::ConstNodePtr node, boost::optional<boost::filesystem::path> film_directory, int version) : Content(node, film_directory) { - video = VideoContent::from_xml (this, node, version, VideoRange::FULL); + video = VideoContent::from_xml(this, node, version, VideoRange::FULL); } bool -VideoMXFContent::valid_mxf (boost::filesystem::path path) +VideoMXFContent::valid_mxf(boost::filesystem::path path) { Kumu::DefaultLogSink().UnsetFilterFlag(Kumu::LOG_ALLOW_ALL); @@ -71,7 +71,7 @@ VideoMXFContent::valid_mxf (boost::filesystem::path path) try { Kumu::DefaultLogSink().SetFilterFlag(0); - dcp::StereoJ2KPictureAsset sp (path); + dcp::StereoJ2KPictureAsset sp(path); return true; } catch (dcp::MXFFileError& e) { @@ -88,33 +88,33 @@ VideoMXFContent::valid_mxf (boost::filesystem::path path) void VideoMXFContent::examine(shared_ptr<const Film> film, shared_ptr<Job> job, bool tolerant) { - job->set_progress_unknown (); + job->set_progress_unknown(); Content::examine(film, job, tolerant); - video.reset (new VideoContent (this)); + video.reset(new VideoContent(this)); auto examiner = make_shared<VideoMXFExaminer>(shared_from_this()); video->take_from_examiner(film, examiner); - video->unset_colour_conversion (); + video->unset_colour_conversion(); } string -VideoMXFContent::summary () const +VideoMXFContent::summary() const { return fmt::format(_("{} [video]"), path_summary()); } string -VideoMXFContent::technical_summary () const +VideoMXFContent::technical_summary() const { return Content::technical_summary() + " - " + video->technical_summary(); } string -VideoMXFContent::identifier () const +VideoMXFContent::identifier() const { return Content::identifier() + "_" + video->identifier(); } @@ -130,23 +130,23 @@ VideoMXFContent::as_xml(xmlpp::Element* element, bool with_paths, PathBehaviour DCPTime -VideoMXFContent::full_length (shared_ptr<const Film> film) const +VideoMXFContent::full_length(shared_ptr<const Film> film) const { - FrameRateChange const frc (film, shared_from_this()); - return DCPTime::from_frames (llrint(video->length_after_3d_combine() * frc.factor()), film->video_frame_rate()); + FrameRateChange const frc(film, shared_from_this()); + return DCPTime::from_frames(llrint(video->length_after_3d_combine() * frc.factor()), film->video_frame_rate()); } DCPTime -VideoMXFContent::approximate_length () const +VideoMXFContent::approximate_length() const { - return DCPTime::from_frames (video->length_after_3d_combine(), 24); + return DCPTime::from_frames(video->length_after_3d_combine(), 24); } void -VideoMXFContent::add_properties (shared_ptr<const Film> film, list<UserProperty>& p) const +VideoMXFContent::add_properties(shared_ptr<const Film> film, list<UserProperty>& p) const { - Content::add_properties (film, p); - video->add_properties (p); + Content::add_properties(film, p); + video->add_properties(p); } diff --git a/src/lib/video_mxf_content.h b/src/lib/video_mxf_content.h index 4c2d051b0..0383242d5 100644 --- a/src/lib/video_mxf_content.h +++ b/src/lib/video_mxf_content.h @@ -25,21 +25,21 @@ class VideoMXFContent : public Content { public: - VideoMXFContent (boost::filesystem::path path); - VideoMXFContent (cxml::ConstNodePtr node, boost::optional<boost::filesystem::path> film_directory, int version); + VideoMXFContent(boost::filesystem::path path); + VideoMXFContent(cxml::ConstNodePtr node, boost::optional<boost::filesystem::path> film_directory, int version); - std::shared_ptr<VideoMXFContent> shared_from_this () { + std::shared_ptr<VideoMXFContent> shared_from_this() { return std::dynamic_pointer_cast<VideoMXFContent>(Content::shared_from_this()); } - std::shared_ptr<const VideoMXFContent> shared_from_this () const { + std::shared_ptr<const VideoMXFContent> shared_from_this() const { return std::dynamic_pointer_cast<const VideoMXFContent>(Content::shared_from_this()); } void examine(std::shared_ptr<const Film> film, std::shared_ptr<Job> job, bool tolerant) override; - std::string summary () const override; - std::string technical_summary () const override; - std::string identifier () const override; + std::string summary() const override; + std::string technical_summary() const override; + std::string identifier() const override; void as_xml( xmlpp::Element* element, @@ -48,9 +48,9 @@ public: boost::optional<boost::filesystem::path> film_directory ) const override; - dcpomatic::DCPTime full_length (std::shared_ptr<const Film> film) const override; - dcpomatic::DCPTime approximate_length () const override; - void add_properties (std::shared_ptr<const Film> film, std::list<UserProperty>& p) const override; + dcpomatic::DCPTime full_length(std::shared_ptr<const Film> film) const override; + dcpomatic::DCPTime approximate_length() const override; + void add_properties(std::shared_ptr<const Film> film, std::list<UserProperty>& p) const override; - static bool valid_mxf (boost::filesystem::path path); + static bool valid_mxf(boost::filesystem::path path); }; diff --git a/src/lib/wscript b/src/lib/wscript index 8e4b4d783..909b7a3c2 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -170,6 +170,8 @@ sources = """ mpeg2_encoder.cc named_channel.cc overlaps.cc + packet_queue.cc + passthrough_packet_queue.cc pixel_quanta.cc player.cc player_video.cc @@ -208,6 +210,7 @@ sources = """ string_text_file_decoder.cc subtitle_analysis.cc subtitle_film_encoder.cc + subtitle_sync_packet_queue.cc territory_type.cc text_ring_buffers.cc text_type.cc @@ -255,7 +258,7 @@ def build(bld): obj.uselib = """ AVCODEC AVUTIL AVFORMAT AVFILTER SWSCALE BOOST_FILESYSTEM BOOST_THREAD BOOST_DATETIME BOOST_SIGNALS2 BOOST_REGEX - SAMPLERATE POSTPROC TIFF SSH DCP CXML GLIB LZMA XML++ + SAMPLERATE POSTPROC TIFF SSH DCP CXML GLIB LZMA XMLPP CURL ZIP BZ2 FONTCONFIG PANGOMM CAIROMM XMLSEC SUB ICU NETTLE PNG JPEG LEQM_NRT LIBZ SQLITE3 """ diff --git a/src/tools/dcpomatic.cc b/src/tools/dcpomatic.cc index 691841bbc..4c1221d60 100644 --- a/src/tools/dcpomatic.cc +++ b/src/tools/dcpomatic.cc @@ -107,6 +107,7 @@ LIBDCP_DISABLE_WARNINGS #include <wx/cmdline.h> #include <wx/generic/aboutdlgg.h> #include <wx/preferences.h> +#include <wx/progdlg.h> #include <wx/splash.h> #include <wx/stdpaths.h> #include <wx/wxhtml.h> @@ -153,10 +154,10 @@ using namespace boost::placeholders; class FilmChangedClosingDialog { public: - explicit FilmChangedClosingDialog (string name) + explicit FilmChangedClosingDialog(string name) : _dialog( nullptr, - wxString::Format(_("Save changes to film \"%s\" before closing?"), std_to_wx (name).data()), + wxString::Format(_("Save changes to film \"%s\" before closing?"), std_to_wx(name).data()), /// TRANSLATORS: this is the heading for a dialog box, which tells the user that the current /// project (Film) has been changed since it was last saved. _("Film changed"), @@ -168,7 +169,7 @@ public: ); } - int run () + int run() { return _dialog.ShowModal(); } @@ -181,10 +182,10 @@ private: class FilmChangedDuplicatingDialog { public: - explicit FilmChangedDuplicatingDialog (string name) + explicit FilmChangedDuplicatingDialog(string name) : _dialog( nullptr, - wxString::Format(_("Save changes to film \"%s\" before duplicating?"), std_to_wx (name).data()), + wxString::Format(_("Save changes to film \"%s\" before duplicating?"), std_to_wx(name).data()), /// TRANSLATORS: this is the heading for a dialog box, which tells the user that the current /// project (Film) has been changed since it was last saved. _("Film changed"), @@ -196,7 +197,7 @@ public: ); } - int run () + int run() { return _dialog.ShowModal(); } @@ -310,8 +311,8 @@ private: class DOMFrame : public wxFrame { public: - explicit DOMFrame (wxString const& title) - : wxFrame (nullptr, -1, title) + explicit DOMFrame(wxString const& title) + : wxFrame(nullptr, -1, title) /* Use a panel as the only child of the Frame so that we avoid the dark-grey background on Windows. */ @@ -320,11 +321,11 @@ public: , _film_viewer(_right_panel, false) { auto bar = new wxMenuBar; - setup_menu (bar); - SetMenuBar (bar); + setup_menu(bar); + SetMenuBar(bar); #ifdef DCPOMATIC_WINDOWS - SetIcon (wxIcon (std_to_wx ("id"))); + SetIcon(wxIcon(std_to_wx("id"))); #endif _config_changed_connection = Config::instance()->Changed.connect(boost::bind(&DOMFrame::config_changed, this, _1)); @@ -332,46 +333,46 @@ public: _analytics_message_connection = Analytics::instance()->Message.connect(boost::bind(&DOMFrame::analytics_message, this, _1, _2)); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_new, this), ID_file_new); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_open, this), ID_file_open); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_save, this), ID_file_save); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_save_as_template, this), ID_file_save_as_template); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_duplicate, this), ID_file_duplicate); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_duplicate_and_open, this), ID_file_duplicate_and_open); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_close, this), ID_file_close); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_history, this, _1), ID_file_history, ID_file_history + HISTORY_SIZE); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::file_exit, this), wxID_EXIT); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::edit_copy, this), ID_edit_copy); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::edit_paste, this), ID_edit_paste); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::edit_select_all, this), ID_edit_select_all); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::edit_preferences, this), wxID_PREFERENCES); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_dcp, this), ID_jobs_make_dcp); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_kdms, this), ID_jobs_make_kdms); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_dkdms, this), ID_jobs_make_dkdms); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_dcp_batch, this), ID_jobs_make_dcp_batch); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_make_self_dkdm, this), ID_jobs_make_self_dkdm); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_export_video_file, this), ID_jobs_export_video_file); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_export_subtitles, this), ID_jobs_export_subtitles); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_send_dcp_to_tms, this), ID_jobs_send_dcp_to_tms); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_show_dcp, this), ID_jobs_show_dcp); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::jobs_open_dcp_in_player, this), ID_jobs_open_dcp_in_player); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::view_closed_captions, this), ID_view_closed_captions); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::view_video_waveform, this), ID_view_video_waveform); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_version_file, this), ID_tools_version_file); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_hints, this), ID_tools_hints); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_encoding_servers, this), ID_tools_encoding_servers); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_manage_templates, this), ID_tools_manage_templates); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_check_for_updates, this), ID_tools_check_for_updates); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_system_information, this),ID_tools_system_information); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_restore_default_preferences, this), ID_tools_restore_default_preferences); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_export_preferences, this), ID_tools_export_preferences); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::tools_import_preferences, this), ID_tools_import_preferences); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_about, this), wxID_ABOUT); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_user_manual, this), ID_help_user_manual); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::help_report_a_problem, this), ID_help_report_a_problem); - - Bind (wxEVT_CLOSE_WINDOW, boost::bind (&DOMFrame::close, this, _1)); - Bind (wxEVT_SHOW, boost::bind (&DOMFrame::show, this, _1)); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_new, this), ID_file_new); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_open, this), ID_file_open); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_save, this), ID_file_save); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_save_as_template, this), ID_file_save_as_template); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_duplicate, this), ID_file_duplicate); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_duplicate_and_open, this), ID_file_duplicate_and_open); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_close, this), ID_file_close); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_history, this, _1), ID_file_history, ID_file_history + HISTORY_SIZE); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::file_exit, this), wxID_EXIT); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::edit_copy, this), ID_edit_copy); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::edit_paste, this), ID_edit_paste); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::edit_select_all, this), ID_edit_select_all); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::edit_preferences, this), wxID_PREFERENCES); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_make_dcp, this), ID_jobs_make_dcp); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_make_kdms, this), ID_jobs_make_kdms); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_make_dkdms, this), ID_jobs_make_dkdms); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_make_dcp_batch, this), ID_jobs_make_dcp_batch); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_make_self_dkdm, this), ID_jobs_make_self_dkdm); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_export_video_file, this), ID_jobs_export_video_file); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_export_subtitles, this), ID_jobs_export_subtitles); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_send_dcp_to_tms, this), ID_jobs_send_dcp_to_tms); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_show_dcp, this), ID_jobs_show_dcp); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::jobs_open_dcp_in_player, this), ID_jobs_open_dcp_in_player); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::view_closed_captions, this), ID_view_closed_captions); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::view_video_waveform, this), ID_view_video_waveform); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_version_file, this), ID_tools_version_file); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_hints, this), ID_tools_hints); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_encoding_servers, this), ID_tools_encoding_servers); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_manage_templates, this), ID_tools_manage_templates); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_check_for_updates, this), ID_tools_check_for_updates); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_system_information, this),ID_tools_system_information); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_restore_default_preferences, this), ID_tools_restore_default_preferences); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_export_preferences, this), ID_tools_export_preferences); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::tools_import_preferences, this), ID_tools_import_preferences); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::help_about, this), wxID_ABOUT); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::help_user_manual, this), ID_help_user_manual); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::help_report_a_problem, this), ID_help_report_a_problem); + + Bind(wxEVT_CLOSE_WINDOW, boost::bind(&DOMFrame::close, this, _1)); + Bind(wxEVT_SHOW, boost::bind(&DOMFrame::show, this, _1)); auto left_panel = new wxPanel(_splitter, wxID_ANY); @@ -386,27 +387,27 @@ public: _controls->set_film(_film_viewer.film()); auto job_manager_view = new JobManagerView(_right_panel, false); - auto right_sizer = new wxBoxSizer (wxVERTICAL); + auto right_sizer = new wxBoxSizer(wxVERTICAL); right_sizer->Add(_film_viewer.panel(), 2, wxEXPAND | wxALL, 6); - right_sizer->Add (_controls, 0, wxEXPAND | wxALL, 6); - right_sizer->Add (job_manager_view, 1, wxEXPAND | wxALL, 6); + right_sizer->Add(_controls, 0, wxEXPAND | wxALL, 6); + right_sizer->Add(job_manager_view, 1, wxEXPAND | wxALL, 6); _right_panel->SetSizer(right_sizer); _splitter->SplitVertically(left_panel, _right_panel, Config::instance()->main_divider_sash_position().get_value_or(left_panel->GetSize().GetWidth() + 8)); - set_menu_sensitivity (); + set_menu_sensitivity(); - _film_editor->content_panel()->SelectionChanged.connect (boost::bind (&DOMFrame::set_menu_sensitivity, this)); - set_title (); + _film_editor->content_panel()->SelectionChanged.connect(boost::bind(&DOMFrame::set_menu_sensitivity, this)); + set_title(); JobManager::instance()->ActiveJobsChanged.connect(boost::bind(&DOMFrame::active_jobs_changed, this)); UpdateChecker::instance()->StateChanged.connect(boost::bind(&DOMFrame::update_checker_state_changed, this)); - FocusManager::instance()->SetFocus.connect (boost::bind (&DOMFrame::remove_accelerators, this)); - FocusManager::instance()->KillFocus.connect (boost::bind (&DOMFrame::add_accelerators, this)); - add_accelerators (); + FocusManager::instance()->SetFocus.connect(boost::bind(&DOMFrame::remove_accelerators, this)); + FocusManager::instance()->KillFocus.connect(boost::bind(&DOMFrame::add_accelerators, this)); + add_accelerators(); } ~DOMFrame() @@ -415,7 +416,7 @@ public: _video_waveform_dialog.reset(); } - void add_accelerators () + void add_accelerators() { #ifdef __WXOSX__ int accelerators = 7; @@ -424,63 +425,63 @@ public: #endif std::vector<wxAcceleratorEntry> accel(accelerators); /* [Shortcut] Ctrl+A:Add file(s) to the film */ - accel[0].Set (wxACCEL_CTRL, static_cast<int>('A'), ID_add_file); + accel[0].Set(wxACCEL_CTRL, static_cast<int>('A'), ID_add_file); /* [Shortcut] Delete:Remove selected content from film */ - accel[1].Set (wxACCEL_NORMAL, WXK_DELETE, ID_remove); + accel[1].Set(wxACCEL_NORMAL, WXK_DELETE, ID_remove); /* [Shortcut] Space:Start/stop playback */ - accel[2].Set (wxACCEL_NORMAL, WXK_SPACE, ID_start_stop); + accel[2].Set(wxACCEL_NORMAL, WXK_SPACE, ID_start_stop); /* [Shortcut] Ctrl+T:Open timeline window */ - accel[3].Set (wxACCEL_CTRL, static_cast<int>('T'), ID_timeline); + accel[3].Set(wxACCEL_CTRL, static_cast<int>('T'), ID_timeline); /* [Shortcut] Left arrow:Move back one frame */ - accel[4].Set (wxACCEL_NORMAL, WXK_LEFT, ID_back_frame); + accel[4].Set(wxACCEL_NORMAL, WXK_LEFT, ID_back_frame); /* [Shortcut] Right arrow:Move forward one frame */ - accel[5].Set (wxACCEL_NORMAL, WXK_RIGHT, ID_forward_frame); + accel[5].Set(wxACCEL_NORMAL, WXK_RIGHT, ID_forward_frame); #ifdef __WXOSX__ - accel[6].Set (wxACCEL_CTRL, static_cast<int>('W'), ID_file_close); + accel[6].Set(wxACCEL_CTRL, static_cast<int>('W'), ID_file_close); #endif - Bind (wxEVT_MENU, boost::bind (&ContentPanel::add_file_clicked, _film_editor->content_panel()), ID_add_file); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::remove_clicked, this, _1), ID_remove); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::start_stop_pressed, this), ID_start_stop); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::timeline_pressed, this), ID_timeline); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::back_frame, this), ID_back_frame); - Bind (wxEVT_MENU, boost::bind (&DOMFrame::forward_frame, this), ID_forward_frame); - wxAcceleratorTable accel_table (accelerators, accel.data()); - SetAcceleratorTable (accel_table); + Bind(wxEVT_MENU, boost::bind(&ContentPanel::add_file_clicked, _film_editor->content_panel()), ID_add_file); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::remove_clicked, this, _1), ID_remove); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::start_stop_pressed, this), ID_start_stop); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::timeline_pressed, this), ID_timeline); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::back_frame, this), ID_back_frame); + Bind(wxEVT_MENU, boost::bind(&DOMFrame::forward_frame, this), ID_forward_frame); + wxAcceleratorTable accel_table(accelerators, accel.data()); + SetAcceleratorTable(accel_table); } - void remove_accelerators () + void remove_accelerators() { - SetAcceleratorTable (wxAcceleratorTable ()); + SetAcceleratorTable(wxAcceleratorTable()); } - void remove_clicked (wxCommandEvent& ev) + void remove_clicked(wxCommandEvent& ev) { - if (_film_editor->content_panel()->remove_clicked (true)) { - ev.Skip (); + if (_film_editor->content_panel()->remove_clicked(true)) { + ev.Skip(); } } /** Make a new film in the given path, using template_name as a template * (or the default template if it's empty). */ - void new_film (boost::filesystem::path path, optional<string> template_name) + void new_film(boost::filesystem::path path, optional<string> template_name) { auto film = make_shared<Film>(path); film->use_template(template_name); - film->set_name (path.filename().generic_string()); - film->write_metadata (); - set_film (film); + film->set_name(path.filename().generic_string()); + film->write_metadata(); + set_film(film); } - void load_film (boost::filesystem::path file) + void load_film(boost::filesystem::path file) try { auto film = make_shared<Film>(file); - auto const notes = film->read_metadata (); + auto const notes = film->read_metadata(); film->read_ui_state(); if (film->state_version() == 4) { - error_dialog ( + error_dialog( 0, _("This film was created with an old version of DVD-o-matic and may not load correctly " "in this version. Please check the film's settings carefully.") @@ -488,53 +489,53 @@ public: } for (auto i: notes) { - error_dialog (0, std_to_wx(i)); + error_dialog(0, std_to_wx(i)); } - set_film (film); + set_film(film); JobManager::instance()->add(make_shared<CheckContentJob>(film)); } catch (FileNotFoundError& e) { auto const dir = e.file().parent_path(); if (dcp::filesystem::exists(dir / "ASSETMAP") || dcp::filesystem::exists(dir / "ASSETMAP.xml")) { - error_dialog ( + error_dialog( this, variant::wx::insert_dcpomatic(_("Could not open this folder as a %s project.")), variant::wx::insert_dcpomatic( _("It looks like you are trying to open a DCP. File -> Open is for loading %s projects, not DCPs. " "To import a DCP, create a new project with File -> New and then click the \"Add DCP...\" button.")) ); } else { - auto const p = std_to_wx(file.string ()); - error_dialog (this, wxString::Format(_("Could not open film at %s"), p.data()), std_to_wx(e.what())); + auto const p = std_to_wx(file.string()); + error_dialog(this, wxString::Format(_("Could not open film at %s"), p.data()), std_to_wx(e.what())); } } catch (std::exception& e) { - auto const p = std_to_wx (file.string()); - error_dialog (this, wxString::Format(_("Could not open film at %s"), p.data()), std_to_wx(e.what())); + auto const p = std_to_wx(file.string()); + error_dialog(this, wxString::Format(_("Could not open film at %s"), p.data()), std_to_wx(e.what())); } - void set_film (shared_ptr<Film> film) + void set_film(shared_ptr<Film> film) { _film = film; _film_viewer.set_film(_film); _film_editor->set_film(_film); - _controls->set_film (_film); + _controls->set_film(_film); _video_waveform_dialog.reset(); - set_menu_sensitivity (); + set_menu_sensitivity(); if (_film && _film->directory()) { - Config::instance()->add_to_history (_film->directory().get()); + Config::instance()->add_to_history(_film->directory().get()); } if (_film) { - _film->Change.connect (boost::bind (&DOMFrame::film_change, this, _1)); - _film->Message.connect (boost::bind(&DOMFrame::film_message, this, _1)); - _film->DirtyChange.connect (boost::bind(&DOMFrame::set_title, this)); - dcpomatic_log = _film->log (); + _film->Change.connect(boost::bind(&DOMFrame::film_change, this, _1)); + _film->Message.connect(boost::bind(&DOMFrame::film_message, this, _1)); + _film->DirtyChange.connect(boost::bind(&DOMFrame::set_title, this)); + dcpomatic_log = _film->log(); } - set_title (); + set_title(); } - shared_ptr<Film> film () const { + shared_ptr<Film> film() const { return _film; } @@ -543,7 +544,7 @@ private: void show (wxShowEvent& ev) { if (ev.IsShown() && !_first_shown_called) { - _film_editor->first_shown (); + _film_editor->first_shown(); _first_shown_called = true; #ifdef DCPOMATIC_WORKAROUND_MUTTER signal_manager->when_idle([this]() { Maximize(); }); @@ -551,19 +552,19 @@ private: } } - void film_message (string m) + void film_message(string m) { - message_dialog (this, std_to_wx(m)); + message_dialog(this, std_to_wx(m)); } - void film_change (ChangeType type) + void film_change(ChangeType type) { if (type == ChangeType::DONE) { - set_menu_sensitivity (); + set_menu_sensitivity(); } } - void file_new () + void file_new() { FilmNameLocationDialog dialog(this, _("New Film"), true); int const r = dialog.ShowModal(); @@ -587,23 +588,23 @@ private: wxString message = _("Could not create folder to store film."); message += char_to_wx(" "); if (!found_bad_chars.empty()) { - message += wxString::Format (_("Try removing the %s characters from your folder name."), std_to_wx(found_bad_chars).data()); + message += wxString::Format(_("Try removing the %s characters from your folder name."), std_to_wx(found_bad_chars).data()); } else { message += variant::wx::insert_dcpomatic(_("Please check that you do not have Windows controlled folder access enabled for %s.")); } - error_dialog (this, message, std_to_wx(e.what())); + error_dialog(this, message, std_to_wx(e.what())); #else - error_dialog (this, _("Could not create folder to store film."), std_to_wx(e.what())); + error_dialog(this, _("Could not create folder to store film."), std_to_wx(e.what())); #endif } } - void file_open () + void file_open() { wxDirDialog dialog( this, _("Select film to open"), - std_to_wx (Config::instance()->default_directory_or (wx_to_std (wxStandardPaths::Get().GetDocumentsDir())).string ()), + std_to_wx(Config::instance()->default_directory_or(wx_to_std(wxStandardPaths::Get().GetDocumentsDir())).string()), wxDEFAULT_DIALOG_STYLE | wxDD_DIR_MUST_EXIST ); @@ -611,7 +612,7 @@ private: while (true) { r = dialog.ShowModal(); if (r == wxID_OK && dialog.GetPath() == wxStandardPaths::Get().GetDocumentsDir()) { - error_dialog (this, _("You did not select a folder. Make sure that you select a folder before clicking Open.")); + error_dialog(this, _("You did not select a folder. Make sure that you select a folder before clicking Open.")); } else { break; } @@ -622,16 +623,16 @@ private: } } - void file_save () + void file_save() { try { - _film->write_metadata (); + _film->write_metadata(); } catch (exception& e) { error_dialog(this, _("Could not save project."), std_to_wx(e.what())); } } - void file_save_as_template () + void file_save_as_template() { SaveTemplateDialog dialog(this); if (dialog.ShowModal() == wxID_OK) { @@ -647,13 +648,16 @@ private: } } - void file_duplicate () + void file_duplicate() { FilmNameLocationDialog dialog(this, _("Duplicate Film"), false); if (dialog.ShowModal() == wxID_OK && dialog.check_path() && maybe_save_film<FilmChangedDuplicatingDialog>()) { auto film = make_shared<Film>(dialog.path()); - film->copy_from (_film); + wxProgressDialog progress(variant::wx::dcpomatic(), _("Duplicating film")); + film->copy_from(_film, [&progress](float value) { + progress.Update(value * 100); + }); film->set_name(dialog.path().filename().generic_string()); try { film->write_metadata(); @@ -663,26 +667,29 @@ private: } } - void file_duplicate_and_open () + void file_duplicate_and_open() { FilmNameLocationDialog dialog(this, _("Duplicate Film"), false); if (dialog.ShowModal() == wxID_OK && dialog.check_path() && maybe_save_film<FilmChangedDuplicatingDialog>()) { auto film = make_shared<Film>(dialog.path()); - film->copy_from (_film); + wxProgressDialog progress(variant::wx::dcpomatic(), _("Duplicating film")); + film->copy_from(_film, [&progress](float value) { + progress.Update(value * 100); + }); film->set_name(dialog.path().filename().generic_string()); try { - film->write_metadata (); - set_film (film); + film->write_metadata(); + set_film(film); } catch (exception& e) { error_dialog(this, _("Could not duplicate project."), std_to_wx(e.what())); } } } - void file_close () + void file_close() { - if (_film && _film->dirty ()) { + if (_film && _film->dirty()) { FilmChangedClosingDialog dialog(_film->name()); switch (dialog.run()) { case wxID_NO: @@ -690,7 +697,7 @@ private: break; case wxID_YES: /* Save and carry on to close */ - _film->write_metadata (); + _film->write_metadata(); break; case wxID_CANCEL: /* Stop */ @@ -698,25 +705,25 @@ private: } } - set_film (shared_ptr<Film>()); + set_film(shared_ptr<Film>()); } - void file_history (wxCommandEvent& event) + void file_history(wxCommandEvent& event) { - auto history = Config::instance()->history (); + auto history = Config::instance()->history(); int n = event.GetId() - ID_file_history; - if (n >= 0 && n < static_cast<int> (history.size ()) && maybe_save_then_delete_film<FilmChangedClosingDialog>()) { - load_film (history[n]); + if (n >= 0 && n < static_cast<int>(history.size()) && maybe_save_then_delete_film<FilmChangedClosingDialog>()) { + load_film(history[n]); } } - void file_exit () + void file_exit() { /* false here allows the close handler to veto the close request */ - Close (false); + Close(false); } - void edit_copy () + void edit_copy() { auto const sel = _film_editor->content_panel()->selected(); if (sel.size() == 1) { @@ -724,7 +731,7 @@ private: } } - void edit_paste () + void edit_paste() { if (!_clipboard) { return; @@ -737,19 +744,19 @@ private: for (auto i: _film_editor->content_panel()->selected()) { if (dialog.video() && i->video) { - DCPOMATIC_ASSERT (_clipboard->video); - i->video->take_settings_from (_clipboard->video); + DCPOMATIC_ASSERT(_clipboard->video); + i->video->take_settings_from(_clipboard->video); } if (dialog.audio() && i->audio) { - DCPOMATIC_ASSERT (_clipboard->audio); - i->audio->take_settings_from (_clipboard->audio); + DCPOMATIC_ASSERT(_clipboard->audio); + i->audio->take_settings_from(_clipboard->audio); } if (dialog.text()) { - auto j = i->text.begin (); - auto k = _clipboard->text.begin (); + auto j = i->text.begin(); + auto k = _clipboard->text.begin(); while (j != i->text.end() && k != _clipboard->text.end()) { - (*j)->take_settings_from (*k); + (*j)->take_settings_from(*k); ++j; ++k; } @@ -757,20 +764,20 @@ private: } } - void edit_select_all () + void edit_select_all() { _film_editor->content_panel()->select_all(); } - void edit_preferences () + void edit_preferences() { if (!_config_dialog) { - _config_dialog = create_full_config_dialog (); + _config_dialog = create_full_config_dialog(); } - _config_dialog->Show (this); + _config_dialog->Show(this); } - void tools_restore_default_preferences () + void tools_restore_default_preferences() { wxMessageDialog dialog( nullptr, @@ -780,11 +787,11 @@ private: ); if (dialog.ShowModal() == wxID_YES) { - Config::restore_defaults (); + Config::restore_defaults(); } } - void tools_export_preferences () + void tools_export_preferences() { FileDialog dialog( this, _("Specify ZIP file"), char_to_wx("ZIP files (*.zip)|*.zip"), wxFD_SAVE | wxFD_OVERWRITE_PROMPT, "Preferences", string("dcpomatic_config.zip") @@ -827,14 +834,14 @@ private: Config::instance()->load_from_zip(dialog.path(), action); } - void jobs_make_dcp () + void jobs_make_dcp() { double required; double available; if (!_film->should_be_enough_disk_space(required, available)) { auto const message = wxString::Format(_("The DCP for this film will take up about %.1f GB, and the disk that you are using only has %.1f GB available. Do you want to continue anyway?"), required, available); - if (!confirm_dialog (this, message)) { + if (!confirm_dialog(this, message)) { return; } } @@ -846,8 +853,8 @@ private: } } - if (_film->encrypted ()) { - NagDialog::maybe_nag ( + if (_film->encrypted()) { + NagDialog::maybe_nag( this, Config::NAG_ENCRYPTED_METADATA, _("You are making an encrypted DCP. It will not be possible to make KDMs for this DCP unless you have copies of " @@ -858,9 +865,9 @@ private: } /* Remove any existing DCP if the user agrees */ - auto const dcp_dir = _film->dir (_film->dcp_name(), false); + auto const dcp_dir = _film->dir(_film->dcp_name(), false); if (dcp::filesystem::exists(dcp_dir)) { - if (!confirm_dialog (this, wxString::Format (_("Do you want to overwrite the existing DCP %s?"), std_to_wx(dcp_dir.string()).data()))) { + if (!confirm_dialog(this, wxString::Format(_("Do you want to overwrite the existing DCP %s?"), std_to_wx(dcp_dir.string()).data()))) { return; } @@ -872,37 +879,37 @@ private: /* It seems to make sense to auto-save metadata here, since the make DCP may last a long time, and crashes/power failures are moderately likely. */ - _film->write_metadata (); - make_dcp (_film, TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP); + _film->write_metadata(); + make_dcp(_film, TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP); } catch (BadSettingError& e) { - error_dialog (this, wxString::Format (_("Bad setting for %s."), std_to_wx(e.setting()).data()), std_to_wx(e.what())); + error_dialog(this, wxString::Format(_("Bad setting for %s."), std_to_wx(e.setting()).data()), std_to_wx(e.what())); } catch (std::exception& e) { - error_dialog (this, wxString::Format (_("Could not make DCP.")), std_to_wx(e.what())); + error_dialog(this, wxString::Format(_("Could not make DCP.")), std_to_wx(e.what())); } } - void jobs_make_kdms () + void jobs_make_kdms() { if (!_film) { return; } _kdm_dialog.reset(this, _film); - _kdm_dialog->Show (); + _kdm_dialog->Show(); } - void jobs_make_dkdms () + void jobs_make_dkdms() { if (!_film) { return; } _dkdm_dialog.reset(this, _film); - _dkdm_dialog->Show (); + _dkdm_dialog->Show(); } /** @return false if we succeeded, true if not */ - bool send_to_other_tool (int port, function<void()> start, string message) + bool send_to_other_tool(int port, function<void()> start, string message) { /* i = 0; try to connect via socket i = 1; try again, and then try to start the tool @@ -910,30 +917,30 @@ private: */ for (int i = 0; i < 8; ++i) { try { - Socket socket (5); + Socket socket(5); socket.connect("127.0.0.1", port); - DCPOMATIC_ASSERT (_film->directory ()); - socket.write (message.length() + 1); - socket.write ((uint8_t *) message.c_str(), message.length() + 1); + DCPOMATIC_ASSERT(_film->directory()); + socket.write(message.length() + 1); + socket.write((uint8_t *) message.c_str(), message.length() + 1); /* OK\0 */ uint8_t ok[3]; - socket.read (ok, 3); + socket.read(ok, 3); return false; } catch (exception& e) { } if (i == 1) { - start (); + start(); } - dcpomatic_sleep_seconds (1); + dcpomatic_sleep_seconds(1); } return true; } - void jobs_make_dcp_batch () + void jobs_make_dcp_batch() { if (!_film) { return; @@ -946,33 +953,33 @@ private: } } - _film->write_metadata (); + _film->write_metadata(); - if (send_to_other_tool (BATCH_JOB_PORT, &start_batch_converter, _film->directory()->string())) { + if (send_to_other_tool(BATCH_JOB_PORT, &start_batch_converter, _film->directory()->string())) { #ifdef DCPOMATIC_OSX - error_dialog (this, _("Could not start the batch converter. You may need to download it from dcpomatic.com.")); + error_dialog(this, _("Could not start the batch converter. You may need to download it from dcpomatic.com.")); #else - error_dialog (this, _("Could not find batch converter.")); + error_dialog(this, _("Could not find batch converter.")); #endif } } - void jobs_open_dcp_in_player () + void jobs_open_dcp_in_player() { if (!_film) { return; } - if (send_to_other_tool (PLAYER_PLAY_PORT, &start_player, _film->dir(_film->dcp_name(false)).string())) { + if (send_to_other_tool(PLAYER_PLAY_PORT, &start_player, _film->dir(_film->dcp_name(false)).string())) { #ifdef DCPOMATIC_OSX - error_dialog (this, _("Could not start the player. You may need to download it from dcpomatic.com.")); + error_dialog(this, _("Could not start the player. You may need to download it from dcpomatic.com.")); #else - error_dialog (this, _("Could not find player.")); + error_dialog(this, _("Could not find player.")); #endif } } - void jobs_make_self_dkdm () + void jobs_make_self_dkdm() { if (!_film) { return; @@ -983,10 +990,10 @@ private: return; } - NagDialog::maybe_nag ( + NagDialog::maybe_nag( this, Config::NAG_DKDM_CONFIG, - wxString::Format ( + wxString::Format( _("You are making a DKDM which is encrypted by a private key held in" "\n\n<tt>%s</tt>\n\nIt is <span weight=\"bold\" size=\"larger\">VITALLY IMPORTANT</span> " "that you <span weight=\"bold\" size=\"larger\">BACK UP THIS FILE</span> since if it is lost " @@ -995,10 +1002,10 @@ private: ); - dcp::LocalTime from (Config::instance()->signer_chain()->leaf().not_before()); - from.add_days (1); - dcp::LocalTime to (Config::instance()->signer_chain()->leaf().not_after()); - to.add_days (-1); + dcp::LocalTime from(Config::instance()->signer_chain()->leaf().not_before()); + from.add_days(1); + dcp::LocalTime to(Config::instance()->signer_chain()->leaf().not_after()); + to.add_days(-1); auto signer = Config::instance()->signer_chain(); if (!signer->valid()) { @@ -1013,22 +1020,22 @@ private: if (dialog.internal()) { auto dkdms = Config::instance()->dkdms(); dkdms->add(make_shared<DKDM>(kdm)); - Config::instance()->changed (); + Config::instance()->changed(); } else { auto path = dialog.directory() / (_film->dcp_name(false) + "_DKDM.xml"); kdm.as_xml(path); } } catch (dcp::NotEncryptedError& e) { - error_dialog (this, _("CPL's content is not encrypted.")); + error_dialog(this, _("CPL's content is not encrypted.")); } catch (exception& e) { error_dialog(this, std_to_wx(e.what())); } catch (...) { - error_dialog (this, _("An unknown exception occurred.")); + error_dialog(this, _("An unknown exception occurred.")); } } - void jobs_export_video_file () + void jobs_export_video_file() { ExportVideoFileDialog dialog(this, _film->isdcf_name(true)); if (dialog.ShowModal() != wxID_OK) { @@ -1047,15 +1054,15 @@ private: } auto job = make_shared<TranscodeJob>(_film, TranscodeJob::ChangedBehaviour::EXAMINE_THEN_STOP); - job->set_encoder ( + job->set_encoder( make_shared<FFmpegFilmEncoder>( _film, job, dialog.path(), dialog.format(), dialog.mixdown_to_stereo(), dialog.split_reels(), dialog.split_streams(), dialog.x264_crf()) ); - JobManager::instance()->add (job); + JobManager::instance()->add(job); } - void jobs_export_subtitles () + void jobs_export_subtitles() { ExportSubtitlesDialog dialog(this, _film->reels().size(), _film->interop()); if (dialog.ShowModal() != wxID_OK) { @@ -1077,40 +1084,40 @@ private: } - void jobs_send_dcp_to_tms () + void jobs_send_dcp_to_tms() { - _film->send_dcp_to_tms (); + _film->send_dcp_to_tms(); } - void jobs_show_dcp () + void jobs_show_dcp() { - DCPOMATIC_ASSERT (_film->directory ()); + DCPOMATIC_ASSERT(_film->directory()); if (show_in_file_manager(_film->directory().get(), _film->dir(_film->dcp_name(false)))) { - error_dialog (this, _("Could not show DCP.")); + error_dialog(this, _("Could not show DCP.")); } } - void view_closed_captions () + void view_closed_captions() { - _film_viewer.show_closed_captions (); + _film_viewer.show_closed_captions(); } - void view_video_waveform () + void view_video_waveform() { if (!_video_waveform_dialog) { _video_waveform_dialog.reset(this, _film, _film_viewer); } - _video_waveform_dialog->Show (); + _video_waveform_dialog->Show(); } - void tools_system_information () + void tools_system_information() { if (!_system_information_dialog) { - _system_information_dialog = new SystemInformationDialog (this, _film_viewer); + _system_information_dialog = new SystemInformationDialog(this, _film_viewer); } - _system_information_dialog->Show (); + _system_information_dialog->Show(); } void tools_version_file() @@ -1124,40 +1131,40 @@ private: _dcp_referencing_dialog->Show(); } - void tools_hints () + void tools_hints() { if (!_hints_dialog) { - _hints_dialog = new HintsDialog (this, _film, true); + _hints_dialog = new HintsDialog(this, _film, true); } - _hints_dialog->Show (); + _hints_dialog->Show(); } - void tools_encoding_servers () + void tools_encoding_servers() { if (!_servers_list_dialog) { - _servers_list_dialog = new ServersListDialog (this); + _servers_list_dialog = new ServersListDialog(this); } - _servers_list_dialog->Show (); + _servers_list_dialog->Show(); } - void tools_manage_templates () + void tools_manage_templates() { if (!_templates_dialog) { _templates_dialog.reset(this); } - _templates_dialog->Show (); + _templates_dialog->Show(); } - void tools_check_for_updates () + void tools_check_for_updates() { _update_news_requested = true; UpdateChecker::instance()->run(); } - void help_about () + void help_about() { AboutDialog dialog(this); dialog.ShowModal(); @@ -1168,7 +1175,7 @@ private: wxLaunchDefaultBrowser(std_to_wx("https://dcpomatic.com/manual")); } - void help_report_a_problem () + void help_report_a_problem() { ReportProblemDialog dialog(this, _film); if (dialog.ShowModal() == wxID_OK) { @@ -1176,9 +1183,9 @@ private: } } - bool should_close () + bool should_close() { - if (!JobManager::instance()->work_to_do ()) { + if (!JobManager::instance()->work_to_do()) { return true; } @@ -1192,14 +1199,14 @@ private: return dialog.ShowModal() == wxID_YES; } - void close (wxCloseEvent& ev) + void close(wxCloseEvent& ev) { - if (!should_close ()) { - ev.Veto (); + if (!should_close()) { + ev.Veto(); return; } - if (_film && _film->dirty ()) { + if (_film && _film->dirty()) { FilmChangedClosingDialog dialog(_film->name()); switch (dialog.run()) { case wxID_NO: @@ -1207,11 +1214,11 @@ private: break; case wxID_YES: /* Save and carry on to close */ - _film->write_metadata (); + _film->write_metadata(); break; case wxID_CANCEL: /* Veto the event and stop */ - ev.Veto (); + ev.Veto(); return; } } @@ -1220,15 +1227,15 @@ private: cause the File menu to be altered, which itself will be deleted around now (without, as far as I can see, any way for us to find out). */ - _config_changed_connection.disconnect (); + _config_changed_connection.disconnect(); /* Also stop hearing about analytics-related stuff */ - _analytics_message_connection.disconnect (); + _analytics_message_connection.disconnect(); FontConfig::drop(); - ev.Skip (); - JobManager::drop (); + ev.Skip(); + JobManager::drop(); } void active_jobs_changed() @@ -1240,16 +1247,16 @@ private: signal_manager->when_idle(boost::bind(&DOMFrame::set_menu_sensitivity, this)); } - void set_menu_sensitivity () + void set_menu_sensitivity() { - auto jobs = JobManager::instance()->get (); + auto jobs = JobManager::instance()->get(); auto const dcp_creation = std::any_of( jobs.begin(), jobs.end(), [](shared_ptr<const Job> job) { return dynamic_pointer_cast<const DCPTranscodeJob>(job) && !job->finished(); }); - bool const have_cpl = _film && !_film->cpls().empty (); + bool const have_cpl = _film && !_film->cpls().empty(); bool const have_single_selected_content = _film_editor->content_panel()->selected().size() == 1; bool const have_selected_content = !_film_editor->content_panel()->selected().empty(); bool const have_selected_video_content = !_film_editor->content_panel()->selected_video().empty(); @@ -1301,7 +1308,7 @@ private: enabled = false; } - j.first->Enable (enabled); + j.first->Enable(enabled); } } @@ -1309,7 +1316,7 @@ private: * should continue, false to abort it. */ template <class T> - bool maybe_save_film () + bool maybe_save_film() { if (!_film) { return true; @@ -1338,131 +1345,131 @@ private: } template <class T> - bool maybe_save_then_delete_film () + bool maybe_save_then_delete_film() { - bool const r = maybe_save_film<T> (); + bool const r = maybe_save_film<T>(); if (r) { - _film.reset (); + _film.reset(); } return r; } - void add_item (wxMenu* menu, wxString text, int id, int sens) + void add_item(wxMenu* menu, wxString text, int id, int sens) { - auto item = menu->Append (id, text); - menu_items.insert (make_pair (item, sens)); + auto item = menu->Append(id, text); + menu_items.insert(make_pair(item, sens)); } - void setup_menu (wxMenuBar* m) + void setup_menu(wxMenuBar* m) { _file_menu = new wxMenu; /* [Shortcut] Ctrl+N:New film */ - add_item (_file_menu, _("New...\tCtrl-N"), ID_file_new, ALWAYS); + add_item(_file_menu, _("New...\tCtrl-N"), ID_file_new, ALWAYS); /* [Shortcut] Ctrl+O:Open existing film */ - add_item (_file_menu, _("&Open...\tCtrl-O"), ID_file_open, ALWAYS); - _file_menu->AppendSeparator (); + add_item(_file_menu, _("&Open...\tCtrl-O"), ID_file_open, ALWAYS); + _file_menu->AppendSeparator(); /* [Shortcut] Ctrl+S:Save current film */ - add_item (_file_menu, _("&Save\tCtrl-S"), ID_file_save, NEEDS_FILM); - _file_menu->AppendSeparator (); - add_item (_file_menu, _("Save as &template..."), ID_file_save_as_template, NEEDS_FILM); - add_item (_file_menu, _("Duplicate..."), ID_file_duplicate, NEEDS_FILM); - add_item (_file_menu, _("Duplicate and open..."), ID_file_duplicate_and_open, NEEDS_FILM); + add_item(_file_menu, _("&Save\tCtrl-S"), ID_file_save, NEEDS_FILM); + _file_menu->AppendSeparator(); + add_item(_file_menu, _("Save as &template..."), ID_file_save_as_template, NEEDS_FILM); + add_item(_file_menu, _("Duplicate..."), ID_file_duplicate, NEEDS_FILM); + add_item(_file_menu, _("Duplicate and open..."), ID_file_duplicate_and_open, NEEDS_FILM); _history_position = _file_menu->GetMenuItems().GetCount(); - _file_menu->AppendSeparator (); + _file_menu->AppendSeparator(); /* [Shortcut] Ctrl+W:Close current film */ - add_item (_file_menu, _("&Close\tCtrl-W"), ID_file_close, NEEDS_FILM); + add_item(_file_menu, _("&Close\tCtrl-W"), ID_file_close, NEEDS_FILM); #ifndef __WXOSX__ - _file_menu->AppendSeparator (); + _file_menu->AppendSeparator(); #endif #ifdef __WXOSX__ - add_item (_file_menu, _("&Exit"), wxID_EXIT, ALWAYS); + add_item(_file_menu, _("&Exit"), wxID_EXIT, ALWAYS); #else - add_item (_file_menu, _("&Quit"), wxID_EXIT, ALWAYS); + add_item(_file_menu, _("&Quit"), wxID_EXIT, ALWAYS); #endif auto edit = new wxMenu; /* [Shortcut] Ctrl+C:Copy settings from currently selected content */ - add_item (edit, _("Copy settings\tCtrl-C"), ID_edit_copy, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_SINGLE_SELECTED_CONTENT); + add_item(edit, _("Copy settings\tCtrl-C"), ID_edit_copy, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_SINGLE_SELECTED_CONTENT); /* [Shortcut] Ctrl+V:Paste settings into currently selected content */ - add_item (edit, _("Paste settings...\tCtrl-V"), ID_edit_paste, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_SELECTED_CONTENT | NEEDS_CLIPBOARD); - edit->AppendSeparator (); + add_item(edit, _("Paste settings...\tCtrl-V"), ID_edit_paste, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_SELECTED_CONTENT | NEEDS_CLIPBOARD); + edit->AppendSeparator(); /* [Shortcut] Shift+Ctrl+A:Select all content */ - add_item (edit, _("Select all\tShift-Ctrl-A"), ID_edit_select_all, NEEDS_FILM); + add_item(edit, _("Select all\tShift-Ctrl-A"), ID_edit_select_all, NEEDS_FILM); #ifdef __WXOSX__ add_item(_file_menu, _("&Preferences...\tCtrl-,"), wxID_PREFERENCES, ALWAYS); #else - edit->AppendSeparator (); + edit->AppendSeparator(); /* [Shortcut] Ctrl+P:Open preferences window */ - add_item (edit, _("&Preferences...\tCtrl-P"), wxID_PREFERENCES, ALWAYS); + add_item(edit, _("&Preferences...\tCtrl-P"), wxID_PREFERENCES, ALWAYS); #endif auto jobs_menu = new wxMenu; /* [Shortcut] Ctrl+M:Make DCP */ - add_item (jobs_menu, _("&Make DCP\tCtrl-M"), ID_jobs_make_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION); + add_item(jobs_menu, _("&Make DCP\tCtrl-M"), ID_jobs_make_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION); /* [Shortcut] Ctrl+B:Make DCP in the batch converter*/ - add_item (jobs_menu, _("Make DCP in &batch converter\tCtrl-B"), ID_jobs_make_dcp_batch, NEEDS_FILM | NOT_DURING_DCP_CREATION); - jobs_menu->AppendSeparator (); + add_item(jobs_menu, _("Make DCP in &batch converter\tCtrl-B"), ID_jobs_make_dcp_batch, NEEDS_FILM | NOT_DURING_DCP_CREATION); + jobs_menu->AppendSeparator(); /* [Shortcut] Ctrl+K:Make KDMs */ - add_item (jobs_menu, _("Make &KDMs...\tCtrl-K"), ID_jobs_make_kdms, NEEDS_FILM); + add_item(jobs_menu, _("Make &KDMs...\tCtrl-K"), ID_jobs_make_kdms, NEEDS_FILM); /* [Shortcut] Ctrl+D:Make DKDMs */ - add_item (jobs_menu, _("Make &DKDMs...\tCtrl-D"), ID_jobs_make_dkdms, NEEDS_FILM); + add_item(jobs_menu, _("Make &DKDMs...\tCtrl-D"), ID_jobs_make_dkdms, NEEDS_FILM); add_item(jobs_menu, variant::wx::insert_dcpomatic(_("Make DKDM for %s...")), ID_jobs_make_self_dkdm, NEEDS_FILM | NEEDS_ENCRYPTION); - jobs_menu->AppendSeparator (); + jobs_menu->AppendSeparator(); /* [Shortcut] Ctrl+E:Export video file */ - add_item (jobs_menu, _("Export video file...\tCtrl-E"), ID_jobs_export_video_file, NEEDS_FILM); - add_item (jobs_menu, _("Export subtitles...\tShift-Ctrl-E"), ID_jobs_export_subtitles, NEEDS_FILM); - jobs_menu->AppendSeparator (); - add_item (jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); + add_item(jobs_menu, _("Export video file...\tCtrl-E"), ID_jobs_export_video_file, NEEDS_FILM); + add_item(jobs_menu, _("Export subtitles...\tShift-Ctrl-E"), ID_jobs_export_subtitles, NEEDS_FILM); + jobs_menu->AppendSeparator(); + add_item(jobs_menu, _("&Send DCP to TMS"), ID_jobs_send_dcp_to_tms, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); #if defined(DCPOMATIC_OSX) - add_item (jobs_menu, _("S&how DCP in Finder"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); + add_item(jobs_menu, _("S&how DCP in Finder"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); #elif defined(DCPOMATIC_WINDOWS) - add_item (jobs_menu, _("S&how DCP in Explorer"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); + add_item(jobs_menu, _("S&how DCP in Explorer"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); #else - add_item (jobs_menu, _("S&how DCP in Files"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); + add_item(jobs_menu, _("S&how DCP in Files"), ID_jobs_show_dcp, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); #endif - add_item (jobs_menu, _("Open DCP in &player"), ID_jobs_open_dcp_in_player, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); + add_item(jobs_menu, _("Open DCP in &player"), ID_jobs_open_dcp_in_player, NEEDS_FILM | NOT_DURING_DCP_CREATION | NEEDS_CPL); auto view = new wxMenu; - add_item (view, _("Closed captions..."), ID_view_closed_captions, NEEDS_FILM); - add_item (view, _("Video waveform..."), ID_view_video_waveform, NEEDS_FILM); + add_item(view, _("Closed captions..."), ID_view_closed_captions, NEEDS_FILM); + add_item(view, _("Video waveform..."), ID_view_video_waveform, NEEDS_FILM); auto tools = new wxMenu; - add_item (tools, _("Version File (VF)..."), ID_tools_version_file, NEEDS_FILM | NEEDS_DCP_CONTENT); - add_item (tools, _("Hints..."), ID_tools_hints, NEEDS_FILM); - add_item (tools, _("Encoding servers..."), ID_tools_encoding_servers, 0); - add_item (tools, _("Manage templates..."), ID_tools_manage_templates, 0); - add_item (tools, _("Check for updates"), ID_tools_check_for_updates, 0); - add_item (tools, _("System information..."), ID_tools_system_information, 0); - tools->AppendSeparator (); - add_item (tools, _("Restore default preferences"), ID_tools_restore_default_preferences, ALWAYS); - tools->AppendSeparator (); - add_item (tools, _("Export preferences..."), ID_tools_export_preferences, ALWAYS); - add_item (tools, _("Import preferences..."), ID_tools_import_preferences, ALWAYS); + add_item(tools, _("Version File (VF)..."), ID_tools_version_file, NEEDS_FILM | NEEDS_DCP_CONTENT); + add_item(tools, _("Hints..."), ID_tools_hints, NEEDS_FILM); + add_item(tools, _("Encoding servers..."), ID_tools_encoding_servers, 0); + add_item(tools, _("Manage templates..."), ID_tools_manage_templates, 0); + add_item(tools, _("Check for updates"), ID_tools_check_for_updates, 0); + add_item(tools, _("System information..."), ID_tools_system_information, 0); + tools->AppendSeparator(); + add_item(tools, _("Restore default preferences"), ID_tools_restore_default_preferences, ALWAYS); + tools->AppendSeparator(); + add_item(tools, _("Export preferences..."), ID_tools_export_preferences, ALWAYS); + add_item(tools, _("Import preferences..."), ID_tools_import_preferences, ALWAYS); wxMenu* help = new wxMenu; #ifdef __WXOSX__ add_item(help, variant::wx::insert_dcpomatic(_("About %s")), wxID_ABOUT, ALWAYS); #else - add_item (help, _("About"), wxID_ABOUT, ALWAYS); + add_item(help, _("About"), wxID_ABOUT, ALWAYS); #endif add_item(help, _("User manual..."), ID_help_user_manual, ALWAYS); if (variant::show_report_a_problem()) { add_item(help, _("Report a problem..."), ID_help_report_a_problem, ALWAYS); } - m->Append (_file_menu, _("&File")); - m->Append (edit, _("&Edit")); - m->Append (jobs_menu, _("&Jobs")); - m->Append (view, _("&View")); - m->Append (tools, _("&Tools")); - m->Append (help, _("&Help")); + m->Append(_file_menu, _("&File")); + m->Append(edit, _("&Edit")); + m->Append(jobs_menu, _("&Jobs")); + m->Append(view, _("&View")); + m->Append(tools, _("&Tools")); + m->Append(help, _("&Help")); } void config_changed(Config::Property what) @@ -1471,21 +1478,21 @@ private: try { Config::instance()->write_config(); } catch (exception& e) { - error_dialog ( + error_dialog( this, - wxString::Format ( + wxString::Format( _("Could not write to config file at %s. Your changes have not been saved."), - std_to_wx (Config::instance()->cinemas_file().string()).data() + std_to_wx(Config::instance()->cinemas_file().string()).data() ) ); } for (int i = 0; i < _history_items; ++i) { - delete _file_menu->Remove (ID_file_history + i); + delete _file_menu->Remove(ID_file_history + i); } if (_history_separator) { - _file_menu->Remove (_history_separator); + _file_menu->Remove(_history_separator); } delete _history_separator; _history_separator = 0; @@ -1493,11 +1500,11 @@ private: int pos = _history_position; /* Clear out non-existent history items before we re-build the menu */ - Config::instance()->clean_history (); + Config::instance()->clean_history(); auto history = Config::instance()->history(); - if (!history.empty ()) { - _history_separator = _file_menu->InsertSeparator (pos++); + if (!history.empty()) { + _history_separator = _file_menu->InsertSeparator(pos++); } for (size_t i = 0; i < history.size(); ++i) { @@ -1507,12 +1514,12 @@ private: } else { s = history[i].string(); } - _file_menu->Insert (pos++, ID_file_history + i, std_to_wx (s)); + _file_menu->Insert(pos++, ID_file_history + i, std_to_wx(s)); } - _history_items = history.size (); + _history_items = history.size(); - dcpomatic_log->set_types (Config::instance()->log_types()); + dcpomatic_log->set_types(Config::instance()->log_types()); #ifdef DCPOMATIC_GROK if (what == Config::GROK) { @@ -1523,9 +1530,9 @@ private: #endif } - void update_checker_state_changed () + void update_checker_state_changed() { - auto uc = UpdateChecker::instance (); + auto uc = UpdateChecker::instance(); bool const announce = _update_news_requested || @@ -1550,7 +1557,7 @@ private: _update_news_requested = false; } - void start_stop_pressed () + void start_stop_pressed() { if (_film_viewer.playing()) { _film_viewer.stop(); @@ -1559,28 +1566,28 @@ private: } } - void timeline_pressed () + void timeline_pressed() { - _film_editor->content_panel()->timeline_clicked (); + _film_editor->content_panel()->timeline_clicked(); } - void back_frame () + void back_frame() { _film_viewer.seek_by(-_film_viewer.one_video_frame(), true); } - void forward_frame () + void forward_frame() { _film_viewer.seek_by(_film_viewer.one_video_frame(), true); } - void analytics_message (string title, string html) + void analytics_message(string title, string html) { HTMLDialog dialog(this, std_to_wx(title), std_to_wx(html)); dialog.ShowModal(); } - void set_title () + void set_title() { auto s = variant::dcpomatic(); if (_film) { @@ -1592,7 +1599,7 @@ private: } } - SetTitle (std_to_wx(s)); + SetTitle(std_to_wx(s)); } FilmEditor* _film_editor; @@ -1629,7 +1636,7 @@ static const wxCmdLineEntryDesc command_line_description[] = { { wxCMD_LINE_SWITCH, "v", "version", "show version", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL }, { wxCMD_LINE_OPTION, "", "config", "directory containing config.xml and cinemas.xml", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, { wxCMD_LINE_PARAM, 0, 0, "film to load or create", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, - { wxCMD_LINE_NONE, "", "", "", wxCmdLineParamType (0), 0 } + { wxCMD_LINE_NONE, "", "", "", wxCmdLineParamType(0), 0 } }; @@ -1639,18 +1646,18 @@ static const wxCmdLineEntryDesc command_line_description[] = { class App : public wxApp { public: - App () - : wxApp () + App() + : wxApp() { - dcpomatic_setup_path_encoding (); + dcpomatic_setup_path_encoding(); #ifdef DCPOMATIC_LINUX - XInitThreads (); + XInitThreads(); #endif } private: - bool OnInit () override + bool OnInit() override { try { @@ -1673,12 +1680,12 @@ private: cout << variant::insert_dcpomatic("{} is starting.") << "\n"; } #endif - wxInitAllImageHandlers (); + wxInitAllImageHandlers(); Config::FailedToLoad.connect(boost::bind(&App::config_failed_to_load, this, _1)); - Config::Warning.connect (boost::bind (&App::config_warning, this, _1)); + Config::Warning.connect(boost::bind(&App::config_warning, this, _1)); - _splash = maybe_show_splash (); + _splash = maybe_show_splash(); SetAppName(variant::wx::dcpomatic()); @@ -1687,12 +1694,12 @@ private: } #ifdef DCPOMATIC_LINUX - unsetenv ("UBUNTU_MENUPROXY"); + unsetenv("UBUNTU_MENUPROXY"); #endif #ifdef DCPOMATIC_OSX - dcpomatic_sleep_seconds (1); - make_foreground_application (); + dcpomatic_sleep_seconds(1); + make_foreground_application(); #endif /* Enable i18n; this will create a Config object @@ -1706,28 +1713,28 @@ private: /* Set things up, including filters etc. which will now be internationalised correctly. */ - dcpomatic_setup (); + dcpomatic_setup(); /* Force the configuration to be re-loaded correctly next time it is needed. */ - Config::drop (); + Config::drop(); /* We only look out for bad configuration from here on, as before dcpomatic_setup() we haven't got OpenSSL ready so there will be incorrect certificate chain validity errors. */ - Config::Bad.connect (boost::bind(&App::config_bad, this, _1)); + Config::Bad.connect(boost::bind(&App::config_bad, this, _1)); - signal_manager = new wxSignalManager (this); + signal_manager = new wxSignalManager(this); _frame = new DOMFrame(variant::wx::dcpomatic()); - SetTopWindow (_frame); - _frame->Maximize (); - close_splash (); + SetTopWindow(_frame); + _frame->Maximize(); + close_splash(); - if (running_32_on_64 ()) { - NagDialog::maybe_nag ( + if (running_32_on_64()) { + NagDialog::maybe_nag( _frame, Config::NAG_32_ON_64, wxString::Format( _("You are running the 32-bit version of %s on a 64-bit version of Windows. " @@ -1740,34 +1747,34 @@ private: false); } - _frame->Show (); + _frame->Show(); - Bind (wxEVT_IDLE, boost::bind (&App::idle, this, _1)); + Bind(wxEVT_IDLE, boost::bind(&App::idle, this, _1)); if (!_film_to_load.empty() && dcp::filesystem::is_directory(_film_to_load)) { try { - _frame->load_film (_film_to_load); + _frame->load_film(_film_to_load); } catch (exception& e) { - error_dialog (nullptr, std_to_wx(fmt::format(wx_to_std(_("Could not load film {} ({})")), _film_to_load)), std_to_wx(e.what())); + error_dialog(nullptr, std_to_wx(fmt::format(wx_to_std(_("Could not load film {} ({})")), _film_to_load)), std_to_wx(e.what())); } } - if (!_film_to_create.empty ()) { - _frame->new_film (_film_to_create, optional<string>()); + if (!_film_to_create.empty()) { + _frame->new_film(_film_to_create, optional<string>()); if (!_content_to_add.empty()) { _frame->film()->examine_and_add_content(content_factory(_content_to_add)); } - if (!_dcp_to_add.empty ()) { + if (!_dcp_to_add.empty()) { _frame->film()->examine_and_add_content({make_shared<DCPContent>(_dcp_to_add)}); } } - Bind (wxEVT_TIMER, boost::bind (&App::check, this)); - _timer.reset (new wxTimer (this)); - _timer->Start (1000); + Bind(wxEVT_TIMER, boost::bind(&App::check, this)); + _timer.reset(new wxTimer(this)); + _timer->Start(1000); - if (Config::instance()->check_for_updates ()) { - UpdateChecker::instance()->run (); + if (Config::instance()->check_for_updates()) { + UpdateChecker::instance()->run(); } if (auto release_notes = find_release_notes(gui_is_dark())) { @@ -1790,51 +1797,51 @@ private: return true; } - void OnInitCmdLine (wxCmdLineParser& parser) override + void OnInitCmdLine(wxCmdLineParser& parser) override { - parser.SetDesc (command_line_description); + parser.SetDesc(command_line_description); parser.SetSwitchChars(char_to_wx("-")); } - bool OnCmdLineParsed (wxCmdLineParser& parser) override + bool OnCmdLineParsed(wxCmdLineParser& parser) override { if (parser.Found(char_to_wx("version"))) { cout << "dcpomatic version " << dcpomatic_version << " " << dcpomatic_git_commit << "\n"; - exit (EXIT_SUCCESS); + exit(EXIT_SUCCESS); } if (parser.GetParamCount() > 0) { if (parser.Found(char_to_wx("new"))) { - _film_to_create = wx_to_std (parser.GetParam (0)); + _film_to_create = wx_to_std(parser.GetParam(0)); } else { - _film_to_load = wx_to_std (parser.GetParam (0)); + _film_to_load = wx_to_std(parser.GetParam(0)); } } wxString content; if (parser.Found(char_to_wx("content"), &content)) { - _content_to_add = wx_to_std (content); + _content_to_add = wx_to_std(content); } wxString dcp; if (parser.Found(char_to_wx("dcp"), &dcp)) { - _dcp_to_add = wx_to_std (dcp); + _dcp_to_add = wx_to_std(dcp); } wxString config; if (parser.Found(char_to_wx("config"), &config)) { - State::override_path = wx_to_std (config); + State::override_path = wx_to_std(config); } return true; } - void report_exception () + void report_exception() { try { throw; } catch (FileError& e) { - error_dialog ( + error_dialog( nullptr, wxString::Format( _("An exception occurred: %s (%s)\n\n%s"), @@ -1844,7 +1851,7 @@ private: ) ); } catch (boost::filesystem::filesystem_error& e) { - error_dialog ( + error_dialog( nullptr, wxString::Format( _("An exception occurred: %s (%s) (%s)\n\n%s"), @@ -1855,7 +1862,7 @@ private: ) ); } catch (exception& e) { - error_dialog ( + error_dialog( nullptr, wxString::Format( _("An exception occurred: %s.\n\n%s"), @@ -1869,34 +1876,34 @@ private: } /* An unhandled exception has occurred inside the main event loop */ - bool OnExceptionInMainLoop () override + bool OnExceptionInMainLoop() override { - report_exception (); + report_exception(); /* This will terminate the program */ return false; } - void OnUnhandledException () override + void OnUnhandledException() override { - report_exception (); + report_exception(); } - void idle (wxIdleEvent& ev) + void idle(wxIdleEvent& ev) { - signal_manager->ui_idle (); - ev.Skip (); + signal_manager->ui_idle(); + ev.Skip(); } - void check () + void check() { try { - EncodeServerFinder::instance()->rethrow (); + EncodeServerFinder::instance()->rethrow(); } catch (exception& e) { - error_dialog (0, std_to_wx (e.what ())); + error_dialog(0, std_to_wx(e.what())); } } - void close_splash () + void close_splash() { if (_splash) { _splash->Destroy(); @@ -1904,17 +1911,17 @@ private: } } - void config_failed_to_load (Config::LoadFailure what) + void config_failed_to_load(Config::LoadFailure what) { report_config_load_failure(_frame, what); } - void config_warning (string m) + void config_warning(string m) { - message_dialog (_frame, std_to_wx(m)); + message_dialog(_frame, std_to_wx(m)); } - bool config_bad (Config::BadReason reason) + bool config_bad(Config::BadReason reason) { /* Destroy the splash screen here, as otherwise bad things seem to happen (for reasons unknown) when we open our recreate dialog, close it, *then* try to Destroy the splash (the Destroy fails). @@ -1971,7 +1978,7 @@ private: variant::wx::insert_dcpomatic(_("Close %s")) ); if (dialog.ShowModal() != wxID_OK) { - exit (EXIT_FAILURE); + exit(EXIT_FAILURE); } return true; } @@ -1990,7 +1997,7 @@ private: variant::wx::insert_dcpomatic(_("Close %s")) ); if (dialog.ShowModal() != wxID_OK) { - exit (EXIT_FAILURE); + exit(EXIT_FAILURE); } return true; } @@ -2012,7 +2019,7 @@ private: return dialog.ShowModal() == wxID_OK; } default: - DCPOMATIC_ASSERT (false); + DCPOMATIC_ASSERT(false); } } @@ -2026,4 +2033,4 @@ private: }; -IMPLEMENT_APP (App) +IMPLEMENT_APP(App) diff --git a/src/tools/dcpomatic_verifier.cc b/src/tools/dcpomatic_verifier.cc index d24100ff3..c881019d8 100644 --- a/src/tools/dcpomatic_verifier.cc +++ b/src/tools/dcpomatic_verifier.cc @@ -33,6 +33,7 @@ #include "wx/file_dialog.h" #include "wx/i18n_setup.h" #include "wx/id.h" +#include "wx/wx_signal_manager.h" #include "wx/verify_dcp_progress_panel.h" #include "wx/verify_dcp_result_panel.h" #include "wx/wx_util.h" @@ -44,11 +45,13 @@ #include "lib/verify_dcp_job.h" #include "lib/util.h" #include "lib/variant.h" +#include "lib/version.h" #include <dcp/dcp.h> #include <dcp/search.h> #include <dcp/text_formatter.h> #include <dcp/verify_report.h> LIBDCP_DISABLE_WARNINGS +#include <wx/cmdline.h> #include <wx/evtloop.h> #include <wx/progdlg.h> #include <wx/wx.h> @@ -123,7 +126,7 @@ private: class DOMFrame : public wxFrame { public: - explicit DOMFrame(wxString const& title) + explicit DOMFrame(wxString const& title, bool start, vector<boost::filesystem::path> const& dcps_to_load) : wxFrame(nullptr, -1, title) /* Use a panel as the only child of the Frame so that we avoid the dark-grey background on Windows. @@ -145,7 +148,19 @@ public: auto dcp_sizer = new wxBoxSizer(wxHORIZONTAL); add_label_to_sizer(dcp_sizer, _overall_panel, _("DCPs"), true, 0, wxALIGN_CENTER_VERTICAL); - auto add = [this](wxWindow* parent) { + auto load_dcps = [this](vector<boost::filesystem::path> const& dcps) { + wxProgressDialog progress(variant::wx::dcpomatic(), _("Examining DCPs")); + vector<DCPPath> dcp_paths; + for (auto path: dcps) { + for (auto const& dcp: dcp::find_potential_dcps(path)) { + progress.Pulse(); + dcp_paths.push_back(DCPPath(dcp, _kdms)); + } + } + return dcp_paths; + }; + + auto add = [&load_dcps](wxWindow* parent) { #if wxCHECK_VERSION(3, 1, 4) DirDialog dialog(parent, _("Select DCP(s)"), wxDD_MULTIPLE, "AddVerifierInputPath"); #else @@ -153,15 +168,7 @@ public: #endif if (dialog.show()) { - wxProgressDialog progress(variant::wx::dcpomatic(), _("Examining DCPs")); - vector<DCPPath> paths; - for (auto path: dialog.paths()) { - for (auto const& dcp: dcp::find_potential_dcps(path)) { - progress.Pulse(); - paths.push_back(DCPPath(dcp, _kdms)); - } - } - return paths; + return load_dcps(dialog.paths()); } else { return std::vector<DCPPath>{}; } @@ -223,6 +230,12 @@ public: } catch (...) {} } } + + set_dcp_paths(load_dcps(dcps_to_load)); + _dcps->refresh(); + if (start) { + signal_manager->when_idle(boost::bind(&DOMFrame::verify_clicked, this)); + } } private: @@ -381,6 +394,14 @@ private: }; +static const wxCmdLineEntryDesc command_line_description[] = { + { wxCMD_LINE_SWITCH, "s", "start", "start verifying specified DCP(s)", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_SWITCH, "v", "version", "show version", wxCMD_LINE_VAL_NONE, wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_PARAM, 0, 0, "DCP to verify", wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_OPTIONAL }, + { wxCMD_LINE_NONE, "", "", "", wxCmdLineParamType (0), 0 } +}; + + /** @class App * @brief The magic App class for wxWidgets. */ @@ -433,7 +454,10 @@ private: */ Config::drop(); - _frame = new DOMFrame(variant::wx::dcpomatic_verifier()); + signal_manager = new wxSignalManager(this); + Bind(wxEVT_IDLE, boost::bind(&App::idle, this, _1)); + + _frame = new DOMFrame(variant::wx::dcpomatic_verifier(), _start, _dcps_to_load); SetTopWindow(_frame); _frame->Maximize(); _frame->Show(); @@ -497,7 +521,41 @@ private: report_exception(); } + void OnInitCmdLine(wxCmdLineParser& parser) override + { + parser.SetDesc(command_line_description); + parser.SetSwitchChars(char_to_wx("-")); + } + + bool OnCmdLineParsed(wxCmdLineParser& parser) override + { + if (parser.Found(char_to_wx("version"))) { + std::cout << "dcpomatic version " << dcpomatic_version << " " << dcpomatic_git_commit << "\n"; + exit(EXIT_SUCCESS); + } + + _start = parser.Found(char_to_wx("start")); + for (auto i = 0UL; i < parser.GetParamCount(); ++i) { + auto const path = boost::filesystem::path(wx_to_std(parser.GetParam(0))); + if (path.filename_is_dot()) { + _dcps_to_load.push_back(path.parent_path()); + } else { + _dcps_to_load.push_back(path); + } + } + + return true; + } + + void idle(wxIdleEvent& ev) + { + signal_manager->ui_idle(); + ev.Skip(); + } + DOMFrame* _frame = nullptr; + bool _start = false; + std::vector<boost::filesystem::path> _dcps_to_load; }; diff --git a/src/tools/po/cs_CZ.po b/src/tools/po/cs_CZ.po index 3c1a1a603..267de9d1f 100644 --- a/src/tools/po/cs_CZ.po +++ b/src/tools/po/cs_CZ.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2025-06-11 07:50+0200\n" "Last-Translator: Tomáš Begeni <begeni@razdva.cz>\n" "Language-Team: \n" @@ -78,21 +78,21 @@ msgstr "&Upravit" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Konec" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Soubor" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Pomoc" @@ -124,7 +124,7 @@ msgstr "&Nastavení…\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Ukončit" @@ -149,11 +149,11 @@ msgstr "&Nástroje" msgid "&View" msgstr "&Zobrazit" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -168,13 +168,13 @@ msgstr "<b>Playlisty</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "O" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "O %s" @@ -187,7 +187,7 @@ msgstr "Přidat" msgid "Add &KDM..." msgstr "Přidat &KDM…" -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Přidat &KDM…" @@ -227,7 +227,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -238,7 +238,7 @@ msgstr "" "\n" "%s" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -250,7 +250,7 @@ msgstr "" "\\%s" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -274,7 +274,7 @@ msgstr "Vyskytl se neznámy problém." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "Došlo k neznámé výjimce. %s" @@ -315,7 +315,7 @@ msgstr "CPL obsah není enkryptovaný." msgid "CPL: %s" msgstr "CPL: %s" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -323,7 +323,7 @@ msgstr "" msgid "Check for updates" msgstr "Zkontrolovat aktualizace" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -368,7 +368,7 @@ msgstr "Kopírovat nastavení\tCtrl-C" msgid "Could not create folder to store film." msgstr "Nemohu vytvořit složku pro uložení filmu." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -418,7 +418,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Nelze načíst KDM." @@ -466,7 +466,7 @@ msgstr "" "Nelze číst soubor jako KDM. Je příliš velký. Ujistěte se, že načítáte " "soubor DKDM (XML)." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -529,7 +529,7 @@ msgstr "Tvůrce" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -537,7 +537,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Encode Server" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "DCP" @@ -662,7 +662,7 @@ msgstr "Šifrované" msgid "Entry point" msgstr "Vstupní bod" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 #, fuzzy msgid "Examining DCPs" msgstr "Kombinování DCP" @@ -972,7 +972,7 @@ msgstr "Vybrat DCP k otevření" msgid "Select DCP to open as OV" msgstr "Vybrat DCP k otevření jako OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Vybrat KDM" @@ -985,7 +985,7 @@ msgstr "Vybrat DKDM soubor" msgid "Select DKDM file" msgstr "Vybrat DKDM soubor" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Vybrat KDM" @@ -1213,7 +1213,7 @@ msgstr "" "chcete přehrávat právě tuto složku, vyberte složku DCP uvnitř složky " "projektu %s." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1258,7 +1258,7 @@ msgstr "Nahahoru" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "Ověřit DCP" @@ -1271,7 +1271,7 @@ msgstr "Ověřit DCP" msgid "Verify DCP..." msgstr "Ověřuji DCP…" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1283,7 +1283,7 @@ msgstr "Soubor verze (VF)..." msgid "Video waveform..." msgstr "Analýza videa..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 #, fuzzy msgid "Write logs to DCP folders" msgstr "Výběr složky DCP" diff --git a/src/tools/po/da_DK.po b/src/tools/po/da_DK.po index 918e6b446..87f2d75fa 100644 --- a/src/tools/po/da_DK.po +++ b/src/tools/po/da_DK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2019-04-06 14:07+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -81,21 +81,21 @@ msgstr "&Rediger" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Afslut" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Fil" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Hjælp" @@ -128,7 +128,7 @@ msgstr "&Indstillinger...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Afslut" @@ -154,11 +154,11 @@ msgstr "&Værktøjer" msgid "&View" msgstr "&Vis" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -173,13 +173,13 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Om" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Om" @@ -193,7 +193,7 @@ msgstr "Tilføj" msgid "Add &KDM..." msgstr "&Tilføj KDM..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "&Tilføj KDM..." @@ -233,7 +233,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -243,7 +243,7 @@ msgstr "" "Der opstod en fejl: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -254,7 +254,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -277,7 +277,7 @@ msgstr "Der er sket en uhåndteret fejl." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Der er sket en uhåndteret fejl." @@ -318,7 +318,7 @@ msgstr "CPL'ens indhold er ikke krypteret." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -326,7 +326,7 @@ msgstr "" msgid "Check for updates" msgstr "Søg efter opdateringer" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -371,7 +371,7 @@ msgstr "Kopier indstillinger\tCtrl-C" msgid "Could not create folder to store film." msgstr "Kunne ikke oprette folder til at gemme film" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -422,7 +422,7 @@ msgid "" "%s." msgstr "Kunne ikke indlæse DCP {}." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Kunne ikke indlæse KDM." @@ -470,7 +470,7 @@ msgstr "" "Kunne ikke genkende filen som en KDM. Den er alt for stor. Kontroller at " "du prøver at indlæse en DKDM (XML) fil." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -533,7 +533,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -541,7 +541,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Kodningsserver" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -663,7 +663,7 @@ msgstr "Krypteret" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -973,7 +973,7 @@ msgstr "Vælg DCP der skal åbnes" msgid "Select DCP to open as OV" msgstr "Vælg DCP der skal åbnes som OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Vælg KDM" @@ -987,7 +987,7 @@ msgstr "Vælg DKDM fil" msgid "Select DKDM file" msgstr "Vælg DKDM fil" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Vælg KDM" @@ -1181,7 +1181,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1228,7 +1228,7 @@ msgstr "Op" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "Verificer DCP" @@ -1243,7 +1243,7 @@ msgstr "Verificer DCP" msgid "Verify DCP..." msgstr "Verificer DCP" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1255,7 +1255,7 @@ msgstr "" msgid "Video waveform..." msgstr "Video bølgeform..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/de_DE.po b/src/tools/po/de_DE.po index 93154b43a..901df8200 100644 --- a/src/tools/po/de_DE.po +++ b/src/tools/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2025-04-13 23:26+0200\n" "Last-Translator: Carsten Kurz\n" "Language-Team: DCP-o-matic <carl@dcpomatic.com>\n" @@ -79,21 +79,21 @@ msgstr "&Bearbeiten" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Ende" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Datei" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Hilfe" @@ -125,7 +125,7 @@ msgstr "&Einstellungen...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Beenden" @@ -150,11 +150,11 @@ msgstr "&Werkzeuge" msgid "&View" msgstr "&Darstellung" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -169,13 +169,13 @@ msgstr "<b>Playlisten</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Über" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "Über %s" @@ -188,7 +188,7 @@ msgstr "Hinzufügen" msgid "Add &KDM..." msgstr "&KDM hinzufügen..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "&KDM hinzufügen..." @@ -228,7 +228,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -239,7 +239,7 @@ msgstr "" "\n" "%s" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -251,7 +251,7 @@ msgstr "" "%s" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -275,7 +275,7 @@ msgstr "Ein unbekannter Fehler ist aufgetreten." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "Ein unbekannter Fehler ist aufgetreten. %s" @@ -317,7 +317,7 @@ msgstr "Inhalt(e) der CPL sind nicht verschlüsselt." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -325,7 +325,7 @@ msgstr "" msgid "Check for updates" msgstr "Auf Updates prüfen" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -370,7 +370,7 @@ msgstr "Einstellungen kopieren\tCtrl-C" msgid "Could not create folder to store film." msgstr "Zielordner für das Projekt konnte nicht erstellt werden." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -424,7 +424,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "KDM konnte nicht geladen werden." @@ -472,7 +472,7 @@ msgstr "" "Datei wurde nicht als KDM erkannt. Sie ist zu groß. Stellen Sie sicher, dass " "es sich um eine DKDM-Datei (XML) handelt." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -537,7 +537,7 @@ msgstr "Creator" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -545,7 +545,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic J2C Kodierungsserver" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "DCPs" @@ -673,7 +673,7 @@ msgstr "Verschlüsselt" msgid "Entry point" msgstr "Startpunkt" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 #, fuzzy msgid "Examining DCPs" msgstr "DCP zusammenfügen" @@ -987,7 +987,7 @@ msgstr "DCP Ordner auswählen" msgid "Select DCP to open as OV" msgstr "Ordner mit DCP OV auswählen" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "KDM auswählen" @@ -1000,7 +1000,7 @@ msgstr "DKDM auswählen" msgid "Select DKDM file" msgstr "DKDM auswählen" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "KDM auswählen" @@ -1233,7 +1233,7 @@ msgstr "" "Ordnerinhalte können nicht in den Player geladen werden. Wählen Sie " "stattdessen den DCP Ordner innerhalb des %s Projekts aus." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1280,7 +1280,7 @@ msgid "User manual..." msgstr "" # validieren is a term from Sony on their older Projectors, which I think fits well here -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "DCP validieren…" @@ -1296,7 +1296,7 @@ msgstr "DCP validieren…" msgid "Verify DCP..." msgstr "DCP validieren…" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1308,7 +1308,7 @@ msgstr "Version File (VF)..." msgid "Video waveform..." msgstr "Waveform Monitor…" -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 #, fuzzy msgid "Write logs to DCP folders" msgstr "Einen DCP Ordner auswählen" diff --git a/src/tools/po/el_GR.po b/src/tools/po/el_GR.po index 16e3a12f3..2dba51ea3 100644 --- a/src/tools/po/el_GR.po +++ b/src/tools/po/el_GR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -77,21 +77,21 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "" @@ -123,7 +123,7 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "" @@ -148,11 +148,11 @@ msgstr "" msgid "&View" msgstr "" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -167,13 +167,13 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "" @@ -186,7 +186,7 @@ msgstr "" msgid "Add &KDM..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 msgid "Add KDM..." msgstr "" @@ -222,7 +222,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -230,7 +230,7 @@ msgid "" "%s" msgstr "" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -239,7 +239,7 @@ msgid "" msgstr "" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -260,7 +260,7 @@ msgstr "" #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "" @@ -299,7 +299,7 @@ msgstr "" msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -307,7 +307,7 @@ msgstr "" msgid "Check for updates" msgstr "" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -352,7 +352,7 @@ msgstr "" msgid "Could not create folder to store film." msgstr "" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -399,7 +399,7 @@ msgid "" "%s." msgstr "" -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "" @@ -445,7 +445,7 @@ msgid "" "loading a DKDM (XML) file." msgstr "" -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -501,7 +501,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "" @@ -509,7 +509,7 @@ msgstr "" msgid "DCP-o-matic Encode Server" msgstr "" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -629,7 +629,7 @@ msgstr "" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -928,7 +928,7 @@ msgstr "" msgid "Select DCP to open as OV" msgstr "" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 msgid "Select DCP(s)" msgstr "" @@ -940,7 +940,7 @@ msgstr "" msgid "Select DKDM file" msgstr "" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "" @@ -1123,7 +1123,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1168,7 +1168,7 @@ msgstr "" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "" @@ -1180,7 +1180,7 @@ msgstr "" msgid "Verify DCP..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1192,7 +1192,7 @@ msgstr "" msgid "Video waveform..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/es_ES.po b/src/tools/po/es_ES.po index 002a05c9e..291da1624 100644 --- a/src/tools/po/es_ES.po +++ b/src/tools/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCPOMATIC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2021-10-17 22:46-0400\n" "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n" "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n" @@ -77,21 +77,21 @@ msgstr "&Editar" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Salir" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Archivo" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Ayuda" @@ -124,7 +124,7 @@ msgstr "&Preferencias...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Salir" @@ -150,11 +150,11 @@ msgstr "&Herramientas" msgid "&View" msgstr "&Ver" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -169,13 +169,13 @@ msgstr "<b>Listas:</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Acerca de" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Acerca de" @@ -188,7 +188,7 @@ msgstr "Añadir" msgid "Add &KDM..." msgstr "Añadir &KDM..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Añadir &KDM..." @@ -228,7 +228,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -238,7 +238,7 @@ msgstr "" "Ha ocurrido una excepción: %s (%s).\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -249,7 +249,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -272,7 +272,7 @@ msgstr "Ha ocurrido un error desconocido." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Ha ocurrido un error desconocido." @@ -313,7 +313,7 @@ msgstr "El contenido del CPL no está encriptado." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -321,7 +321,7 @@ msgstr "" msgid "Check for updates" msgstr "Buscar actualizaciones" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -366,7 +366,7 @@ msgstr "Copiar configuración\tCtrl-C" msgid "Could not create folder to store film." msgstr "No se puedo crear la carpeta para guardar la película." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -417,7 +417,7 @@ msgid "" "%s." msgstr "No se pudo cargar el DCP {}." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "No se pudo cargar la KDM." @@ -466,7 +466,7 @@ msgstr "" "No se pudo leer el archivo como una KDM. Tal vez está mal formateado, o no " "es un KDM en absoluto." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -531,7 +531,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 #, fuzzy msgid "DCP" msgstr "CPL" @@ -540,7 +540,7 @@ msgstr "CPL" msgid "DCP-o-matic Encode Server" msgstr "Servidor de codificación DCP-o-matic" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -662,7 +662,7 @@ msgstr "" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -973,7 +973,7 @@ msgstr "Selecciona el DCP a abrir" msgid "Select DCP to open as OV" msgstr "Selecciona el DCP a abrir como base (OV)" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Selecciona el KDM" @@ -987,7 +987,7 @@ msgstr "Selecciona el fichero DKDM" msgid "Select DKDM file" msgstr "Selecciona el fichero DKDM" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Selecciona el KDM" @@ -1182,7 +1182,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1229,7 +1229,7 @@ msgstr "" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "" @@ -1241,7 +1241,7 @@ msgstr "" msgid "Verify DCP..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1253,7 +1253,7 @@ msgstr "" msgid "Video waveform..." msgstr "Forma de de onda del vídeo…" -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/fa_IR.po b/src/tools/po/fa_IR.po index c208c1c24..91d7b2a92 100644 --- a/src/tools/po/fa_IR.po +++ b/src/tools/po/fa_IR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2024-10-05 18:27+0330\n" "Last-Translator: Soleyman Rahmani Aghdam <Soleyman.rahmani@gmail.com>\n" "Language-Team: \n" @@ -80,21 +80,21 @@ msgstr "&ویرایش" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&خروج" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&فایل" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&راهنما" @@ -126,7 +126,7 @@ msgstr "&اولویتها...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&خروج از برنامه" @@ -151,11 +151,11 @@ msgstr "&ابزارها" msgid "&View" msgstr "&مشاهده" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -170,13 +170,13 @@ msgstr "<b>لیست نمایش:</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "در باره ما" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "در باره %s" @@ -189,7 +189,7 @@ msgstr "اضافه کردن" msgid "Add &KDM..." msgstr "اضافه کردن &کلید..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "اضافه کردن &کلید..." @@ -229,7 +229,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -240,7 +240,7 @@ msgstr "" "\n" "%s" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -252,7 +252,7 @@ msgstr "" "%s" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -276,7 +276,7 @@ msgstr "یک استثناء ناشناخته روی داده است." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "یک استثناء ناشناخته روی داده است. %s" @@ -316,7 +316,7 @@ msgstr "ترکیب لیست نمایش رمزگذاری شده نیست." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -324,7 +324,7 @@ msgstr "" msgid "Check for updates" msgstr "اقدام به روز رسانی" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -369,7 +369,7 @@ msgstr "کپی تنظیمات...\tCtrl-C" msgid "Could not create folder to store film." msgstr "نمیتوان پوشه برای ذخیره فیلم ساخت." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -423,7 +423,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "کلید قابل فراخوانی نیست." @@ -471,7 +471,7 @@ msgstr "" "فایل به عنوان کلید. قابل خواندن نیست. حجم فایل خیلی زیاد است. از فراخوانی یک " "فایل کلید توزیع با پسوند ایکس ام ال مطمئن شوید." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -534,7 +534,7 @@ msgstr "سازنده" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "دی سی پی" @@ -542,7 +542,7 @@ msgstr "دی سی پی" msgid "DCP-o-matic Encode Server" msgstr "سرور رمزگذاری دی سی پی-او-ماتیک" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "دی سی پی ها" @@ -668,7 +668,7 @@ msgstr "رمزگذاری شده" msgid "Entry point" msgstr "نقطه ورودی" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 #, fuzzy msgid "Examining DCPs" msgstr "ترکیب کردن دی سی پی ها" @@ -978,7 +978,7 @@ msgstr "یک دی سی پی جهت باز شدن انتخاب کنید" msgid "Select DCP to open as OV" msgstr "یک دی سی پی انتخاب کنید تا به عنوان نسخه اصلی باز شود" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "انتخاب کلید" @@ -991,7 +991,7 @@ msgstr "فایل کیلد توزیع را انتخاب کنید" msgid "Select DKDM file" msgstr "فایل کیلد توزیع را انتخاب کنید" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "انتخاب کلید" @@ -1221,7 +1221,7 @@ msgstr "" "پوشه پروژه %s یک دی سی پی انتخاب کنید اگر همان چیزی است که می خواهید پلی " "کنید." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1267,7 +1267,7 @@ msgstr "بالا" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "صحت سنجی دی سی پی..." @@ -1281,7 +1281,7 @@ msgstr "صحت سنجی دی سی پی..." msgid "Verify DCP..." msgstr "صحت سنجی دی سی پی..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1293,7 +1293,7 @@ msgstr "نسخه فایل(VF)..." msgid "Video waveform..." msgstr "شکل موج ویدیو..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 #, fuzzy msgid "Write logs to DCP folders" msgstr "یک پوشه دی سی پی انتخاب کنید" diff --git a/src/tools/po/fr_FR.po b/src/tools/po/fr_FR.po index 6e552f1da..92c64ca42 100644 --- a/src/tools/po/fr_FR.po +++ b/src/tools/po/fr_FR.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" -"PO-Revision-Date: 2025-09-28 14:20+0200\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" +"PO-Revision-Date: 2026-04-22 00:09+0200\n" "Last-Translator: Dan Cohen <thedan.cohen@protonmail.com>\n" "Language-Team: \n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.7\n" +"X-Generator: Poedit 3.9\n" #: src/tools/dcpomatic_kdm.cc:491 #, c-format @@ -78,21 +78,21 @@ msgstr "&Édition" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Quitter" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Fichier" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Aide" @@ -124,7 +124,7 @@ msgstr "&Préférences...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Quitter" @@ -149,13 +149,13 @@ msgstr "&Outils" msgid "&View" msgstr "&Affichage" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" -msgstr "" +msgstr "(chiffré, avec KDM)" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" -msgstr "" +msgstr "(chiffré, sans KDM)" #: src/tools/dcpomatic_playlist.cc:324 msgid "<b>Playlist:</b>" @@ -168,13 +168,13 @@ msgstr "<b>Listes de lecture</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "À propos" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "À propos %s" @@ -187,10 +187,9 @@ msgstr "Ajouter" msgid "Add &KDM..." msgstr "Ajouter un &KDM..." -#: src/tools/dcpomatic_verifier.cc:180 -#, fuzzy +#: src/tools/dcpomatic_verifier.cc:187 msgid "Add KDM..." -msgstr "Ajouter un &KDM..." +msgstr "Ajouter un KDM..." #: src/tools/dcpomatic_playlist.cc:80 msgid "Add content" @@ -227,7 +226,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -238,7 +237,7 @@ msgstr "" "\n" "%s" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -250,7 +249,7 @@ msgstr "" "%s" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -274,7 +273,7 @@ msgstr "Une exception inconnue s'est produite." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "Une exception inconnue s'est produite. %s" @@ -294,7 +293,7 @@ msgstr "" #: src/tools/dcpomatic_player.cc:709 msgid "Audio graph..." -msgstr "" +msgstr "Graphique audio…" #: src/tools/dcpomatic.cc:878 #, c-format @@ -315,7 +314,7 @@ msgstr "Le contenu de la CPL n'est pas crypté." msgid "CPL: %s" msgstr "CPL: %s" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "Annuler" @@ -323,9 +322,9 @@ msgstr "Annuler" msgid "Check for updates" msgstr "Rechercher des mises à jour" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" -msgstr "" +msgstr "Vérification du KDM" #: src/tools/dcpomatic_combiner.cc:68 src/tools/dcpomatic_disk.cc:84 msgid "Choose a DCP folder" @@ -368,7 +367,7 @@ msgstr "Copier les réglages\tCtrl-C" msgid "Could not create folder to store film." msgstr "Impossible de créer un dossier pour stocker le DCP." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -422,7 +421,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Impossible de charger le KDM." @@ -470,7 +469,7 @@ msgstr "" "Impossible de lire le fichier comme un KDM. Il est trop lourd. Assurez-" "vous que vous chargez un fichier DKDM (XML)." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -536,7 +535,7 @@ msgstr "Créateur" msgid "Crop" msgstr "Rogner" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -544,7 +543,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "Serveur d'encodage DCP-o-matic" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "DCPs" @@ -670,19 +669,17 @@ msgstr "Encrypté" msgid "Entry point" msgstr "Point d'entrée" -#: src/tools/dcpomatic_verifier.cc:156 -#, fuzzy +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" -msgstr "DCPs en cours de combinaison" +msgstr "DCPs en cours d’analyse" #: src/tools/dcpomatic.cc:1446 msgid "Export preferences..." msgstr "Exporter les préférences..." #: src/tools/dcpomatic.cc:1418 -#, fuzzy msgid "Export subtitles...\tShift-Ctrl-E" -msgstr "Exporter les sous-titres..." +msgstr "Exporter les sous-titres...\tShift-Ctrl-E" #: src/tools/dcpomatic.cc:1417 msgid "Export video file...\tCtrl-E" @@ -981,10 +978,9 @@ msgstr "Sélectionner le DCP à ouvrir" msgid "Select DCP to open as OV" msgstr "Sélectionner le DCP à ouvrir en tant qu'OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 -#, fuzzy +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 msgid "Select DCP(s)" -msgstr "Sélectionner le KDM" +msgstr "Sélectionner le DCP" #: src/tools/dcpomatic_kdm.cc:821 msgid "Select DKDM File" @@ -994,7 +990,7 @@ msgstr "Sélectionner le fichier DKDM" msgid "Select DKDM file" msgstr "Sélectionner le fichier DKDM" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Sélectionner le KDM" @@ -1230,7 +1226,7 @@ msgstr "" "le lecteur. Choisissez le répertoire DCP à l'intérieur du dossier de projet " "%s si c'est ce que vous voulez lire." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1276,9 +1272,9 @@ msgstr "Haut" #: src/tools/dcpomatic.cc:1455 msgid "User manual..." -msgstr "" +msgstr "Manuel utilisateur…" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "Vérifier" @@ -1290,7 +1286,7 @@ msgstr "Vérifier le DCP" msgid "Verify DCP..." msgstr "Vérifier le DCP..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "Vérifier les caractéristiques des ressources vidéo" @@ -1302,7 +1298,7 @@ msgstr "DCP supplémental (VF)..." msgid "Video waveform..." msgstr "Forme d'onde vidéo..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "Ecrire les rapports dans les dossiers DCP" diff --git a/src/tools/po/hu_HU.po b/src/tools/po/hu_HU.po index 107a81bd1..9c6b84cf7 100644 --- a/src/tools/po/hu_HU.po +++ b/src/tools/po/hu_HU.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2022-09-17 10:54+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -77,21 +77,21 @@ msgstr "&Szerkesztés" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Kilépés" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Fájl" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Segítség" @@ -124,7 +124,7 @@ msgstr "&Beállítások…\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Kilépés" @@ -149,11 +149,11 @@ msgstr "&Eszközök" msgid "&View" msgstr "&Nézet" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -168,13 +168,13 @@ msgstr "<b>Lejátszási listák</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Névjegy" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Névjegy" @@ -187,7 +187,7 @@ msgstr "Hozzáadás" msgid "Add &KDM..." msgstr "&KDM hozzáadása…" -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "&KDM hozzáadása…" @@ -227,7 +227,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -237,7 +237,7 @@ msgstr "" "Hiba történt: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -248,7 +248,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -271,7 +271,7 @@ msgstr "Egy ismeretlen hiba történt." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Egy ismeretlen hiba történt." @@ -312,7 +312,7 @@ msgstr "A CPL tartalma nincs titkosítva." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -320,7 +320,7 @@ msgstr "" msgid "Check for updates" msgstr "Frissítések keresése" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -365,7 +365,7 @@ msgstr "Beállítások másolása\tCtrl-C" msgid "Could not create folder to store film." msgstr "Nem sikerült mappát létrehozni a film számára." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -419,7 +419,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Nem sikerült a KDM betöltése." @@ -467,7 +467,7 @@ msgstr "" "Nem olvasható ez a fájl KDM-ként. Túl nagy, kérlek győződj meg róla, hogy " "egy DKDM (XML) fájlt töltesz be." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -533,7 +533,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 #, fuzzy msgid "DCP" msgstr "CPL" @@ -542,7 +542,7 @@ msgstr "CPL" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Encode Server" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -664,7 +664,7 @@ msgstr "Kódolt" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -973,7 +973,7 @@ msgstr "DCP kiválasztása megnyitáshoz" msgid "Select DCP to open as OV" msgstr "DCP kiválasztása az OV-ként való megnyitáshoz" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "KDM kiválasztása" @@ -986,7 +986,7 @@ msgstr "DKDM fájl kiválasztása" msgid "Select DKDM file" msgstr "DKDM fájl kiválasztása" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "KDM kiválasztása" @@ -1203,7 +1203,7 @@ msgstr "" "lejátszóban. Válaszd ki a DCP mappáját a DCP-o-matic projekt mappáján belül, " "ha azt kívánod lejátszani." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1249,7 +1249,7 @@ msgstr "Fel" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "DCP ellenőrzése…" @@ -1263,7 +1263,7 @@ msgstr "DCP ellenőrzése…" msgid "Verify DCP..." msgstr "DCP ellenőrzése…" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1275,7 +1275,7 @@ msgstr "" msgid "Video waveform..." msgstr "Videó hullámforma…" -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/it_IT.po b/src/tools/po/it_IT.po index 5bcc58319..219ce742e 100644 --- a/src/tools/po/it_IT.po +++ b/src/tools/po/it_IT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2018-09-30 16:31+0200\n" "Last-Translator: William Fanelli <william.f@impronte.com>\n" "Language-Team: \n" @@ -78,21 +78,21 @@ msgstr "&Modifica" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Esci" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&File" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Aiuto" @@ -125,7 +125,7 @@ msgstr "&Preferenze...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Esci" @@ -151,11 +151,11 @@ msgstr "&Strumenti" msgid "&View" msgstr "&Visualizza" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -170,13 +170,13 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Informazioni" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Informazioni" @@ -191,7 +191,7 @@ msgstr "Aggiungi..." msgid "Add &KDM..." msgstr "&Aggiungi KDM..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "&Aggiungi KDM..." @@ -232,7 +232,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -242,7 +242,7 @@ msgstr "" "Si è verificata un'eccezione: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -253,7 +253,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -276,7 +276,7 @@ msgstr "Si è verificata un'eccezione sconosciuta." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Si è verificata un'eccezione sconosciuta." @@ -317,7 +317,7 @@ msgstr "Il contenuto CPL non è criptato." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -325,7 +325,7 @@ msgstr "" msgid "Check for updates" msgstr "Controlla aggiornamenti" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -371,7 +371,7 @@ msgstr "Copia preferenze\tCtrl-C" msgid "Could not create folder to store film." msgstr "Impossibile creare la cartella per archiviare il film" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -421,7 +421,7 @@ msgid "" "%s." msgstr "Impossibile caricare DCP {}." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Impossibile caricare KDM." @@ -470,7 +470,7 @@ msgstr "" "Impossibile leggere il file come KDM. Forse è formattato male, o non è una " "KDM." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -535,7 +535,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 #, fuzzy msgid "DCP" msgstr "CPL" @@ -544,7 +544,7 @@ msgstr "CPL" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-MATIC Server per la Codifica" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -666,7 +666,7 @@ msgstr "" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -977,7 +977,7 @@ msgstr "Seleziona il DCP da aprire" msgid "Select DCP to open as OV" msgstr "Seleziona il DCP da aprire come OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Seleziona KDM" @@ -991,7 +991,7 @@ msgstr "Seleziona il file DKDM" msgid "Select DKDM file" msgstr "Seleziona il file DKDM" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Seleziona KDM" @@ -1184,7 +1184,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1231,7 +1231,7 @@ msgstr "" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "Verifica DCP" @@ -1246,7 +1246,7 @@ msgstr "Verifica DCP" msgid "Verify DCP..." msgstr "Verifica DCP" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1258,7 +1258,7 @@ msgstr "" msgid "Video waveform..." msgstr "Forma d'onda video..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/ja_JP.po b/src/tools/po/ja_JP.po index 2eba0daa6..9c4266825 100644 --- a/src/tools/po/ja_JP.po +++ b/src/tools/po/ja_JP.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-02-15 21:03+0100\n" -"PO-Revision-Date: 2026-03-23 22:51+0900\n" +"PO-Revision-Date: 2026-04-25 20:27+0900\n" "Last-Translator: \n" "Language-Team: \n" "Language: ja_JP\n" @@ -534,9 +534,8 @@ msgid "Creator" msgstr "作成者" #: src/tools/dcpomatic_playlist.cc:342 -#, fuzzy msgid "Crop" -msgstr "作物" +msgstr "切り抜き" #: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 msgid "DCP" @@ -547,7 +546,6 @@ msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Encode Server" #: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 -#, fuzzy msgid "DCPs" msgstr "DCP一覧" @@ -610,9 +608,9 @@ msgstr "" "示されましたか? その場合は「はい」をクリックしてもう一度お試しください。" #: src/tools/dcpomatic.cc:863 -#, fuzzy, c-format +#, c-format msgid "Do you want to overwrite the existing DCP %s?" -msgstr "既存の DCP %s を上書きしますか?" +msgstr "既存のDCPを上書きしますか? %s" #: src/tools/dcpomatic.cc:167 msgid "Don't close" @@ -816,14 +814,13 @@ msgstr "プロジェクトを新規作成" #: src/tools/dcpomatic_playlist.cc:257 msgid "New Playlist" -msgstr "プレイリストを新規作成" +msgstr "新しいプレイリスト" #: src/tools/dcpomatic.cc:1360 msgid "New...\tCtrl-N" msgstr "新規作成\tCtrl-N" #: src/tools/dcpomatic_disk.cc:93 -#, fuzzy msgid "" "No ASSETMAP or ASSETMAP.xml found in this folder. Please choose a DCP " "folder." @@ -1234,8 +1231,8 @@ msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." msgstr "" -"フレームサイズやJPEG2000ビットストリームの有効性など、画像アセットの詳細を確" -"認するにはチェックを入れてください。これらのチェックにはかなり時間がかかりま" +"フレームサイズやJPEG2000ビットストリームの有効性など、画像データの詳細を確認" +"するにはチェックを入れてください。これらのチェックにはかなり時間がかかりま" "す。" #: src/tools/dcpomatic_player.cc:712 @@ -1291,9 +1288,8 @@ msgid "Verify DCP..." msgstr "DCPを検証" #: src/tools/dcpomatic_verifier.cc:187 -#, fuzzy msgid "Verify picture asset details" -msgstr "画像アセットの詳細を確認する" +msgstr "画像データの詳細を確認する" #: src/tools/dcpomatic.cc:1437 msgid "Version File (VF)..." diff --git a/src/tools/po/ko_KR.po b/src/tools/po/ko_KR.po index 753eea525..91015e616 100644 --- a/src/tools/po/ko_KR.po +++ b/src/tools/po/ko_KR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2026-03-06 17:25+0900\n" "Last-Translator: \n" "Language-Team: \n" @@ -78,21 +78,21 @@ msgstr "&편집" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&종료" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&파일" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&도움말" @@ -124,7 +124,7 @@ msgstr "&환경 설정...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&종료" @@ -149,11 +149,11 @@ msgstr "&도구" msgid "&View" msgstr "&보기" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "(암호화됨, KDM 있음)" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "(암호화됨, KDM 없음)" @@ -168,13 +168,13 @@ msgstr "<b>플레이리스트</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "정보" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "%s 정보" @@ -187,7 +187,7 @@ msgstr "추가" msgid "Add &KDM..." msgstr "&KDM 추가..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 msgid "Add KDM..." msgstr "KDM 추가..." @@ -226,7 +226,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -237,7 +237,7 @@ msgstr "" "\n" "%s" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -249,7 +249,7 @@ msgstr "" "%s" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -273,7 +273,7 @@ msgstr "알 수 없는 예외가 발생했습니다." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "알 수 없는 예외가 발생했습니다. %s" @@ -313,7 +313,7 @@ msgstr "CPL의 콘텐츠가 암호화되어 있지 않습니다." msgid "CPL: %s" msgstr "CPL: %s" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "취소" @@ -321,7 +321,7 @@ msgstr "취소" msgid "Check for updates" msgstr "업데이트 확인" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "KDM 확인 중" @@ -367,7 +367,7 @@ msgstr "설정 복사\tCtrl-C" msgid "Could not create folder to store film." msgstr "필름을 저장할 폴더를 생성할 수 없습니다." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -420,7 +420,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "KDM을 불러올 수 없습니다." @@ -468,7 +468,7 @@ msgstr "" "파일을 KDM으로 읽을 수 없습니다. 파일이 너무 큽니다. DKDM (XML) 파일을 로드하" "고 있는지 확인하세요." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -531,7 +531,7 @@ msgstr "작성자" msgid "Crop" msgstr "크롭" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -539,7 +539,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic 인코드 서버" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "DCP들" @@ -664,7 +664,7 @@ msgstr "암호화됨" msgid "Entry point" msgstr "시작점" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "DCP 검사 중" @@ -974,7 +974,7 @@ msgstr "열려는 DCP 선택" msgid "Select DCP to open as OV" msgstr "OV로 열려는 DCP 선택" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "KDM 선택" @@ -987,7 +987,7 @@ msgstr "DKDM 파일 선택" msgid "Select DKDM file" msgstr "DKDM 파일 선택" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "KDM 선택" @@ -1204,7 +1204,7 @@ msgstr "" "이것은 %s 프로젝트 폴더이므로 플레이어에서 직접 열 수 없습니다. 재생하려면 " "%s 프로젝트 폴더 내부의 DCP 폴더를 선택하세요." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1252,7 +1252,7 @@ msgstr "위로" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "검증" @@ -1264,7 +1264,7 @@ msgstr "DCP 검증" msgid "Verify DCP..." msgstr "DCP 검증..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "그림 에셋 세부 사항 검증" @@ -1276,7 +1276,7 @@ msgstr "버전 파일 (VF)..." msgid "Video waveform..." msgstr "비디오 웨이브폼..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "DCP 폴더에 로그 쓰기" diff --git a/src/tools/po/nl_NL.po b/src/tools/po/nl_NL.po index 560f246e6..b54c32b2c 100644 --- a/src/tools/po/nl_NL.po +++ b/src/tools/po/nl_NL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2026-03-23 13:10+0100\n" "Last-Translator: Rob van Nieuwkerk <dcpomatic-translations@berrymount.nl>\n" "Language-Team: Rob van Nieuwkerk <dcpomatic-translations@berrymount.nl>\n" @@ -79,21 +79,21 @@ msgstr "&Wijzig" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Stop" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Bestand" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Help" @@ -125,7 +125,7 @@ msgstr "&Voorkeuren...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Stop" @@ -150,11 +150,11 @@ msgstr "&Tools" msgid "&View" msgstr "&Toon" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "(versleuteld, met KDM)" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "(versleuteld, zonder KDM)" @@ -169,13 +169,13 @@ msgstr "<b>Afspeellijsten</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Over" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "Over %s" @@ -188,7 +188,7 @@ msgstr "Voeg toe" msgid "Add &KDM..." msgstr "Voeg &KDM toe..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 msgid "Add KDM..." msgstr "Voeg KDM toe..." @@ -227,7 +227,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -238,7 +238,7 @@ msgstr "" "\n" "%s" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -250,7 +250,7 @@ msgstr "" "%s" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -274,7 +274,7 @@ msgstr "Er is een onbekende uitzondering opgetreden." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "Er is een onbekende uitzondering opgetreden. %s" @@ -315,7 +315,7 @@ msgstr "De inhoud van de CPL is niet versleuteld." msgid "CPL: %s" msgstr "CPL: %s" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "Annuleer" @@ -323,7 +323,7 @@ msgstr "Annuleer" msgid "Check for updates" msgstr "Controleer op updates" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "Controleren KDM" @@ -368,7 +368,7 @@ msgstr "Kopieer instellingen\tCtrl-C" msgid "Could not create folder to store film." msgstr "Kan map voor bewaren film niet aanmaken." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -422,7 +422,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Kan KDM niet laden." @@ -470,7 +470,7 @@ msgstr "" "Kan het bestand niet als een KDM lezen. Het is veel te groot. Zorg ervoor " "dat u een DKDM (XML) bestand laadt." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -506,8 +506,8 @@ msgstr "" msgid "" "Could not start the player. You may need to download it from dcpomatic.com." msgstr "" -"Kan de Player niet starten. Mogelijk moet u hem downloaden van dcpomatic." -"com." +"Kan de Player niet starten. Mogelijk moet u hem downloaden van " +"dcpomatic.com." #: src/tools/dcpomatic_batch.cc:365 src/tools/dcpomatic.cc:1477 #: src/tools/dcpomatic_player.cc:1128 src/tools/dcpomatic_playlist.cc:639 @@ -535,7 +535,7 @@ msgstr "Creator" msgid "Crop" msgstr "Bijsnijding" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -543,7 +543,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Encode Server" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "DCP's" @@ -583,8 +583,8 @@ msgid "" "Did you install the %s Disk Writer.pkg from the .dmg? Please check and try " "again." msgstr "" -"Heeft u de %s Disk Writer.pkg geïnstalleerd vanuit de .dmg? Controleer a.u." -"b. en probeer het opnieuw." +"Heeft u de %s Disk Writer.pkg geïnstalleerd vanuit de .dmg? Controleer " +"a.u.b. en probeer het opnieuw." #: src/tools/dcpomatic_disk.cc:190 msgid "Disk Writer" @@ -668,7 +668,7 @@ msgstr "Versleuteld" msgid "Entry point" msgstr "Entry point" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "Onderzoeken DCP's" @@ -976,7 +976,7 @@ msgstr "Selecteer DCP om te openen" msgid "Select DCP to open as OV" msgstr "Selecteer DCP om te openen als OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 msgid "Select DCP(s)" msgstr "Selecteer DCP('s)" @@ -988,7 +988,7 @@ msgstr "Selecteer DKDM-bestand" msgid "Select DKDM file" msgstr "Selecteer DKDM-bestand" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Selecteer KDM" @@ -1224,7 +1224,7 @@ msgstr "" "Dit ziet eruit als een %s projectmap, die niet in de player kan worden " "geladen. Kies de DCP-map in de %s projectmap als u die wilt afspelen." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1272,7 +1272,7 @@ msgstr "Omhoog" msgid "User manual..." msgstr "Gebruikershandleiding..." -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "Controleer" @@ -1284,7 +1284,7 @@ msgstr "Controleer DCP" msgid "Verify DCP..." msgstr "Controleer DCP..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "Controleer picture asset details" @@ -1296,7 +1296,7 @@ msgstr "Version File (VF)..." msgid "Video waveform..." msgstr "Video-golfvorm..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "Schrijf logs naar DCP-mappen" diff --git a/src/tools/po/pl_PL.po b/src/tools/po/pl_PL.po index 9da0adb99..629392f44 100644 --- a/src/tools/po/pl_PL.po +++ b/src/tools/po/pl_PL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2022-05-10 15:42+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -79,21 +79,21 @@ msgstr "&Edycja" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Wyjdź" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Plik" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Pomoc" @@ -126,7 +126,7 @@ msgstr "&Preferencje...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Zakończ" @@ -152,11 +152,11 @@ msgstr "&Narzędzia" msgid "&View" msgstr "&Zbadaj" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -171,13 +171,13 @@ msgstr "<b>Listy odtwarzania</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Informacje" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Informacje" @@ -190,7 +190,7 @@ msgstr "Dodaj" msgid "Add &KDM..." msgstr "Dodaj &KDM..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Dodaj &KDM..." @@ -230,7 +230,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -240,7 +240,7 @@ msgstr "" "Wystąpił błąd: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -251,7 +251,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -274,7 +274,7 @@ msgstr "Wystąpił nieznany wyjątek." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Wystąpił nieznany wyjątek." @@ -314,7 +314,7 @@ msgstr "Zawartość CPL nie jest zaszyfrowana." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -322,7 +322,7 @@ msgstr "" msgid "Check for updates" msgstr "Uaktualnij program" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -367,7 +367,7 @@ msgstr "Skopiuj ustawienia\tCtrl-C" msgid "Could not create folder to store film." msgstr "Błąd przy tworzeniu folderu dla Projektu." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -421,7 +421,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Nie udało się wczytać KDM." @@ -469,7 +469,7 @@ msgstr "" "Nie udało się załadować pliku jako KDM. Ma zbyt duży rozmiar. Upewnij się, " "że wczytujesz plik DKDM (XML)." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -533,7 +533,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 #, fuzzy msgid "DCP" msgstr "CPL" @@ -542,7 +542,7 @@ msgstr "CPL" msgid "DCP-o-matic Encode Server" msgstr "Serwer kodujący DCP-o-matic" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -664,7 +664,7 @@ msgstr "Zaszyfrowany" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -975,7 +975,7 @@ msgstr "Wybierz folder DCP" msgid "Select DCP to open as OV" msgstr "Wybierz folder DCP jako OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Wybierz KDM" @@ -988,7 +988,7 @@ msgstr "Wybierz DKDM" msgid "Select DKDM file" msgstr "Wybierz DKDM" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Wybierz KDM" @@ -1214,7 +1214,7 @@ msgstr "" "do odtwarzacza. Wybierz folder DCP wewnątrz folderu Projektu, który chcesz " "odtworzyć." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1260,7 +1260,7 @@ msgstr "Góra" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "Zweryfikuj DCP..." @@ -1274,7 +1274,7 @@ msgstr "Zweryfikuj DCP..." msgid "Verify DCP..." msgstr "Zweryfikuj DCP..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1286,7 +1286,7 @@ msgstr "" msgid "Video waveform..." msgstr "Analiza pliku video..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/pt_BR.po b/src/tools/po/pt_BR.po index 58c7506fc..52e6b8993 100644 --- a/src/tools/po/pt_BR.po +++ b/src/tools/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2018-01-15 16:42-0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -78,21 +78,21 @@ msgstr "&Editar" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Sair" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Arquivo" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Ajuda" @@ -125,7 +125,7 @@ msgstr "&Preferências...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Sair" @@ -151,11 +151,11 @@ msgstr "&Ferramentas" msgid "&View" msgstr "&Visualizar" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -170,13 +170,13 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Sobre" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Sobre" @@ -191,7 +191,7 @@ msgstr "Adicionar..." msgid "Add &KDM..." msgstr "Adicionar KDM..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Adicionar KDM..." @@ -232,7 +232,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -242,7 +242,7 @@ msgstr "" "Ocorreu um erro: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -253,7 +253,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -276,7 +276,7 @@ msgstr "Ocorreu um erro desconhecido." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Ocorreu um erro desconhecido." @@ -317,7 +317,7 @@ msgstr "Contéudo da CPL não encriptado." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -325,7 +325,7 @@ msgstr "" msgid "Check for updates" msgstr "Verificar atualizações" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -370,7 +370,7 @@ msgstr "Copiar configurações\tCtrl-C" msgid "Could not create folder to store film." msgstr "" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -422,7 +422,7 @@ msgid "" "%s." msgstr "Não foi possível carregar o DCP {}." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Não foi possível carregar o KDM." @@ -471,7 +471,7 @@ msgstr "" "Falha na leitura do arquivo como um KDM. Talvez a formatação esteja " "incorreta, ou não seja um arquivo KDM." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -536,7 +536,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 #, fuzzy msgid "DCP" msgstr "CPL" @@ -545,7 +545,7 @@ msgstr "CPL" msgid "DCP-o-matic Encode Server" msgstr "Conversor em série DCP-o-matic" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -667,7 +667,7 @@ msgstr "" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -977,7 +977,7 @@ msgstr "Selecione o DCP para abrir" msgid "Select DCP to open as OV" msgstr "Selecione o DCP para abrir como OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Selecione o KDM" @@ -991,7 +991,7 @@ msgstr "Selecione o filme para abrir" msgid "Select DKDM file" msgstr "Selecione o filme para abrir" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Selecione o KDM" @@ -1186,7 +1186,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1233,7 +1233,7 @@ msgstr "" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "" @@ -1245,7 +1245,7 @@ msgstr "" msgid "Verify DCP..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1257,7 +1257,7 @@ msgstr "" msgid "Video waveform..." msgstr "Waveform de video..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/pt_PT.po b/src/tools/po/pt_PT.po index d23ce2aab..8b9307931 100644 --- a/src/tools/po/pt_PT.po +++ b/src/tools/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic PORTUGUESE (Portugal)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2016-03-19 13:01+0000\n" "Last-Translator: Tiago Casal Ribeiro <tiago@casalribeiro.com>\n" "Language-Team: \n" @@ -81,21 +81,21 @@ msgstr "&Editar" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Sair" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Ficheiro" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Ajuda" @@ -128,7 +128,7 @@ msgstr "&Preferências...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Sair" @@ -154,11 +154,11 @@ msgstr "&Ferramentas" msgid "&View" msgstr "" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -173,13 +173,13 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Sobre" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Sobre" @@ -193,7 +193,7 @@ msgstr "" msgid "Add &KDM..." msgstr "Adicionar Filme..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Adicionar Filme..." @@ -235,7 +235,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -245,7 +245,7 @@ msgstr "" "Ocorreu uma excepção: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -256,7 +256,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -279,7 +279,7 @@ msgstr "Ocorreu uma excepção desconhecida." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Ocorreu uma excepção desconhecida." @@ -318,7 +318,7 @@ msgstr "O conteúdo do CPL não é encriptado." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -326,7 +326,7 @@ msgstr "" msgid "Check for updates" msgstr "Procurar actualizações" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -371,7 +371,7 @@ msgstr "" msgid "Could not create folder to store film." msgstr "" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -421,7 +421,7 @@ msgid "" "%s." msgstr "Não foi possível produzir o DCP: %s" -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 #, fuzzy msgid "Could not load KDM." msgstr "Não foi possível mostrar o DCP" @@ -469,7 +469,7 @@ msgid "" "loading a DKDM (XML) file." msgstr "" -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -528,7 +528,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "" @@ -537,7 +537,7 @@ msgstr "" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Conversor de Lote" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -659,7 +659,7 @@ msgstr "" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -976,7 +976,7 @@ msgstr "Seleccionar filme a abrir" msgid "Select DCP to open as OV" msgstr "Seleccionar filme a abrir" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Seleccionar filme a abrir" @@ -991,7 +991,7 @@ msgstr "Seleccionar filme a abrir" msgid "Select DKDM file" msgstr "Seleccionar filme a abrir" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 #, fuzzy msgid "Select KDM" msgstr "Seleccionar filme a abrir" @@ -1184,7 +1184,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1230,7 +1230,7 @@ msgstr "" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "" @@ -1242,7 +1242,7 @@ msgstr "" msgid "Verify DCP..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1254,7 +1254,7 @@ msgstr "" msgid "Video waveform..." msgstr "Forma de onda de vídeo..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/ru_RU.po b/src/tools/po/ru_RU.po index 40052f0c2..e1fcb1b35 100644 --- a/src/tools/po/ru_RU.po +++ b/src/tools/po/ru_RU.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2025-06-08 19:54+0300\n" "Last-Translator: Mikhail Epshteyn <virus-2006@yandex.ru>\n" "Language-Team: Russian\n" @@ -77,21 +77,21 @@ msgstr "&Правка" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Выход" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Файл" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Помощь" @@ -123,7 +123,7 @@ msgstr "&Настройки...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Выход" @@ -148,11 +148,11 @@ msgstr "&Инструменты" msgid "&View" msgstr "&Вид" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -167,13 +167,13 @@ msgstr "<b>Плейлисты</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "О программе" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "О программе %s" @@ -186,7 +186,7 @@ msgstr "Добавить" msgid "Add &KDM..." msgstr "Добавить &KDM…" -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Добавить &KDM…" @@ -226,7 +226,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -237,7 +237,7 @@ msgstr "" "\n" "%s" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -249,7 +249,7 @@ msgstr "" "%s" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -273,7 +273,7 @@ msgstr "Произошла неизвестная ошибка." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "Произошла неизвестная ошибка. %s" @@ -313,7 +313,7 @@ msgstr "Содержимое CPL-файла не зашифровано." msgid "CPL: %s" msgstr "CPL: %s" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -321,7 +321,7 @@ msgstr "" msgid "Check for updates" msgstr "Проверить обновления" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -366,7 +366,7 @@ msgstr "Копировать настройки\tCtrl-C" msgid "Could not create folder to store film." msgstr "Не удалось создать папку для хранения проекта." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -420,7 +420,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Не удалось загрузить KDM." @@ -468,7 +468,7 @@ msgstr "" "Не удалось прочитать файл как KDM. Убедитесь, что вы загружаете DKDM (XML) " "файл." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -533,7 +533,7 @@ msgstr "Создатель" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -541,7 +541,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Encode Server" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "DCPs" @@ -667,7 +667,7 @@ msgstr "Зашифрован" msgid "Entry point" msgstr "Начальная точка" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 #, fuzzy msgid "Examining DCPs" msgstr "Объединение DCPs" @@ -976,7 +976,7 @@ msgstr "Выберите DCP для открытия" msgid "Select DCP to open as OV" msgstr "Выберите DCP для открытия как OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Выберите KDM-файл" @@ -989,7 +989,7 @@ msgstr "Выберите DKDM-файл" msgid "Select DKDM file" msgstr "Выберите DKDM-файл" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Выберите KDM-файл" @@ -1217,7 +1217,7 @@ msgstr "" "Возможно выбрана папка с проектом %s. Она не может быть загружена в плеер. " "Выберите DCP в подпапке с проектом %s, если хотите открыть её в плеере." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1263,7 +1263,7 @@ msgstr "Вверх" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "Проверить DCP" @@ -1276,7 +1276,7 @@ msgstr "Проверить DCP" msgid "Verify DCP..." msgstr "Проверить DCP..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1288,7 +1288,7 @@ msgstr "Дополнительный пакет (VF)" msgid "Video waveform..." msgstr "Волновая диаграмма видео…" -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 #, fuzzy msgid "Write logs to DCP folders" msgstr "Выбрать папку с DCP" diff --git a/src/tools/po/sk_SK.po b/src/tools/po/sk_SK.po index 96c8dae7b..904fd853c 100644 --- a/src/tools/po/sk_SK.po +++ b/src/tools/po/sk_SK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2016-01-06 00:23+0100\n" "Last-Translator: Tomáš Hlaváč\n" "Language-Team: \n" @@ -81,21 +81,21 @@ msgstr "&Upraviť" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Koniec" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Súbor" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Pomoc" @@ -128,7 +128,7 @@ msgstr "&Nastavenia...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Ukončiť" @@ -154,11 +154,11 @@ msgstr "&Nástroje" msgid "&View" msgstr "" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -173,13 +173,13 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "O" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "O" @@ -193,7 +193,7 @@ msgstr "" msgid "Add &KDM..." msgstr "Pridať film..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Pridať film..." @@ -235,7 +235,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -245,7 +245,7 @@ msgstr "" "Vyskytol sa problém: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -256,7 +256,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -279,7 +279,7 @@ msgstr "Vyskytol sa neznámy problém" #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Vyskytol sa neznámy problém" @@ -318,7 +318,7 @@ msgstr "CPL obsah nie je enkryptovaný." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -326,7 +326,7 @@ msgstr "" msgid "Check for updates" msgstr "Skontrolovať aktualizácie" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -371,7 +371,7 @@ msgstr "" msgid "Could not create folder to store film." msgstr "" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -421,7 +421,7 @@ msgid "" "%s." msgstr "Nemôžem vytvoriť DCP: %s" -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 #, fuzzy msgid "Could not load KDM." msgstr "Nemôžem zobraziť DCP" @@ -469,7 +469,7 @@ msgid "" "loading a DKDM (XML) file." msgstr "" -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -528,7 +528,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "" @@ -537,7 +537,7 @@ msgstr "" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic konvertor" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -659,7 +659,7 @@ msgstr "" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -972,7 +972,7 @@ msgstr "Vybrať film na otvorenie" msgid "Select DCP to open as OV" msgstr "Vybrať film na otvorenie" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Vybrať film na otvorenie" @@ -987,7 +987,7 @@ msgstr "Vybrať film na otvorenie" msgid "Select DKDM file" msgstr "Vybrať film na otvorenie" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 #, fuzzy msgid "Select KDM" msgstr "Vybrať film na otvorenie" @@ -1177,7 +1177,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1223,7 +1223,7 @@ msgstr "" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "" @@ -1235,7 +1235,7 @@ msgstr "" msgid "Verify DCP..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1247,7 +1247,7 @@ msgstr "" msgid "Video waveform..." msgstr "Analýza videa..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/sl_SI.po b/src/tools/po/sl_SI.po index f7d50a00b..3d866e17d 100644 --- a/src/tools/po/sl_SI.po +++ b/src/tools/po/sl_SI.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2024-02-10 16:05+0100\n" "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n" "Language-Team: \n" @@ -77,21 +77,21 @@ msgstr "Ur&edi" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Izhod" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Datoteka" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "Po&moč" @@ -124,7 +124,7 @@ msgstr "&Nastavitve ...\tKrmilka+P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Izhod" @@ -149,11 +149,11 @@ msgstr "O&rodja" msgid "&View" msgstr "Po&gled" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -168,13 +168,13 @@ msgstr "<b>Seznami predvajanja</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "O programu" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "O programu" @@ -187,7 +187,7 @@ msgstr "Dodaj" msgid "Add &KDM..." msgstr "Dodaj &KDM ..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Dodaj &KDM ..." @@ -226,7 +226,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -236,7 +236,7 @@ msgstr "" "Prišlo je do izjeme: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -247,7 +247,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -270,7 +270,7 @@ msgstr "Prišlo je do neznane izjeme." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Prišlo je do neznane izjeme." @@ -311,7 +311,7 @@ msgstr "Vsebina CPL ni šifrirana." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -319,7 +319,7 @@ msgstr "" msgid "Check for updates" msgstr "Preveri obstoj posodobitev" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -365,7 +365,7 @@ msgstr "Kopiraj nastavitve\tKrmilka+C" msgid "Could not create folder to store film." msgstr "Za shranjevanje filma ni bilo mogoče ustvariti mape." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -419,7 +419,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "KDM ni bilo mogoče naložiti." @@ -467,7 +467,7 @@ msgstr "" "Datoteke ni bilo mogoče prebrati kot KDM. Prevelika je. Preverite, ali " "nalagate datoteko DKDM (XML)." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -533,7 +533,7 @@ msgstr "Ustvarjalec" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -541,7 +541,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "Strežnik kodiranja DCP-o-matic" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -667,7 +667,7 @@ msgstr "Šifrirano" msgid "Entry point" msgstr "Vstopna točka" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 #, fuzzy msgid "Examining DCPs" msgstr "Združevanje DCP-jev" @@ -978,7 +978,7 @@ msgstr "Izberite DCP za odpiranje" msgid "Select DCP to open as OV" msgstr "Izberite DCP, da ga odprete kot OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Izberite KDM" @@ -991,7 +991,7 @@ msgstr "Izberite datoteko DKDM" msgid "Select DKDM file" msgstr "Izberite datoteko DKDM" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Izberite KDM" @@ -1228,7 +1228,7 @@ msgstr "" "predvajalnik. Izberite mapo DCP znotraj projektne mape DCP-o-matic, če " "želite to predvajati." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1273,7 +1273,7 @@ msgstr "Navzgor" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "Preveri DCP ..." @@ -1287,7 +1287,7 @@ msgstr "Preveri DCP ..." msgid "Verify DCP..." msgstr "Preveri DCP ..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1299,7 +1299,7 @@ msgstr "" msgid "Video waveform..." msgstr "Signalna oblika videa …" -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 #, fuzzy msgid "Write logs to DCP folders" msgstr "Izberite mapo DCP" diff --git a/src/tools/po/sv_SE.po b/src/tools/po/sv_SE.po index cf4d20c9c..8f815f7e9 100644 --- a/src/tools/po/sv_SE.po +++ b/src/tools/po/sv_SE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2021-05-28 14:44+0200\n" "Last-Translator: Mattias Mattsson <vitplister@gmail.com>\n" "Language-Team: \n" @@ -77,21 +77,21 @@ msgstr "&Redigera" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Avsluta" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Arkiv" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Hjälp" @@ -124,7 +124,7 @@ msgstr "&Inställningar...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Avsluta" @@ -150,11 +150,11 @@ msgstr "&Verktyg" msgid "&View" msgstr "&Visa" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -169,13 +169,13 @@ msgstr "<b>Playlistor</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Om" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Om" @@ -188,7 +188,7 @@ msgstr "Lägg till" msgid "Add &KDM..." msgstr "&Lägg till KDM..." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "&Lägg till KDM..." @@ -228,7 +228,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -238,7 +238,7 @@ msgstr "" "Ett fel inträffade: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -249,7 +249,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -272,7 +272,7 @@ msgstr "Ett okänt fel inträffade." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Ett okänt fel inträffade." @@ -313,7 +313,7 @@ msgstr "CPL:ens innehåll är inte krypterat." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -321,7 +321,7 @@ msgstr "" msgid "Check for updates" msgstr "Leta efter uppdateringar" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -366,7 +366,7 @@ msgstr "Kopiera inställningar\tCtrl-C" msgid "Could not create folder to store film." msgstr "Kunde inte skapa mapp för att spara film." -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -418,7 +418,7 @@ msgstr "" "\n" "%s." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Kunde inte ladda KDM." @@ -466,7 +466,7 @@ msgstr "" "Kunde inte läsa filen som en KDM. Den är alldeles för stor. Säkerställ att " "det är en DKDM (XML) fil du försöker öppna." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -534,7 +534,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 #, fuzzy msgid "DCP" msgstr "CPL" @@ -543,7 +543,7 @@ msgstr "CPL" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Encode Server" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -665,7 +665,7 @@ msgstr "Kryptera" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -976,7 +976,7 @@ msgstr "Välj DCP att öppna" msgid "Select DCP to open as OV" msgstr "Välj DCP att öppna som OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Välj KDM" @@ -989,7 +989,7 @@ msgstr "Välj DKDM-fil" msgid "Select DKDM file" msgstr "Välj DKDM-fil" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Välj KDM" @@ -1214,7 +1214,7 @@ msgstr "" "spelaren. Välj DCP-foldern i DCP-o-matic projektfoldern om det är vad du " "vill spela." -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1260,7 +1260,7 @@ msgstr "Upp" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "Verifiera DCP..." @@ -1274,7 +1274,7 @@ msgstr "Verifiera DCP..." msgid "Verify DCP..." msgstr "Verifiera DCP..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1286,7 +1286,7 @@ msgstr "" msgid "Video waveform..." msgstr "Video-vågform..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/tr_TR.po b/src/tools/po/tr_TR.po index 1b51f42b6..739c00f5d 100644 --- a/src/tools/po/tr_TR.po +++ b/src/tools/po/tr_TR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2019-03-27 13:18+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -78,21 +78,21 @@ msgstr "Düzenle" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "Çıkış" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "Dosya" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "Yardım" @@ -125,7 +125,7 @@ msgstr "Seçenekler" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "Çıkış" @@ -151,11 +151,11 @@ msgstr "Araçlar" msgid "&View" msgstr "Görüntüle" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -170,13 +170,13 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Hakkında" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Hakkında" @@ -190,7 +190,7 @@ msgstr "Ekle" msgid "Add &KDM..." msgstr "KDM ekle." -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "KDM ekle." @@ -228,7 +228,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -236,7 +236,7 @@ msgid "" "%s" msgstr "" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -245,7 +245,7 @@ msgid "" msgstr "" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -266,7 +266,7 @@ msgstr "" #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "" @@ -305,7 +305,7 @@ msgstr "" msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -313,7 +313,7 @@ msgstr "" msgid "Check for updates" msgstr "" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -358,7 +358,7 @@ msgstr "Ayarları kopyala" msgid "Could not create folder to store film." msgstr "" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -407,7 +407,7 @@ msgid "" "%s." msgstr "KDM yüklenemedi." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "KDM yüklenemedi." @@ -453,7 +453,7 @@ msgid "" "loading a DKDM (XML) file." msgstr "" -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -511,7 +511,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -519,7 +519,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -641,7 +641,7 @@ msgstr "Şifrele" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -951,7 +951,7 @@ msgstr "" msgid "Select DCP to open as OV" msgstr "" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 msgid "Select DCP(s)" msgstr "" @@ -963,7 +963,7 @@ msgstr "" msgid "Select DKDM file" msgstr "" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "" @@ -1149,7 +1149,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1196,7 +1196,7 @@ msgstr "Yukarı" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "" @@ -1208,7 +1208,7 @@ msgstr "" msgid "Verify DCP..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1220,7 +1220,7 @@ msgstr "" msgid "Video waveform..." msgstr "Video ses dalgaları..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/uk_UA.po b/src/tools/po/uk_UA.po index 3b8b514d1..14f0472d1 100644 --- a/src/tools/po/uk_UA.po +++ b/src/tools/po/uk_UA.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" "PO-Revision-Date: 2018-08-20 19:53+0300\n" "Last-Translator: Igor Voytovich <dcp@dualvfilms.com>\n" "Language-Team: Ukrainian\n" @@ -78,21 +78,21 @@ msgstr "&Редагувати" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "&Вихід" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "&Файл" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "&Допомога" @@ -125,7 +125,7 @@ msgstr "&Налаштування...\tCtrl-P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "&Вихід" @@ -151,11 +151,11 @@ msgstr "&Інструменти" msgid "&View" msgstr "&Вигляд" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" msgstr "" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" msgstr "" @@ -170,13 +170,13 @@ msgstr "" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "Про программу" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, fuzzy, c-format msgid "About %s" msgstr "Про программу" @@ -191,7 +191,7 @@ msgstr "Додати…" msgid "Add &KDM..." msgstr "Додати KDM…" -#: src/tools/dcpomatic_verifier.cc:180 +#: src/tools/dcpomatic_verifier.cc:187 #, fuzzy msgid "Add KDM..." msgstr "Додати KDM…" @@ -232,7 +232,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -242,7 +242,7 @@ msgstr "" "Виникла помилка: %s (%s)\n" "\n" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, fuzzy, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -253,7 +253,7 @@ msgstr "" "\n" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, fuzzy, c-format msgid "" "An exception occurred: %s.\n" @@ -276,7 +276,7 @@ msgstr "Виникла невідома помилка." #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, fuzzy, c-format msgid "An unknown exception occurred. %s" msgstr "Виникла невідома помилка." @@ -317,7 +317,7 @@ msgstr "Зміст CPL-файла не зашифровано." msgid "CPL: %s" msgstr "" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "" @@ -325,7 +325,7 @@ msgstr "" msgid "Check for updates" msgstr "Перевірити оновлення" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" msgstr "" @@ -371,7 +371,7 @@ msgstr "Копіювати налаштування\tCtrl-C" msgid "Could not create folder to store film." msgstr "Не вдалося створити папку для зберігання проекту" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." @@ -421,7 +421,7 @@ msgid "" "%s." msgstr "Не вдалося завантажити DCP {}." -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "Не вдалося завантажити KDM." @@ -470,7 +470,7 @@ msgstr "" "Не вдалося прочитати файл як KDM. Можливо він має неправильний формат, або " "взагалі не є ключем KDM." -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -533,7 +533,7 @@ msgstr "" msgid "Crop" msgstr "" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 #, fuzzy msgid "DCP" msgstr "CPL" @@ -542,7 +542,7 @@ msgstr "CPL" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic Сервер Кодування" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "" @@ -664,7 +664,7 @@ msgstr "" msgid "Entry point" msgstr "" -#: src/tools/dcpomatic_verifier.cc:156 +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" msgstr "" @@ -974,7 +974,7 @@ msgstr "Оберіть DCP для відкриття" msgid "Select DCP to open as OV" msgstr "Оберіть DCP для відкриття як OV" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 #, fuzzy msgid "Select DCP(s)" msgstr "Оберіть KDM-файл" @@ -988,7 +988,7 @@ msgstr "Оберіть DKDM-файл" msgid "Select DKDM file" msgstr "Оберіть DKDM-файл" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "Оберіть KDM-файл" @@ -1180,7 +1180,7 @@ msgid "" "you want to play." msgstr "" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1227,7 +1227,7 @@ msgstr "" msgid "User manual..." msgstr "" -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 #, fuzzy msgid "Verify" msgstr "Перевірити DCP" @@ -1242,7 +1242,7 @@ msgstr "Перевірити DCP" msgid "Verify DCP..." msgstr "Перевірити DCP" -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "" @@ -1254,7 +1254,7 @@ msgstr "" msgid "Video waveform..." msgstr "Графік відео..." -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "" diff --git a/src/tools/po/zh_CN.po b/src/tools/po/zh_CN.po index 6e13d65a5..591841030 100644 --- a/src/tools/po/zh_CN.po +++ b/src/tools/po/zh_CN.po @@ -12,16 +12,16 @@ msgid "" msgstr "" "Project-Id-Version: DCPOMATIC\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-02-14 23:48+0100\n" -"PO-Revision-Date: 2025-10-05 13:41+0800\n" +"POT-Creation-Date: 2026-04-12 11:50+0200\n" +"PO-Revision-Date: 2026-05-17 10:46+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/tools/dcpomatic_kdm.cc:491 @@ -37,7 +37,7 @@ msgstr "%d 导出KDMs 到 %s" #: src/tools/dcpomatic_combiner.cc:177 #, c-format msgid "%s already exists as a file, so you cannot use it for a DCP." -msgstr "%s文件已存在,您不可以将它用于DCP。" +msgstr "%s是一个文件且已经存在,因此您不可以将它用于DCP。" #: src/tools/dcpomatic_disk.cc:518 src/tools/dcpomatic_kdm.cc:944 #: src/tools/dcpomatic_player.cc:1426 @@ -84,21 +84,21 @@ msgstr "编辑(&E)" #: src/tools/dcpomatic_batch.cc:90 src/tools/dcpomatic.cc:1382 #: src/tools/dcpomatic_editor.cc:433 src/tools/dcpomatic_player.cc:672 -#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:247 +#: src/tools/dcpomatic_playlist.cc:609 src/tools/dcpomatic_verifier.cc:260 msgid "&Exit" msgstr "退出(&E)" #: src/tools/dcpomatic_batch.cc:108 src/tools/dcpomatic.cc:1460 #: src/tools/dcpomatic_editor.cc:445 src/tools/dcpomatic_kdm.cc:346 #: src/tools/dcpomatic_player.cc:725 src/tools/dcpomatic_playlist.cc:623 -#: src/tools/dcpomatic_verifier.cc:252 +#: src/tools/dcpomatic_verifier.cc:265 msgid "&File" msgstr "文件(&F)" #: src/tools/dcpomatic_batch.cc:113 src/tools/dcpomatic.cc:1465 #: src/tools/dcpomatic_editor.cc:446 src/tools/dcpomatic_kdm.cc:349 #: src/tools/dcpomatic_player.cc:732 src/tools/dcpomatic_playlist.cc:612 -#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:256 +#: src/tools/dcpomatic_playlist.cc:626 src/tools/dcpomatic_verifier.cc:269 msgid "&Help" msgstr "帮助(&H)" @@ -130,7 +130,7 @@ msgstr "设置(&P)...\tCtrl+P" #: src/tools/dcpomatic_batch.cc:92 src/tools/dcpomatic.cc:1384 #: src/tools/dcpomatic_editor.cc:435 src/tools/dcpomatic_kdm.cc:326 #: src/tools/dcpomatic_player.cc:674 src/tools/dcpomatic_playlist.cc:615 -#: src/tools/dcpomatic_verifier.cc:251 +#: src/tools/dcpomatic_verifier.cc:264 msgid "&Quit" msgstr "退出(&Q)" @@ -155,13 +155,13 @@ msgstr "工具(&T)" msgid "&View" msgstr "查看(&V)" -#: src/tools/dcpomatic_verifier.cc:104 +#: src/tools/dcpomatic_verifier.cc:107 msgid "(encrypted, have KDM)" -msgstr "" +msgstr "(已加密,有KDM)" -#: src/tools/dcpomatic_verifier.cc:106 +#: src/tools/dcpomatic_verifier.cc:109 msgid "(encrypted, no KDM)" -msgstr "" +msgstr "(已加密,无KDM)" #: src/tools/dcpomatic_playlist.cc:324 msgid "<b>Playlist:</b>" @@ -174,13 +174,13 @@ msgstr "<b>播放列表</b>" #: src/tools/dcpomatic_batch.cc:106 src/tools/dcpomatic.cc:1453 #: src/tools/dcpomatic_editor.cc:442 src/tools/dcpomatic_kdm.cc:339 #: src/tools/dcpomatic_player.cc:719 src/tools/dcpomatic_playlist.cc:621 -#: src/tools/dcpomatic_verifier.cc:254 +#: src/tools/dcpomatic_verifier.cc:267 msgid "About" msgstr "关于" #: src/tools/dcpomatic.cc:1451 src/tools/dcpomatic_editor.cc:440 #: src/tools/dcpomatic_kdm.cc:337 src/tools/dcpomatic_player.cc:717 -#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:248 +#: src/tools/dcpomatic_playlist.cc:610 src/tools/dcpomatic_verifier.cc:261 #, c-format msgid "About %s" msgstr "关于 %s" @@ -193,10 +193,9 @@ msgstr "添加" msgid "Add &KDM..." msgstr "添加 &KDM..." -#: src/tools/dcpomatic_verifier.cc:180 -#, fuzzy +#: src/tools/dcpomatic_verifier.cc:187 msgid "Add KDM..." -msgstr "添加 &KDM..." +msgstr "添加 KDM..." #: src/tools/dcpomatic_playlist.cc:80 msgid "Add content" @@ -233,7 +232,7 @@ msgstr "" #: src/tools/dcpomatic.cc:1840 src/tools/dcpomatic_combiner.cc:303 #: src/tools/dcpomatic_disk.cc:565 src/tools/dcpomatic_editor.cc:602 #: src/tools/dcpomatic_kdm.cc:959 src/tools/dcpomatic_player.cc:1474 -#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:457 +#: src/tools/dcpomatic_playlist.cc:730 src/tools/dcpomatic_verifier.cc:481 #, c-format msgid "" "An exception occurred: %s (%s)\n" @@ -244,7 +243,7 @@ msgstr "" "\n" "%s" -#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:467 +#: src/tools/dcpomatic.cc:1850 src/tools/dcpomatic_verifier.cc:491 #, c-format msgid "" "An exception occurred: %s (%s) (%s)\n" @@ -256,7 +255,7 @@ msgstr "" "%s" #: src/tools/dcpomatic.cc:1861 src/tools/dcpomatic_disk.cc:575 -#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:478 +#: src/tools/dcpomatic_kdm.cc:969 src/tools/dcpomatic_verifier.cc:502 #, c-format msgid "" "An exception occurred: %s.\n" @@ -280,7 +279,7 @@ msgstr "出现未知错误。" #: src/tools/dcpomatic_disk.cc:581 src/tools/dcpomatic_editor.cc:618 #: src/tools/dcpomatic_kdm.cc:975 src/tools/dcpomatic_kdm.cc:984 #: src/tools/dcpomatic_player.cc:1490 src/tools/dcpomatic_playlist.cc:746 -#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:484 +#: src/tools/dcpomatic_playlist.cc:755 src/tools/dcpomatic_verifier.cc:508 #, c-format msgid "An unknown exception occurred. %s" msgstr "出现未知错误。%s" @@ -294,11 +293,11 @@ msgstr "注释文本" msgid "" "Are you sure you want to restore preferences to their defaults? This cannot " "be undone." -msgstr "确定要恢复默认设置? 该操作不能撤销。" +msgstr "确定恢复默认偏好设置? 该操作不能撤销。" #: src/tools/dcpomatic_player.cc:709 msgid "Audio graph..." -msgstr "" +msgstr "音频图..." #: src/tools/dcpomatic.cc:878 #, c-format @@ -319,7 +318,7 @@ msgstr "该CPL未加密。" msgid "CPL: %s" msgstr "CPL: %s" -#: src/tools/dcpomatic_verifier.cc:199 +#: src/tools/dcpomatic_verifier.cc:206 msgid "Cancel" msgstr "取消" @@ -327,9 +326,9 @@ msgstr "取消" msgid "Check for updates" msgstr "检查更新" -#: src/tools/dcpomatic_verifier.cc:362 +#: src/tools/dcpomatic_verifier.cc:375 msgid "Checking KDM" -msgstr "" +msgstr "检查KDM" #: src/tools/dcpomatic_combiner.cc:68 src/tools/dcpomatic_disk.cc:84 msgid "Choose a DCP folder" @@ -372,11 +371,11 @@ msgstr "拷贝设置\tCtrl-C" msgid "Could not create folder to store film." msgstr "无法创建目录来存储影片。" -#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:354 +#: src/tools/dcpomatic_kdm.cc:652 src/tools/dcpomatic_verifier.cc:367 msgid "" "Could not decrypt the DKDM. Perhaps it was not created with the correct " "certificate." -msgstr "不能解开DKDM。 也许它不是用选定的证书所加密的。" +msgstr "无法解密DKDM。 也许它不是用选定证书所加密的。" #: src/tools/dcpomatic.cc:661 src/tools/dcpomatic.cc:678 msgid "Could not duplicate project." @@ -422,7 +421,7 @@ msgstr "" "\n" "%s。" -#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:357 +#: src/tools/dcpomatic_player.cc:829 src/tools/dcpomatic_verifier.cc:370 msgid "Could not load KDM." msgstr "无法载入KDM。" @@ -468,7 +467,7 @@ msgid "" "loading a DKDM (XML) file." msgstr "不能读取KDM。文件过大。请确保打开了正确的DKDM(XML)文件。" -#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:347 +#: src/tools/dcpomatic_kdm.cc:645 src/tools/dcpomatic_verifier.cc:360 msgid "" "Could not read file as a KDM. Perhaps it is badly formatted, or not a KDM " "at all." @@ -506,11 +505,11 @@ msgstr "无法启动播放器,你可能需要从dcpomatic.com下载。" #, c-format msgid "" "Could not write to config file at %s. Your changes have not been saved." -msgstr "不能保存设置%s。设置没有被保存。" +msgstr "不能保存设置到文件%s。你的修改没有被保存。" #: src/tools/dcpomatic_player.cc:1136 msgid "Could not write to config file. Your changes have not been saved." -msgstr "不能保存设置到文件。更改没有被保存。" +msgstr "不能保存设置到文件。你的修改没有被保存。" #: src/tools/dcpomatic_kdm.cc:239 msgid "Create KDMs" @@ -524,7 +523,7 @@ msgstr "创建者" msgid "Crop" msgstr "裁切" -#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:172 +#: src/tools/dcpomatic_disk.cc:139 src/tools/dcpomatic_verifier.cc:179 msgid "DCP" msgstr "DCP" @@ -532,7 +531,7 @@ msgstr "DCP" msgid "DCP-o-matic Encode Server" msgstr "DCP-o-matic编码服务器" -#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:146 +#: src/tools/dcpomatic_disk.cc:135 src/tools/dcpomatic_verifier.cc:149 msgid "DCPs" msgstr "DCPs" @@ -654,19 +653,17 @@ msgstr "加密的" msgid "Entry point" msgstr "入口点" -#: src/tools/dcpomatic_verifier.cc:156 -#, fuzzy +#: src/tools/dcpomatic_verifier.cc:152 msgid "Examining DCPs" -msgstr "正在组合DCP" +msgstr "正在检查DCPs" #: src/tools/dcpomatic.cc:1446 msgid "Export preferences..." msgstr "导出首选项设置..." #: src/tools/dcpomatic.cc:1418 -#, fuzzy msgid "Export subtitles...\tShift-Ctrl-E" -msgstr "导出字幕..." +msgstr "导出字幕...\tShift-Ctrl-E" #: src/tools/dcpomatic.cc:1417 msgid "Export video file...\tCtrl-E" @@ -683,7 +680,7 @@ msgstr "眼" #: src/tools/dcpomatic.cc:1041 src/tools/dcpomatic_kdm.cc:362 #, c-format msgid "File %s already exists. Do you want to overwrite it?" -msgstr "已存在文件 %s ,是否覆盖?" +msgstr "已存在文件 %s ,你是否想要覆盖?" #. TRANSLATORS: this is the heading for a dialog box, which tells the user that the current #. project (Film) has been changed since it was last saved. @@ -698,7 +695,7 @@ msgstr "查找磁盘" #: src/tools/dcpomatic_kdm.cc:357 #, c-format msgid "Folder %s already exists. Do you want to overwrite it?" -msgstr "已存在文件 %s 。是否覆盖?" +msgstr "已存在文件夹 %s 。你是否想要覆盖?" #: src/tools/dcpomatic_server.cc:169 msgid "Frames per second" @@ -957,10 +954,9 @@ msgstr "选择打开DCP" msgid "Select DCP to open as OV" msgstr "选择DCP作为OV打开" -#: src/tools/dcpomatic_verifier.cc:150 src/tools/dcpomatic_verifier.cc:152 -#, fuzzy +#: src/tools/dcpomatic_verifier.cc:165 src/tools/dcpomatic_verifier.cc:167 msgid "Select DCP(s)" -msgstr "选择KDM" +msgstr "选择DCP(s)" #: src/tools/dcpomatic_kdm.cc:821 msgid "Select DKDM File" @@ -970,7 +966,7 @@ msgstr "选择 DKDM 文件" msgid "Select DKDM file" msgstr "选择 DKDM 文件" -#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:335 +#: src/tools/dcpomatic_player.cc:810 src/tools/dcpomatic_verifier.cc:348 msgid "Select KDM" msgstr "选择KDM" @@ -1183,7 +1179,7 @@ msgstr "" "这似乎是 %s 项目文件夹,播放器无法加载。如果要播放,请选择 %s 项目文件夹中的" "DCP目录。" -#: src/tools/dcpomatic_verifier.cc:190 +#: src/tools/dcpomatic_verifier.cc:197 msgid "" "Tick to check details of the picture asset, such as frame sizes and JPEG2000 " "bitstream validity. These checks are quite time-consuming." @@ -1228,9 +1224,9 @@ msgstr "向上" #: src/tools/dcpomatic.cc:1455 msgid "User manual..." -msgstr "" +msgstr "用户手册..." -#: src/tools/dcpomatic_verifier.cc:201 +#: src/tools/dcpomatic_verifier.cc:208 msgid "Verify" msgstr "验证" @@ -1242,7 +1238,7 @@ msgstr "验证 DCP" msgid "Verify DCP..." msgstr "验证 DCP..." -#: src/tools/dcpomatic_verifier.cc:187 +#: src/tools/dcpomatic_verifier.cc:194 msgid "Verify picture asset details" msgstr "验证图像资产详细信息" @@ -1254,7 +1250,7 @@ msgstr "版本文件 (VF)…" msgid "Video waveform..." msgstr "视频波形…" -#: src/tools/dcpomatic_verifier.cc:194 +#: src/tools/dcpomatic_verifier.cc:201 msgid "Write logs to DCP folders" msgstr "记录日志到DCP文件夹中" diff --git a/src/wx/about_dialog.cc b/src/wx/about_dialog.cc index f3f9df968..09c60df8f 100644 --- a/src/wx/about_dialog.cc +++ b/src/wx/about_dialog.cc @@ -143,6 +143,7 @@ AboutDialog::AboutDialog(wxWindow* parent) translated_by.Add(char_to_wx("Theo Kooijmans")); translated_by.Add(char_to_wx("Carsten Kurz")); translated_by.Add(char_to_wx("Roman Kuznetsov")); + translated_by.Add(char_to_wx("Théo Lalanne")); translated_by.Add(char_to_wx("David Lankes")); translated_by.Add(char_to_wx("Sean Y. Leigh")); translated_by.Add(char_to_wx("Lilian Lefranc")); diff --git a/src/wx/audio_dialog.cc b/src/wx/audio_dialog.cc index e0fed493d..797c14356 100644 --- a/src/wx/audio_dialog.cc +++ b/src/wx/audio_dialog.cc @@ -59,12 +59,12 @@ using namespace boost::placeholders; * @param content Content to analyse, or 0 to analyse all of the film's audio. */ AudioDialog::AudioDialog(wxWindow* parent, shared_ptr<Film> film, shared_ptr<Content> content) - : wxDialog ( + : wxDialog( parent, wxID_ANY, _("Audio"), wxDefaultPosition, - wxSize (640, 512), + wxSize(640, 512), #ifdef DCPOMATIC_OSX /* I can't get wxFRAME_FLOAT_ON_PARENT to work on OS X, and although wxSTAY_ON_TOP keeps the window above all others (and not just our own) it's better than nothing for now. @@ -74,57 +74,57 @@ AudioDialog::AudioDialog(wxWindow* parent, shared_ptr<Film> film, shared_ptr<Con wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxFULL_REPAINT_ON_RESIZE | wxFRAME_FLOAT_ON_PARENT #endif ) - , _film (film) - , _content (content) - , _channels (film->audio_channels ()) - , _plot (nullptr) + , _film(film) + , _content(content) + , _channels(film->audio_channels()) + , _plot(nullptr) { - wxFont subheading_font (*wxNORMAL_FONT); - subheading_font.SetWeight (wxFONTWEIGHT_BOLD); + wxFont subheading_font(*wxNORMAL_FONT); + subheading_font.SetWeight(wxFONTWEIGHT_BOLD); - auto overall_sizer = new wxBoxSizer (wxVERTICAL); - auto lr_sizer = new wxBoxSizer (wxHORIZONTAL); + auto overall_sizer = new wxBoxSizer(wxVERTICAL); + auto lr_sizer = new wxBoxSizer(wxHORIZONTAL); - auto left = new wxBoxSizer (wxVERTICAL); + auto left = new wxBoxSizer(wxVERTICAL); _cursor = new StaticText(this, char_to_wx("Cursor: none")); - left->Add (_cursor, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); + left->Add(_cursor, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); _plot = new AudioPlot(this); - left->Add (_plot, 1, wxTOP | wxEXPAND, 12); + left->Add(_plot, 1, wxTOP | wxEXPAND, 12); _sample_peak = new StaticText(this, {}); - left->Add (_sample_peak, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); + left->Add(_sample_peak, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); _true_peak = new StaticText(this, {}); - left->Add (_true_peak, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); + left->Add(_true_peak, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); _integrated_loudness = new StaticText(this, {}); - left->Add (_integrated_loudness, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); + left->Add(_integrated_loudness, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); _loudness_range = new StaticText(this, {}); - left->Add (_loudness_range, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); + left->Add(_loudness_range, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); _leqm = new StaticText(this, {}); - left->Add (_leqm, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); + left->Add(_leqm, 0, wxTOP, DCPOMATIC_SIZER_Y_GAP); - lr_sizer->Add (left, 1, wxALL | wxEXPAND, 12); + lr_sizer->Add(left, 1, wxALL | wxEXPAND, 12); - auto right = new wxBoxSizer (wxVERTICAL); + auto right = new wxBoxSizer(wxVERTICAL); { - auto m = new StaticText (this, _("Channels")); - m->SetFont (subheading_font); - right->Add (m, 1, wxTOP | wxBOTTOM, 16); + auto m = new StaticText(this, _("Channels")); + m->SetFont(subheading_font); + right->Add(m, 1, wxTOP | wxBOTTOM, 16); } for (int i = 0; i < MAX_DCP_AUDIO_CHANNELS; ++i) { - _channel_checkbox[i] = new CheckBox (this, std_to_wx(audio_channel_name(i))); + _channel_checkbox[i] = new CheckBox(this, std_to_wx(audio_channel_name(i))); _channel_checkbox[i]->SetForegroundColour(wxColour(_plot->colour(i))); - right->Add (_channel_checkbox[i], 0, wxEXPAND | wxALL, 3); + right->Add(_channel_checkbox[i], 0, wxEXPAND | wxALL, 3); _channel_checkbox[i]->bind(&AudioDialog::channel_clicked, this, _1); } - show_or_hide_channel_checkboxes (); + show_or_hide_channel_checkboxes(); { - auto m = new StaticText (this, _("Type")); - m->SetFont (subheading_font); - right->Add (m, 1, wxTOP, 16); + auto m = new StaticText(this, _("Type")); + m->SetFont(subheading_font); + right->Add(m, 1, wxTOP, 16); } wxString const types[] = { @@ -133,39 +133,39 @@ AudioDialog::AudioDialog(wxWindow* parent, shared_ptr<Film> film, shared_ptr<Con }; for (int i = 0; i < AudioPoint::COUNT; ++i) { - _type_checkbox[i] = new CheckBox (this, types[i]); - right->Add (_type_checkbox[i], 0, wxEXPAND | wxALL, 3); + _type_checkbox[i] = new CheckBox(this, types[i]); + right->Add(_type_checkbox[i], 0, wxEXPAND | wxALL, 3); _type_checkbox[i]->bind(&AudioDialog::type_clicked, this, _1); } { - auto m = new StaticText (this, _("Smoothing")); - m->SetFont (subheading_font); - right->Add (m, 1, wxTOP, 16); + auto m = new StaticText(this, _("Smoothing")); + m->SetFont(subheading_font); + right->Add(m, 1, wxTOP, 16); } - _smoothing = new wxSlider (this, wxID_ANY, AudioPlot::max_smoothing / 2, 1, AudioPlot::max_smoothing); - _smoothing->Bind (wxEVT_SCROLL_THUMBTRACK, boost::bind (&AudioDialog::smoothing_changed, this)); - right->Add (_smoothing, 0, wxEXPAND); + _smoothing = new wxSlider(this, wxID_ANY, AudioPlot::max_smoothing / 2, 1, AudioPlot::max_smoothing); + _smoothing->Bind(wxEVT_SCROLL_THUMBTRACK, boost::bind(&AudioDialog::smoothing_changed, this)); + right->Add(_smoothing, 0, wxEXPAND); - lr_sizer->Add (right, 0, wxALL, 12); + lr_sizer->Add(right, 0, wxALL, 12); - overall_sizer->Add (lr_sizer, 0, wxEXPAND); + overall_sizer->Add(lr_sizer, 0, wxEXPAND); #ifdef DCPOMATIC_LINUX - auto buttons = CreateSeparatedButtonSizer (wxCLOSE); + auto buttons = CreateSeparatedButtonSizer(wxCLOSE); if (buttons) { - overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder()); + overall_sizer->Add(buttons, wxSizerFlags().Expand().DoubleBorder()); } #endif - SetSizer (overall_sizer); - overall_sizer->Layout (); - overall_sizer->SetSizeHints (this); + SetSizer(overall_sizer); + overall_sizer->Layout(); + overall_sizer->SetSizeHints(this); _plot->Click.connect(boost::ref(Seek)); - _film_connection = film->Change.connect (boost::bind(&AudioDialog::film_change, this, _1, _2)); + _film_connection = film->Change.connect(boost::bind(&AudioDialog::film_change, this, _1, _2)); _film_content_connection = film->ContentChange.connect(boost::bind(&AudioDialog::content_change, this, _1, _2)); if (content) { SetTitle(wxString::Format(_("%s audio - %s"), variant::wx::dcpomatic(), std_to_wx(content->path_for_display().string()))); @@ -179,80 +179,80 @@ AudioDialog::AudioDialog(wxWindow* parent, shared_ptr<Film> film, shared_ptr<Con _playlist = make_shared<Playlist>(); const_pointer_cast<Playlist>(_playlist)->add(film, content); } else { - _playlist = film->playlist (); + _playlist = film->playlist(); } - _plot->Cursor.connect (bind (&AudioDialog::set_cursor, this, _1, _2)); + _plot->Cursor.connect(bind(&AudioDialog::set_cursor, this, _1, _2)); } void -AudioDialog::show_or_hide_channel_checkboxes () +AudioDialog::show_or_hide_channel_checkboxes() { for (int i = 0; i < _channels; ++i) { - _channel_checkbox[i]->Show (); + _channel_checkbox[i]->Show(); } for (int i = _channels; i < MAX_DCP_AUDIO_CHANNELS; ++i) { - _channel_checkbox[i]->Hide (); + _channel_checkbox[i]->Hide(); } } void -AudioDialog::try_to_load_analysis () +AudioDialog::try_to_load_analysis() { - if (!IsShown ()) { + if (!IsShown()) { return; } - auto film = _film.lock (); - DCPOMATIC_ASSERT (film); + auto film = _film.lock(); + DCPOMATIC_ASSERT(film); auto check = _content.lock(); - auto const path = film->audio_analysis_path (_playlist); + auto const path = film->audio_analysis_path(_playlist); if (!dcp::filesystem::exists(path)) { - _plot->set_analysis (shared_ptr<AudioAnalysis> ()); - _analysis.reset (); + _plot->set_analysis(shared_ptr<AudioAnalysis>()); + _analysis.reset(); for (auto i: JobManager::instance()->get()) { if (dynamic_pointer_cast<AnalyseAudioJob>(i)) { - i->cancel (); + i->cancel(); } } - JobManager::instance()->analyse_audio ( - film, _playlist, !static_cast<bool>(check), _analysis_finished_connection, bind (&AudioDialog::analysis_finished, this) + JobManager::instance()->analyse_audio( + film, _playlist, !static_cast<bool>(check), _analysis_finished_connection, bind(&AudioDialog::analysis_finished, this) ); return; } try { - _analysis.reset (new AudioAnalysis (path)); + _analysis.reset(new AudioAnalysis(path)); } catch (OldFormatError& e) { /* An old analysis file: recreate it */ - JobManager::instance()->analyse_audio ( - film, _playlist, !static_cast<bool>(check), _analysis_finished_connection, bind (&AudioDialog::analysis_finished, this) + JobManager::instance()->analyse_audio( + film, _playlist, !static_cast<bool>(check), _analysis_finished_connection, bind(&AudioDialog::analysis_finished, this) ); return; } catch (xmlpp::exception& e) { /* Probably a (very) old-style analysis file: recreate it */ - JobManager::instance()->analyse_audio ( - film, _playlist, !static_cast<bool>(check), _analysis_finished_connection, bind (&AudioDialog::analysis_finished, this) + JobManager::instance()->analyse_audio( + film, _playlist, !static_cast<bool>(check), _analysis_finished_connection, bind(&AudioDialog::analysis_finished, this) ); return; } - _plot->set_analysis (_analysis); - _plot->set_gain_correction (_analysis->gain_correction (_playlist)); - setup_statistics (); - show_or_hide_channel_checkboxes (); + _plot->set_analysis(_analysis); + _plot->set_gain_correction(_analysis->gain_correction(_playlist)); + setup_statistics(); + show_or_hide_channel_checkboxes(); /* Set up some defaults if no check boxes are checked */ int i = 0; - while (i < _channels && (!_channel_checkbox[i] || !_channel_checkbox[i]->GetValue ())) { + while (i < _channels && (!_channel_checkbox[i] || !_channel_checkbox[i]->GetValue())) { ++i; } @@ -260,41 +260,41 @@ AudioDialog::try_to_load_analysis () /* Nothing checked; check mapped ones */ list<int> mapped; - auto content = _content.lock (); + auto content = _content.lock(); if (content) { - mapped = content->audio->mapping().mapped_output_channels (); + mapped = content->audio->mapping().mapped_output_channels(); } else { - mapped = film->mapped_audio_channels (); + mapped = film->mapped_audio_channels(); } for (auto i: mapped) { if (_channel_checkbox[i]) { - _channel_checkbox[i]->SetValue (true); - _plot->set_channel_visible (i, true); + _channel_checkbox[i]->SetValue(true); + _plot->set_channel_visible(i, true); } } } i = 0; - while (i < AudioPoint::COUNT && !_type_checkbox[i]->GetValue ()) { + while (i < AudioPoint::COUNT && !_type_checkbox[i]->GetValue()) { i++; } if (i == AudioPoint::COUNT) { for (int i = 0; i < AudioPoint::COUNT; ++i) { - _type_checkbox[i]->SetValue (true); - _plot->set_type_visible (i, true); + _type_checkbox[i]->SetValue(true); + _plot->set_type_visible(i, true); } } - Refresh (); + Refresh(); } void -AudioDialog::analysis_finished () +AudioDialog::analysis_finished() { - auto film = _film.lock (); + auto film = _film.lock(); if (!film) { /* This should not happen, but if it does we should just give up quietly */ return; @@ -304,24 +304,24 @@ AudioDialog::analysis_finished () /* We analysed and still nothing showed up, so maybe it was cancelled or it failed. Give up. */ - _plot->set_message (_("Could not analyse audio.")); + _plot->set_message(_("Could not analyse audio.")); return; } - try_to_load_analysis (); + try_to_load_analysis(); } void -AudioDialog::channel_clicked (wxCommandEvent& ev) +AudioDialog::channel_clicked(wxCommandEvent& ev) { int c = 0; while (c < _channels && ev.GetEventObject() != _channel_checkbox[c]) { ++c; } - DCPOMATIC_ASSERT (c < _channels); + DCPOMATIC_ASSERT(c < _channels); - _plot->set_channel_visible (c, _channel_checkbox[c]->GetValue ()); + _plot->set_channel_visible(c, _channel_checkbox[c]->GetValue()); } void @@ -332,16 +332,16 @@ AudioDialog::film_change(ChangeType type, FilmProperty p) } if (p == FilmProperty::AUDIO_CHANNELS) { - auto film = _film.lock (); + auto film = _film.lock(); if (film) { - _channels = film->audio_channels (); - try_to_load_analysis (); + _channels = film->audio_channels(); + try_to_load_analysis(); } } } void -AudioDialog::content_change (ChangeType type, int p) +AudioDialog::content_change(ChangeType type, int p) { if (type != ChangeType::DONE) { return; @@ -349,61 +349,61 @@ AudioDialog::content_change (ChangeType type, int p) switch (p) { case AudioContentProperty::STREAMS: - try_to_load_analysis (); + try_to_load_analysis(); break; case AudioContentProperty::GAIN: if (_playlist->content().size() == 1 && _analysis) { /* We can use a short-cut to render the effect of this change, rather than recalculating everything. */ - _plot->set_gain_correction (_analysis->gain_correction (_playlist)); - setup_statistics (); + _plot->set_gain_correction(_analysis->gain_correction(_playlist)); + setup_statistics(); } else { - try_to_load_analysis (); + try_to_load_analysis(); } break; } } void -AudioDialog::type_clicked (wxCommandEvent& ev) +AudioDialog::type_clicked(wxCommandEvent& ev) { int t = 0; while (t < AudioPoint::COUNT && ev.GetEventObject() != _type_checkbox[t]) { ++t; } - DCPOMATIC_ASSERT (t < AudioPoint::COUNT); + DCPOMATIC_ASSERT(t < AudioPoint::COUNT); - _plot->set_type_visible (t, _type_checkbox[t]->GetValue ()); + _plot->set_type_visible(t, _type_checkbox[t]->GetValue()); } void -AudioDialog::smoothing_changed () +AudioDialog::smoothing_changed() { - _plot->set_smoothing (_smoothing->GetValue ()); + _plot->set_smoothing(_smoothing->GetValue()); } void -AudioDialog::setup_statistics () +AudioDialog::setup_statistics() { if (!_analysis) { return; } - auto film = _film.lock (); + auto film = _film.lock(); if (!film) { return; } - auto const peak = _analysis->overall_sample_peak (); + auto const peak = _analysis->overall_sample_peak(); float const peak_dB = linear_to_db(peak.first.peak) + _analysis->gain_correction(_playlist); - _sample_peak->SetLabel ( - wxString::Format ( + _sample_peak->SetLabel( + wxString::Format( _("Sample peak is %.2fdB at %s on %s"), peak_dB, - time_to_timecode (peak.first.time, film->video_frame_rate ()).data (), - std_to_wx (short_audio_channel_name (peak.second)).data () + time_to_timecode(peak.first.time, film->video_frame_rate()).data(), + std_to_wx(short_audio_channel_name(peak.second)).data() ) ); @@ -420,7 +420,7 @@ AudioDialog::setup_statistics () float const peak = _analysis->overall_true_peak().get(); float const peak_dB = linear_to_db(peak) + _analysis->gain_correction(_playlist); - _true_peak->SetLabel (wxString::Format (_("True peak is %.2fdB"), peak_dB)); + _true_peak->SetLabel(wxString::Format(_("True peak is %.2fdB"), peak_dB)); if (peak_dB > -3) { _true_peak->SetForegroundColour(peaking); @@ -432,19 +432,19 @@ AudioDialog::setup_statistics () /* XXX: check whether it's ok to add dB gain to these quantities */ if (static_cast<bool>(_analysis->integrated_loudness())) { - _integrated_loudness->SetLabel ( - wxString::Format ( + _integrated_loudness->SetLabel( + wxString::Format( _("Integrated loudness %.2f LUFS"), - _analysis->integrated_loudness().get() + _analysis->gain_correction (_playlist) + _analysis->integrated_loudness().get() + _analysis->gain_correction(_playlist) ) ); } if (static_cast<bool>(_analysis->loudness_range())) { - _loudness_range->SetLabel ( - wxString::Format ( + _loudness_range->SetLabel( + wxString::Format( _("Loudness range %.2f LU"), - _analysis->loudness_range().get() + _analysis->gain_correction (_playlist) + _analysis->loudness_range().get() + _analysis->gain_correction(_playlist) ) ); } @@ -459,22 +459,22 @@ AudioDialog::setup_statistics () } bool -AudioDialog::Show (bool show) +AudioDialog::Show(bool show) { - bool const r = wxDialog::Show (show); - try_to_load_analysis (); + bool const r = wxDialog::Show(show); + try_to_load_analysis(); return r; } void -AudioDialog::set_cursor (optional<DCPTime> time, optional<float> db) +AudioDialog::set_cursor(optional<DCPTime> time, optional<float> db) { if (!time || !db) { - _cursor->SetLabel (_("Cursor: none")); + _cursor->SetLabel(_("Cursor: none")); return; } auto film = _film.lock(); - DCPOMATIC_ASSERT (film); + DCPOMATIC_ASSERT(film); _cursor->SetLabel(wxString::Format(_("Cursor: %.1fdB at %s"), *db, std_to_wx(time->timecode(film->video_frame_rate())))); } diff --git a/src/wx/audio_dialog.h b/src/wx/audio_dialog.h index 2085a7220..d4a8a9b00 100644 --- a/src/wx/audio_dialog.h +++ b/src/wx/audio_dialog.h @@ -49,22 +49,22 @@ class AudioDialog : public wxDialog public: AudioDialog(wxWindow* parent, std::shared_ptr<Film> film, std::shared_ptr<Content> content = std::shared_ptr<Content>()); - bool Show (bool show = true) override; + bool Show(bool show = true) override; - void set_cursor (boost::optional<dcpomatic::DCPTime> time, boost::optional<float> db); + void set_cursor(boost::optional<dcpomatic::DCPTime> time, boost::optional<float> db); boost::signals2::signal<void (dcpomatic::DCPTime)> Seek; private: void film_change(ChangeType, FilmProperty); - void content_change (ChangeType, int); - void channel_clicked (wxCommandEvent &); - void type_clicked (wxCommandEvent &); - void smoothing_changed (); - void try_to_load_analysis (); - void analysis_finished (); - void setup_statistics (); - void show_or_hide_channel_checkboxes (); + void content_change(ChangeType, int); + void channel_clicked(wxCommandEvent &); + void type_clicked(wxCommandEvent &); + void smoothing_changed(); + void try_to_load_analysis(); + void analysis_finished(); + void setup_statistics(); + void show_or_hide_channel_checkboxes(); std::shared_ptr<AudioAnalysis> _analysis; std::weak_ptr<Film> _film; diff --git a/src/wx/controls.cc b/src/wx/controls.cc index fce3fd7eb..708cc9a5d 100644 --- a/src/wx/controls.cc +++ b/src/wx/controls.cc @@ -279,7 +279,7 @@ Controls::update_position_label() { if (!_film) { checked_set(_frame_number, char_to_wx("0")); - checked_set(_timecode, char_to_wx("0:0:0.0")); + checked_set(_timecode, char_to_wx("0:0:0:0")); return; } diff --git a/src/wx/dcp_panel.cc b/src/wx/dcp_panel.cc index 8f5c8fe7f..a69da7c1f 100644 --- a/src/wx/dcp_panel.cc +++ b/src/wx/dcp_panel.cc @@ -913,29 +913,23 @@ DCPPanel::add_video_panel_to_grid() int r = 0; add_label_to_sizer(_video_grid, _container_label, true, wxGBPosition(r, 0)); - { - auto s = new wxBoxSizer(wxHORIZONTAL); - s->Add(_container, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_X_GAP); - s->Add(_container_size, 1, wxLEFT | wxALIGN_CENTER_VERTICAL); - _video_grid->Add(s, wxGBPosition(r, 1)); - ++r; - } + _video_grid->Add(_container, wxGBPosition(r, 1), wxDefaultSpan, wxEXPAND); + _video_grid->Add(_container_size, wxGBPosition(r, 2), wxDefaultSpan, wxALIGN_CENTER_VERTICAL); + ++r; add_label_to_sizer(_video_grid, _resolution_label, true, wxGBPosition(r, 0)); - _video_grid->Add(_resolution, wxGBPosition(r, 1)); + _video_grid->Add(_resolution, wxGBPosition(r, 1), wxDefaultSpan, wxEXPAND); ++r; add_label_to_sizer(_video_grid, _frame_rate_label, true, wxGBPosition(r, 0)); - { - _frame_rate_sizer = new wxBoxSizer(wxHORIZONTAL); - _frame_rate_sizer->Add(_frame_rate_choice, 1, wxALIGN_CENTER_VERTICAL); - _frame_rate_sizer->Add(_frame_rate_spin, 1, wxALIGN_CENTER_VERTICAL); - _frame_rate_sizer->Add(_best_frame_rate, 1, wxLEFT | wxALIGN_CENTER_VERTICAL, DCPOMATIC_SIZER_X_GAP); - _video_grid->Add(_frame_rate_sizer, wxGBPosition(r, 1)); - ++r; - } + _frame_rate_sizer = new wxBoxSizer(wxHORIZONTAL); + _frame_rate_sizer->Add(_frame_rate_choice, 1, wxALIGN_CENTER_VERTICAL); + _frame_rate_sizer->Add(_frame_rate_spin, 1, wxALIGN_CENTER_VERTICAL); + _video_grid->Add(_frame_rate_sizer, wxGBPosition(r, 1), wxDefaultSpan, wxEXPAND); + _video_grid->Add(_best_frame_rate, wxGBPosition(r, 2)); + ++r; - _video_grid->Add(_three_d, wxGBPosition(r, 0), wxGBSpan(1, 2)); + _video_grid->Add(_three_d, wxGBPosition(r, 0), wxGBSpan(1, 3)); ++r; add_label_to_sizer(_video_grid, _video_bit_rate_label, true, wxGBPosition(r, 0)); @@ -944,7 +938,7 @@ DCPPanel::add_video_panel_to_grid() add_label_to_sizer(s, _mbits_label, false, 0, wxLEFT | wxALIGN_CENTER_VERTICAL); _video_grid->Add(s, wxGBPosition(r, 1), wxDefaultSpan); ++r; - _video_grid->Add(_reencode_j2k, wxGBPosition(r, 0), wxGBSpan(1, 2)); + _video_grid->Add(_reencode_j2k, wxGBPosition(r, 0), wxGBSpan(1, 3)); } diff --git a/src/wx/editable_list.h b/src/wx/editable_list.h index 4b0a48f44..ede66da1c 100644 --- a/src/wx/editable_list.h +++ b/src/wx/editable_list.h @@ -36,15 +36,15 @@ LIBDCP_ENABLE_WARNINGS class EditableListColumn { public: - EditableListColumn (wxString name_) - : name (name_) - , growable (false) + EditableListColumn(wxString name_) + : name(name_) + , growable(false) {} - EditableListColumn (wxString name_, boost::optional<int> width_, bool growable_) - : name (name_) - , width (width_) - , growable (growable_) + EditableListColumn(wxString name_, boost::optional<int> width_, bool growable_) + : name(name_) + , width(width_) + , growable(growable_) {} wxString name; @@ -77,7 +77,7 @@ template<class T> class EditableList : public wxPanel { public: - EditableList ( + EditableList( wxWindow* parent, std::vector<EditableListColumn> columns, std::function<std::vector<T> ()> get, @@ -89,17 +89,17 @@ public: int buttons, boost::optional<wxString> custom_button = {} ) - : wxPanel (parent) - , _get (get) - , _set (set) + : wxPanel(parent) + , _get(get) + , _set(set) , _add(add) , _edit(edit) - , _columns (columns) - , _column (column) - , _default_width (200) + , _columns(columns) + , _column(column) + , _default_width(200) { - _sizer = new wxBoxSizer (wxHORIZONTAL); - SetSizer (_sizer); + _sizer = new wxBoxSizer(wxHORIZONTAL); + SetSizer(_sizer); long style = wxLC_REPORT | wxLC_SINGLE_SEL; if (title == EditableListTitle::INVISIBLE) { @@ -108,18 +108,18 @@ public: int total_width = 0; for (auto i: _columns) { - total_width += i.width.get_value_or (_default_width); + total_width += i.width.get_value_or(_default_width); } #ifdef __WXGTK3__ /* With the GTK3 backend wxListCtrls are hard to pick out from the background of the * window, so put a border in to help. */ - auto border = new wxPanel (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_THEME); + auto border = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_THEME); _list = new wxListCtrl(border, wxID_ANY, wxDefaultPosition, wxSize(total_width, -1), style); - auto border_sizer = new wxBoxSizer (wxHORIZONTAL); - border_sizer->Add (_list, 1, wxALL | wxEXPAND, 2); - border->SetSizer (border_sizer); + auto border_sizer = new wxBoxSizer(wxHORIZONTAL); + border_sizer->Add(_list, 1, wxALL | wxEXPAND, 2); + border->SetSizer(border_sizer); #else _list = new wxListCtrl(this, wxID_ANY, wxDefaultPosition, wxSize(total_width, -1), style); #endif @@ -127,20 +127,20 @@ public: int j = 0; for (auto i: _columns) { wxListItem ip; - ip.SetId (j); - ip.SetText (i.name); - _list->InsertColumn (j, ip); + ip.SetId(j); + ip.SetText(i.name); + _list->InsertColumn(j, ip); ++j; } #ifdef __WXGTK3__ - _sizer->Add (border, 1, wxEXPAND); + _sizer->Add(border, 1, wxEXPAND); #else - _sizer->Add (_list, 1, wxEXPAND); + _sizer->Add(_list, 1, wxEXPAND); #endif { - auto s = new wxBoxSizer (wxVERTICAL); + auto s = new wxBoxSizer(wxVERTICAL); if (buttons & EditableListButton::NEW) { _add_button = new Button(this, _("Add...")); s->Add(_add_button, 1, wxEXPAND | wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP); @@ -157,7 +157,7 @@ public: _remove_button = new Button(this, _("Remove")); s->Add(_remove_button, 1, wxEXPAND | wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP); } - _sizer->Add (s, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP); + _sizer->Add(s, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP); } if (_add_button) { @@ -170,43 +170,43 @@ public: _remove_button->Bind(wxEVT_COMMAND_BUTTON_CLICKED, boost::bind(&EditableList::remove_clicked, this)); } - _list->Bind (wxEVT_COMMAND_LIST_ITEM_SELECTED, boost::bind (&EditableList::selection_changed, this)); - _list->Bind (wxEVT_COMMAND_LIST_ITEM_DESELECTED, boost::bind (&EditableList::selection_changed, this)); + _list->Bind(wxEVT_COMMAND_LIST_ITEM_SELECTED, boost::bind(&EditableList::selection_changed, this)); + _list->Bind(wxEVT_COMMAND_LIST_ITEM_DESELECTED, boost::bind(&EditableList::selection_changed, this)); #if BOOST_VERSION >= 106100 - _list->Bind (wxEVT_SIZE, boost::bind (&EditableList::resized, this, boost::placeholders::_1)); + _list->Bind(wxEVT_SIZE, boost::bind(&EditableList::resized, this, boost::placeholders::_1)); #else - _list->Bind (wxEVT_SIZE, boost::bind (&EditableList::resized, this, _1)); + _list->Bind(wxEVT_SIZE, boost::bind(&EditableList::resized, this, _1)); #endif - refresh (); - selection_changed (); + refresh(); + selection_changed(); } - void refresh () + void refresh() { - _list->DeleteAllItems (); + _list->DeleteAllItems(); - auto current = _get (); + auto current = _get(); for (auto const& i: current) { - add_to_control (i); + add_to_control(i); } } - boost::optional<T> selection () const + boost::optional<T> selection() const { - int item = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + int item = _list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item == -1) { return {}; } - auto all = _get (); - DCPOMATIC_ASSERT (item >= 0 && item < int (all.size ())); + auto all = _get(); + DCPOMATIC_ASSERT(item >= 0 && item < int(all.size())); return all[item]; } - void layout () + void layout() { - _sizer->Layout (); + _sizer->Layout(); } Button* custom_button() @@ -244,21 +244,21 @@ public: private: - void add_to_control (T item) + void add_to_control(T item) { wxListItem list_item; - int const n = _list->GetItemCount (); - list_item.SetId (n); - _list->InsertItem (list_item); + int const n = _list->GetItemCount(); + list_item.SetId(n); + _list->InsertItem(list_item); for (size_t i = 0; i < _columns.size(); ++i) { - _list->SetItem (n, i, std_to_wx (_column (item, i))); + _list->SetItem(n, i, std_to_wx(_column(item, i))); } } - void selection_changed () + void selection_changed() { - int const i = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + int const i = _list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (_edit_button) { _edit_button->Enable(i >= 0); } @@ -266,10 +266,10 @@ private: _remove_button->Enable(i >= 0); } - SelectionChanged (); + SelectionChanged(); } - void add_clicked () + void add_clicked() { auto all = _get(); for (auto item: _add(this)) { @@ -279,41 +279,41 @@ private: _set(all); } - void edit_clicked () + void edit_clicked() { - int item = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + int item = _list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item == -1) { return; } - std::vector<T> all = _get (); - DCPOMATIC_ASSERT (item >= 0 && item < int (all.size ())); + std::vector<T> all = _get(); + DCPOMATIC_ASSERT(item >= 0 && item < int(all.size())); _edit(this, all[item]); for (size_t i = 0; i < _columns.size(); ++i) { - _list->SetItem (item, i, std_to_wx (_column (all[item], i))); + _list->SetItem(item, i, std_to_wx(_column(all[item], i))); } - _set (all); + _set(all); } - void remove_clicked () + void remove_clicked() { - int i = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + int i = _list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (i == -1) { return; } - _list->DeleteItem (i); - auto all = _get (); - all.erase (all.begin() + i); - _set (all); + _list->DeleteItem(i); + auto all = _get(); + all.erase(all.begin() + i); + _set(all); - selection_changed (); + selection_changed(); } - void resized (wxSizeEvent& ev) + void resized(wxSizeEvent& ev) { int const w = _list->GetSize().GetWidth() - 2; @@ -321,9 +321,9 @@ private: int growable = 0; int j = 0; for (auto i: _columns) { - fixed_width += i.width.get_value_or (_default_width); + fixed_width += i.width.get_value_or(_default_width); if (!i.growable) { - _list->SetColumnWidth (j, i.width.get_value_or(_default_width)); + _list->SetColumnWidth(j, i.width.get_value_or(_default_width)); } else { ++growable; } @@ -333,12 +333,12 @@ private: j = 0; for (auto i: _columns) { if (i.growable) { - _list->SetColumnWidth (j, i.width.get_value_or(_default_width) + (w - fixed_width) / growable); + _list->SetColumnWidth(j, i.width.get_value_or(_default_width) + (w - fixed_width) / growable); } ++j; } - ev.Skip (); + ev.Skip(); } std::function <std::vector<T> ()> _get; diff --git a/src/wx/film_name_location_dialog.cc b/src/wx/film_name_location_dialog.cc index 893b789f9..0ac7cc98a 100644 --- a/src/wx/film_name_location_dialog.cc +++ b/src/wx/film_name_location_dialog.cc @@ -27,6 +27,7 @@ #include "dir_picker_ctrl.h" #endif #include "lib/config.h" +#include <dcp/filesystem.h> #include <dcp/warnings.h> LIBDCP_DISABLE_WARNINGS #include <wx/stdpaths.h> @@ -139,7 +140,7 @@ FilmNameLocationDialog::template_name () const bool FilmNameLocationDialog::check_path () { - if (boost::filesystem::is_directory(path()) && !boost::filesystem::is_empty(path())) { + if (dcp::filesystem::is_directory(path()) && !dcp::filesystem::is_empty(path())) { if (!confirm_dialog ( this, wxString::Format( @@ -149,7 +150,7 @@ FilmNameLocationDialog::check_path () )) { return false; } - } else if (boost::filesystem::is_regular_file(path())) { + } else if (dcp::filesystem::is_regular_file(path())) { error_dialog ( this, wxString::Format(_("%s already exists as a file, so you cannot use it for a film."), std_to_wx(path().string())) diff --git a/src/wx/full_language_tag_dialog.cc b/src/wx/full_language_tag_dialog.cc index 89987715a..0d0936696 100644 --- a/src/wx/full_language_tag_dialog.cc +++ b/src/wx/full_language_tag_dialog.cc @@ -52,76 +52,75 @@ using namespace boost::placeholders; #endif -FullLanguageTagDialog::FullLanguageTagDialog (wxWindow* parent, dcp::LanguageTag tag) - : wxDialog (parent, wxID_ANY, _("Language Tag"), wxDefaultPosition, wxSize(-1, 500)) +FullLanguageTagDialog::FullLanguageTagDialog(wxWindow* parent, dcp::LanguageTag tag) + : wxDialog(parent, wxID_ANY, _("Language Tag"), wxDefaultPosition, wxSize(-1, 500)) { - _current_tag_list = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_SINGLE_SEL | wxLC_NO_HEADER); + _current_tag_list = new wxListCtrl(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT | wxLC_SINGLE_SEL | wxLC_NO_HEADER); _current_tag_list->AppendColumn({}, wxLIST_FORMAT_LEFT, 200); _current_tag_list->AppendColumn({}, wxLIST_FORMAT_LEFT, 400); - auto button_sizer = new wxBoxSizer (wxVERTICAL); + auto button_sizer = new wxBoxSizer(wxVERTICAL); _add_script = new wxButton(this, wxID_ANY, _("Add script")); - button_sizer->Add (_add_script, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); + button_sizer->Add(_add_script, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); _add_region = new wxButton(this, wxID_ANY, _("Add region")); - button_sizer->Add (_add_region, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); + button_sizer->Add(_add_region, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); _add_variant = new wxButton(this, wxID_ANY, _("Add variant")); - button_sizer->Add (_add_variant, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); + button_sizer->Add(_add_variant, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); _add_extended = new wxButton(this, wxID_ANY, _("Add extended")); button_sizer->Add(_add_extended, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); _remove = new wxButton(this, wxID_ANY, _("Remove")); - button_sizer->Add (_remove, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); + button_sizer->Add(_remove, 0, wxTOP | wxBOTTOM | wxEXPAND, 2); - _choose_subtag_panel = new LanguageSubtagPanel (this); - _choose_subtag_panel->set (dcp::LanguageTag::SubtagType::LANGUAGE, ""); + _choose_subtag_panel = new LanguageSubtagPanel(this); + _choose_subtag_panel->set(dcp::LanguageTag::SubtagType::LANGUAGE, ""); - auto ltor_sizer = new wxBoxSizer (wxHORIZONTAL); - ltor_sizer->Add (_current_tag_list, 1, wxALL, 8); - ltor_sizer->Add (button_sizer, 0, wxALL, 8); - ltor_sizer->Add (_choose_subtag_panel, 1, wxALL, 8); + auto ltor_sizer = new wxBoxSizer(wxHORIZONTAL); + ltor_sizer->Add(_current_tag_list, 1, wxALL, 8); + ltor_sizer->Add(button_sizer, 0, wxALL, 8); + ltor_sizer->Add(_choose_subtag_panel, 1, wxALL, 8); - auto overall_sizer = new wxBoxSizer (wxVERTICAL); - overall_sizer->Add (ltor_sizer, 0); + auto overall_sizer = new wxBoxSizer(wxVERTICAL); + overall_sizer->Add(ltor_sizer, 0); - auto buttons = CreateSeparatedButtonSizer (wxOK); - if (buttons) { - overall_sizer->Add (buttons, wxSizerFlags().Expand().DoubleBorder()); + if (auto buttons = CreateSeparatedButtonSizer(wxOK)) { + overall_sizer->Add(buttons, wxSizerFlags().Expand().DoubleBorder()); } - SetSizerAndFit (overall_sizer); + SetSizerAndFit(overall_sizer); - set (tag); + set(tag); - _add_script->Bind (wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::SCRIPT, boost::optional<dcp::LanguageTag::SubtagData>())); - _add_region->Bind (wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::REGION, boost::optional<dcp::LanguageTag::SubtagData>())); - _add_variant->Bind (wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::VARIANT, boost::optional<dcp::LanguageTag::SubtagData>())); + _add_script->Bind(wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::SCRIPT, boost::optional<dcp::LanguageTag::SubtagData>())); + _add_region->Bind(wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::REGION, boost::optional<dcp::LanguageTag::SubtagData>())); + _add_variant->Bind(wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::VARIANT, boost::optional<dcp::LanguageTag::SubtagData>())); _add_extended->Bind(wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::add_to_current_tag, this, dcp::LanguageTag::SubtagType::EXTLANG, boost::optional<dcp::LanguageTag::SubtagData>())); - _remove->Bind (wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::remove_from_current_tag, this)); + _remove->Bind(wxEVT_BUTTON, boost::bind(&FullLanguageTagDialog::remove_from_current_tag, this)); _choose_subtag_panel->SelectionChanged.connect(bind(&FullLanguageTagDialog::chosen_subtag_changed, this, _1)); _choose_subtag_panel->SearchChanged.connect(bind(&FullLanguageTagDialog::search_changed, this, _1)); - _current_tag_list->Bind (wxEVT_LIST_ITEM_SELECTED, boost::bind(&FullLanguageTagDialog::current_tag_selection_changed, this)); - _current_tag_list->Bind (wxEVT_LIST_ITEM_DESELECTED, boost::bind(&FullLanguageTagDialog::current_tag_selection_changed, this)); + _current_tag_list->Bind(wxEVT_LIST_ITEM_SELECTED, boost::bind(&FullLanguageTagDialog::current_tag_selection_changed, this)); + _current_tag_list->Bind(wxEVT_LIST_ITEM_DESELECTED, boost::bind(&FullLanguageTagDialog::current_tag_selection_changed, this)); } void -FullLanguageTagDialog::remove_from_current_tag () +FullLanguageTagDialog::remove_from_current_tag() { - auto selected = _current_tag_list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + auto selected = _current_tag_list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (selected <= 0) { return; } - _current_tag_subtags.erase (_current_tag_subtags.begin() + selected); - _current_tag_list->DeleteItem (selected); + _current_tag_subtags.erase(_current_tag_subtags.begin() + selected); + _current_tag_list->DeleteItem(selected); - _current_tag_list->SetItemState (min(selected, _current_tag_list->GetItemCount() - 1L), wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); + _current_tag_list->SetItemState(min(selected, _current_tag_list->GetItemCount() - 1L), wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); - setup_sensitivity (); - current_tag_selection_changed (); + setup_sensitivity(); + current_tag_selection_changed(); } -dcp::LanguageTag FullLanguageTagDialog::get () const +dcp::LanguageTag FullLanguageTagDialog::get() const { dcp::LanguageTag tag; @@ -134,50 +133,50 @@ dcp::LanguageTag FullLanguageTagDialog::get () const } switch (i.type) { case dcp::LanguageTag::SubtagType::LANGUAGE: - tag.set_language (i.subtag->subtag); + tag.set_language(i.subtag->subtag); break; case dcp::LanguageTag::SubtagType::SCRIPT: - tag.set_script (i.subtag->subtag); + tag.set_script(i.subtag->subtag); break; case dcp::LanguageTag::SubtagType::REGION: - tag.set_region (i.subtag->subtag); + tag.set_region(i.subtag->subtag); break; case dcp::LanguageTag::SubtagType::VARIANT: - variants.push_back (i.subtag->subtag); + variants.push_back(i.subtag->subtag); break; case dcp::LanguageTag::SubtagType::EXTLANG: - extlangs.push_back (i.subtag->subtag); + extlangs.push_back(i.subtag->subtag); break; } } - tag.set_variants (variants); - tag.set_extlangs (extlangs); + tag.set_variants(variants); + tag.set_extlangs(extlangs); return tag; } void -FullLanguageTagDialog::set (dcp::LanguageTag tag) +FullLanguageTagDialog::set(dcp::LanguageTag tag) { - _current_tag_subtags.clear (); - _current_tag_list->DeleteAllItems (); + _current_tag_subtags.clear(); + _current_tag_list->DeleteAllItems(); bool have_language = false; for (auto const& i: tag.subtags()) { - add_to_current_tag (i.first, i.second); + add_to_current_tag(i.first, i.second); if (i.first == dcp::LanguageTag::SubtagType::LANGUAGE) { have_language = true; } } if (!have_language) { - add_to_current_tag (dcp::LanguageTag::SubtagType::LANGUAGE, dcp::LanguageTag::SubtagData("en", "English")); + add_to_current_tag(dcp::LanguageTag::SubtagType::LANGUAGE, dcp::LanguageTag::SubtagData("en", "English")); } } -string FullLanguageTagDialog::subtag_type_name (dcp::LanguageTag::SubtagType type) +string FullLanguageTagDialog::subtag_type_name(dcp::LanguageTag::SubtagType type) { switch (type) { case dcp::LanguageTag::SubtagType::LANGUAGE: @@ -197,9 +196,9 @@ string FullLanguageTagDialog::subtag_type_name (dcp::LanguageTag::SubtagType typ void -FullLanguageTagDialog::search_changed (string search) +FullLanguageTagDialog::search_changed(string search) { - long int selected = _current_tag_list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + long int selected = _current_tag_list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (selected >= 0) { _current_tag_subtags[selected].last_search = search; } @@ -207,75 +206,75 @@ FullLanguageTagDialog::search_changed (string search) void -FullLanguageTagDialog::add_to_current_tag (dcp::LanguageTag::SubtagType type, optional<dcp::LanguageTag::SubtagData> subtag) +FullLanguageTagDialog::add_to_current_tag(dcp::LanguageTag::SubtagType type, optional<dcp::LanguageTag::SubtagData> subtag) { - _current_tag_subtags.push_back (Subtag(type, subtag)); + _current_tag_subtags.push_back(Subtag(type, subtag)); wxListItem it; - it.SetId (_current_tag_list->GetItemCount()); - it.SetColumn (0); + it.SetId(_current_tag_list->GetItemCount()); + it.SetColumn(0); it.SetText(std_to_wx(subtag_type_name(type))); - _current_tag_list->InsertItem (it); - it.SetColumn (1); + _current_tag_list->InsertItem(it); + it.SetColumn(1); if (subtag) { it.SetText(std_to_wx(subtag->description)); } else { it.SetText(_("Select...")); } - _current_tag_list->SetItem (it); - _current_tag_list->SetItemState (_current_tag_list->GetItemCount() - 1, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); - _choose_subtag_panel->set (type, ""); - setup_sensitivity (); - current_tag_selection_changed (); + _current_tag_list->SetItem(it); + _current_tag_list->SetItemState(_current_tag_list->GetItemCount() - 1, wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED); + _choose_subtag_panel->set(type, ""); + setup_sensitivity(); + current_tag_selection_changed(); } void -FullLanguageTagDialog::current_tag_selection_changed () +FullLanguageTagDialog::current_tag_selection_changed() { - auto selected = _current_tag_list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + auto selected = _current_tag_list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (selected >= 0) { - _choose_subtag_panel->Enable (true); - _choose_subtag_panel->set (_current_tag_subtags[selected].type, _current_tag_subtags[selected].last_search, _current_tag_subtags[selected].subtag); + _choose_subtag_panel->Enable(true); + _choose_subtag_panel->set(_current_tag_subtags[selected].type, _current_tag_subtags[selected].last_search, _current_tag_subtags[selected].subtag); } else { - _choose_subtag_panel->Enable (false); + _choose_subtag_panel->Enable(false); } } void -FullLanguageTagDialog::chosen_subtag_changed (optional<dcp::LanguageTag::SubtagData> selection) +FullLanguageTagDialog::chosen_subtag_changed(optional<dcp::LanguageTag::SubtagData> selection) { if (!selection) { return; } - auto selected = _current_tag_list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + auto selected = _current_tag_list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (selected >= 0) { _current_tag_subtags[selected].subtag = *selection; _current_tag_list->SetItem(selected, 0, std_to_wx(subtag_type_name(_current_tag_subtags[selected].type))); _current_tag_list->SetItem(selected, 1, std_to_wx(selection->description)); } - setup_sensitivity (); + setup_sensitivity(); } void -FullLanguageTagDialog::setup_sensitivity () +FullLanguageTagDialog::setup_sensitivity() { - _add_script->Enable (); - _add_region->Enable (); - _add_variant->Enable (); + _add_script->Enable(); + _add_region->Enable(); + _add_variant->Enable(); _add_extended->Enable(); for (auto const& i: _current_tag_subtags) { switch (i.type) { case dcp::LanguageTag::SubtagType::SCRIPT: - _add_script->Enable (false); + _add_script->Enable(false); break; case dcp::LanguageTag::SubtagType::REGION: - _add_region->Enable (false); + _add_region->Enable(false); break; case dcp::LanguageTag::SubtagType::VARIANT: - _add_variant->Enable (false); + _add_variant->Enable(false); break; case dcp::LanguageTag::SubtagType::EXTLANG: _add_extended->Enable(false); @@ -284,7 +283,7 @@ FullLanguageTagDialog::setup_sensitivity () break; } } - auto selected = _current_tag_list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); - _remove->Enable (selected > 0); + auto selected = _current_tag_list->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); + _remove->Enable(selected > 0); } diff --git a/src/wx/full_language_tag_dialog.h b/src/wx/full_language_tag_dialog.h index 883b50dfb..0a256f016 100644 --- a/src/wx/full_language_tag_dialog.h +++ b/src/wx/full_language_tag_dialog.h @@ -43,9 +43,9 @@ public: class Subtag { public: - Subtag (dcp::LanguageTag::SubtagType type_, boost::optional<dcp::LanguageTag::SubtagData> subtag_) - : type (type_) - , subtag (subtag_) + Subtag(dcp::LanguageTag::SubtagType type_, boost::optional<dcp::LanguageTag::SubtagData> subtag_) + : type(type_) + , subtag(subtag_) {} dcp::LanguageTag::SubtagType type; @@ -53,20 +53,20 @@ public: std::string last_search; }; - FullLanguageTagDialog (wxWindow* parent, dcp::LanguageTag tag = dcp::LanguageTag("en")); + FullLanguageTagDialog(wxWindow* parent, dcp::LanguageTag tag = dcp::LanguageTag("en")); - dcp::LanguageTag get () const; - void set (dcp::LanguageTag tag); + dcp::LanguageTag get() const; + void set(dcp::LanguageTag tag); private: - std::string subtag_type_name (dcp::LanguageTag::SubtagType type); - void search_changed (std::string search); - void add_to_current_tag (dcp::LanguageTag::SubtagType type, boost::optional<dcp::LanguageTag::SubtagData> subtag); - void remove_from_current_tag (); - void current_tag_selection_changed (); - void chosen_subtag_changed (boost::optional<dcp::LanguageTag::SubtagData> selection); - void setup_sensitivity (); + std::string subtag_type_name(dcp::LanguageTag::SubtagType type); + void search_changed(std::string search); + void add_to_current_tag(dcp::LanguageTag::SubtagType type, boost::optional<dcp::LanguageTag::SubtagData> subtag); + void remove_from_current_tag(); + void current_tag_selection_changed(); + void chosen_subtag_changed(boost::optional<dcp::LanguageTag::SubtagData> selection); + void setup_sensitivity(); std::vector<Subtag> _current_tag_subtags; wxListCtrl* _current_tag_list; diff --git a/src/wx/gl_video_view.cc b/src/wx/gl_video_view.cc index a04cb3000..1fea68218 100644 --- a/src/wx/gl_video_view.cc +++ b/src/wx/gl_video_view.cc @@ -71,6 +71,7 @@ using namespace dcpomatic::gl; GLVideoView::GLVideoView(FilmViewer* viewer, wxWindow *parent, bool wake) : VideoView(viewer, wake) , _context(nullptr) + , _canvas_size(wxSize{}) , _rec2020(false) , _vsync_enabled(false) , _playing(false) diff --git a/src/wx/gl_video_view.h b/src/wx/gl_video_view.h index 35f4aeeda..fc40cee33 100644 --- a/src/wx/gl_video_view.h +++ b/src/wx/gl_video_view.h @@ -45,9 +45,9 @@ LIBDCP_ENABLE_WARNINGS #include "lib/signaller.h" #include "lib/position.h" #include <dcp/util.h> -#include <boost/atomic.hpp> #include <boost/thread.hpp> #include <boost/thread/condition.hpp> +#include <atomic> class Texture @@ -146,8 +146,8 @@ private: Last<Crop> _last_crop; Last<boost::optional<dcpomatic::Rect<float>>> _last_crop_guess; - boost::atomic<wxSize> _canvas_size; - boost::atomic<bool> _rec2020; + std::atomic<wxSize> _canvas_size; + std::atomic<bool> _rec2020; std::vector<std::unique_ptr<Texture>> _video_textures; std::unique_ptr<Texture> _subtitle_texture; bool _have_subtitle_to_render = false; @@ -156,8 +156,8 @@ private: boost::mutex _playing_mutex; boost::condition _thread_work_condition; - boost::atomic<bool> _playing; - boost::atomic<Request> _pending_request; + std::atomic<bool> _playing; + std::atomic<Request> _pending_request; GLuint _vao; dcpomatic::gl::Uniform1i _fragment_type; diff --git a/src/wx/kdm_dialog.cc b/src/wx/kdm_dialog.cc index 97aa835c6..11b2901b9 100644 --- a/src/wx/kdm_dialog.cc +++ b/src/wx/kdm_dialog.cc @@ -63,80 +63,80 @@ using namespace boost::placeholders; #endif -KDMDialog::KDMDialog (wxWindow* parent, shared_ptr<const Film> film) - : wxDialog (parent, wxID_ANY, _("Make KDMs")) - , _film (film) +KDMDialog::KDMDialog(wxWindow* parent, shared_ptr<const Film> film) + : wxDialog(parent, wxID_ANY, _("Make KDMs")) + , _film(film) { /* Main sizers */ - auto horizontal = new wxBoxSizer (wxHORIZONTAL); - auto left = new wxBoxSizer (wxVERTICAL); - auto right = new wxBoxSizer (wxVERTICAL); + auto horizontal = new wxBoxSizer(wxHORIZONTAL); + auto left = new wxBoxSizer(wxVERTICAL); + auto right = new wxBoxSizer(wxVERTICAL); - horizontal->Add (left, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_X_GAP * 4); - horizontal->Add (right, 1, wxEXPAND); + horizontal->Add(left, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_X_GAP * 4); + horizontal->Add(right, 1, wxEXPAND); /* Font for sub-headings */ - wxFont subheading_font (*wxNORMAL_FONT); - subheading_font.SetWeight (wxFONTWEIGHT_BOLD); + wxFont subheading_font(*wxNORMAL_FONT); + subheading_font.SetWeight(wxFONTWEIGHT_BOLD); /* Sub-heading: Screens */ - auto h = new StaticText (this, _("Screens")); - h->SetFont (subheading_font); - left->Add (h, 0, wxBOTTOM, DCPOMATIC_SIZER_Y_GAP); - _screens = new ScreensPanel (this); - left->Add (_screens, 1, wxEXPAND | wxBOTTOM, DCPOMATIC_SIZER_Y_GAP); + auto h = new StaticText(this, _("Screens")); + h->SetFont(subheading_font); + left->Add(h, 0, wxBOTTOM, DCPOMATIC_SIZER_Y_GAP); + _screens = new ScreensPanel(this); + left->Add(_screens, 1, wxEXPAND | wxBOTTOM, DCPOMATIC_SIZER_Y_GAP); /* Sub-heading: Timing */ /// TRANSLATORS: translate the word "Timing" here; do not include the "KDM|" prefix - h = new StaticText (this, S_("KDM|Timing")); - h->SetFont (subheading_font); - right->Add (h); - _timing = new KDMTimingPanel (this); - right->Add (_timing); + h = new StaticText(this, S_("KDM|Timing")); + h->SetFont(subheading_font); + right->Add(h); + _timing = new KDMTimingPanel(this); + right->Add(_timing); /* Sub-heading: CPL */ - h = new StaticText (this, _("CPL")); - h->SetFont (subheading_font); - right->Add (h); + h = new StaticText(this, _("CPL")); + h->SetFont(subheading_font); + right->Add(h); vector<dcp::CPLSummary> cpls; for (auto const& i: film->cpls()) { if (i.encrypted) { - cpls.push_back (i); + cpls.push_back(i); } } - _cpl = new KDMCPLPanel (this, cpls); - right->Add (_cpl, 0, wxEXPAND); + _cpl = new KDMCPLPanel(this, cpls); + right->Add(_cpl, 0, wxEXPAND); /* Sub-heading: Output */ - h = new StaticText (this, _("Output")); - h->SetFont (subheading_font); + h = new StaticText(this, _("Output")); + h->SetFont(subheading_font); right->Add(h, 0, wxTOP, DCPOMATIC_SUBHEADING_TOP_PAD); _output = new TallKDMOutputPanel(this); - right->Add (_output, 0, wxEXPAND | wxTOP, DCPOMATIC_SIZER_GAP); + right->Add(_output, 0, wxEXPAND | wxTOP, DCPOMATIC_SIZER_GAP); - _make = new Button (this, _("Make KDMs")); - right->Add (_make, 0, wxTOP | wxBOTTOM, DCPOMATIC_SIZER_GAP); + _make = new Button(this, _("Make KDMs")); + right->Add(_make, 0, wxTOP | wxBOTTOM, DCPOMATIC_SIZER_GAP); /* Make an overall sizer to get a nice border */ - auto overall_sizer = new wxBoxSizer (wxVERTICAL); - overall_sizer->Add (horizontal, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, DCPOMATIC_DIALOG_BORDER); + auto overall_sizer = new wxBoxSizer(wxVERTICAL); + overall_sizer->Add(horizontal, 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, DCPOMATIC_DIALOG_BORDER); /* Bind */ _screens->ScreensChanged.connect(boost::bind(&KDMDialog::screens_changed, this)); - _timing->TimingChanged.connect (boost::bind (&KDMDialog::setup_sensitivity, this)); - _make->Bind (wxEVT_BUTTON, boost::bind (&KDMDialog::make_clicked, this)); + _timing->TimingChanged.connect(boost::bind(&KDMDialog::setup_sensitivity, this)); + _make->Bind(wxEVT_BUTTON, boost::bind(&KDMDialog::make_clicked, this)); _cpl->Changed.connect(boost::bind(&KDMDialog::cpl_changed, this)); cpl_changed(); - setup_sensitivity (); + setup_sensitivity(); - SetSizer (overall_sizer); - overall_sizer->Layout (); - overall_sizer->SetSizeHints (this); + SetSizer(overall_sizer); + overall_sizer->Layout(); + overall_sizer->SetSizeHints(this); } @@ -162,29 +162,29 @@ KDMDialog::cpl_changed() void -KDMDialog::setup_sensitivity () +KDMDialog::setup_sensitivity() { - _screens->setup_sensitivity (); - _output->setup_sensitivity (); - _make->Enable (!_screens->screens().empty() && _timing->valid() && _cpl->has_selected()); + _screens->setup_sensitivity(); + _output->setup_sensitivity(); + _make->Enable(!_screens->screens().empty() && _timing->valid() && _cpl->has_selected()); } bool -KDMDialog::confirm_overwrite (boost::filesystem::path path) +KDMDialog::confirm_overwrite(boost::filesystem::path path) { - return confirm_dialog ( + return confirm_dialog( this, - wxString::Format (_("File %s already exists. Do you want to overwrite it?"), std_to_wx(path.string()).data()) + wxString::Format(_("File %s already exists. Do you want to overwrite it?"), std_to_wx(path.string()).data()) ); } void -KDMDialog::make_clicked () +KDMDialog::make_clicked() { - auto film = _film.lock (); - DCPOMATIC_ASSERT (film); + auto film = _film.lock(); + DCPOMATIC_ASSERT(film); list<KDMWithMetadataPtr> kdms; try { @@ -200,7 +200,7 @@ KDMDialog::make_clicked () vector<KDMCertificatePeriod> period_checks; - std::function<dcp::DecryptedKDM (dcp::LocalTime, dcp::LocalTime)> make_kdm = [film, this](dcp::LocalTime begin, dcp::LocalTime end) { + std::function<dcp::DecryptedKDM(dcp::LocalTime, dcp::LocalTime)> make_kdm = [film, this](dcp::LocalTime begin, dcp::LocalTime end) { return film->make_kdm(_cpl->cpl(), begin, end); }; @@ -220,7 +220,7 @@ KDMDialog::make_clicked () period_checks ); if (p) { - kdms.push_back (p); + kdms.push_back(p); } } @@ -238,7 +238,7 @@ KDMDialog::make_clicked () } catch (dcp::BadKDMDateError& e) { if (e.starts_too_early()) { - error_dialog (this, _("The KDM start period is before (or close to) the start of the signing certificate's validity period. Use a later start time for this KDM.")); + error_dialog(this, _("The KDM start period is before (or close to) the start of the signing certificate's validity period. Use a later start time for this KDM.")); } else { error_dialog( this, @@ -250,21 +250,21 @@ KDMDialog::make_clicked () } return; } catch (runtime_error& e) { - error_dialog (this, std_to_wx(e.what())); + error_dialog(this, std_to_wx(e.what())); return; } - auto result = _output->make(kdms, film->dcp_name(), bind (&KDMDialog::confirm_overwrite, this, _1)); + auto result = _output->make(kdms, film->dcp_name(), bind(&KDMDialog::confirm_overwrite, this, _1)); if (result.first) { - JobManager::instance()->add (result.first); + JobManager::instance()->add(result.first); } if (result.second > 0) { /* XXX: proper plural form support in wxWidgets? */ wxString s = result.second == 1 ? _("%d KDM written to %s") : _("%d KDMs written to %s"); - message_dialog ( + message_dialog( this, - wxString::Format (s, result.second, std_to_wx(_output->directory().string()).data()) + wxString::Format(s, result.second, std_to_wx(_output->directory().string()).data()) ); } } diff --git a/src/wx/kdm_dialog.h b/src/wx/kdm_dialog.h index b6e4b7604..168fb2544 100644 --- a/src/wx/kdm_dialog.h +++ b/src/wx/kdm_dialog.h @@ -44,12 +44,12 @@ class ScreensPanel; class KDMDialog : public wxDialog { public: - KDMDialog (wxWindow *, std::shared_ptr<const Film> film); + KDMDialog(wxWindow *, std::shared_ptr<const Film> film); private: - void setup_sensitivity (); - void make_clicked (); - bool confirm_overwrite (boost::filesystem::path path); + void setup_sensitivity(); + void make_clicked(); + bool confirm_overwrite(boost::filesystem::path path); void cpl_changed(); void screens_changed(); diff --git a/src/wx/po/cs_CZ.po b/src/wx/po/cs_CZ.po index c5982fb6c..40ac7474b 100644 --- a/src/wx/po/cs_CZ.po +++ b/src/wx/po/cs_CZ.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2025-06-11 07:36+0200\n" "Last-Translator: Tomáš Begeni <begeni@razdva.cz>\n" "Language-Team: DCP-o-matic translators\n" @@ -237,15 +237,15 @@ msgstr "96kHz" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" -msgstr "<IssueDate> má neplatnou hodnotu %n" +msgid "<IssueDate> has an invalid value %issue_date" +msgstr "<IssueDate> má neplatnou hodnotu %issue_date" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" -msgstr "<MainSoundConfiguration> ie neplatný (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" +msgstr "<MainSoundConfiguration> ie neplatný (%error)" #: src/wx/subtitle_appearance_dialog.cc:118 msgid "<b>New colour</b>" @@ -267,70 +267,80 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." -msgstr "Rámeček 2K JPEG2000 obsahuje %n dílů dlaždic místo 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." +msgstr "Rámeček 2K JPEG2000 obsahuje %tile_parts dílů dlaždic místo 3." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "Snímek 2K JPEG2000 obsahuje neplatnou hodnotu Rsiz (capabilities) %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "" +"Snímek 2K JPEG2000 obsahuje neplatnou hodnotu Rsiz (capabilities) " +"%capabilities" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "Rámeček 2K JPEG2000 má %n POP místo 0 značek." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "Rámeček 2K JPEG2000 má %guard_bits ochranných bitů místo 1." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "Rámeček 2K JPEG2000 má %n ochranných bitů místo 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "Rámeček 2K JPEG2000 má %poc_markers POP místo 0 značek." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." -msgstr "Rámeček 4K JPEG2000 obsahuje %n dílků dlaždic místo 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." +msgstr "Rámeček 4K JPEG2000 obsahuje %tile_parts dílků dlaždic místo 6." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "Rámec 4K JPEG2000 obsahuje neplatnou hodnotu Rsiz (capabilities) %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "" +"Rámec 4K JPEG2000 obsahuje neplatnou hodnotu Rsiz (capabilities) " +"%capabilities" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "Rámeček 4K JPEG2000 má %n POC značek místo 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "Rámeček 4K JPEG2000 má %guard_bits ochranných bitů místo 2." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "Rámeček 4K JPEG2000 má %n ochranných bitů místo 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "Rámeček 4K JPEG2000 má %poc_markers POC značek místo 1." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "Snímek JPEG2000 obsahuje značku POC na nesprávném místě." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "Snímek JPEG2000 obsahuje neplatnou značku POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "Rámec JPEG2000 má výšku kódového bloku %n namísto 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "Rámec JPEG2000 má výšku kódového bloku %code_block_height namísto 32." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "Rámec JPEG2000 má šířku kódového bloku %n namísto 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "Rámec JPEG2000 má šířku kódového bloku %code_block_width namísto 32." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "Rámeček JPEG2000 nemá žádnou značku TLM." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "Velikost dlaždice JPEG2000 neodpovídá velikosti obrázku." @@ -339,21 +349,21 @@ msgstr "Velikost dlaždice JPEG2000 neodpovídá velikosti obrázku." msgid "A new version of %s is available." msgstr "K dispozici je nová verze %s." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "Snímek má neplatný kódový tok JPEG2000 (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "Snímek má neplatný kódový tok JPEG2000 (%error)." #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "Při hledání tipů došlo k problému (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "Titulky jsou delší, než je reel." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -564,14 +574,14 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Podporováno také" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "Dílo má v ASSETMAP prázdnou cestu." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." -msgstr "Byl použit neplatný <ContentKind> %n." +msgid "An invalid <ContentKind> %content_kind has been used." +msgstr "Byl použit neplatný <ContentKind> %content_kind." #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 msgid "An unknown exception occurred." @@ -617,24 +627,24 @@ msgstr "" "Opravdu chcete odeslat e-maily na následující adresy? \n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "Alespoň jeden uzel <Text> v titulku nebo uzavřeném titulku je prázdný." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "Jeden asset v reel nemá stejnou dobu trvání jako ostatní." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "Alespoň jedna dvojice titulků je oddělena méně než 2 snímky." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "Alespoň jeden titulek má nulovou nebo zápornou délku trvání." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "Alespoň jeden titulek vydrží méně než 15 snímků." @@ -860,10 +870,10 @@ msgstr "Soubor databáze filmu a obrazovky" msgid "Click the button to set all selected content to the same value." msgstr "Kliknutím na tlačítko nastavíte veškerý obsah na stejné hodnoty." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "Asset skrytých titulků %n má nenulovou hodnotu <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "Asset skrytých titulků %asset_id má nenulovou hodnotu <EntryPoint>." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1005,10 +1015,10 @@ msgstr "Nelze načíst certifikát (%s)" msgid "Could not play content" msgstr "Obsah nelze přehrát" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" -msgstr "Nelze načíst DCP (%n)" +msgid "Could not read DCP (%error)" +msgstr "Nelze načíst DCP (%error)" #: src/wx/gl_video_view.cc:131 #, c-format @@ -1554,7 +1564,7 @@ msgstr "Forenzní označení videa" msgid "Format" msgstr "Formát" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1563,7 +1573,7 @@ msgstr "" "Snímek %frame (časový kód %timecode) v aktivu %f má okamžitou přenosovou " "rychlost blízkou limitu 250Mbit/s." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1572,14 +1582,14 @@ msgstr "" "Snímek %frame (časový kód %timecode) v aktivu %f má okamžitou přenosovou " "rychlost, která přesahuje limit 250Mbit/s." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" "Snímek %frame obsahuje komponentu obrázku, která je příliš velká (komponenta " -"%component má velikost %size bytů)." +"%component má velikost %size_in_bytes bytů)." #: src/wx/dcp_panel.cc:868 msgid "Frame Rate" @@ -2190,70 +2200,70 @@ msgstr "Metadata…" msgid "Mix audio down to stereo" msgstr "Mix zvuk do sterea" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "Více snímků 2K JPEG2000 (neuvedených) obsahuje nesprávný počet částí dlaždic." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "Více snímků 2K JPEG2000 (neuvedených) má nesprávný počet ochranných bitů." -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "Další snímky 2K JPEG2000 (neuvedené) mají příliš mnoho značek POC." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "Více snímků 4K JPEG2000 (neuvedených) má neplatný počet ochranných bitů." -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "Více snímků 4K JPEG2000 (neuvedených) má příliš mnoho značek POC." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" "Více snímků JPEG2000 (neuvedených) obsahuje značky POC na neplatných místech." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "Více snímků JPEG2000 (neuvedených) obsahuje neplatné značky POC." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "Více snímků JPEG2000 (neuvedených) obsahuje neplatné hodnoty Rsiz." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "Více snímků JPEG2000 (neuvedených) obsahuje nesprávný počet částí dlaždic." -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "Více snímků JPEG2000 (neuvedených) má neplatnou výšku bloku kódu." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "More JPEG2000 frames (not listed) have an invalid code-block width." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "Další snímky JPEG2000 (neuvedené) nemají značku TLM." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" "Další velikosti dlaždic JPEG2000 (neuvedené) neodpovídají velikosti obrázku." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." @@ -2261,7 +2271,7 @@ msgstr "" "Více snímků (neuvedených) má okamžitou přenosovou rychlost, která se blíží " "limitu 250 Mbit/s." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." @@ -2269,11 +2279,11 @@ msgstr "" "Více snímků (neuvedených v seznamu) má okamžitou přenosovou rychlost vyšší " "než limit 250 Mbit/s." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "Další snímky (neuvedené v seznamu) mají příliš velké obrazové složky." -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" "Další snímky (neuvedené v seznamu) mají neplatné kódové proudy JPEG2000." @@ -2363,7 +2373,7 @@ msgstr "Další" msgid "No" msgstr "Žádný" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "Nebyl nalezen žádný soubor ASSETMAP nebo ASSETMAP.xml." @@ -2371,7 +2381,7 @@ msgstr "Nebyl nalezen žádný soubor ASSETMAP nebo ASSETMAP.xml." msgid "No DCP loaded." msgstr "DCP nebyl načten." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "Nebyly nalezeny žádné chyby SMPTE Bv2.1." @@ -2384,11 +2394,11 @@ msgstr "Z %s channel '%s' do %s channel '%s’ nebude přidán žádný zvuk." msgid "No content found in this folder." msgstr "Žádný obsah nebyl ve složce nalezen." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "Nebyly nalezeny žádné chyby." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "Nebyla nalezena žádná varování." @@ -2402,7 +2412,7 @@ msgstr "Nestandardní" msgid "None" msgstr "Žádný" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "Ne všechny asset titulky mají zadanou stejnou <Language> značku." @@ -2531,12 +2541,12 @@ msgstr "Přepsat zjištěnou snímkovou frekvenci videa" msgid "Overwrite this file with current configuration" msgstr "Přepsat tento soubor aktuální konfigurací" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" "Část DCP nebylo možné zkontrolovat, protože nebyl k dispozici žádný KDM." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3050,7 +3060,7 @@ msgstr "Vybrat soubor protokolu ladění" msgid "Select output file" msgstr "Vybrat výstupní soubor" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "Vybrat…" @@ -3220,7 +3230,7 @@ msgstr "" "Některé KDM by měly doby platnosti, které jsou mimo období platnosti " "certifikátu příjemce. Co chceš dělat?" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." @@ -3228,7 +3238,7 @@ msgstr "" "Některé uzavřené uzly <Text> nebo <Obrázek> mají v rámci <Nápisu> různé " "vertikální zarovnání." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3239,7 +3249,7 @@ msgstr "" msgid "Sound" msgstr "Zvuk" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "Všechny zvuková assety nemají stejný počet kanálů." @@ -3322,10 +3332,10 @@ msgstr "Odběratelé" msgid "Subtitle appearance" msgstr "Vzhled titulků" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "Datový zdroj titulků %n má nenulový <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "Datový zdroj titulků %asset_id má nenulový <EntryPoint>." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3408,23 +3418,23 @@ msgstr "Testeři" msgid "The 'until' time must be after the 'from' time." msgstr "Čas 'do' musí být po čase 'od’." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "<LabelText> v <ContentVersion> v CPL %cpl je prázdný" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "<MainPictureActiveArea> buď není násobkem 2, nebo je větší než asset." -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." -msgstr "ASSETMAP %n má více než jeden asset se stejným ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." +msgstr "ASSETMAP %asset_map_id má více než jeden asset se stejným ID." -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." @@ -3432,7 +3442,7 @@ msgstr "" "ID datového zdroje v časování textu MXF je stejné jako ID prostředku nebo ID " "obsaženého XML." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " @@ -3440,57 +3450,57 @@ msgid "" msgstr "" "CPL %cpl má <AnnotationText>který není stejný jako jeho <ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "CPL %cpl má neplatný prostor názvů %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "CPL %cpl má neplatný prostor názvů %xml_namespace" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "CPL %cpl má zašifrovaný obsah, ale není podepsaný." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "CPL %cpl nemá značku <AnnotationText>." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "CPL %cpl nemá značku <ContentVersion>" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "CPL %cpl nemá metadatovou značku rozšíření CPL." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "CPL %cpl nemá metadatovou značku CPL." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "CPL %cpl nemá značku s číslem verze metadat CPL." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "CPL %f má neplatnou značku metadat rozšíření CPL (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "CPL %f má neplatnou značku metadat rozšíření CPL (%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "DCP má FFOC %n místo 1." +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "DCP má FFOC %time místo 1." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." -msgstr "DCP má LFOC %n namísto doby trvání reelu minus jedna." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." +msgstr "DCP má LFOC %time namísto doby trvání reelu minus jedna." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." @@ -3498,30 +3508,30 @@ msgstr "" "DCP má uzavřené titulky, ale ne každý reel má stejný počet datových zdrojů " "skrytých titulků." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "DCP má šifrovaný obsah, ale ne všechny jeho prostředky jsou šifrovány." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "DCP nemá žádnou značku FFOC (první snímek obsahu)." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "DCP nemá žádnou značku LFOC (poslední snímek obsahu)." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "DCP má titulky, ale alespoň jeden reel nemá žádný asset titulků." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" "DCP je funkce, ale nemá žádnou značku FFEC (první snímek závěrečných " "titulků)." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3546,115 +3556,119 @@ msgstr "" "Počáteční období KDM je před (nebo téměř) začátkem doby platnosti " "podpisového certifikátu. Použijte pro tento KDM pozdější čas zahájení." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "PKL %f má neplatný jmenný prostor %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "PKL %f má neplatný jmenný prostor %xml_namespace" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"PKL %n má <AnnotationText> který neodpovídá jeho CPL <ContentTitleText>." +"PKL %pkl má <AnnotationText> který neodpovídá jeho CPL <ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "PKL %n má šifrovaný obsah, ale není podepsaný." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "PKL %pkl má šifrovaný obsah, ale není podepsaný." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "PKL %n má více než jeden asset se stejným ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "PKL %pkl_id má více než jeden asset se stejným ID." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "Hodnoty hash PKL a CPL nesouhlasí s obrázkem datového zdroje %f." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "Hodnoty hash PKL a CPL nesouhlasí se zvukovým zařízením %f." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "ID prostředku v časované textové mxf neodpovídá ID obsaženého XML." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "Titulky SMPTE %asset_id má uzly <Text>, ale žádný uzel <LoadFont>" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "XML v %f je poškozený (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "XML v %f je poškozený (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "XML v %f je poškozený na řádku %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "XML v %f je poškozený na řádku %l (%error)." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -"Kód XML v uzavřeném datovém zdroji titulku %f zabírá %n bajtů, což je více " -"než limit 256 KB." +"Kód XML v uzavřeném datovém zdroji titulku %f zabírá %size_in_bytes bajtů, " +"což je více než limit 256 KB." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." -msgstr "XML v aktivu titulků %n má více než jednu deklaraci jmenného prostoru." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." +msgstr "" +"XML v aktivu titulků %asset_id má více než jednu deklaraci jmenného prostoru." -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "Datový zdroj %f je 3D, ale jeho MXF je označen jako 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "" +"Datový zdroj %asset_id má dobu trvání kratší než 1 vteřinu, což je neplatné." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "Datový zdroj %f chybí." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" +"Datový zdroj %asset_id má intrinsickou dobu trvání kratší než 1 sekundu, " +"která je neplatná." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "Datový zdroj %n má dobu trvání kratší než 1 vteřinu, což je neplatné." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "Datový zdroj %asset_id nemá <Hash> v CPL." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "" -"Datový zdroj %n má intrinsickou dobu trvání kratší než 1 sekundu, která je " -"neplatná." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "Datový zdroj %f je 3D, ale jeho MXF je označen jako 2D." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "Datový zdroj %n nemá <Hash> v CPL." +msgid "The asset %f is missing." +msgstr "Datový zdroj %f chybí." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "Dílo s ID %asset_id v mapě aktiv má ve skutečnosti id %other_asset_id" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "Uzavřený titulek majetku %n nemá <EntryPoint> značky." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "Uzavřený titulek majetku %asset_id nemá <EntryPoint> značky." #: src/wx/film_name_location_dialog.cc:146 #, c-format @@ -3696,31 +3710,31 @@ msgstr "" "Soubor %s již existuje. Chcete jej použít jako novou konfiguraci nebo jej " "přepsat s aktuální konfigurací?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" "První titulky nebo skrytý titulky se odehrává před 4s do prvního reealu." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -"Soubor fontu pro ID fontu „%n“ nebyl nalezen nebo na něj nebyl odkaz v " -"ASSETMAP." +"Soubor fontu pro ID fontu „%load_font_id“ nebyl nalezen nebo na něj nebyl " +"odkaz v ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"Písma v časování textového datového zdroje %f zachytá %n bajtů, což je nad " -"limitem 10 MB." +"Písma v časování textového datového zdroje %f zachytá %size_in_bytes bajtů, " +"což je nad limitem 10 MB." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3730,7 +3744,7 @@ msgstr "" "(%reference_hash). To pravděpodobně znamená, že soubor s aktivem je " "poškozený." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3740,7 +3754,7 @@ msgstr "" "(%reference_hash). To pravděpodobně znamená, že soubor s aktivem je " "poškozený." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " @@ -3749,38 +3763,37 @@ msgstr "" "Hash (%reference_hash) CPL %cpl v PKL nesouhlasí se souborem CPL " "(%calculated_hash). To pravděpodobně znamená, že soubor CPL je poškozený." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "Používá se neplatná značka jazyka %n." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "Používá se neplatná značka jazyka %language." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "Jazyk, ve které je název filmu (%s)" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" "Obraz na reelu má neplatnou snímkovou frekvenci %frame_rate, což není platné." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"Doba trvání reelu (%s) určitého časovaného textu není stejná jako doba " -"trvání kontejneru (%s) mxf." +"Doba trvání reelu (%other_duration) určitého časovaného textu není stejná " +"jako doba trvání kontejneru (%duration) mxf." -#: src/wx/verify_dcp_result_panel.cc:408 -#, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "Zvukový prostředek %f má neplatnou bitovou hloubku %n." +#: src/wx/verify_dcp_result_panel.cc:423 +#, fuzzy, c-format +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "Zvukový prostředek %f má neplatnou bitovou hloubku %bit_depth." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "Zvukový datový zdroj %f má neplatnou snímkovací frekvenci %frame_rate." @@ -3793,39 +3806,41 @@ msgstr "" "Standard, který by měl DCP používat. Interop je starší a SMPTE je novější " "(aktuální) standard. Pokud máte pochybnosti, zvolte „SMPTE“." -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "Asset titulků %asset_id neobsahuje žádné titulky." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "Datový zdroj titulku %asset_id nemá <EntryPoint> značky." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "Datový zdroj titulku %f neobsahuje žádnou značku <Language>." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "Datový zdroj titulku %f neobsahuje <StartTime> značky." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "Datový zdroj titulku %f má <StartTime> který není nulový." -#: src/wx/verify_dcp_result_panel.cc:643 -#, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "Asset titulků %n neobsahuje žádné titulky." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "Datový zdroj titulku %n nemá <EntryPoint> značky." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -"Časovaný textový datový zdroj %f zabírá %n bajtů, což je nad limitem 115 MB." +"Časovaný textový datový zdroj %f zabírá %size_in_bytes bajtů, což je nad " +"limitem 115 MB." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3834,41 +3849,42 @@ msgstr "" "Datový zdroj videa %f používá snímkovou frekvenci %frame_rate, která je " "neplatná pro 4K video." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" "Datový zdroj videa %f používá neplatnou snímkovou frekvenci %frame_rate." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "Datový zdroj videa %f používá neplatnou velikost obrázku %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "" +"Datový zdroj videa %f používá neplatnou velikost obrázku %size_in_pixels." -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 #, fuzzy msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" "Datový zdroj videa %f používá snímkovou frekvenci %frame_rate, která je pro " "3D video neplatná." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "Na jednom místě jsou více než 3 uzavřené řádky titulků." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "Na jednom místě jsou více než 3 řádky titulků." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "V alespoň jednom uzavřeném řádku titulku je více než 32 znaků." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "V alespoň jednom řádku titulků je více než 52 znaků." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "Existuje více než 79 znaků alespoň v jednom řádku titulků." @@ -3880,11 +3896,11 @@ msgstr "Nejsou zde žádné pokyny: probíhá kontrola projektu." msgid "There are no hints: everything looks good!" msgstr "Žádné upozornění; všechno vypadá dobře !" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "Uvnitř značky <MainMarkers> je značka <Duration>." -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "Uvnitř značky <MainMarkers> je značka <EntryPoint>." @@ -3909,16 +3925,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Tato licence CPL neobsahuje žádná zašifrovaná aktiva." -#: src/wx/verify_dcp_result_panel.cc:333 -#, c-format +#: src/wx/verify_dcp_result_panel.cc:348 +#, fuzzy, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"Tento DCP odkazuje na datový zdroj %n v jiném DCP (a možná i v jiných), " -"takže se jedná o „soubor verze“ (VF)" +"Tento DCP odkazuje na datový zdroj %asset_id v jiném DCP (a možná i v " +"jiných), takže se jedná o „soubor verze“ (VF)" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" "Tento DCP používá standard Interop, ale měl by být vyroben pomocí SMPTE." @@ -4317,7 +4333,7 @@ msgstr "Platný do" msgid "Vendor" msgstr "Dodavatel" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "Ověřovací zpráva" diff --git a/src/wx/po/da_DK.po b/src/wx/po/da_DK.po index fc64b5fb8..c5a20d866 100644 --- a/src/wx/po/da_DK.po +++ b/src/wx/po/da_DK.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2019-04-06 13:46+0200\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -236,14 +236,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -266,70 +266,76 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -338,9 +344,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "En ny version af DCP-o-matic er tilgængelig." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, fuzzy, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "Filmen i en spole har en ugyldig billedhastighed" #: src/wx/hints_dialog.cc:183 @@ -348,11 +354,11 @@ msgstr "Filmen i en spole har en ugyldig billedhastighed" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -573,13 +579,13 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Også støttet af" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -627,24 +633,24 @@ msgstr "" "Er du sikker på at du vil sende emails til nedenstående adresser?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -879,9 +885,9 @@ msgstr "Biograf- og sals-database" msgid "Click the button to set all selected content to the same value." msgstr "Klik denne knap for at give alt valgt indhold samme værdi." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -1031,9 +1037,9 @@ msgstr "Kunne ikke indlæse certifikat (%s)" msgid "Could not play content" msgstr "Kunne ikke indlæse KDM" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Kunne ikke indlæse KDM" #: src/wx/gl_video_view.cc:131 @@ -1598,25 +1604,25 @@ msgstr "" msgid "Format" msgstr "Format" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2220,81 +2226,81 @@ msgstr "" msgid "Mix audio down to stereo" msgstr "Mix lyd ned til stereo" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "Filmen i en spole har en ugyldig billedhastighed" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 #, fuzzy msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "Filmen i en spole har en ugyldig billedhastighed" @@ -2385,7 +2391,7 @@ msgstr "" msgid "No" msgstr "Ingen" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2393,7 +2399,7 @@ msgstr "" msgid "No DCP loaded." msgstr "Ingen DCP indlæst." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2406,11 +2412,11 @@ msgstr "Ingen lyd vil blive sendt fra indholdskanal %d til DCP-kanal %d." msgid "No content found in this folder." msgstr "Fandt intet indhold i denne folder." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2425,7 +2431,7 @@ msgstr "Standard" msgid "None" msgstr "Ingen" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2561,11 +2567,11 @@ msgstr "Videobilledhastighed" msgid "Overwrite this file with current configuration" msgstr "Overskriv denne fil med nuværende konfiguration" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3097,7 +3103,7 @@ msgstr "Vælg debuglog fil" msgid "Select output file" msgstr "Vælg output fil" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Vælg" @@ -3275,13 +3281,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3290,7 +3296,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3379,9 +3385,9 @@ msgstr "Abonnenter" msgid "Subtitle appearance" msgstr "Underteksters udseende" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3473,113 +3479,113 @@ msgstr "Testet af" msgid "The 'until' time must be after the 'from' time." msgstr "'Til' tidspunktet skal være efter 'fra' tidspunktet." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, fuzzy, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "Filmen i en spole har en ugyldig billedhastighed" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3598,111 +3604,113 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, fuzzy, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "Filmen i en spole har en ugyldig billedhastighed" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, fuzzy, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" "Der er uoverensstemmelse mellem PKL og CPL hashværdierne for et billedeaktiv." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, fuzzy, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" "Der er uoverensstemmelse mellem PKL og CPL hashværdierne for et lydaktiv." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3739,26 +3747,26 @@ msgstr "" "Filen %s eksisterer allerede. Vil du bruge den som din nye konfiguration " "eller overskrive den med din nuværende konfiguration?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 #, fuzzy msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " @@ -3768,7 +3776,7 @@ msgstr "" "Hashværdien for billedaktivet %s stemmer ikke overens med PKL filen. Det " "betyder formodentlig at aktivets fil er ødelagt." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 #, fuzzy msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " @@ -3778,7 +3786,7 @@ msgstr "" "Hashværdien for lydaktivet %s stemmer ikke overens med PKL filen. Det " "betyder formodentlig at aktivets fil er ødelagt." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 #, fuzzy msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " @@ -3788,9 +3796,8 @@ msgstr "" "CPLens hashværdi i PKLen stemmer ikke overens med CPLfilens. Det betyder " "formodentlig at CPL filen er ødelagt." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3798,25 +3805,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, fuzzy, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "Filmen i en spole har en ugyldig billedhastighed" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, fuzzy, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "Filmen i en spole har en ugyldig billedhastighed" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, fuzzy, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "Filmen i en spole har en ugyldig billedhastighed" @@ -3827,75 +3834,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, fuzzy, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "Filmen i en spole har en ugyldig billedhastighed" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3907,11 +3915,11 @@ msgstr "Der er ingen tips endnu: check af projekt er stadig i gang." msgid "There are no hints: everything looks good!" msgstr "Der er ingen tips; det hele ser godt ud!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3934,14 +3942,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Denne CPL indholder ikke krypterede aktiver." -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4326,7 +4334,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "DCP verificering" diff --git a/src/wx/po/de_DE.po b/src/wx/po/de_DE.po index 7eef7dd31..a1b250186 100644 --- a/src/wx/po/de_DE.po +++ b/src/wx/po/de_DE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2021-08-20 21:46+0200\n" "Last-Translator: Carsten Kurz\n" "Language-Team: DCP-o-matic translators\n" @@ -240,14 +240,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -270,73 +270,89 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -"A 2K JPEG2000 Frame enthält %n Blöcke (Tiles) anstelle von drei Blöcken." +"A 2K JPEG2000 Frame enthält %tile_parts Blöcke (Tiles) anstelle von drei " +"Blöcken." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, fuzzy, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%n)." +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "A 2K JPEG2000 Frame hat %n POC-Marker anstelle von 0 POC-Markern." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "" +"A 2K JPEG2000 Frame hat %guard_bits Guard Bits anstelle von einem Guard Bit." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "A 2K JPEG2000 Frame hat %n Guard Bits anstelle von einem Guard Bit." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "" +"A 2K JPEG2000 Frame hat %poc_markers POC-Marker anstelle von 0 POC-Markern." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -"A 4K JPEG2000 Frame enthält %n Blöcke (Tiles) anstelle von sechs Blöcken." +"A 4K JPEG2000 Frame enthält %tile_parts Blöcke (Tiles) anstelle von sechs " +"Blöcken." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, fuzzy, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%n)." +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "A 2K JPEG2000 Frame hat %n POC-Marker anstelle von 1 POC-Marker." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "" +"A 2K JPEG2000 Frame hat %guard_bits Guard Bits anstelle von zwei Guard Bits." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "A 2K JPEG2000 Frame hat %n Guard Bits anstelle von zwei Guard Bits." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "" +"A 2K JPEG2000 Frame hat %poc_markers POC-Marker anstelle von 1 POC-Marker." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 #, fuzzy msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "A JPEG2000 Frame enthält POC-Marker an einer ungültigen Position." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%n)." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "A JPEG2000 Frame hat eine Code-Block-Höhe von %n anstelle von 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "" +"A JPEG2000 Frame hat eine Code-Block-Höhe von %code_block_height anstelle " +"von 32." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "A JPEG2000 Frame hat eine Code-Block-Breite von %n anstelle von 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "" +"A JPEG2000 Frame hat eine Code-Block-Breite von %code_block_width anstelle " +"von 32." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "A JPEG2000 Frame hat keinen TLM-Marker." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "A JPEG2000 Blockgröße (Tile Size) passt nicht zur Bildgröße." @@ -345,9 +361,9 @@ msgstr "A JPEG2000 Blockgröße (Tile Size) passt nicht zur Bildgröße." msgid "A new version of %s is available." msgstr "Es ist eine neue Version von DCP-o-matic verfügbar." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, fuzzy, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" #: src/wx/hints_dialog.cc:183 @@ -355,11 +371,11 @@ msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" msgid "A problem occurred when looking for hints (%s)" msgstr "Beim Zugriff auf Hinweise ist ein Fehler aufgetreten (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "A subtitle lasts longer than the reel it is in." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -583,13 +599,13 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Unterstützt durch" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "Eine der Mediendaten ('Asset') hat einen leeren Pfad in der ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -637,31 +653,31 @@ msgstr "" "Bitte bestätigen Sie das Versenden von Emails an die folgenden Adressen!\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" "Mindestens ein <Text>-Knoten in einem Untertitel oder Closed Caption (CCAP) " "ist leer." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" "Mindestens eine Mediendatei ('Asset') in einem Akt ('Reel') hat nicht die " "gleiche Dauer wie andere Mediendateien des gleichen Akts." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" "Mindestens ein Paar von Untertiteln ist durch weniger als zwei Frames " "getrennt." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 #, fuzzy msgid "At least one subtitle has zero or negative duration." msgstr "Mindestens ein Untertitle dauert weniger als 15 Frames." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "Mindestens ein Untertitle dauert weniger als 15 Frames." @@ -905,12 +921,12 @@ msgstr "Kino- und Saaldatenbank (für KDM Erstellung)" msgid "Click the button to set all selected content to the same value." msgstr "Klicken um alle ausgewählten Inhalte mit demselben Wert zu versehen" -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" -"Closed Caption-Mediendatei %n ('CCAP Asset') hat einen <EntryPoint>, der von " -"Null verschieden ist." +"Closed Caption-Mediendatei %asset_id ('CCAP Asset') hat einen <EntryPoint>, " +"der von Null verschieden ist." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1058,9 +1074,9 @@ msgstr "Konnte die Zertifikatsdatei (%s) nicht lesen." msgid "Could not play content" msgstr "Konnte KDM nicht laden" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Konnte KDM nicht laden" #: src/wx/gl_video_view.cc:131 @@ -1632,7 +1648,7 @@ msgstr "Videowassermarke hinzufügen" msgid "Format" msgstr "Format" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1641,7 +1657,7 @@ msgstr "" "Mindestens ein Frame der Video-Mediendatei %f ('Asset') ist nahe am " "Grenzwert von 250 MBit/s." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1650,11 +1666,11 @@ msgstr "" "Mindestens ein Frame der Video-Mediendatei %f ('Asset') ist nahe am " "Grenzwert von 250 MBit/s." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2299,75 +2315,75 @@ msgstr "Metadaten..." msgid "Mix audio down to stereo" msgstr "Mehrkanalaudio zu Stereo heruntermischen" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 #, fuzzy msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "A 2K JPEG2000 Frame enthält %n Blöcke (Tiles) anstelle von drei Blöcken." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 #, fuzzy msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%n)." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 #, fuzzy msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%n)." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 #, fuzzy msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "A JPEG2000 Frame enthält POC-Marker an einer ungültigen Position." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%n)." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "A JPEG2000 Frame enthält einen ungültigen POC-Marker (%n)." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "A JPEG2000 Frame enthält POC-Marker an einer ungültigen Position." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "A JPEG2000 Frame enthält POC-Marker an einer ungültigen Position." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 #, fuzzy msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "A JPEG2000 Frame hat keinen TLM-Marker." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 #, fuzzy msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "A JPEG2000 Blockgröße (Tile Size) passt nicht zur Bildgröße." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " @@ -2376,7 +2392,7 @@ msgstr "" "Mindestens ein Frame der Video-Mediendatei %f ('Asset') ist nahe am " "Grenzwert von 250 MBit/s." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " @@ -2385,11 +2401,11 @@ msgstr "" "Mindestens ein Frame der Video-Mediendatei %f ('Asset') ist nahe am " "Grenzwert von 250 MBit/s." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 #, fuzzy msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" @@ -2480,7 +2496,7 @@ msgstr "" msgid "No" msgstr "Ohne" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "Es wurde keine ASSETMAP oder ASSETMAP.xml-Datei gefunden." @@ -2488,7 +2504,7 @@ msgstr "Es wurde keine ASSETMAP oder ASSETMAP.xml-Datei gefunden." msgid "No DCP loaded." msgstr "Kein DCP ausgewählt" -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "Es wurden keine SMPTE Bv2.1 Fehler gefunden." @@ -2502,11 +2518,11 @@ msgstr "" msgid "No content found in this folder." msgstr "Keine Inhalte in diesem Ordner." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "Keine Fehler gefunden." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "Keine Warnungen gefunden." @@ -2521,7 +2537,7 @@ msgstr "DCP Standard" msgid "None" msgstr "Ohne" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" "Nicht alle Untertitel-Mediendateien ('Assets') spezifizieren den gleichen " @@ -2663,11 +2679,11 @@ msgstr "Bildratenbezugswert" msgid "Overwrite this file with current configuration" msgstr "Diese Datei mit der aktuellen Konfiguration überschreiben" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "Teile des DCP konnten nicht geprüft werden, da kein KDM verfügbar war." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3201,7 +3217,7 @@ msgstr "Debug-Logdatei wählen" msgid "Select output file" msgstr "Ausgabedatei wählen" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Auswählen" @@ -3379,13 +3395,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3394,7 +3410,7 @@ msgstr "" msgid "Sound" msgstr "Ton" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3483,9 +3499,9 @@ msgstr "Regelmäßige Zahler" msgid "Subtitle appearance" msgstr "Untertitel Darstellung" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3579,115 +3595,115 @@ msgstr "" "Das Ende des Gültigkeitsfensters muss nach dem Start des Gültigkeitsfensters " "liegen ;-)" -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, fuzzy, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" "Das DCP hat Untertitel, aber mindestens ein Akt ('Reel') hat keine " "Untertitel-Mediendatei ('Reel')." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3706,115 +3722,117 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, fuzzy, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, fuzzy, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" "Die Prüfsummen in PKL und CPL für eine Videodatei (MXF) weichen voneinander " "ab!" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, fuzzy, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" "Die Prüfsummen in PKL und CPL für eine Audiodatei (MXF) weichen voneinander " "ab!" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "Das XML in %f ist nicht wohlgeformt (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "Das XML in %f ist nicht wohlgeformt (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "Das XML in %f ist in Zeile %l nicht wohlgeformt (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "Das XML in %f ist in Zeile %l nicht wohlgeformt (%error)." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" +"Die Mediendatei ('Asset') %asset_id hat eine ungültige Dauer von weniger als " +"einer Sekunde." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "Die Mediendatei ('Asset') %f fehlt." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -"Die Mediendatei ('Asset') %n hat eine ungültige Dauer von weniger als einer " -"Sekunde." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "" +msgid "The asset %f is missing." +msgstr "Die Mediendatei ('Asset') %f fehlt." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3852,26 +3870,26 @@ msgstr "" "Konfigurationsdatei verwenden, oder soll sie mit der aktuellen Konfiguration " "überschrieben werden?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 #, fuzzy msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " @@ -3881,7 +3899,7 @@ msgstr "" "Die Prüfsumme der Videodatei (MXF) %s weicht von der PKL-Prüfsumme ab - mit " "einiger Sicherheit ist die Datei defekt oder unvollständig!" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 #, fuzzy msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " @@ -3891,7 +3909,7 @@ msgstr "" "Die Prüfsumme der Audiodatei (MXF) %s weicht von der PKL-Prüfsumme ab - mit " "einiger Sicherheit ist die Datei defekt oder unvollständig!" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 #, fuzzy msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " @@ -3899,9 +3917,8 @@ msgid "" "corrupt." msgstr "Die Prüfsumme für die CPL in der PKL entspricht nicht der CPL Datei!" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3909,25 +3926,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, fuzzy, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, fuzzy, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, fuzzy, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" @@ -3938,77 +3955,78 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 -#, c-format -msgid "The subtitle asset %f contains no <Language> tag." +#: src/wx/verify_dcp_result_panel.cc:645 +#, fuzzy, c-format +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" +"Das DCP hat Untertitel, aber mindestens ein Akt ('Reel') hat keine " +"Untertitel-Mediendatei ('Reel')." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 -#, fuzzy, c-format -msgid "The subtitle asset %n contains no subtitles." +#: src/wx/verify_dcp_result_panel.cc:387 +#, c-format +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -"Das DCP hat Untertitel, aber mindestens ein Akt ('Reel') hat keine " -"Untertitel-Mediendatei ('Reel')." -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, fuzzy, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "Eine Videodatei enthält eine unzulässige Bildrate!" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -4020,11 +4038,11 @@ msgstr "Bitte warten Sie die Projektprüfung ab!" msgid "There are no hints: everything looks good!" msgstr "Keine Warnungen: Alles sieht gut aus!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -4049,16 +4067,17 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Die Mediendaten ('Assets') dieser CPL sind nicht verschlüsselt!" -#: src/wx/verify_dcp_result_panel.cc:333 -#, c-format +#: src/wx/verify_dcp_result_panel.cc:348 +#, fuzzy, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"Dieses DCP bezieht sich auf eine Mediendatei ('asset) %n eines anderen DCP " -"(und vielleicht weiterer DCPs), damit ist es eine Versionsdatei (VF)." +"Dieses DCP bezieht sich auf eine Mediendatei ('asset) %asset_id eines " +"anderen DCP (und vielleicht weiterer DCPs), damit ist es eine Versionsdatei " +"(VF)." -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4443,7 +4462,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "DCP Integritätsprüfung" diff --git a/src/wx/po/el_GR.po b/src/wx/po/el_GR.po index e9eacf928..41be10397 100644 --- a/src/wx/po/el_GR.po +++ b/src/wx/po/el_GR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -232,14 +232,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -260,70 +260,76 @@ msgstr "" msgid "A" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -332,9 +338,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -342,11 +348,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -548,13 +554,13 @@ msgstr "" msgid "Also supported by" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -599,24 +605,24 @@ msgid "" "\n" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -840,9 +846,9 @@ msgstr "" msgid "Click the button to set all selected content to the same value." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -985,9 +991,9 @@ msgstr "" msgid "Could not play content" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "" #: src/wx/gl_video_view.cc:131 @@ -1518,25 +1524,25 @@ msgstr "" msgid "Format" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2114,80 +2120,80 @@ msgstr "" msgid "Mix audio down to stereo" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2275,7 +2281,7 @@ msgstr "" msgid "No" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2283,7 +2289,7 @@ msgstr "" msgid "No DCP loaded." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2296,11 +2302,11 @@ msgstr "" msgid "No content found in this folder." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2314,7 +2320,7 @@ msgstr "" msgid "None" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2443,11 +2449,11 @@ msgstr "" msgid "Overwrite this file with current configuration" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -2959,7 +2965,7 @@ msgstr "" msgid "Select output file" msgstr "" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "" @@ -3127,13 +3133,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3142,7 +3148,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3225,9 +3231,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3311,113 +3317,113 @@ msgstr "" msgid "The 'until' time must be after the 'from' time." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3436,109 +3442,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3571,49 +3579,48 @@ msgid "" "or overwrite it with your current configuration?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3621,25 +3628,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3650,75 +3657,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3730,11 +3738,11 @@ msgstr "" msgid "There are no hints: everything looks good!" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3757,14 +3765,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4140,7 +4148,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "" diff --git a/src/wx/po/es_ES.po b/src/wx/po/es_ES.po index 53aa6e51e..ad71ba8ad 100644 --- a/src/wx/po/es_ES.po +++ b/src/wx/po/es_ES.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libdcpomatic-wx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2018-02-25 14:45-0600\n" "Last-Translator: Manuel AC <manuel.acevedo@civantos.>\n" "Language-Team: Manuel AC <manuel.acevedo@civantos.com>\n" @@ -235,14 +235,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -265,70 +265,76 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -337,9 +343,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "Una nueva versión de DCP-o-matic está disponible." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -347,11 +353,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -572,13 +578,13 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Soportado por" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -626,24 +632,24 @@ msgstr "" "¿Estás seguro de que quieres enviar correos a las direcciones siguientes?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -880,9 +886,9 @@ msgid "Click the button to set all selected content to the same value." msgstr "" "Pulsar el botón para poner todo el contenido seleccionado al mismo valor." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -1034,9 +1040,9 @@ msgstr "No se pudo importar el certificado (%s)" msgid "Could not play content" msgstr "No se pudo cargar la KDM." -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "No se pudo cargar la KDM." #: src/wx/gl_video_view.cc:131 @@ -1607,25 +1613,25 @@ msgstr "" msgid "Format" msgstr "Formato" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2236,80 +2242,80 @@ msgstr "" msgid "Mix audio down to stereo" msgstr "Mezcla de audio a estéreo" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2399,7 +2405,7 @@ msgstr "" msgid "No" msgstr "Ninguno" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2407,7 +2413,7 @@ msgstr "" msgid "No DCP loaded." msgstr "No se ha cargado ningún DCP." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2420,11 +2426,11 @@ msgstr "No pasará audio del canal de origen %d al canal %d del DCP." msgid "No content found in this folder." msgstr "No se encontró contenido en esta carpeta." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2439,7 +2445,7 @@ msgstr "Estandard" msgid "None" msgstr "Ninguno" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2577,11 +2583,11 @@ msgstr "Velocidad de imagen" msgid "Overwrite this file with current configuration" msgstr "Sobreescribir este fichero con la configuración actual" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3121,7 +3127,7 @@ msgstr "Seleccionar fichero de salida" msgid "Select output file" msgstr "Seleccionar fichero de salida" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Seleccionar OV" @@ -3298,13 +3304,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3313,7 +3319,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3402,9 +3408,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "Apariencia del subtítulo" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3497,113 +3503,113 @@ msgstr "Comprobado por" msgid "The 'until' time must be after the 'from' time." msgstr "El tiempo ‘hasta’ debe ser posterior al tiempo ‘desde’." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3622,109 +3628,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3760,49 +3768,48 @@ msgstr "" "El fichero %s ya existe. ¿Quiere usarlo como su nueva configuración o " "sobreescribirlo con su configuración actual?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3810,25 +3817,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3839,75 +3846,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3920,11 +3928,11 @@ msgstr "No hay recomendaciones: ¡todo parece bien!" msgid "There are no hints: everything looks good!" msgstr "No hay recomendaciones: ¡todo parece bien!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3948,14 +3956,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "El contenido del CPL no está encriptado." -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4344,7 +4352,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "Certificado" diff --git a/src/wx/po/fa_IR.po b/src/wx/po/fa_IR.po index 8ed697b55..a2fd9c52c 100644 --- a/src/wx/po/fa_IR.po +++ b/src/wx/po/fa_IR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2024-10-05 17:45+0330\n" "Last-Translator: Soleyman Rahmani Aghdam <Soleyman.rahmani@gmail.com>\n" "Language-Team: \n" @@ -238,15 +238,15 @@ msgstr "96 هزار هرتز" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" -msgstr "<IssueDate> یک مقدار نامعتبر دارد %n" +msgid "<IssueDate> has an invalid value %issue_date" +msgstr "<IssueDate> یک مقدار نامعتبر دارد %issue_date" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, fuzzy, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" -msgstr "<MainSoundConfiguration> تعداد نادرست کانالها را بیان میکند(%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" +msgstr "<MainSoundConfiguration> تعداد نادرست کانالها را بیان میکند(%error)" #: src/wx/subtitle_appearance_dialog.cc:118 msgid "<b>New colour</b>" @@ -268,70 +268,77 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." -msgstr "یک فریم 2k JPEG2000 به جای 3 قطعه شامل %n قطعه است." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." +msgstr "یک فریم 2k JPEG2000 به جای 3 قطعه شامل %tile_parts قطعه است." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, fuzzy, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "یک فریم JPEG2000 شامل نشانه POC نادرستی است(%n)." +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "یک فریم JPEG2000 شامل نشانه POC نادرستی است(%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "یک فریم 2k JPEG2000 به جای 0 شامل %n نشانه(های)POC است." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "یک فریم 2k JPEG2000 به جای 1 بیت شامل %guard_bits بیت محافظ است." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "یک فریم 2k JPEG2000 به جای 1 بیت شامل %n بیت محافظ است." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "یک فریم 2k JPEG2000 به جای 0 شامل %poc_markers نشانه(های)POC است." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." -msgstr "یک فریم 4k JPEG2000 به جای 6 قطعه شامل %n قطعه است." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." +msgstr "یک فریم 4k JPEG2000 به جای 6 قطعه شامل %tile_parts قطعه است." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, fuzzy, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "یک فریم JPEG2000 شامل نشانه POC نادرستی است(%n)." +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "یک فریم JPEG2000 شامل نشانه POC نادرستی است(%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "یک فریم 4k JPEG2000 به جای 1 شامل %n نشانه(های)POC است." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "یک فریم 4k JPEG2000 به جای2 بیت شامل %guard_bits بیت محافظ است." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "یک فریم 4k JPEG2000 به جای2 بیت شامل %n بیت محافظ است." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "یک فریم 4k JPEG2000 به جای 1 شامل %poc_markers نشانه(های)POC است." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "یک فریم JPEG2000 شامل یک نشانه POC در محل نادرستی است." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "یک فریم JPEG2000 شامل نشانه POC نادرستی است(%n)." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "یک فریم JPEG2000 به جای 32 یک بلوک-کد با ارتفاع %n دارد." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "" +"یک فریم JPEG2000 به جای 32 یک بلوک-کد با ارتفاع %code_block_height دارد." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "یک فریم JPEG2000 به جای 32 یک بلوک-کد با عرض %n دارد." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "یک فریم JPEG2000 به جای 32 یک بلوک-کد با عرض %code_block_width دارد." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "یک فریم JPEG2000 نشانه TLM ندارد." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "اندازه یک قطعه JPEG2000 با اندازه تصویر مطابقت ندارد." @@ -340,21 +347,21 @@ msgstr "اندازه یک قطعه JPEG2000 با اندازه تصویر مطا msgid "A new version of %s is available." msgstr "یک نسخه جدید از %s در دسترس است." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "یک فریم تصویر دارای یک رشته کد نامعتبر JPEG2000 است (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "یک فریم تصویر دارای یک رشته کد نامعتبر JPEG2000 است (%error)." #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "هنگام جستجوی نکات خطایی رخ داد (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "یک زیرنویس طولانی تر از حلقه فیلمش است." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -564,14 +571,14 @@ msgstr "آلفا 0" msgid "Also supported by" msgstr "همچنین پشتیبانی شده توسط" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "یکی از محتواها دارای یک مسیر خالی در فایل ASSETMAP است." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." -msgstr "یک ContentKind> %n> نا معتبر استفاده شده است." +msgid "An invalid <ContentKind> %content_kind has been used." +msgstr "یک ContentKind> %content_kind> نا معتبر استفاده شده است." #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 msgid "An unknown exception occurred." @@ -617,25 +624,25 @@ msgstr "" "آیا از ارسال ایمیل به آدرس های زیر اطمینان دارید؟ \n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "حداقل یک گره<Text> در یک زیرنویس زبان یا زیرنویس فیلم خالی است." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "حداقل یک محتوا در یک حلقه مدت زمان مساوی با دیگران ندارد." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "حداقل یک جفت زیرنویس توسط کمتر از 2 فریم از هم جدا شده اند." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 #, fuzzy msgid "At least one subtitle has zero or negative duration." msgstr "حداقل یک زیرنویس با زمان کمتر از 15 فریم است." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "حداقل یک زیرنویس با زمان کمتر از 15 فریم است." @@ -860,10 +867,10 @@ msgstr "فایل پایگاه داده سینما و سالن" msgid "Click the button to set all selected content to the same value." msgstr "روی دکمه کلیک کنید تا تمام محتوای انتخاب شده روی یک مقدار تنظیم شود." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "محتوای فایل زیرنویس فیلم %n یک غیر صفر دارد <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "محتوای فایل زیرنویس فیلم %asset_id یک غیر صفر دارد <EntryPoint>." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1006,10 +1013,10 @@ msgstr "گواهی نامه بارگذاری نشد (%s)" msgid "Could not play content" msgstr "محتوا پلی نشد" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" -msgstr "نمیتوان دی سی پی (%n) را خواند" +msgid "Could not read DCP (%error)" +msgstr "نمیتوان دی سی پی (%error) را خواند" #: src/wx/gl_video_view.cc:131 #, c-format @@ -1555,7 +1562,7 @@ msgstr "نشان گذاری ویدیو از نظر قانونی" msgid "Format" msgstr "فرمت" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1564,7 +1571,7 @@ msgstr "" "فریم %f (تایم کد %ti) از فایل ویدیوی %f دارای یک حهش آنی نرخ بیت نزدیک به " "مرز 250 مگا بیت بر ثانیه است." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1573,11 +1580,11 @@ msgstr "" "فریم %f (تایم کد %ti) از فایل ویدیوی %f دارای یک حهش آنی نرخ بیت بالاتر از " "مرز 250 مگا بیت بر ثانیه است." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "اجزا تصویری فریم %f بسیار بزرگ است(اندازه جز%c برابر %s بایت است)." #: src/wx/dcp_panel.cc:868 @@ -2187,84 +2194,84 @@ msgstr "متا دیتا..." msgid "Mix audio down to stereo" msgstr "میکس صدا به استریو" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "فریم های 2k JPEG2000 بیشتری(که فهرست نشدند) شامل تعداد قطعات غلط تشکیل دهنده " "هستند." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "فریم های 2k JPEG2000 بیشتری(که فهرست نشدند) شامل تعداد نامعتبر بیتهای محافظ " "هستند." -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" "فریم های 2k JPEG2000 بیشتری(که فهرست نشدند) شامل نشانه های بسیار زیاد POC " "هستند." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "فریم های 4k JPEG2000 بیشتری(که فهرست نشدند) شامل تعداد نامعتبر بیتهای محافظ " "هستند." -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" "فریم های 4k JPEG2000 بیشتری(که فهرست نشدند) شامل نشانه های بسیار زیاد POC " "هستند." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" "فریم های JPEG2000 بیشتری(که فهرست نشدند) شامل نشانه های POC در محلهای " "نامعتبر هستند." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" "فریم های JPEG2000 بیشتری(که فهرست نشدند) شامل نشانه های نامعتبر POC هستند." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" "فریم های JPEG2000 بیشتری(که فهرست نشدند) شامل نشانه های نامعتبر POC هستند." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "فریم های JPEG2000 بیشتری(که فهرست نشدند) شامل تعداد غلطی از قطعات هستند." -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" "فریم های JPEG2000 بیشتری(که فهرست نشدند) شامل ارتفاع بلوک-کد نامعتبرهستند." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" "فریم های JPEG2000 بیشتری(که فهرست نشدند) شامل عرض بلوک-کد نامعتبرهستند." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "فریم های JPEG2000 بیشتری(که فهرست نشدند) نشانه TLM ندارند." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" "اندازه قطعه های JPEG2000 (که فهرست نشدند) بیشتری با اندازه تصویر مطابقت " "ندارند." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." @@ -2272,7 +2279,7 @@ msgstr "" "فریم های بیشتری(که فهرست نشدند)نرخ بیت آنی نزدیک به 250 مگابیت بر ثانیه " "دارند." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." @@ -2280,11 +2287,11 @@ msgstr "" "فریم های بیشتری(که فهرست نشدند)نرخ بیت آنی بالاتر از 250 مگابیت بر ثانیه " "دارند." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "فریم های بیشتری(که فهرست نشدند) دارای اجزاء تصویر بسیار بزرگ هستند." -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" "فریم های تصویر بیشتری(که فهرست نشدند) شامل رشته کدهای نامعتبر JPEG2000 هستند." @@ -2375,7 +2382,7 @@ msgstr "بعد" msgid "No" msgstr "هیچکدام" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "هیچ فایل ASSETMAP یا ASSETMAP.xml پیدا نشد." @@ -2383,7 +2390,7 @@ msgstr "هیچ فایل ASSETMAP یا ASSETMAP.xml پیدا نشد." msgid "No DCP loaded." msgstr "دی سی پی بارگذاری نشد." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "هیچ خطای SMPTE Bv2/1پیدا نشد." @@ -2396,11 +2403,11 @@ msgstr "هیچ صدایی از %s کانال '%s' به %s کانال '%s' من msgid "No content found in this folder." msgstr "هیچ محتوایی در این پوشه یافت نشد." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "هیچ خطایی یافت نشد." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "هیچ هشداری یافت نشد." @@ -2414,7 +2421,7 @@ msgstr "غیر استاندارد" msgid "None" msgstr "هیچکدام" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "همه فایلهای زیرنویس برچسب مشابه <Language> را مشخص نمیکنند." @@ -2543,11 +2550,11 @@ msgstr "نرخ ویدیوی شناسایی شده را نادیده بگیر" msgid "Overwrite this file with current configuration" msgstr "این فایل را با پیکربندی فعلی بازنویسی کنید" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "بخشی از دی سی پی قابل بررسی نیست چون کلید آن در دسترس نبود." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3065,7 +3072,7 @@ msgstr "انتخاب فایل گزارش اشکال زدایی" msgid "Select output file" msgstr "انتخاب فایل خروجی" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "انتخاب..." @@ -3235,14 +3242,14 @@ msgstr "" "برخی از کلیدها دارای مدت زمان اعتباری هستند که خارج از مدت زمان اعتبار " "گواهینامه گیرنده است. میخوای چیکار کنی؟" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" "برخی از <Text> یا <Image> در راستای عمودی متفاوتی با یک <Subtitle> هستند." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "برخی از زیرنویسها به ترتیب موقعیت عمودی فهرست نشدهاند." @@ -3251,7 +3258,7 @@ msgstr "برخی از زیرنویسها به ترتیب موقعیت عمو msgid "Sound" msgstr "صدا" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "فایلهای صدا همه تعداد کانال یکسانی ندارند." @@ -3334,10 +3341,10 @@ msgstr "مشترکین" msgid "Subtitle appearance" msgstr "ظاهر زیرنویس" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "محتوای زیرنویس %n یک غیر صفر در <EntryPoint> دارد." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "محتوای زیرنویس %asset_id یک غیر صفر در <EntryPoint> دارد." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3420,29 +3427,30 @@ msgstr "آزمایش شده توسط" msgid "The 'until' time must be after the 'from' time." msgstr "زمان 'تا' باید بعد از زمان 'از' باشد." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "مقدار <LabelText> در یک <ContentVersion> در سی پی ال %c خالی است" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "مقدار<MainPictureActiveArea> یا ضریب 2 نیست یا از محتوا بیشتر است." -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." -msgstr "در فایل ASSETMAP بنام %n بیش از یک محتوا با شتاسه مشابه وجود دارد." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." +msgstr "" +"در فایل ASSETMAP بنام %asset_map_id بیش از یک محتوا با شتاسه مشابه وجود دارد." -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "شناسه محتوا در متن زمانبندیشده MXF همان شناسه منبع یا XML موجود است." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " @@ -3451,92 +3459,92 @@ msgstr "" "قایل سی پی ال %c شامل یک <AnnotationText> است که مشابه <ContentTitleText> اش " "نیست." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "این سی پی ال %c دارای یک فضای نام نامعتبر است %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "این سی پی ال %c دارای یک فضای نام نامعتبر است %xml_namespace" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "فایل سی پی ال %c محتوای رمزگذاری شده دارد اما امضا نشده." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "فایل سی پی ال %c برچسب <AnnotationText> ندارد." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "فایل سی پی ال %c برچسب <AnnotationText> ندارد" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "فایل سی پی ال %c برچسب متادیتای پسوند سی پی ال ندارد." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "فایل سی پی ال %c برچسب متادیتای سی پی ال ندارد." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "فایل سی پی ال %c برچسب شماره نسخه متادیتای سی پی ال ندارد." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -"فایل سی پی ال %f دارای یک برچسب متادیتای پسوند سی پی ال نامعتبر است (%n)" +"فایل سی پی ال %f دارای یک برچسب متادیتای پسوند سی پی ال نامعتبر است (%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "دی سی پی به جای 1 عدد دارای %n عدد فریم اول محتوا است(FFOC)." +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "دی سی پی به جای 1 عدد دارای %time عدد فریم اول محتوا است(FFOC)." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -"دی سی پی به جای مدت حلقه منهای یک، دارای (LFOC )نشانگر فریم آخر محتوای %n " +"دی سی پی به جای مدت حلقه منهای یک، دارای (LFOC )نشانگر فریم آخر محتوای %time " "است." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" "دی سی پی زیرنویس دارد اما همه حلقه ها تعداد محتوای زیرنویس یکسانی ندارند." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" "دی سی پی دارای محتوای رمزگذاری شده است، اما همه محتواهای آن رمزگذاری شده " "نیستند." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "دی سی پی فاقد نشانه در اولین فریم محتوا است(FFOC ندارد)." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "دی سی پی فاقد نشانه در آخرین فریم محتوا است(LFOC ندارد)." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "دی سی پی دارای زیرنویس است اما دست کم یک حلقه آن محتوای زیرنویس ندارد." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" "این دی سی پی یک فیلم بلند است اما نشانه اولین فریم تیتراژ پایانی(FFEC) را " "ندارد." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3562,47 +3570,49 @@ msgstr "" "تاریخ شروع اعتبار این کلید قبل از(یا خیلی نزدیک به) شروع مدت اعتبار " "گواهینامه دستگاه است. تاریخ شروع اعتبار کلید را دیرتر انتخاب کنید." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "این فایل %f دارای فضای نام نامعتبر است %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "این فایل %f دارای فضای نام نامعتبر است %xml_namespace" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"فهرست پکیج (PKL) بنام: %n دارای یک <AnnotationText> است که با " +"فهرست پکیج (PKL) بنام: %pkl دارای یک <AnnotationText> است که با " "<ContentTitleText> موجود در ترکیب پلی لیست (CPL) مطابقت ندارد." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "فهرست پکیج(PKL) بنام: %n دارای محتوای رمزگذاری شده است اما امضا ندارد." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "" +"فهرست پکیج(PKL) بنام: %pkl دارای محتوای رمزگذاری شده است اما امضا ندارد." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "فهرست پکیج (PKL) بنام: %n دارای بیش از یک محتوا با شناسه مشابه است." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "" +"فهرست پکیج (PKL) بنام: %pkl_id دارای بیش از یک محتوا با شناسه مشابه است." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "هش های سی پی ال و پی کی ال برای محتوای تصویر %f مخالف هم هستند." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "هش های سی پی ال و پی کی ال برای محتوای صدای %f مخالف هم هستند." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "شناسه منبع در متن زمانبندیشده MXF با شناسه XML موجود مطابقت ندارد." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" @@ -3610,69 +3620,71 @@ msgstr "" "فایل زیرنویس اس ام پی تی ای %asset_id یک گره <Text> دارد اما گره <LoadFont> " "ندارد" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "فایل XML در %f نادرست است (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "فایل XML در %f نادرست است (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "کدهای XML در %f نادرست هستند در خط (%n)%i." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "کدهای XML در %f نادرست هستند در خط (%error)%i." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -"حجم فایل XML زیرنویس %f بیش از %n بایت است که خارج از حد مجاز 256 کیلو بایت " -"است." +"حجم فایل XML زیرنویس %f بیش از %size_in_bytes بایت است که خارج از حد مجاز " +"256 کیلو بایت است." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." -msgstr "این XML فایل زیرنویس %n بیش از یک اعلان فضای نام دارد." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." +msgstr "این XML فایل زیرنویس %asset_id بیش از یک اعلان فضای نام دارد." -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "" -"فایل %f سه بعدی است اما فایل MXF آن به عنوان دو بعدی علامت زده شده است." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "مدت فایل %asset_id کمتر از یک ثانیه است که معتبر نیست." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "فایل %f موجود نیست." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "مدت زمان حقیقی فایل %asset_id کمتر از یک ثانیه است که معتبر نیست." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "مدت فایل %n کمتر از یک ثانیه است که معتبر نیست." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "فایل %asset_id در سی پی ال فاقد <Hash> است." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "مدت زمان حقیقی فایل %n کمتر از یک ثانیه است که معتبر نیست." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "" +"فایل %f سه بعدی است اما فایل MXF آن به عنوان دو بعدی علامت زده شده است." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "فایل %n در سی پی ال فاقد <Hash> است." +msgid "The asset %f is missing." +msgstr "فایل %f موجود نیست." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "فایل با شناسه %asset_id در ASSETMAP در واقع شناسه %other_asset_id دارد" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "فایل زیرنویس %n فاقد برچسب <EntryPoint> است." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "فایل زیرنویس %asset_id فاقد برچسب <EntryPoint> است." #: src/wx/film_name_location_dialog.cc:146 #, c-format @@ -3713,30 +3725,30 @@ msgstr "" "فایل %s وجود دارد. آیا می خواهید به عنوان پیکربندی جدید استفاده شود یا " "پیکربندی فعلی را بر روی آن بنویسید؟" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "اولین زیرنویس 4 ثانیه قبل از شروع حلقه اول فیلم است." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -"فایل فونت برای فونت با شناسه \"%n\" موجود نیست و یا در فایل ASSETMAP به آن " -"ارجاع نشده است." +"فایل فونت برای فونت با شناسه \"%load_font_id\" موجود نیست و یا در فایل " +"ASSETMAP به آن ارجاع نشده است." -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"فونتهای فایل زیرنویس %f بیش از %n بایت هستند که بیش از حجم مجاز 10 مگابایت " -"است." +"فونتهای فایل زیرنویس %f بیش از %size_in_bytes بایت هستند که بیش از حجم مجاز " +"10 مگابایت است." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3745,7 +3757,7 @@ msgstr "" "هش(%calculated_hash) محتوای تصویر%f با فایل PKL(%reference_hash) مطابقت " "ندارد. این احتمال وجود دارد که اصل فایل دچار مشکل باشد." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3754,7 +3766,7 @@ msgstr "" "هش(%calculated_hash) محتوای صدای %f با فایل PKL(%reference_hash) مطابقت " "ندارد. این احتمال وجود دارد که اصل فایل دچار مشکل باشد." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " @@ -3764,37 +3776,36 @@ msgstr "" "cpl(%calculated_hash) مطابقت ندارد. این احتمال وجود دارد که اصل فایل دچار " "مشکل باشد." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "برچسب زبان %n مورد استفاده نادرست است." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "برچسب زبان %language مورد استفاده نادرست است." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "عنوان فیلم (\"%s \") به این زبان است" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "این تصویردر یک حلقه نرخ فریم آن %frame_rate است که معتبر نیست." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"مدت زمان حلقه (%s ) فیلم مربوط به برخی زیرنویسها با ContainerDuration آن " -"(%s) در فایل MXF یکسان نیست." +"مدت زمان حلقه (%other_duration ) فیلم مربوط به برخی زیرنویسها با " +"ContainerDuration آن (%duration) در فایل MXF یکسان نیست." -#: src/wx/verify_dcp_result_panel.cc:408 -#, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "فایل صدای %f دارای عمق بیت نامعتبر %n است." +#: src/wx/verify_dcp_result_panel.cc:423 +#, fuzzy, c-format +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "فایل صدای %f دارای عمق بیت نامعتبر %bit_depth است." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "فایل صدای %f دارای نرخ فریم نامعتبر %frame_rate است." @@ -3807,39 +3818,41 @@ msgstr "" "استانداردی که دی سی پی باید از آن استفاده کند. اینروپ قدیمی است و SMPTE " "استاندارد جدید. اگر شک دارید، \"اس ام پی تی ای\" را انتخاب کنید" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "فایل زیرنویس %asset_id فاقد متن زیرنویس است." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "فایل زیرنویس %asset_id برچسب <EntryPoint> ندارد." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "فایل زیرنویس %f برچسب <Language> ندارد." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "فایل زیرنویس %f برچسب <StartTime> ندارد." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "فایل زیرنویس %f یک <StartTime> دارد که صفر نیست." -#: src/wx/verify_dcp_result_panel.cc:643 -#, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "فایل زیرنویس %n فاقد متن زیرنویس است." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "فایل زیرنویس %n برچسب <EntryPoint> ندارد." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -"فایل زیرنویس %f بیش از %n بایت حجم دارد که بیش از حجم مجاز 115 مگابایت است." +"فایل زیرنویس %f بیش از %size_in_bytes بایت حجم دارد که بیش از حجم مجاز 115 " +"مگابایت است." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3847,39 +3860,39 @@ msgid "" msgstr "" "فایل ویدیوی %f نرخ فریم %frame_rate دارد که برای ویدیوی 4k درست نیست." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "فایل ویدیوی %f از نرخ فریم نادرست %frame_rate استفاده میکند." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "فایل ویدیوی %f از اندازه تصویرنادرست %n استفاده میکند." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "فایل ویدیوی %f از اندازه تصویرنادرست %size_in_pixels استفاده میکند." -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 #, fuzzy msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" "فایل ویدیوی %f نرخ فریم %frame_rate دارد که برای تصویر سه بعدی درست نیست." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "حداقل در یک محل بیش از سه خط زیرنویس وجود دارد." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "حداقل در یک محل بیش از سه خط زیرنویس وجود دارد." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "حداقل در یک خط زیرنویس بیش از 32 کاراکتر وجود دارد." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "حداقل در یک خط زیرنویس بیش از 52 کاراکتر وجود دارد." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "حداقل در یک خط زیرنویس بیش از 79 کاراکتر وجود دارد." @@ -3891,11 +3904,11 @@ msgstr "هنوز هیچ نکته ای وجود ندارد: بررسی پروژه msgid "There are no hints: everything looks good!" msgstr "نکته ای وجود ندارد: همه چیز درست به نظر میرسد!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "یک برچسب <Duration> در داخل یک <MainMarkers> است." -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "یک برچسب <EntryPoint> در داخل یک <MainMarkers> است." @@ -3920,16 +3933,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "این سی پی ال محتوای رمزگذاری شده ندارد." -#: src/wx/verify_dcp_result_panel.cc:333 -#, c-format +#: src/wx/verify_dcp_result_panel.cc:348 +#, fuzzy, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"این دی سی پی در ASSETMAPفایل %n به دی سی پی دیگری اشاره دارد، بنابر این یک " -"\"نسخه فایل\"(VF) است" +"این دی سی پی در ASSETMAPفایل %asset_id به دی سی پی دیگری اشاره دارد، بنابر " +"این یک \"نسخه فایل\"(VF) است" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" "این دی سی پی از استاندارد اینتروپ استفاده میکند اما باید با استاندارد اس ام " @@ -4333,7 +4346,7 @@ msgstr "معتبر تا" msgid "Vendor" msgstr "فروشنده" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "گزارش صحت سنجی" diff --git a/src/wx/po/fr_FR.po b/src/wx/po/fr_FR.po index 0668304d4..db6eecfb2 100644 --- a/src/wx/po/fr_FR.po +++ b/src/wx/po/fr_FR.po @@ -7,15 +7,15 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic FRENCH\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" -"PO-Revision-Date: 2025-09-28 15:33+0200\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" +"PO-Revision-Date: 2026-04-22 09:15+0200\n" "Last-Translator: Dan Cohen <thedan.cohen@protonmail.com>\n" "Language-Team: \n" "Language: fr_FR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: Poedit 3.7\n" +"X-Generator: Poedit 3.9\n" #: src/wx/player_information.cc:111 #, c-format @@ -98,9 +98,9 @@ msgstr "" "film." #: src/wx/audio_dialog.cc:175 -#, fuzzy, c-format +#, c-format msgid "%s audio" -msgstr "Audio %s - %s" +msgstr "Audio %s" #: src/wx/audio_dialog.cc:171 src/wx/audio_dialog.cc:173 #, c-format @@ -113,12 +113,11 @@ msgid "%s test email" msgstr "e-mail de test %s" #: src/wx/about_dialog.cc:95 -#, fuzzy msgid "" "(C) 2012-2026 Carl Hetherington, Terrence Meiczinger\n" "Aaron Boxer" msgstr "" -"(C) 2012-2025 Carl Hetherington, Terrence Meiczinger\n" +"(C) 2012-2026 Carl Hetherington, Terrence Meiczinger\n" "Aaron Boxer" #: src/wx/full_config_dialog.cc:1227 src/wx/player_config_dialog.cc:131 @@ -237,15 +236,15 @@ msgstr "96kHz" msgid ":1" msgstr ":1" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" -msgstr "<IssueDate> a une valeur %n invalide" +msgid "<IssueDate> has an invalid value %issue_date" +msgstr "<IssueDate> a une valeur %issue_date invalide" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" -msgstr "<MainSoundConfiguration> est invalide (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" +msgstr "<MainSoundConfiguration> est invalide (%error)" #: src/wx/subtitle_appearance_dialog.cc:118 msgid "<b>New colour</b>" @@ -268,75 +267,89 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -"Une image JPEG2000 2K contient %n parties de tuile (tile parts) au lieu de 3." +"Une image JPEG2000 2K contient %tile_parts parties de tuile (tile parts) au " +"lieu de 3." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -"Une image JPEG2000 2K contient une valeur Rsiz (capacités) invalide de %n" +"Une image JPEG2000 2K contient une valeur Rsiz (capacités) invalide de " +"%capabilities" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "Une image JPEG2000 2K a %n marqueur(s) POC au lieu de 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "Une image JPEG2000 2K a %guard_bits bits de garde au lieu de 1." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "Une image JPEG2000 2K a %n bits de garde au lieu de 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "Une image JPEG2000 2K a %poc_markers marqueur(s) POC au lieu de 0." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -"Une image JPEG2000 2K contient %n parties de tuile (tile parts) au lieu de 6." +"Une image JPEG2000 2K contient %tile_parts parties de tuile (tile parts) au " +"lieu de 6." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -"Une image JPEG2000 4K contient une valeur Rsiz (capacités) invalide de %n" +"Une image JPEG2000 4K contient une valeur Rsiz (capacités) invalide de " +"%capabilities" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "Une image JPEG2000 4K a %n marqueur(s) POC au lieu de 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "Une image JPEG2000 4K a %guard_bits bits de garde au lieu de 2." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "Une image JPEG2000 4K a %n bits de garde au lieu de 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "Une image JPEG2000 4K a %poc_markers marqueur(s) POC au lieu de 1." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" "Une image JPEG2000 contient un marqueur POC à un emplacement non valide." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "Une image JPEG2000 contient un marqueur POC invalide (%n)." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "Une image JPEG2000 a une hauteur de bloc de code de %n au lieu de 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "" +"Une image JPEG2000 a une hauteur de bloc de code de %code_block_height au " +"lieu de 32." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "Une image JPEG2000 a une largeur de bloc de code de %n au lieu de 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "" +"Une image JPEG2000 a une largeur de bloc de code de %code_block_width au " +"lieu de 32." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "Une image JPEG2000 n'a pas de marqueur TLM." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" "La taille d'une tuile JPEG2000 ne correspond pas à la taille de l'image." @@ -346,22 +359,22 @@ msgstr "" msgid "A new version of %s is available." msgstr "Une nouvelle version de %s est disponible." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "Une image a un codestream JPEG2000 invalide (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "Une image a un codestream JPEG2000 invalide (%error)." #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "Un problème est survenu lors de la recherche de conseils (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" "Un sous-titre dure plus longtemps que la bobine dans laquelle il se trouve." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -556,9 +569,8 @@ msgid "Allow mapping to all audio channels" msgstr "Autoriser le mappage à tous les canaux audio" #: src/wx/full_config_dialog.cc:1079 -#, fuzzy msgid "Allow use of MPEG2 Interop" -msgstr "Activer l'utilisation de la norme SMPTE Bv2.0" +msgstr "Autoriser l’utilisation du MPEG2 Interop" #: src/wx/full_config_dialog.cc:1077 msgid "Allow use of SMPTE Bv2.0" @@ -572,14 +584,14 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Aussi soutenu par" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "Une ressource a un chemin vide dans ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." -msgstr "Un <ContentKind> %n invalide a été utilisé." +msgid "An invalid <ContentKind> %content_kind has been used." +msgstr "Un <ContentKind> %content_kind invalide a été utilisé." #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 msgid "An unknown exception occurred." @@ -625,25 +637,25 @@ msgstr "" "Êtes-vous sûr·e de vouloir envoyer des e-mails aux adresses suivantes ?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "Au moins un nœud <Text> dans un sous-titre est vide." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" "Au moins une ressource d'une bobine n'a pas la même durée que les autres." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "Au moins une paire de sous-titres est séparée par moins de 2 images." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "Au moins un sous-titre a une durée nulle ou négative." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "Au moins un sous-titre dure moins de 15 images." @@ -825,9 +837,8 @@ msgid "Check for updates on startup" msgstr "Rechercher les mises à jour au démarrage" #: src/wx/content_menu.cc:116 -#, fuzzy msgid "Choose CPL" -msgstr "Choisir une CPL..." +msgstr "Choisir une CPL" #: src/wx/content_panel.cc:677 msgid "Choose a DCP folder" @@ -871,10 +882,10 @@ msgstr "" "Cliquer sur ce bouton pour régler tous les contenus sélectionnés à la même " "valeur." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "La ressource de sous-titres codés %n a un <EntryPoint> non nul." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "La ressource de sous-titres codés %asset_id a un <EntryPoint> non nul." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1016,10 +1027,10 @@ msgstr "Impossible de charger le certificat (%s)" msgid "Could not play content" msgstr "Impossible de lire le contenu" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" -msgstr "Impossible de lire le DCP (%n)" +msgid "Could not read DCP (%error)" +msgstr "Impossible de lire le DCP (%error)" #: src/wx/gl_video_view.cc:131 #, c-format @@ -1039,9 +1050,10 @@ msgid "Could not read certificate file." msgstr "Impossible de lire le fichier de certificat." #: src/wx/certificate_chain_editor.cc:195 -#, fuzzy msgid "Could not read certificate file. Make sure it is in PEM format." -msgstr "Impossible de lire le fichier de certificat." +msgstr "" +"Impossible de lire le fichier de certificat. Assurez-vous qu’il soit au " +"format PEM." #: src/wx/qube_certificate_panel.cc:55 msgid "Could not read certificates from Qube server." @@ -1143,9 +1155,8 @@ msgid "Debug: audio analysis" msgstr "Débogage : analyse audio" #: src/wx/full_config_dialog.cc:1322 -#, fuzzy msgid "Debug: butler" -msgstr "Débogage : lecteur" +msgstr "Débogage: lecteur" #: src/wx/full_config_dialog.cc:1314 src/wx/kdm_config_dialog.cc:142 msgid "Debug: email sending" @@ -1364,33 +1375,28 @@ msgid "Encoding Servers" msgstr "Serveurs d'encodage" #: src/wx/encryption_settings_dialog.cc:33 -#, fuzzy msgid "Encrypt picture" -msgstr "Crypté" +msgstr "Chiffrer l’image" #: src/wx/encryption_settings_dialog.cc:34 -#, fuzzy msgid "Encrypt sound" -msgstr "Crypté" +msgstr "Chiffrer le son" #: src/wx/encryption_settings_dialog.cc:35 -#, fuzzy msgid "Encrypt text" -msgstr "Crypté" +msgstr "Chiffrer le texte" #: src/wx/dcp_panel.cc:106 src/wx/spl_entry_dialog.cc:51 msgid "Encrypted" -msgstr "Crypté" +msgstr "Chiffré" #: src/wx/encryption_settings_dialog.cc:31 -#, fuzzy msgid "Encryption settings" -msgstr "Exporter tous les paramètres de décryptage de KDM..." +msgstr "Paramètres de chiffrement" #: src/wx/dcp_panel.cc:107 -#, fuzzy msgid "Encryption settings..." -msgstr "Exporter tous les paramètres de décryptage de KDM..." +msgstr "Paramètres de chiffrement…" #: src/wx/text_view.cc:68 msgid "End" @@ -1513,29 +1519,24 @@ msgid "Finding the colours in these subtitles..." msgstr "Trouver les couleurs dans ces sous-titres..." #: src/wx/markers.cc:39 -#, fuzzy msgid "First frame of end credits (FFEC)" -msgstr "Première image du générique de fin" +msgstr "Première image du générique de fin (FFEC)" #: src/wx/markers.cc:37 -#, fuzzy msgid "First frame of intermission (FFOI)" -msgstr "Première image de l'entracte" +msgstr "Première image de l'entracte (FFOI)" #: src/wx/markers.cc:41 -#, fuzzy msgid "First frame of moving credits (FFMC)" -msgstr "Première image du générique en mouvement" +msgstr "Première image du générique en mouvement (FFMC)" #: src/wx/markers.cc:33 -#, fuzzy msgid "First frame of ratings band (FFOB)" -msgstr "Première image du carton de classification" +msgstr "Première image du carton de classification (FFOB)" #: src/wx/markers.cc:35 -#, fuzzy msgid "First frame of title credits (FFTC)" -msgstr "Première image du générique de titre" +msgstr "Première image du générique de titre (FFTC)" #: src/wx/short_kdm_output_panel.cc:115 src/wx/tall_kdm_output_panel.cc:84 msgid "Folder / ZIP name format" @@ -1565,7 +1566,7 @@ msgstr "Appliquer un marquage de traçabilité sur la vidéo" msgid "Format" msgstr "Format" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1574,7 +1575,7 @@ msgstr "" "L'image %frame (timecode %timecode) dans la ressource %f a un débit " "instantané proche de la limite de 250MBit/s." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1583,14 +1584,14 @@ msgstr "" "L'image %frame (timecode %timecode) dans la ressource %f a un débit " "instantané supérieur à la limite de 250MBit/s." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" "L'image %frame a une composante d'image trop grande (la composante " -"%component a une taille de %size bytes)." +"%component a une taille de %size_in_bytes bytes)." #: src/wx/dcp_panel.cc:868 msgid "Frame Rate" @@ -1972,29 +1973,24 @@ msgid "Language used for any sign language video track" msgstr "Langue utilisée pour toute piste vidéo en langue des signes" #: src/wx/markers.cc:40 -#, fuzzy msgid "Last frame of end credits (LFEC)" -msgstr "Dernière image du générique de fin" +msgstr "Dernière image du générique de fin (LFEC)" #: src/wx/markers.cc:38 -#, fuzzy msgid "Last frame of intermission (LFOI)" -msgstr "Dernière image de l'entracte" +msgstr "Dernière image de l'entracte (LFOI)" #: src/wx/markers.cc:42 -#, fuzzy msgid "Last frame of moving credits (LFMC)" -msgstr "Dernière image du générique en mouvement" +msgstr "Dernière image du générique en mouvement (LFMC)" #: src/wx/markers.cc:34 -#, fuzzy msgid "Last frame of ratings band (LFOB)" -msgstr "Dernière image du carton de classification" +msgstr "Dernière image du carton de classification (LFOB)" #: src/wx/markers.cc:36 -#, fuzzy msgid "Last frame of title credits (LFTC)" -msgstr "Dernière image du générique de titre" +msgstr "Dernière image du générique de titre (LFTC)" #: src/wx/content_panel.cc:292 msgid "Later" @@ -2111,9 +2107,8 @@ msgid "MPEG2 Interop" msgstr "Interop MPEG2" #: src/wx/export_subtitles_dialog.cc:48 -#, fuzzy msgid "MXF (SMPTE)" -msgstr "SMPTE" +msgstr "MXF (SMPTE)" #. TRANSLATORS: Main and Additional here are a choice for whether a set of subtitles is in the "main" language of the #. film or an "additional" language. @@ -2206,84 +2201,84 @@ msgstr "Métadonnées..." msgid "Mix audio down to stereo" msgstr "Mixer l'audio en stéréo" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "D'autres images JPEG2000 2K (non listées) contiennent un nombre incorrect de " "parties de tuile (tile parts)." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "D'autres images JPEG2000 2K (non listées) ont un nombre invalide de bits de " "garde." -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "D'autres images JPEG2000 2K (non listées) ont trop de marqueurs POC." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "D'autres images JPEG2000 4K (non listées) ont un nombre invalide de bits de " "garde." -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "D'autres images JPEG2000 4K (non listées) ont trop de marqueurs POC." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" "D'autres images JPEG2000 (non listées) contiennent des marqueurs POC à des " "emplacements invalides." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" "D'autres images JPEG2000 (non listées) contiennent des marqueurs POC " "invalides." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" "D'autres images JPEG2000 (non listées) contiennent des valeurs Rsiz " "invalides." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "D'autres images JPEG2000 (non listées) contiennent un nombre incorrect de " "parties de tuile (tile parts)." -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" "D'autres images JPEG2000 (non listées) ont une hauteur de bloc codé (code-" "block) invalide." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" "D'autres images JPEG2000 (non listées) ont une largeur de bloc codé (code-" "block) invalide." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "D'autres images JPEG2000 (non listées) n'ont pas de marqueur TLM." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" "D'autres images JPEG2000 (non listées) ne correspondent pas à la taille de " "l'image." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." @@ -2291,7 +2286,7 @@ msgstr "" "D'autres images (non listées) ont un débit instantané proche de la limite de " "250Mbit/s." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." @@ -2299,11 +2294,11 @@ msgstr "" "D'autres images (non listées) ont un débit instantané qui dépasse la limite " "de 250Mbit/s." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "D'autres images (non listées) ont des composantes trop grandes." -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "D'autres images (non listées) ont des codestreams JPEG2000 invalides." @@ -2391,7 +2386,7 @@ msgstr "Suivant" msgid "No" msgstr "Non" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "Aucun fichier ASSETMAP ou ASSETMAP.xml n'a été trouvé." @@ -2399,7 +2394,7 @@ msgstr "Aucun fichier ASSETMAP ou ASSETMAP.xml n'a été trouvé." msgid "No DCP loaded." msgstr "Aucun DCP chargé." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "Aucune erreur SMPTE Bv2.1 trouvée." @@ -2412,11 +2407,11 @@ msgstr "Aucun signal audio ne sera transmis du %s canal '%s' au %s canal '%s'." msgid "No content found in this folder." msgstr "Aucun contenu trouvé dans ce dossier." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "Aucune erreur n'a été trouvée." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "Aucun avertissement n'a été trouvé." @@ -2430,7 +2425,7 @@ msgstr "Non-standard" msgid "None" msgstr "Aucun" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" "Toutes les ressources de sous-titres ne spécifient pas la même balise " @@ -2563,12 +2558,12 @@ msgstr "Remplacer la fréquence d'images vidéo détectée" msgid "Overwrite this file with current configuration" msgstr "Écraser ce fichier avec la nouvelle configuration" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" "Une partie du DCP n'a pas pu être vérifiée car aucun KDM n'était disponible." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3082,7 +3077,7 @@ msgstr "Sélectionner le fichier rapport de débogage" msgid "Select output file" msgstr "Sélectionner le fichier de sortie" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "Selectionner..." @@ -3252,7 +3247,7 @@ msgstr "" "Certains KDMs auront des dates de validité au-delà de celles du certificat " "ciblé. Que voulez-vous faire ?" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." @@ -3260,7 +3255,7 @@ msgstr "" "Certains nœuds <Text> ou <Image> fermés ont des alignements verticaux " "différents au sein d'un <Subtitle>." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3271,7 +3266,7 @@ msgstr "" msgid "Sound" msgstr "Son" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "Les ressources audio n'ont pas toutes le même nombre de canaux." @@ -3354,10 +3349,10 @@ msgstr "Abonnés" msgid "Subtitle appearance" msgstr "Apparence de sous-titre" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "La ressource de sous-titres %n a un <EntryPoint> non nul." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "La ressource de sous-titres %asset_id a un <EntryPoint> non nul." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3440,12 +3435,12 @@ msgstr "Testé par" msgid "The 'until' time must be after the 'from' time." msgstr "L'heure 'jusqu'à' doit être postérieure à l'heure 'de'." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "Le <LabelText> d'un <ContentVersion> dans la CPL %cpl est vide" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." @@ -3453,12 +3448,12 @@ msgstr "" "<MainPictureActiveArea> n'est pas un multiple de 2, ou bien est plus grand " "qu'une ressource." -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." -msgstr "L'ASSETMAP %n a plusieurs ressources avec un même ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." +msgstr "L'ASSETMAP %asset_map_id a plusieurs ressources avec un même ID." -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." @@ -3466,64 +3461,65 @@ msgstr "" "L'Asset ID d'un sous-titre MXF est le même que le Resource ID ou que celui " "du XML encapsulé." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "La CPL %cpl a un <AnnotationText> différent du <ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "La CPL %cpl a un namespace %n invalide" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "La CPL %cpl a un namespace %xml_namespace invalide" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "La CPL %cpl a un contenu crypté mais n'est pas signée." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "La CPL %cpl n'a pas de balise <AnnotationText>." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "La CPL %cpl n'a pas de balise <ContentVersion>" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "La CPL %cpl n'a pas de balise de métadonnées d'extension CPL." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "La CPL %cpl n'a pas de balise de métadonnées CPL." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "La CPL %cpl n'a pas de balise de numéro de version de métadonnées CPL." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "La CPL %f a une balise de métadonnées d'extension CPL invalide (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "" +"La CPL %f a une balise de métadonnées d'extension CPL invalide (%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "Le DCP a un FFOC de %n au lieu de 1." +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "Le DCP a un FFOC de %time au lieu de 1." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." -msgstr "Le DCP a un LFOC de %n au lieu de la durée de la bobine moins un." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." +msgstr "Le DCP a un LFOC de %time au lieu de la durée de la bobine moins un." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." @@ -3531,32 +3527,32 @@ msgstr "" "Le DCP a des sous-titres codés mais chaque bobine n'a pas le même nombre de " "sous-titres codés." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" "Le PDC a du contenu crypté, mais toutes ses ressources ne sont pas cryptées." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "Le DCP n'a pas de marqueur FFOC (first frame of content)." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "Le DCP n'a pas de marqueur LFOC (last frame of content)." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" "Le DCP a des sous-titres mais au moins une bobine n'a pas de sous-titre." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" "Le DCP est un long métrage mais ne comporte pas de marqueur FFEC (première " "image du générique de fin)." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3583,52 +3579,52 @@ msgstr "" "La validité du KDM débute avant (ou juste après) la validité du certificat " "de signature. Utilisez une date de début plus tardive pour ce KDM." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "La PKL %f a un namespace %n invalide" +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "La PKL %f a un namespace %xml_namespace invalide" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"La PKL %n a un <AnnotationText> qui ne correspond pas au <ContentTitleText> " -"de sa CPL." +"La PKL %pkl a un <AnnotationText> qui ne correspond pas au " +"<ContentTitleText> de sa CPL." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "La PKL %n a un contenu crypté mais n'est pas signée." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "La PKL %pkl a un contenu crypté mais n'est pas signée." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "La PKL %n a un contenu crypté mais n'est pas signée." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "La PKL %pkl_id a un contenu crypté mais n'est pas signée." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" "La PKL et la CPL renseignent des sommes de calcul différentes pour la " "ressource vidéo %f." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" "La PKL et la CPL renseignent des sommes de calcul différentes pour la " "ressource vidéo %f." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" "La Resource ID d'un sous-titre MXF ne correspond pas à l'ID du XML encapsulé." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" @@ -3636,63 +3632,66 @@ msgstr "" "Le sous-titre SMPTE %asset_id contient des nœuds <Text>, mais pas de nœud " "<LoadFont>" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "Le XML dans %f est malformé (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "Le XML dans %f est malformé (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "Le XML dans %f est malformé à la ligne %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "Le XML dans %f est malformé à la ligne %l (%error)." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -"Le XML de la ressource de sous-titres codés %f occupe %n octets, ce qui " -"dépasse la limite de 256KB." +"Le XML de la ressource de sous-titres codés %f occupe %size_in_bytes octets, " +"ce qui dépasse la limite de 256KB." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -"Le XML de la ressource sous-titre %n contient plus d'une déclaration " +"Le XML de la ressource sous-titre %asset_id contient plus d'une déclaration " "d'namespace." -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "La ressource %f est en 3D mais son MXF est marqué comme étant en 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "" +"La ressource %asset_id a une durée inférieure à 1 seconde, ce qui n'est pas " +"valide." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "La ressource %f est manquante." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" +"La ressource %asset_id a une durée intrinsèque inférieure à 1 seconde, ce " +"qui n'est pas valide." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "" -"La ressource %n a une durée inférieure à 1 seconde, ce qui n'est pas valide." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "La ressource %asset_id n'a pas de <Hash> dans la CPL." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "" -"La ressource %n a une durée intrinsèque inférieure à 1 seconde, ce qui n'est " -"pas valide." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "La ressource %f est en 3D mais son MXF est marqué comme étant en 2D." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "La ressource %n n'a pas de <Hash> dans la CPL." +msgid "The asset %f is missing." +msgstr "La ressource %f est manquante." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " @@ -3701,10 +3700,11 @@ msgstr "" "La ressource dont l'ID est %asset_id dans l'ASSETMAP a en fait un ID de " "%other_asset_id" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "La ressource de sous-titres codés %n n'a pas de balise <EntryPoint>." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "" +"La ressource de sous-titres codés %asset_id n'a pas de balise <EntryPoint>." #: src/wx/film_name_location_dialog.cc:146 #, c-format @@ -3748,32 +3748,32 @@ msgstr "" "Ce fichier %s existe déjà. Souhaitez-vous l'utiliser comme nouvelle " "configuration ou l'écraser avec la configuration en cours ?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" "Le premier sous-titre ou sous-titre codé apparaît avant les 4 premières " "secondes de la première bobine." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -"Le fichier police pour l'ID \"%n\" est introuvable, ou n'a pas été renseigné " -"dans l'ASSETMAP." +"Le fichier police pour l'ID \"%load_font_id\" est introuvable, ou n'a pas " +"été renseigné dans l'ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"Les polices de la ressource de texte minuté %f occupent %n octets, ce qui " -"dépasse la limite de 10MB." +"Les polices de la ressource de texte minuté %f occupent %size_in_bytes " +"octets, ce qui dépasse la limite de 10MB." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3783,7 +3783,7 @@ msgstr "" "pas à celle renseignée dans la PKL (%reference_hash). Le fichier vidéo est " "probablement corrompu." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3793,7 +3793,7 @@ msgstr "" "pas à celle renseignée dans la PKL (%reference_hash). Le fichier est " "probablement corrompu." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " @@ -3803,17 +3803,16 @@ msgstr "" "celle renseignée dans la PKL (%reference_hash). Le fichier CPL est " "probablement corrompu." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "La balise de langue non valide %n a été utilisée." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "La balise de langue non valide %language a été utilisée." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "La langue dans laquelle le titre du film (\"%s\") est écrit" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." @@ -3821,21 +3820,23 @@ msgstr "" "L'image dans une bobine a une fréquence d'images de %frame_rate, ce qui " "n'est pas valide." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"La durée de la bobine (%s) d'un texte minuté n'est pas la même que la " -"ContainerDuration (%s) de son MXF." +"La durée de la bobine (%other_duration) d'un texte minuté n'est pas la même " +"que la ContainerDuration (%duration) de son MXF." -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "La ressource sonore %f a nombre de bits par échantillon %n invalide." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "" +"La ressource sonore %f a nombre de bits par échantillon invalide de " +"%bit_depth." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3849,40 +3850,41 @@ msgstr "" "Le standard qu'un DCP devrait utiliser. Interop est plus ancien et SMPTE " "est plus récent et est le standard actuel. Dans le doute, choisissez SMPTE." -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "La ressource de sous-titres %asset_id ne contient pas de sous-titres." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "La ressource de sous-titre %asset_id n'a pas de balise <EntryPoint>." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "La ressource de sous-titres %f ne contient pas de balise <Language>." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "La ressource de sous-titres %f ne contient pas de balise <StartTime>." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "La ressource de sous-titres %f a un <StartTime> qui n'est pas zéro." -#: src/wx/verify_dcp_result_panel.cc:643 -#, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "La ressource de sous-titres %n ne contient pas de sous-titres." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "La ressource de sous-titre %n n'a pas de balise <EntryPoint>." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -"La ressource texte minuté %f occupe %n octets, ce qui dépasse la limite de " -"115MB." +"La ressource texte minuté %f occupe %size_in_bytes octets, ce qui dépasse la " +"limite de 115MB." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3891,42 +3893,41 @@ msgstr "" "La ressource vidéo %f utilise la fréquence d'images %frame_rate qui n'est " "pas valide pour la vidéo 4K." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" "La ressource vidéo %f utilise la fréquence d'images invalide %frame_rate." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "La ressource vidéo %f utilise la taille d'image invalide %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "" +"La ressource vidéo %f utilise la taille d'image invalide %size_in_pixels." -#: src/wx/verify_dcp_result_panel.cc:354 -#, fuzzy +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -"La ressource vidéo %f utilise la fréquence d'images %frame_rate qui n'est " -"pas valide pour la vidéo 3D." +"La ressource vidéo est en 4K ce qui n’est pas autorisé pour les vidéos 3D." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "Il y a plus de 3 lignes de sous-titres codés à au moins un endroit." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "Il y a plus de 3 lignes de sous-titres à au moins un endroit." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" "Il y a plus de 32 caractères dans au moins une ligne de sous-titres codés." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "Il y a plus de 52 caractères dans au moins une ligne de sous-titre." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "Il y a plus de 79 caractères dans au moins une ligne de sous-titres." @@ -3938,11 +3939,11 @@ msgstr "Il n'y a encore aucun conseil : vérification du projet en cours." msgid "There are no hints: everything looks good!" msgstr "Il n'y a aucun conseil : tout semble correct !" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "Il y a une balise <Duration> à l'intérieur d'un <MainMarkers>." -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "Il y a une balise <EntryPoint> à l'intérieur d'un <MainMarkers>." @@ -3967,16 +3968,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Cette CPL ne contient aucun contenu crypté." -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"Ce DCP fait référence à la ressource %n dans un autre DCP (et peut-être " -"d'autres), il s'agit donc d'un \"fichier de version\" (VF)." +"Ce DCP fait référence à la ressource %asset_id dans un autre DCP (et peut-" +"être d'autres), il s'agit donc d'un \"fichier de version\" (VF)" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" "Ce DCP utilise la norme Interop, mais il devrait être créé avec la norme " @@ -4387,7 +4388,7 @@ msgstr "Valide jusque" msgid "Vendor" msgstr "Fournisseur" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "Rapport de vérification" @@ -4396,18 +4397,16 @@ msgid "Verify" msgstr "Vérifier" #: src/wx/content_menu.cc:425 -#, fuzzy msgid "Verify DCP" -msgstr "Vérifier" +msgstr "Vérifier le DCP" #: src/wx/verify_dcp_dialog.cc:94 msgid "Verify picture asset details" msgstr "Vérifier les caractéristiques des ressources vidéo" #: src/wx/content_menu.cc:107 -#, fuzzy msgid "Verify..." -msgstr "Vérifier" +msgstr "Vérifier…" #: src/wx/smpte_metadata_dialog.cc:109 src/wx/system_information_dialog.cc:67 msgid "Version" @@ -4524,9 +4523,8 @@ msgid "X" msgstr "X" #: src/wx/export_subtitles_dialog.cc:47 -#, fuzzy msgid "XML (Interop)" -msgstr "Interop" +msgstr "XML (Interop)" #: src/wx/text_panel.cc:93 msgid "Y" diff --git a/src/wx/po/hu_HU.po b/src/wx/po/hu_HU.po index a1ec2fbd8..e5143e134 100644 --- a/src/wx/po/hu_HU.po +++ b/src/wx/po/hu_HU.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -232,14 +232,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -260,70 +260,76 @@ msgstr "" msgid "A" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -332,9 +338,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -342,11 +348,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -548,13 +554,13 @@ msgstr "" msgid "Also supported by" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -599,24 +605,24 @@ msgid "" "\n" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -840,9 +846,9 @@ msgstr "" msgid "Click the button to set all selected content to the same value." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -986,9 +992,9 @@ msgstr "" msgid "Could not play content" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "" #: src/wx/gl_video_view.cc:131 @@ -1523,25 +1529,25 @@ msgstr "" msgid "Format" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2119,80 +2125,80 @@ msgstr "Metaadatok..." msgid "Mix audio down to stereo" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2281,7 +2287,7 @@ msgstr "" msgid "No" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2289,7 +2295,7 @@ msgstr "" msgid "No DCP loaded." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2302,11 +2308,11 @@ msgstr "" msgid "No content found in this folder." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2320,7 +2326,7 @@ msgstr "" msgid "None" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2449,11 +2455,11 @@ msgstr "" msgid "Overwrite this file with current configuration" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -2965,7 +2971,7 @@ msgstr "" msgid "Select output file" msgstr "" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "" @@ -3133,13 +3139,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3148,7 +3154,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3231,9 +3237,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3317,113 +3323,113 @@ msgstr "" msgid "The 'until' time must be after the 'from' time." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3442,109 +3448,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3577,49 +3585,48 @@ msgid "" "or overwrite it with your current configuration?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3627,25 +3634,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3656,75 +3663,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3736,11 +3744,11 @@ msgstr "" msgid "There are no hints: everything looks good!" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3763,14 +3771,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4146,7 +4154,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "" diff --git a/src/wx/po/it_IT.po b/src/wx/po/it_IT.po index b34c4be43..9dc23c048 100644 --- a/src/wx/po/it_IT.po +++ b/src/wx/po/it_IT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: IT VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2018-09-30 18:21+0200\n" "Last-Translator: William Fanelli <william.f@impronte.com>\n" "Language-Team: \n" @@ -235,14 +235,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -265,70 +265,76 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -337,9 +343,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "Una nuova versione di DCP-o-MATIC è disponibile." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -347,11 +353,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -572,13 +578,13 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Supportato da" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -626,24 +632,24 @@ msgstr "" "Sei sicuro di voler inviare email ai seguenti indirizzi?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -881,9 +887,9 @@ msgid "Click the button to set all selected content to the same value." msgstr "" "Clicca sul pulsante per impostare tutti i contenuti allo stesso valore." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -1033,9 +1039,9 @@ msgstr "Impossibile importare il file del certificato (%s)" msgid "Could not play content" msgstr "Impossibile caricare la KDM (%s)" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Impossibile caricare la KDM (%s)" #: src/wx/gl_video_view.cc:131 @@ -1605,25 +1611,25 @@ msgstr "" msgid "Format" msgstr "Formato" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2230,80 +2236,80 @@ msgstr "" msgid "Mix audio down to stereo" msgstr "Mixa l'uscita audio in stereo" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2395,7 +2401,7 @@ msgstr "" msgid "No" msgstr "Nessuno" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2403,7 +2409,7 @@ msgstr "" msgid "No DCP loaded." msgstr "Nessun DCP caricato." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2416,11 +2422,11 @@ msgstr "Nessun audio sarà passato dal canale %d sorgente al canale %d del DCP" msgid "No content found in this folder." msgstr "Nessun contenuto trovato in questa cartella." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2435,7 +2441,7 @@ msgstr "Standard" msgid "None" msgstr "Nessuno" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2572,11 +2578,11 @@ msgstr "Frequenza fotogrammi del video" msgid "Overwrite this file with current configuration" msgstr "Sovrascrivi questo file con la configurazione corrente" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3111,7 +3117,7 @@ msgstr "Seleziona il file di uscita" msgid "Select output file" msgstr "Seleziona il file di uscita" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Seleziona OV" @@ -3288,13 +3294,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3303,7 +3309,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3392,9 +3398,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "Aspetto dei sottotitoli" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3487,113 +3493,113 @@ msgstr "Testato da" msgid "The 'until' time must be after the 'from' time." msgstr "Il tempo finale deve essere successivo a quello iniziale." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3612,109 +3618,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3749,49 +3757,48 @@ msgstr "" "Il file%s esiste già. Vuoi usarlo come nuova configurazione o sovrascriverlo " "con la tua configurazione attuale?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3799,25 +3806,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3828,75 +3835,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3909,11 +3917,11 @@ msgstr "Non ci sono suggerimenti: tutto sembra a posto!" msgid "There are no hints: everything looks good!" msgstr "Non ci sono suggerimenti: tutto sembra a posto!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3937,14 +3945,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Il contenuto del CPL non è crittografato." -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4329,7 +4337,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "Verifica DCP" diff --git a/src/wx/po/ja_JP.po b/src/wx/po/ja_JP.po index ee82cbd2d..ea0ad5a02 100644 --- a/src/wx/po/ja_JP.po +++ b/src/wx/po/ja_JP.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2026-02-15 21:03+0100\n" -"PO-Revision-Date: 2026-03-23 23:11+0900\n" +"PO-Revision-Date: 2026-05-04 22:09+0900\n" "Last-Translator: \n" "Language-Team: \n" "Language: ja_JP\n" @@ -169,7 +169,7 @@ msgstr "12 - 7.1/HI/VI" #: src/wx/wx_util.cc:486 msgid "2 - stereo" -msgstr "2 - stereo" +msgstr "2 - ステレオ" #: src/wx/rgba_colour_picker.cc:40 msgid "255" @@ -193,7 +193,7 @@ msgstr "3D" #: src/wx/video_panel.cc:192 msgid "3D alternate" -msgstr "3D 代替" +msgstr "3D 交互" #: src/wx/video_panel.cc:193 msgid "3D left only" @@ -341,7 +341,7 @@ msgid "A JPEG2000 tile size does not match the image size." msgstr "JPEG2000 タイルのサイズが画像のサイズと一致しません。" #: src/wx/update_dialog.cc:45 -#, fuzzy, c-format +#, c-format msgid "A new version of %s is available." msgstr "%s の新しいバージョンが利用可能です。" @@ -419,10 +419,13 @@ msgid "Add a DCP." msgstr "DCPを追加" #: src/wx/content_panel.cc:277 +#, fuzzy msgid "" "Add a folder of image files (which will be used as a moving image sequence) " "or a folder of sound files." msgstr "" +"画像ファイルまたは音声ファイルを含むフォルダを追加してください。(画像ファイ" +"ルは動画シーケンスとして使用されます)" #: src/wx/full_language_tag_dialog.cc:69 #, fuzzy @@ -460,7 +463,6 @@ msgid "Add recipient" msgstr "受信者を追加" #: src/wx/dcp_timeline.cc:173 -#, fuzzy msgid "Add reel boundary" msgstr "リール境界を追加" @@ -588,7 +590,6 @@ msgid "An unknown exception occurred." msgstr "不明な例外が発生しました。" #: src/wx/short_kdm_output_panel.cc:100 src/wx/tall_kdm_output_panel.cc:81 -#, fuzzy msgid "Annotation text" msgstr "注釈テキスト" @@ -964,7 +965,7 @@ msgstr "コントラスト" #: src/wx/text_panel.cc:101 msgid "Coord|Y" -msgstr "" +msgstr "調整|Y" #: src/wx/dcp_panel.cc:93 msgid "Copy as name" @@ -1083,13 +1084,12 @@ msgid "Creator" msgstr "作成者" #: src/wx/video_panel.cc:91 -#, fuzzy msgid "Crop" msgstr "切り抜き" #: src/wx/ratio_picker.cc:37 msgid "Crop output to" -msgstr "出力画面アスペクト比" +msgstr "切り抜き出力" #: src/wx/update_dialog.cc:68 msgid "Current version" @@ -1491,7 +1491,6 @@ msgid "Filename format" msgstr "ファイル名フォーマット" #: src/wx/film_name_location_dialog.cc:48 -#, fuzzy msgid "Film name" msgstr "プロジェクト名" @@ -1519,8 +1518,9 @@ msgid "Find missing..." msgstr "紛失物を探す" #: src/wx/subtitle_appearance_dialog.cc:130 +#, fuzzy msgid "Finding the colours in these subtitles..." -msgstr "" +msgstr "これらの字幕の色を見つける" #: src/wx/markers.cc:39 msgid "First frame of end credits (FFEC)" @@ -1576,6 +1576,8 @@ msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" +"%f 内の %frame フレーム(タイムコード %timecode)の瞬間ビットレートは250Mbit/" +"s の制限値に近い値です。" #: src/wx/verify_dcp_result_panel.cc:312 #, c-format @@ -1583,6 +1585,8 @@ msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" +"%f 内の %frame フレーム(タイムコード %timecode)の瞬間ビットレートは250Mbit/" +"s の制限値を超えています。" #: src/wx/verify_dcp_result_panel.cc:651 #, c-format @@ -1618,7 +1622,6 @@ msgid "From address" msgstr "送信先メールアドレス" #: src/wx/film_name_location_dialog.cc:66 -#, fuzzy msgid "From template" msgstr "テンプレート元" @@ -2020,7 +2023,6 @@ msgid "Length" msgstr "長さ" #: src/wx/player_information.cc:181 -#, fuzzy msgid "Length: {} ({} frames)" msgstr "長さ: {} ({} フレーム)" @@ -2288,7 +2290,7 @@ msgstr "" #: src/wx/markers_panel.cc:278 #, c-format msgid "Move %s marker to current position" -msgstr "" +msgstr "マーカー%sを現在位置に移動します" #: src/wx/config_move_dialog.cc:31 msgid "Move configuration" @@ -2790,7 +2792,7 @@ msgstr "公開地域" #: src/wx/metadata_dialog.cc:213 msgid "Release territory for this DCP" -msgstr "" +msgstr "このDCPの公開地域" #: src/wx/certificate_chain_editor.cc:91 src/wx/content_menu.cc:120 #: src/wx/content_panel.cc:284 src/wx/full_language_tag_dialog.cc:71 @@ -3450,7 +3452,7 @@ msgstr "" #: src/wx/verify_dcp_result_panel.cc:671 #, c-format msgid "The CPL %cpl has an invalid namespace %n" -msgstr "" +msgstr "CPL%cplには無効な名前空間%nが含まれています" #: src/wx/verify_dcp_result_panel.cc:462 #, c-format @@ -3561,7 +3563,7 @@ msgstr "" #: src/wx/verify_dcp_result_panel.cc:690 #, c-format msgid "The PKL %f has an invalid namespace %n" -msgstr "" +msgstr "PKL%fには無効な名前空間%nが含まれています" #: src/wx/verify_dcp_result_panel.cc:468 #, c-format @@ -3628,7 +3630,7 @@ msgstr "" #, c-format msgid "" "The XML in the subtitle asset %n has more than one namespace declaration." -msgstr "" +msgstr "字幕データ%n内のXMLには複数の名前空間宣言が含まれています。" #: src/wx/verify_dcp_result_panel.cc:327 #, c-format @@ -4580,7 +4582,7 @@ msgstr "f" #: src/wx/dkdm_output_panel.cc:67 src/wx/kdm_output_panel.cc:142 msgid "film name" -msgstr "プロジェクト名称" +msgstr "プロジェクト名" #: src/wx/metadata_dialog.cc:335 msgid "foot lambert" diff --git a/src/wx/po/ko_KR.po b/src/wx/po/ko_KR.po index 2afdb1d0a..ddeaed261 100644 --- a/src/wx/po/ko_KR.po +++ b/src/wx/po/ko_KR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2026-03-10 20:52+0900\n" "Last-Translator: \n" "Language-Team: \n" @@ -236,15 +236,15 @@ msgstr "96kHz" msgid ":1" msgstr ":1" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" -msgstr "<IssueDate>에 유효하지 않은 값 %n이(가) 있습니다" +msgid "<IssueDate> has an invalid value %issue_date" +msgstr "<IssueDate>에 유효하지 않은 값 %issue_date이(가) 있습니다" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" -msgstr "<MainSoundConfiguration>이 유효하지 않습니다 (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" +msgstr "<MainSoundConfiguration>이 유효하지 않습니다 (%error)" #: src/wx/subtitle_appearance_dialog.cc:118 msgid "<b>New colour</b>" @@ -266,74 +266,82 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." -msgstr "2K JPEG2000 프레임이 3개 대신 %n개의 타일 파트를 포함하고 있습니다." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." +msgstr "" +"2K JPEG2000 프레임이 3개 대신 %tile_parts개의 타일 파트를 포함하고 있습니다." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -"2K JPEG2000 프레임에 유효하지 않은 Rsiz(capabilities) 값 %n이(가) 포함되어 있" -"습니다" +"2K JPEG2000 프레임에 유효하지 않은 Rsiz(capabilities) 값 %capabilities이(가) " +"포함되어 있습니다" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "2K JPEG2000 프레임에 0개 대신 %n개의 POC 마커가 있습니다." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "2K JPEG2000 프레임에 1개 대신 %guard_bits개의 가드 비트가 있습니다." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "2K JPEG2000 프레임에 1개 대신 %n개의 가드 비트가 있습니다." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "2K JPEG2000 프레임에 0개 대신 %poc_markers개의 POC 마커가 있습니다." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." -msgstr "4K JPEG2000 프레임이 6개 대신 %n개의 타일 파트를 포함하고 있습니다." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." +msgstr "" +"4K JPEG2000 프레임이 6개 대신 %tile_parts개의 타일 파트를 포함하고 있습니다." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -"4K JPEG2000 프레임에 유효하지 않은 Rsiz(capabilities) 값 %n이(가) 포함되어 있" -"습니다" +"4K JPEG2000 프레임에 유효하지 않은 Rsiz(capabilities) 값 %capabilities이(가) " +"포함되어 있습니다" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "4K JPEG2000 프레임에 1개 대신 %n개의 POC 마커가 있습니다." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "4K JPEG2000 프레임에 2개 대신 %guard_bits개의 가드 비트가 있습니다." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "4K JPEG2000 프레임에 2개 대신 %n개의 가드 비트가 있습니다." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "4K JPEG2000 프레임에 1개 대신 %poc_markers개의 POC 마커가 있습니다." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "JPEG2000 프레임의 유효하지 않은 위치에 POC 마커가 포함되어 있습니다." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "JPEG2000 프레임에 유효하지 않은 POC 마커(%n)가 포함되어 있습니다." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "JPEG2000 프레임의 코드 블록 높이가 32 대신 %n입니다." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "JPEG2000 프레임의 코드 블록 높이가 32 대신 %code_block_height입니다." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "JPEG2000 프레임의 코드 블록 너비가 32 대신 %n입니다." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "JPEG2000 프레임의 코드 블록 너비가 32 대신 %code_block_width입니다." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "JPEG2000 프레임에 TLM 마커가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "JPEG2000 타일 크기가 이미지 크기와 일치하지 않습니다." @@ -342,21 +350,21 @@ msgstr "JPEG2000 타일 크기가 이미지 크기와 일치하지 않습니다. msgid "A new version of %s is available." msgstr "%s의 새 버전이 있습니다." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "영상 프레임에 유효하지 않은 JPEG2000 코드스트림(%n)이 있습니다." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "영상 프레임에 유효하지 않은 JPEG2000 코드스트림(%error)이 있습니다." #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "힌트를 찾는 중 문제가 발생했습니다 (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "자막이 해당 릴보다 더 오래 지속됩니다." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -572,14 +580,14 @@ msgstr "알파 0" msgid "Also supported by" msgstr "도움 주신 분들" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "ASSETMAP에 경로가 비어 있는 에셋이 있습니다." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." -msgstr "유효하지 않은 <ContentKind> %n이(가) 사용되었습니다." +msgid "An invalid <ContentKind> %content_kind has been used." +msgstr "유효하지 않은 <ContentKind> %content_kind이(가) 사용되었습니다." #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 msgid "An unknown exception occurred." @@ -626,25 +634,25 @@ msgstr "" "다음 주소로 이메일을 보내시겠습니까?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "자막 또는 캡션에 하나 이상의 <Text> 노드가 비어 있습니다." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "릴의 하나 이상의 에셋이 다른 에셋과 재생 시간이 다릅니다." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 #, fuzzy msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "하나 이상의 자막간 간격이 2프레임 미만입니다." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "하나 이상의 자막 재생 시간이 0이거나 음수입니다." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "하나 이상의 자막이 15프레임 미만으로 지속됩니다." @@ -873,10 +881,10 @@ msgstr "영화관 및 스크린 데이터베이스 파일" msgid "Click the button to set all selected content to the same value." msgstr "선택한 모든 콘텐츠를 동일한 값으로 설정하려면 버튼을 클릭하세요." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "캡션 에셋 %n에 0이 아닌 <EntryPoint>가 있습니다." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "캡션 에셋 %asset_id에 0이 아닌 <EntryPoint>가 있습니다." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1020,10 +1028,10 @@ msgstr "인증서를 불러올 수 없습니다 (%s)" msgid "Could not play content" msgstr "콘텐츠를 재생할 수 없습니다" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" -msgstr "DCP를 읽을 수 없습니다 (%n)" +msgid "Could not read DCP (%error)" +msgstr "DCP를 읽을 수 없습니다 (%error)" #: src/wx/gl_video_view.cc:131 #, c-format @@ -1563,7 +1571,7 @@ msgstr "비디오에 포렌식 마킹 적용" msgid "Format" msgstr "포맷" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1572,7 +1580,7 @@ msgstr "" "에셋 %f의 프레임 %frame(타임코드 %timecode)의 순간 비트레이트가 제한치인 " "250Mbit/s에 근접합니다." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1581,14 +1589,14 @@ msgstr "" "에셋 %f의 프레임 %frame(타임코드 %timecode)의 순간 비트레이트가 제한치인 " "250Mbit/s를 초과했습니다." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" "프레임 %frame의 이미지 컴포넌트 크기가 너무 큽니다. (컴포넌트 %component의 크" -"기가 %size 바이트임)" +"기가 %size_in_bytes 바이트임)" #: src/wx/dcp_panel.cc:868 msgid "Frame Rate" @@ -2192,7 +2200,7 @@ msgstr "메타데이터…" msgid "Mix audio down to stereo" msgstr "오디오를 스테레오로 믹스다운" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 #, fuzzy msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." @@ -2200,7 +2208,7 @@ msgstr "" "더 많은 2K JPEG2000 프레임(목록에 없음)에 잘못된 수의 타일 파트가 포함되어 있" "습니다." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 #, fuzzy msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." @@ -2208,13 +2216,13 @@ msgstr "" "더 많은 2K JPEG2000 프레임(목록에 없음)에 유효하지 않은 수의 가드 비트가 있습" "니다." -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 #, fuzzy msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" "더 많은 2K JPEG2000 프레임(목록에 없음)에 너무 많은 POC 마커가 있습니다." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 #, fuzzy msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." @@ -2222,13 +2230,13 @@ msgstr "" "더 많은 4K JPEG2000 프레임(목록에 없음)에 유효하지 않은 수의 가드 비트가 있습" "니다." -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 #, fuzzy msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" "더 많은 4K JPEG2000 프레임(목록에 없음)에 너무 많은 POC 마커가 있습니다." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 #, fuzzy msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." @@ -2236,21 +2244,21 @@ msgstr "" "더 많은 JPEG2000 프레임(목록에 없음)의 유효하지 않은 위치에 POC 마커가 포함되" "어 있습니다." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" "더 많은 JPEG2000 프레임(목록에 없음)에 유효하지 않은 POC 마커가 포함되어 있습" "니다." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" "더 많은 JPEG2000 프레임(목록에 없음)에 유효하지 않은 Rsiz 값이 포함되어 있습" "니다." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 #, fuzzy msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." @@ -2258,32 +2266,32 @@ msgstr "" "더 많은 JPEG2000 프레임(목록에 없음)에 잘못된 수의 타일 파트가 포함되어 있습" "니다." -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" "더 많은 JPEG2000 프레임(목록에 없음)에 유효하지 않은 코드 블록 높이가 있습니" "다." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" "더 많은 JPEG2000 프레임(목록에 없음)에 유효하지 않은 코드 블록 너비가 있습니" "다." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 #, fuzzy msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "더 많은 JPEG2000 프레임(목록에 없음)에 TLM 마커가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 #, fuzzy msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" "더 많은 JPEG2000 타일 크기(목록에 없음)가 이미지 크기와 일치하지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " @@ -2292,7 +2300,7 @@ msgstr "" "더 많은 프레임(목록에 없음)의 순간 비트레이트가 제한치인 250Mbit/s에 근접합니" "다." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " @@ -2301,12 +2309,12 @@ msgstr "" "더 많은 프레임(목록에 없음)의 순간 비트레이트가 제한치인 250Mbit/s를 초과했습" "니다." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 #, fuzzy msgid "More frames (not listed) have image components that are too large." msgstr "더 많은 프레임(목록에 없음)의 이미지 컴포넌트 크기가 너무 큽니다." -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 #, fuzzy msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2398,7 +2406,7 @@ msgstr "다음" msgid "No" msgstr "아니오" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "ASSETMAP 또는 ASSETMAP.xml 파일을 찾을 수 없습니다." @@ -2406,7 +2414,7 @@ msgstr "ASSETMAP 또는 ASSETMAP.xml 파일을 찾을 수 없습니다." msgid "No DCP loaded." msgstr "로드된 DCP가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "SMPTE Bv2.1 오류가 발견되지 않았습니다." @@ -2419,11 +2427,11 @@ msgstr "%s 채널 '%s'에서 %s 채널 '%s'(으)로 전달될 오디오가 없 msgid "No content found in this folder." msgstr "이 폴더에 콘텐츠가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "오류가 발견되지 않았습니다." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "경고가 발견되지 않았습니다." @@ -2437,7 +2445,7 @@ msgstr "비표준" msgid "None" msgstr "없음" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "모든 자막 에셋이 동일한 <Language> 태그를 지정하지 않았습니다." @@ -2568,11 +2576,11 @@ msgstr "감지된 비디오 프레임 레이트 무시" msgid "Overwrite this file with current configuration" msgstr "현재 설정으로 이 파일을 덮어쓰기" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "KDM을 사용할 수 없어서 DCP의 일부를 확인하지 못했습니다." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3087,7 +3095,7 @@ msgstr "디버그 로그 파일 선택" msgid "Select output file" msgstr "출력 파일 선택" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "선택…" @@ -3258,7 +3266,7 @@ msgstr "" "일부 KDM의 유효 기간이 수신자 인증서의 유효 기간을 벗어납니다. 어떻게 하시겠" "습니까?" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." @@ -3266,7 +3274,7 @@ msgstr "" "일부 클로즈드 <Text> 또는 <Image> 노드가 한 <Subtitle> 내에서 서로 다른 수직 " "정렬을 가지고 있습니다." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "일부 클로즈드 캡션이 수직 위치 순서대로 나열되지 않았습니다." @@ -3275,7 +3283,7 @@ msgstr "일부 클로즈드 캡션이 수직 위치 순서대로 나열되지 msgid "Sound" msgstr "사운드" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "모든 사운드 에셋의 채널 수가 동일하지 않습니다." @@ -3361,10 +3369,10 @@ msgstr "구독자" msgid "Subtitle appearance" msgstr "자막 모양새" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "자막 에셋 %n에 0이 아닌 <EntryPoint>가 있습니다." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "자막 에셋 %asset_id에 0이 아닌 <EntryPoint>가 있습니다." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3447,23 +3455,23 @@ msgstr "테스트한 사람 " msgid "The 'until' time must be after the 'from' time." msgstr "'종료' 시간은 '시작' 시간보다 늦어야 합니다." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "CPL %cpl의 <ContentVersion> 내 <LabelText>가 비어 있습니다" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "<MainPictureActiveArea>가 2의 배수가 아니거나 에셋보다 큽니다." -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." -msgstr "ASSETMAP %n에 동일한 ID를 가진 에셋이 둘 이상 있습니다." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." +msgstr "ASSETMAP %asset_map_id에 동일한 ID를 가진 에셋이 둘 이상 있습니다." -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 #, fuzzy msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " @@ -3471,64 +3479,64 @@ msgid "" msgstr "" "Timed Text MXF의 에셋 ID가 리소스 ID 또는 포함된 XML의 ID와 동일합니다." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "CPL %cpl의 <AnnotationText>가 <ContentTitleText>와 다릅니다." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "CPL %cpl에 유효하지 않은 네임스페이스 %n이(가) 있습니다" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "CPL %cpl에 유효하지 않은 네임스페이스 %xml_namespace이(가) 있습니다" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "CPL %cpl에 암호화된 콘텐츠가 있지만 서명되지 않았습니다." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "CPL %cpl에 <AnnotationText> 태그가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "CPL %cpl에 <ContentVersion> 태그가 없습니다" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "CPL %cpl에 CPL 확장 메타데이터 태그가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "CPL %cpl에 CPL 메타데이터 태그가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "CPL %cpl에 CPL 메타데이터 버전 번호 태그가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "CPL %f에 유효하지 않은 CPL 확장 메타데이터 태그(%n)가 있습니다." +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "CPL %f에 유효하지 않은 CPL 확장 메타데이터 태그(%error)가 있습니다." -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "DCP의 FFOC가 1이 아닌 %n입니다." +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "DCP의 FFOC가 1이 아닌 %time입니다." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." -msgstr "DCP의 LFOC가 (릴 길이 - 1)이 아닌 %n입니다." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." +msgstr "DCP의 LFOC가 (릴 길이 - 1)이 아닌 %time입니다." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." @@ -3536,28 +3544,28 @@ msgstr "" "DCP에 클로즈드 캡션이 있지만, 모든 릴의 클로즈드 캡션 에셋 수가 동일하지 않습" "니다." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "DCP에 암호화된 콘텐츠가 있지만, 모든 에셋이 암호화되지는 않았습니다." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "DCP에 FFOC(콘텐츠 첫 프레임) 마커가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "DCP에 LFOC(콘텐츠 마지막 프레임) 마커가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "DCP에 자막이 있지만, 최소 하나 이상의 릴에 자막 에셋이 없습니다." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "본편 DCP임에도 FFEC(엔드 크레딧 첫 프레임) 마커가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "본편 DCP임에도 FFMC(롤링 크레딧 첫 프레임) 마커가 없습니다." @@ -3580,103 +3588,108 @@ msgstr "" "KDM 시작 기간이 서명 인증서의 유효 기간 시작 전(또는 직전)입니다. 이 KDM의 시" "작 시간을 더 늦춰주십시오." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "PKL %f에 유효하지 않은 네임스페이스 %n이(가) 있습니다." +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "PKL %f에 유효하지 않은 네임스페이스 %xml_namespace이(가) 있습니다." -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"PKL %n의 <AnnotationText>가 해당 CPL의 <ContentTitleText>와 일치하지 않습니" +"PKL %pkl의 <AnnotationText>가 해당 CPL의 <ContentTitleText>와 일치하지 않습니" "다." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "PKL %n에 암호화된 콘텐츠가 포함되어 있지만 서명되지 않았습니다." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "PKL %pkl에 암호화된 콘텐츠가 포함되어 있지만 서명되지 않았습니다." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "PKL %n에 동일한 ID를 가진 에셋이 둘 이상 있습니다." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "PKL %pkl_id에 동일한 ID를 가진 에셋이 둘 이상 있습니다." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "영상 에셋 %f에 대한 PKL과 CPL의 해시값이 일치하지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "사운드 에셋 %f에 대한 PKL과 CPL의 해시값이 일치하지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "타임드 텍스트 MXF의 리소스 ID가 포함된 XML의 ID와 일치하지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" "SMPTE 자막 에셋 %asset_id에 <Text> 노드는 있지만 <LoadFont> 노드가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "%f의 XML 형식이 잘못되었습니다 (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "%f의 XML 형식이 잘못되었습니다 (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "%f의 XML 형식이 %l번째 줄에서 잘못되었습니다 (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "%f의 XML 형식이 %l번째 줄에서 잘못되었습니다 (%error)." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." -msgstr "캡션 에셋 %f의 XML 용량이 %n 바이트로, 제한치인 256KB를 초과했습니다." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." +msgstr "" +"캡션 에셋 %f의 XML 용량이 %size_in_bytes 바이트로, 제한치인 256KB를 초과했습" +"니다." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." -msgstr "자막 에셋 %n의 XML에 둘 이상의 네임스페이스 선언이 있습니다." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." +msgstr "자막 에셋 %asset_id의 XML에 둘 이상의 네임스페이스 선언이 있습니다." -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "에셋 %f는 3D이지만 해당 MXF는 2D로 표시되어 있습니다." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "에셋 %asset_id의 재생 시간이 1초 미만이며, 이는 유효하지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "에셋 %f이(가) 누락되었습니다." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" +"에셋 %asset_id의 고유 재생 시간이 1초 미만이며, 이는 유효하지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "에셋 %n의 재생 시간이 1초 미만이며, 이는 유효하지 않습니다." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "에셋 %asset_id에 대한 <Hash>가 CPL에 없습니다." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "에셋 %n의 고유 재생 시간이 1초 미만이며, 이는 유효하지 않습니다." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "에셋 %f는 3D이지만 해당 MXF는 2D로 표시되어 있습니다." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "에셋 %n에 대한 <Hash>가 CPL에 없습니다." +msgid "The asset %f is missing." +msgstr "에셋 %f이(가) 누락되었습니다." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " @@ -3685,10 +3698,10 @@ msgstr "" "에셋 맵의 ID %asset_id인 에셋이 실제로는 %other_asset_id라는 ID를 가지고 있습" "니다." -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "캡션 에셋 %n에 <EntryPoint> 태그가 없습니다." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "캡션 에셋 %asset_id에 <EntryPoint> 태그가 없습니다." #: src/wx/film_name_location_dialog.cc:146 #, c-format @@ -3730,30 +3743,30 @@ msgstr "" "%s 파일이 이미 존재합니다. 이 파일을 새 설정으로 사용하시겠습니까, 아니면 현" "재 설정으로 덮어쓰시겠습니까?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "첫 번째 자막 또는 캡션이 첫 번째 릴의 시작 후 4초 이전에 나타납니다." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -"폰트 ID \\\"%n\\\"에 대한 폰트 파일을 찾을 수 없거나 ASSETMAP에서 참조되지 않" -"았습니다." +"폰트 ID \\\"%load_font_id\\\"에 대한 폰트 파일을 찾을 수 없거나 ASSETMAP에서 " +"참조되지 않았습니다." -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"타임드 텍스트 에셋 %f의 폰트 용량이 %n 바이트로, 제한치인 10MB를 초과했습니" -"다." +"타임드 텍스트 에셋 %f의 폰트 용량이 %size_in_bytes 바이트로, 제한치인 10MB를 " +"초과했습니다." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3762,7 +3775,7 @@ msgstr "" "영상 에셋 %f의 해시값(%calculated_hash)이 PKL 파일(%reference_hash)과 일치하" "지 않습니다. 에셋 파일이 손상되었을 가능성이 있습니다." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3771,7 +3784,7 @@ msgstr "" "사운드 에셋 %f의 해시값(%calculated_hash)이 PKL 파일(%reference_hash)과 일치" "하지 않습니다. 에셋 파일이 손상되었을 가능성이 있습니다." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " @@ -3780,37 +3793,36 @@ msgstr "" "PKL 내 CPL %cpl의 해시값(%reference_hash)이 CPL 파일(%calculated_hash)과 일치" "하지 않습니다. CPL 파일이 손상되었을 가능성이 있습니다." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "유효하지 않은 언어 태그 %n이(가) 사용되었습니다." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "유효하지 않은 언어 태그 %language이(가) 사용되었습니다." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "필름 제목(\\\"%s\\\")에 사용된 언어" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "릴 내 영상의 프레임 레이트 %frame_rate은(는) 유효하지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"일부 타임드 텍스트의 릴 재생 시간(%s)이 해당 MXF의 컨테이너 재생 시간(%s)과 " -"다릅니다." +"일부 타임드 텍스트의 릴 재생 시간(%other_duration)이 해당 MXF의 컨테이너 재" +"생 시간(%duration)과 다릅니다." -#: src/wx/verify_dcp_result_panel.cc:408 -#, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "사운드 에셋 %f의 비트 심도 %n은(는) 유효하지 않습니다." +#: src/wx/verify_dcp_result_panel.cc:423 +#, fuzzy, c-format +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "사운드 에셋 %f의 비트 심도 %bit_depth은(는) 유효하지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "사운드 에셋 %f의 프레임 레이트 %frame_rate은(는) 유효하지 않습니다." @@ -3823,39 +3835,41 @@ msgstr "" "DCP가 사용할 표준입니다. Interop은 예전 방식이며, SMPTE는 최신(현재) 표준입" "니다. 잘 모르시겠다면 'SMPTE'를 선택하십시오." -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "자막 에셋 %asset_id에 자막이 없습니다." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "자막 에셋 %asset_id에 <EntryPoint> 태그가 없습니다." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "자막 에셋 %f에 <Language> 태그가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "자막 에셋 %f에 <StartTime> 태그가 없습니다." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "자막 에셋 %f의 <StartTime>이 0이 아닙니다." -#: src/wx/verify_dcp_result_panel.cc:643 -#, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "자막 에셋 %n에 자막이 없습니다." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "자막 에셋 %n에 <EntryPoint> 태그가 없습니다." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -"타임드 텍스트 에셋 %f의 용량이 %n 바이트로, 제한치인 115MB를 초과했습니다." +"타임드 텍스트 에셋 %f의 용량이 %size_in_bytes 바이트로, 제한치인 115MB를 초과" +"했습니다." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3864,41 +3878,43 @@ msgstr "" "영상 에셋 %f에 사용된 프레임 레이트 %frame_rate은(는) 4K 영상에 유효하지 않습" "니다." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" "영상 에셋 %f에 유효하지 않은 프레임 레이트 %frame_rate이(가) 사용되었습니다." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "영상 에셋 %f에 유효하지 않은 이미지 크기 %n이(가) 사용되었습니다." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "" +"영상 에셋 %f에 유효하지 않은 이미지 크기 %size_in_pixels이(가) 사용되었습니" +"다." -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 #, fuzzy msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" "영상 에셋 %f에 사용된 프레임 레이트 %frame_rate은(는) 3D 영상에 유효하지 않습" "니다." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "최소 한 곳에서 클로즈드 캡션이 3줄을 초과합니다." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "최소 한 곳에서 자막이 3줄을 초과합니다." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "최소 한 줄의 클로즈드 캡션이 32글자를 초과합니다." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "최소 한 줄의 자막이 52글자를 초과합니다." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "최소 한 줄의 자막이 79글자를 초과합니다." @@ -3910,11 +3926,11 @@ msgstr "아직 힌트가 없습니다. 프로젝트 검사가 진행 중입니 msgid "There are no hints: everything looks good!" msgstr "힌트가 없습니다. 모든 것이 완벽합니다!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "<MainMarkers> 안에 <Duration> 태그가 있습니다." -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "<MainMarkers> 안에 <EntryPoint> 태그가 있습니다." @@ -3939,15 +3955,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "이 CPL에는 암호화된 에셋이 포함되어 있지 않습니다." -#: src/wx/verify_dcp_result_panel.cc:333 -#, c-format +#: src/wx/verify_dcp_result_panel.cc:348 +#, fuzzy, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"이 DCP는 다른 DCP(또는 그 외)의 에셋 %n을 참조하므로 \"버전 파일\"(VF)입니다" +"이 DCP는 다른 DCP(또는 그 외)의 에셋 %asset_id을 참조하므로 \"버전 파일\"(VF)" +"입니다" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "이 DCP는 Interop 표준을 사용하지만, SMPTE로 제작되어야 합니다." @@ -4343,7 +4360,7 @@ msgstr "유효 기간 종료" msgid "Vendor" msgstr "제조사" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "검증 보고서" diff --git a/src/wx/po/nl_NL.po b/src/wx/po/nl_NL.po index 0c4750de7..0242e90bf 100644 --- a/src/wx/po/nl_NL.po +++ b/src/wx/po/nl_NL.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" -"PO-Revision-Date: 2026-03-23 13:16+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" +"PO-Revision-Date: 2026-04-21 18:13+0200\n" "Last-Translator: Rob van Nieuwkerk <dcpomatic-translations@berrymount.nl>\n" "Language-Team: Rob van Nieuwkerk <dcpomatic-translations@berrymount.nl>\n" "Language: nl_NL\n" @@ -236,15 +236,15 @@ msgstr "96kHz" msgid ":1" msgstr ":1" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" -msgstr "<IssueDate> heeft een ongeldige waarde %n" +msgid "<IssueDate> has an invalid value %issue_date" +msgstr "<IssueDate> heeft een ongeldige waarde %issue_date" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" -msgstr "<MainSoundConfiguration> is ongeldig (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" +msgstr "<MainSoundConfiguration> is ongeldig (%error)" #: src/wx/subtitle_appearance_dialog.cc:118 msgid "<b>New colour</b>" @@ -266,74 +266,86 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." -msgstr "Een 2K JPEG2000-frame bevat %n tile parts in plaats van 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." +msgstr "Een 2K JPEG2000-frame bevat %tile_parts tile parts in plaats van 3." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -"Een 2K JPEG2000-frame bevat een ongeldige Rsiz (capabilities) waarde van %n" +"Een 2K JPEG2000-frame bevat een ongeldige Rsiz (capabilities) waarde van " +"%capabilities" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "Een 2K JPEG2000-frame heeft %n POC marker(s) in plaats van 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "Een 2K JPEG2000-frame heeft %guard_bits guard bits in plaats van 1." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "Een 2K JPEG2000-frame heeft %n guard bits in plaats van 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "" +"Een 2K JPEG2000-frame heeft %poc_markers POC marker(s) in plaats van 0." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." -msgstr "Een 4K JPEG2000-frame bevat %n tile parts in plaats van 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." +msgstr "Een 4K JPEG2000-frame bevat %tile_parts tile parts in plaats van 6." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -"Een 4K JPEG2000-frame bevat een ongeldige Rsiz (capabilities) waarde van %n" +"Een 4K JPEG2000-frame bevat een ongeldige Rsiz (capabilities) waarde van " +"%capabilities" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "Een 4K JPEG2000-frame heeft %n POC marker(s) in plaats van 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "Een 4K JPEG2000-frame heeft %guard_bits guard bits in plaats van 2." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "Een 4K JPEG2000-frame heeft %n guard bits in plaats van 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "" +"Een 4K JPEG2000-frame heeft %poc_markers POC marker(s) in plaats van 1." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "Een JPEG2000-frame bevat een POC marker op een ongeldige locatie." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "Een JPEG2000-frame bevat een ongeldige POC marker (%n)." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -"Een JPEG2000-frame heeft een code-block hoogte van %n in plaats van 32." +"Een JPEG2000-frame heeft een code-block hoogte van %code_block_height in " +"plaats van 32." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -"Een JPEG2000-frame heeft een code-block breedte van %n in plaats van 32." +"Een JPEG2000-frame heeft een code-block breedte van %code_block_width in " +"plaats van 32." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "Een JPEG2000-frame heeft geen TLM marker." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "Een JPEG2000 tile-grootte komt niet overeen met de beeldgrootte." @@ -342,21 +354,21 @@ msgstr "Een JPEG2000 tile-grootte komt niet overeen met de beeldgrootte." msgid "A new version of %s is available." msgstr "Er is een nieuwe versie van %s beschikbaar." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "Een picture frame heeft een ongeldige JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "Een picture frame heeft een ongeldige JPEG2000 codestream (%error)." #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "Er is een probleem opgetreden tijdens het zoeken naar hints (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "Een ondertitel duurt langer dan de reel waarin hij zit." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -566,14 +578,14 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Ook ondersteund door" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "Een asset heeft een leeg pad in de ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." -msgstr "Er is een ongeldige <ContentKind> %n gebruikt." +msgid "An invalid <ContentKind> %content_kind has been used." +msgstr "Er is een ongeldige <ContentKind> %content_kind gebruikt." #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 msgid "An unknown exception occurred." @@ -619,28 +631,28 @@ msgstr "" "Weet u zeker dat u e-mails naar de volgende adressen wilt verzenden?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" "Ten minste één <Text> node in een ondertitel of closed caption is leeg." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" "Ten minste één asset in een reel heeft niet dezelfde duration als de andere." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" "Ten minste één paar ondertitels wordt gescheiden door minder dan 2 frames." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" "Ten minste één ondertitel heeft een duur van nul of een negatieve duur." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "Ten minste één ondertitel duurt minder dan 15 frames." @@ -869,10 +881,10 @@ msgstr "" "Klik op de knop om alle geselecteerde content op dezelfde waarde in te " "stellen." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "Closed caption asset %n heeft een <EntryPoint> dat niet nul is." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "Closed caption asset %asset_id heeft een <EntryPoint> dat niet nul is." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1015,10 +1027,10 @@ msgstr "Kan certificaat niet laden (%s)" msgid "Could not play content" msgstr "Kan content niet afspelen" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" -msgstr "Kan DCP niet lezen (%n)" +msgid "Could not read DCP (%error)" +msgstr "Kan DCP niet lezen (%error)" #: src/wx/gl_video_view.cc:131 #, c-format @@ -1552,7 +1564,7 @@ msgstr "Markeer video forensisch" msgid "Format" msgstr "Formaat" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1561,7 +1573,7 @@ msgstr "" "Frame %frame (tijdcode %timecode) in asset %f heeft een momentane bit rate " "die dicht bij de limiet van 250 Mbit/s zit." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1570,14 +1582,14 @@ msgstr "" "Frame %frame (tijdcode %timecode) in asset %f heeft een momentane bit rate " "die boven de limiet van 250 Mbit/s zit." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" "Frame %frame bevat een beeldcomponent die te groot is (component %component " -"is %size bytes groot)." +"is %size_in_bytes bytes groot)." #: src/wx/dcp_panel.cc:868 msgid "Frame Rate" @@ -2182,73 +2194,73 @@ msgstr "Metadata..." msgid "Mix audio down to stereo" msgstr "Mix audio down naar stereo" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "Meer 2K JPEG2000-frames (niet vermeld) hebben een verkeerd aantal tile parts." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "Meer 2K JPEG2000-frames (niet vermeld) hebben een ongeldig aantal guard bits." -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "Meer 2K JPEG2000-frames (niet vermeld) hebben te veel POC markers." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "Meer 4K JPEG2000-frames (niet vermeld) hebben een ongeldig aantal guard bits." -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "Meer 4K JPEG2000-frames (niet vermeld) hebben te veel POC markers." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" "Meer JPEG2000-frames (niet vermeld) hebben POC markers op ongeldige locaties." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "Meer JPEG2000-frames (niet vermeld) hebben ongeldige POC markers." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "Meer JPEG2000-frames (niet vermeld) hebben ongeldige Rsiz waarden." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "Meer JPEG2000-frames (niet vermeld) hebben een verkeerd aantal tile parts." -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" "Meer JPEG2000-frames (niet vermeld) hebben een ongeldige code-block hoogte." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" "Meer JPEG2000-frames (niet vermeld) hebben een ongeldige code-block breedte." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "Meer JPEG2000-frames (niet vermeld) hebben geen TLM marker." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" "Meer JPEG2000 tile-groottes (niet vermeld) komen niet overeen met de " "beeldgrootte." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." @@ -2256,7 +2268,7 @@ msgstr "" "Meer frames (niet vermeld) hebben een momentane bit rate die dicht bij de " "limiet van 250 Mbit/s zit." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." @@ -2264,11 +2276,11 @@ msgstr "" "Meer frames (niet vermeld) hebben een momentane bit rate die boven de limiet " "van 250 Mbit/s zit." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "Meer frames (niet vermeld) hebben te grote beeldcomponenten." -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "Meer picture frames hebben ongeldige JPEG2000 codestreams." @@ -2356,7 +2368,7 @@ msgstr "Volgende" msgid "No" msgstr "Nee" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "Er is geen ASSETMAP of ASSETMAP.xml bestand gevonden." @@ -2364,7 +2376,7 @@ msgstr "Er is geen ASSETMAP of ASSETMAP.xml bestand gevonden." msgid "No DCP loaded." msgstr "Geen DCP geladen." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "Geen SMPTE Bv2.1-fouten gevonden." @@ -2378,11 +2390,11 @@ msgstr "" msgid "No content found in this folder." msgstr "Geen content gevonden in deze map." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "Geen fouten gevonden." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "Geen waarschuwingen gevonden." @@ -2396,7 +2408,7 @@ msgstr "Niet-standaard" msgid "None" msgstr "Geen" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "Niet alle subtitle assets specificeren dezelfde <Language> tag." @@ -2526,13 +2538,13 @@ msgstr "Overschrijf gedetecteerde video frame rate" msgid "Overwrite this file with current configuration" msgstr "Overschrijf dit bestand met huidige configuratie" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" "Een deel van de DCP kon niet worden gecontroleerd omdat er geen KDM " "beschikbaar was." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3046,7 +3058,7 @@ msgstr "Selecteer debug-logbestand" msgid "Select output file" msgstr "Selecteer output-bestand" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "Selecteer..." @@ -3216,7 +3228,7 @@ msgstr "" "Sommige KDM's zouden geldigheidsduren hebben die buiten de certificaatduren " "van de ontvanger vallen. Wat wilt u doen?" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." @@ -3224,7 +3236,7 @@ msgstr "" "Sommige closed <Text> of <Image> nodes hebben verschillende verticale " "uitlijningen binnen een <Subtitle>." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3234,7 +3246,7 @@ msgstr "" msgid "Sound" msgstr "Audio" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "Sound assets hebben niet allemaal hetzelfde aantal kanalen." @@ -3319,10 +3331,10 @@ msgstr "Abonnees" msgid "Subtitle appearance" msgstr "Ondertitel-uiterlijk" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "Subtitle asset %n heeft een <EntryPoint> dat niet nul is." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "Subtitle asset %asset_id heeft een <EntryPoint> dat niet nul is." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3405,24 +3417,24 @@ msgstr "Getest door" msgid "The 'until' time must be after the 'from' time." msgstr "De 'tot'-tijd moet na de 'van'-tijd zijn." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "De <LabelText> in een <ContentVersion> in CPL %cpl is leeg" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" "De <MainPictureActiveArea> is geen veelvoud van 2 of is groter dan een asset." -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." -msgstr "De ASSETMAP %n heeft meer dan één asset met dezelfde ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." +msgstr "De ASSETMAP %asset_map_id heeft meer dan één asset met dezelfde ID." -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." @@ -3430,7 +3442,7 @@ msgstr "" "De Asset ID in een timed text MXF is hetzelfde als de Resource ID of die van " "de ingesloten XML." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " @@ -3439,59 +3451,60 @@ msgstr "" "De CPL %cpl heeft een <AnnotationText> die niet hetzelfde is als zijn " "<ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "De CPL %cpl heeft een ongeldige namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "De CPL %cpl heeft een ongeldige namespace %xml_namespace" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "De CPL %cpl heeft versleutelde content maar is niet ondertekend." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "De CPL %cpl heeft geen <AnnotationText> tag." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "De CPL %cpl heeft geen <ContentVersion> tag" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "De CPL %cpl heeft geen CPL extension metadata tag." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "De CPL %cpl heeft geen CPL metadata tag." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "De CPL %cpl heeft geen CPL metadata version number tag." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "De CPL %f heeft een ongeldige CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "De CPL %f heeft een ongeldige CPL extension metadata tag (%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "De DCP heeft een FFOC (first frame of content) van %n in plaats van 1." +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "" +"De DCP heeft een FFOC (first frame of content) van %time in plaats van 1." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -"De DCP heeft een LFOC (last frame of content) van %n in plaats van de reel " -"duration min één." +"De DCP heeft een LFOC (last frame of content) van %time in plaats van de " +"reel duration min één." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." @@ -3499,32 +3512,32 @@ msgstr "" "De DCP heeft closed captions, maar niet elke reel heeft hetzelfde aantal " "closed caption assets." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" "De DCP heeft versleutelde content, maar niet al zijn assets zijn versleuteld." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "De DCP heeft geen FFOC (first frame of content) marker." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "De DCP heeft geen LFOC (last frame of content) marker." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" "De DCP heeft ondertitels, maar ten minste één reel heeft geen subtitle asset." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" "De DCP is een feature maar heeft geen FFEC (first frame of end credits) " "marker." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3550,41 +3563,41 @@ msgstr "" "De KDM-starttijd is voor (of nabij) het begin van de geldigheidsduur van het " "ondertekenings-certificaat. Gebruik een latere starttijd voor deze KDM." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "De PKL %f heeft een ongeldige namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "De PKL %f heeft een ongeldige namespace %xml_namespace" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"De PKL %n heeft een <AnnotationText> die niet overeenkomt met de " +"De PKL %pkl heeft een <AnnotationText> die niet overeenkomt met de " "<ContentTitleText> van zijn CPL." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "De PKL %n heeft versleutelde content, maar is niet ondertekend." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "De PKL %pkl heeft versleutelde content, maar is niet ondertekend." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "De PKL %n heeft meer dan één asset met dezelfde ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "De PKL %pkl_id heeft meer dan één asset met dezelfde ID." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "De PKL-hash en CPL-hash van picture asset %f komen niet overeen." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "De PKL-hash en CPL-hash van sound asset %f komen niet overeen." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." @@ -3592,7 +3605,7 @@ msgstr "" "De Resource ID in een timed text MXF is niet hetzelfde als de ID van de " "ingesloten XML." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" @@ -3600,62 +3613,66 @@ msgstr "" "De SMPTE subtitle asset %asset_id heeft <Text> nodes maar geen <LoadFont> " "node" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "De XML in %f is onjuist (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "De XML in %f is onjuist (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "De XML in %f is onjuist op regel %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "De XML in %f is onjuist op regel %l (%error)." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -"De XML in de closed caption asset %f neemt %n bytes in beslag, wat de limiet " -"van 256 KB overschrijdt." +"De XML in de closed caption asset %f neemt %size_in_bytes bytes in beslag, " +"wat de limiet van 256 KB overschrijdt." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -"De XML in de subtitle asset %n heeft meer dan één namespace declaratie." +"De XML in de subtitle asset %asset_id heeft meer dan één namespace " +"declaratie." -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "De asset %f is 3D, maar zijn MXF is gemarkeerd als 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "" +"De asset %asset_id heeft een duration van minder dan 1 seconde, wat ongeldig " +"is." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "De asset %f ontbreekt." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" +"De asset %asset_id heeft een intrinsic duration van minder dan 1 seconde, " +"wat ongeldig is." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "" -"De asset %n heeft een duration van minder dan 1 seconde, wat ongeldig is." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "De asset %asset_id heeft geen <Hash> in de CPL." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "" -"De asset %n heeft een intrinsic duration van minder dan 1 seconde, wat " -"ongeldig is." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "De asset %f is 3D, maar zijn MXF is gemarkeerd als 2D." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "De asset %n heeft geen <Hash> in de CPL." +msgid "The asset %f is missing." +msgstr "De asset %f ontbreekt." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " @@ -3664,10 +3681,10 @@ msgstr "" "De asset met ID %asset_id in de asset map heeft in werkelijkheid een ID " "%other_asset_id" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "De closed caption asset %n heeft geen <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "De closed caption asset %asset_id heeft geen <EntryPoint> tag." #: src/wx/film_name_location_dialog.cc:146 #, c-format @@ -3708,32 +3725,32 @@ msgstr "" "Het bestand %s bestaat al. Wilt u het als uw nieuwe configuratie gebruiken " "of wilt u het met uw huidige configuratie overschrijven?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" "De eerste ondertitel of closed caption vindt plaats vóór 4 seconden in de " "eerste reel." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -"Het font-bestand voor font ID \"%n\" is niet gevonden of er wordt niet aan " -"gerefereerd in de ASSETMAP." +"Het font-bestand voor font ID \"%load_font_id\" is niet gevonden of er wordt " +"niet aan gerefereerd in de ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"De fonts in de timed text asset %f nemen %n bytes in beslag, wat de limiet " -"van 10 MB overschrijdt." +"De fonts in de timed text asset %f nemen %size_in_bytes bytes in beslag, wat " +"de limiet van 10 MB overschrijdt." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3743,7 +3760,7 @@ msgstr "" "in het PKL-bestand (%reference_hash). Dit betekent waarschijnlijk dat het " "asset-bestand beschadigd is." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3753,7 +3770,7 @@ msgstr "" "in het PKL-bestand (%reference_hash). Dit betekent waarschijnlijk dat het " "asset-bestand beschadigd is." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " @@ -3763,17 +3780,16 @@ msgstr "" "die van het CPL-bestand (%calculated_hash). Dit betekent waarschijnlijk dat " "het CPL-bestand beschadigd is." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "De ongeldige language tag %n wordt gebruikt." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "De ongeldige language tag %language wordt gebruikt." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "De taal van de filmtitel (\"%s\")" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." @@ -3781,21 +3797,21 @@ msgstr "" "De video in een reel heeft een frame rate van %frame_rate, wat niet geldig " "is." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"De reel duration (%s) van sommige timed text is niet hetzelfde als de " -"ContainerDuration (%s) van zijn MXF." +"De reel duration (%other_duration) van sommige timed text is niet hetzelfde " +"als de ContainerDuration (%duration) van zijn MXF." -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "De sound asset %f heeft een ongeldige bit depth van %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "De sound asset %f heeft een ongeldige bit depth van %bit_depth." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "De sound asset %f heeft een ongeldige frame rate van %frame_rate." @@ -3808,40 +3824,41 @@ msgstr "" "Welke standaard de DCP moet gebruiken. Interop is ouder en SMPTE is de " "nieuwere (huidige) standaard. Kies bij twijfel voor 'SMPTE'." -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "De subtitle asset %asset_id bevat geen ondertitels." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "De subtitle asset %asset_id heeft geen <EntryPoint> tag." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "De subtitle asset %f bevat geen <Language> tag." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "De subtitle asset %f bevat geen <StartTime> tag." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "De subtitle asset %f heeft een <StartTime> die niet nul is." -#: src/wx/verify_dcp_result_panel.cc:643 -#, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "De subtitle asset %n bevat geen ondertitels." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "De subtitle asset %n heeft geen <EntryPoint> tag." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -"De timed text asset %f neemt %n bytes in beslag, wat de limiet van 115 MB " -"overschrijdt." +"De timed text asset %f neemt %size_in_bytes bytes in beslag, wat de limiet " +"van 115 MB overschrijdt." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3850,37 +3867,37 @@ msgstr "" "De video asset %f gebruikt de frame rate %frame_rate, wat ongeldig is voor " "4K video." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "De video asset %f heeft een ongeldige frame rate van %frame_rate." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "De video asset %f gebruikt de ongeldige beeldgrootte %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "De video asset %f gebruikt de ongeldige beeldgrootte %size_in_pixels." -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "De video asset is 4K, wat ongeldig is voor 3D-video." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "Er zijn meer dan drie closed caption regels op ten minste één plaats." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "Er zijn meer dan drie ondertitel-regels op ten minste één plaats." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "Er zitten meer dan 32 tekens in ten minste één closed caption regel." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "Er zitten meer dan 52 tekens in ten minste één ondertitel-regel." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "Er zitten meer dan 79 tekens in ten minste één ondertitel-regel." @@ -3892,11 +3909,11 @@ msgstr "Er zijn nog geen hints: projectcontrole is bezig." msgid "There are no hints: everything looks good!" msgstr "Er zijn geen hints, alles ziet er goed uit!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "Er staat een <Duration> tag binnen een <MainMarkers>." -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "Er staat een <EntryPoint> tag binnen een <MainMarkers>." @@ -3921,16 +3938,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Deze CPL bevat geen versleutelde assets." -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"Deze DCP refereert aan de asset %n in een andere DCP (en misschien andere), " -"dus het is een \"Version File\" (VF)" +"Deze DCP refereert aan de asset %asset_id in een andere DCP (en misschien " +"andere), dus het is een \"Version File\" (VF)" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" "Deze DCP gebruikt de Interop-standaard, maar moet met SMPTE worden gemaakt." @@ -4336,7 +4353,7 @@ msgstr "Geldig tot" msgid "Vendor" msgstr "Vendor" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "Verificatierapport" diff --git a/src/wx/po/pl_PL.po b/src/wx/po/pl_PL.po index 57d9584c8..e4106671f 100644 --- a/src/wx/po/pl_PL.po +++ b/src/wx/po/pl_PL.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2022-05-10 18:14+0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -237,14 +237,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -267,80 +267,94 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -"Klatka obrazu 2K JPEG2000 zawiera %n informacji o kolorze zamiast wymaganych " -"3." +"Klatka obrazu 2K JPEG2000 zawiera %tile_parts informacji o kolorze zamiast " +"wymaganych 3." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, fuzzy, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%n)." +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "" +"Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "Klatka obrazu 2K JPEG2000 zawiera %n znacznik(ów) POC zamiast 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "" +"Klatka obrazu 2K JPEG2000 zawiera %guard_bits bitów ochronnych (guard bits) " +"zamiast 1." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -"Klatka obrazu 2K JPEG2000 zawiera %n bitów ochronnych (guard bits) zamiast 1." +"Klatka obrazu 2K JPEG2000 zawiera %poc_markers znacznik(ów) POC zamiast 0." # Shouldn't be here 4K JPEG2000 frame? -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -"Klatka obrazu 4K JPEG2000 zawiera %n informacji o kolorze zamiast wymaganych " -"6." +"Klatka obrazu 4K JPEG2000 zawiera %tile_parts informacji o kolorze zamiast " +"wymaganych 6." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, fuzzy, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%n)." +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "" +"Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "Klatka obrazu 4K JPEG2000 zawiera %n znacznik(ów) POC zamiast 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "" +"Klatka obrazu 4K JPEG2000 zawiera %guard_bits bitów ochronnych (guard bits) " +"zamiast 2." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -"Klatka obrazu 4K JPEG2000 zawiera %n bitów ochronnych (guard bits) zamiast 2." +"Klatka obrazu 4K JPEG2000 zawiera %poc_markers znacznik(ów) POC zamiast 1." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 #, fuzzy msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "Znacznik POC w klatce obrazu JPEG2000 jest na złej pozycji." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -"Wysokość bloku w klatce obrazu JPEG2000 wynosi %n zamiast wymaganych 32." +"Wysokość bloku w klatce obrazu JPEG2000 wynosi %code_block_height zamiast " +"wymaganych 32." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -"Szerokość bloku w klatce obrazu JPEG2000 wynosi %n zamiast wymaganych 32." +"Szerokość bloku w klatce obrazu JPEG2000 wynosi %code_block_width zamiast " +"wymaganych 32." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "Klatka obrazu JPEG2000 nie ma znacznika TLM." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" "Wielkość bloku informacyjnego klatki obrazu JPEG2000 nie równa się wielkości " @@ -351,21 +365,21 @@ msgstr "" msgid "A new version of %s is available." msgstr "Nowa wersja DCP-o-matic jest dostępna." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, fuzzy, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "Klatka obrazu ma nieprawidłowy strumień kodowy JPEG2000 (%n)" +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "Klatka obrazu ma nieprawidłowy strumień kodowy JPEG2000 (%error)" #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "Wystąpił problem w trakcie szukania wskazówek (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "Napis trwa dłużej niż długość rolki, na której się znajduje." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -578,13 +592,13 @@ msgstr "Alfa 0" msgid "Also supported by" msgstr "Program wsparli także" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "Materiał ma pustą ścieżkę w pliku ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -632,27 +646,27 @@ msgstr "" "Jesteś pewien, że chcesz wysłać emaile pod te adresy?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" "Co najmniej jeden węzeł <Text> w pliku z napisami lub napisami kodowanymi " "jest pusty." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "Co najmniej jeden materiał w rolce ma inną długość od pozostałych." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "Co najmniej jedną parę napisów dzieli mniej niż 2 klatki obrazu." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 #, fuzzy msgid "At least one subtitle has zero or negative duration." msgstr "Co najmniej jeden napis trwa krócej niż 15 klatek obrazu." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "Co najmniej jeden napis trwa krócej niż 15 klatek obrazu." @@ -890,10 +904,10 @@ msgstr "Plik bazy Kin i Sal" msgid "Click the button to set all selected content to the same value." msgstr "Kliknij, by ustawić zaznaczone pliki do tej samej wartości." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "Plik z napisami %n zawiera niezerowy <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "Plik z napisami %asset_id zawiera niezerowy <EntryPoint>." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1038,9 +1052,9 @@ msgstr "Nie udało się załadować certyfikatu (%s)" msgid "Could not play content" msgstr "Nie udało się załadować KDM" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Nie udało się odczytać DCP: %s" #: src/wx/gl_video_view.cc:131 @@ -1602,7 +1616,7 @@ msgstr "Wstaw znaczniki wideo automatycznie" msgid "Format" msgstr "Format" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1610,7 +1624,7 @@ msgid "" msgstr "" "Co najmniej jedna klatka materiału video %f ma bitrate bliski 250MBit/s." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1618,11 +1632,11 @@ msgid "" msgstr "" "Co najmniej jedna klatka materiału video %f ma bitrate bliski 250MBit/s." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2248,7 +2262,7 @@ msgstr "Metadane..." msgid "Mix audio down to stereo" msgstr "Zmiksuj audio do stereo" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 #, fuzzy msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." @@ -2256,70 +2270,70 @@ msgstr "" "Klatka obrazu 2K JPEG2000 zawiera %n informacji o kolorze zamiast wymaganych " "3." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 #, fuzzy msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 #, fuzzy msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 #, fuzzy msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "Znacznik POC w klatce obrazu JPEG2000 jest na złej pozycji." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "Klatka obrazu JPEG2000 zawiera nieprawidłowy znacznik POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "Znacznik POC w klatce obrazu JPEG2000 jest na złej pozycji." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "Znacznik POC w klatce obrazu JPEG2000 jest na złej pozycji." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 #, fuzzy msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "Klatka obrazu JPEG2000 nie ma znacznika TLM." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 #, fuzzy msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" "Wielkość bloku informacyjnego klatki obrazu JPEG2000 nie równa się wielkości " "obrazu." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " @@ -2327,7 +2341,7 @@ msgid "" msgstr "" "Co najmniej jedna klatka materiału video %f ma bitrate bliski 250MBit/s." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " @@ -2335,11 +2349,11 @@ msgid "" msgstr "" "Co najmniej jedna klatka materiału video %f ma bitrate bliski 250MBit/s." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 #, fuzzy msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "Klatka obrazu ma nieprawidłowy strumień kodowy JPEG2000 (%n)" @@ -2430,7 +2444,7 @@ msgstr "" msgid "No" msgstr "Brak" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "Nie znaleziono ASSETMAP ani pliku ASSETMAP.xml." @@ -2438,7 +2452,7 @@ msgstr "Nie znaleziono ASSETMAP ani pliku ASSETMAP.xml." msgid "No DCP loaded." msgstr "Nie załadowano DCP." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "Nie znaleziono błędów SMPTE Bv2.1." @@ -2452,11 +2466,11 @@ msgstr "" msgid "No content found in this folder." msgstr "W tym folderze nie ma materiałów." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "Nie znaleziono błędów." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "Brak ostrzeżeń." @@ -2471,7 +2485,7 @@ msgstr "Standard" msgid "None" msgstr "Brak" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "Pliki napisów mają różny znacznik <Language>." @@ -2601,12 +2615,12 @@ msgstr "Zmień wykrytą liczbę klatek/s" msgid "Overwrite this file with current configuration" msgstr "Nadpisz ten plik obecną konfiguracją" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" "Część tej paczki DCP nie mogła zostać sprawdzona, bo nie wykryto klucza KDM." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3138,7 +3152,7 @@ msgstr "Wybierz plik z dziennikiem błędów" msgid "Select output file" msgstr "Wybierz plik wyjściowy" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Wybierz" @@ -3311,7 +3325,7 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." @@ -3319,7 +3333,7 @@ msgstr "" "Niektóre zamknięte znaczniki <Text> lub <Image> mają różne ustawienia pionu " "wewnątrz znacznika <Subtitle>." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3330,7 +3344,7 @@ msgstr "" msgid "Sound" msgstr "Dźwięk" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3416,10 +3430,10 @@ msgstr "Subskrybenci" msgid "Subtitle appearance" msgstr "Wygląd napisów" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "Plik z napisami %n posiada niezerowy znacznik <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "Plik z napisami %asset_id posiada niezerowy znacznik <EntryPoint>." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3507,23 +3521,23 @@ msgstr "Testerzy" msgid "The 'until' time must be after the 'from' time." msgstr "Czas 'do' musi być później niż 'od'." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." @@ -3531,7 +3545,7 @@ msgstr "" "Identyfikator materiału (Asset) w pliku MXF kodowanych napisów jest taki sam " "co identyfikator zawartości (Resource) albo wewnątrz XML." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, fuzzy, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " @@ -3540,60 +3554,61 @@ msgstr "" "Plik CPL %n posiada znacznik <AnnotationText>, który nie odpowiada " "znacznikowi <ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, fuzzy, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "Plik z dźwiękiem %f posiada nieprawidłową liczbę klatek: %n." +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "" +"Plik z dźwiękiem %f posiada nieprawidłową liczbę klatek: %xml_namespace." -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, fuzzy, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "Plik CPL %n posiada zaszyfrowaną zawartość, która nie jest podpisana." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, fuzzy, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "Plik CPL %n nie ma żadnego znacznika <AnnotationText>." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, fuzzy, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "Plik CPL %n nie ma żadnego znacznika <AnnotationText>." -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, fuzzy, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "Plik CPL %n nie ma żadnego tagu rozszerzenia metadanych CPL." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, fuzzy, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "Plik CPL %n nie ma tagu metadanych CPL." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, fuzzy, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "Plik CPL %n nie ma tagu numeru wersji metadanych CPL." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "Plik CPL %f ma nieprawidłowy tag rozszerzenia metadanych CPL (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "Plik CPL %f ma nieprawidłowy tag rozszerzenia metadanych CPL (%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -"DCP ma %n znaczników pierwszej klatki materiału (FFOC) zamiast jednego." +"DCP ma %time znaczników pierwszej klatki materiału (FFOC) zamiast jednego." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -"DCP ma %n znaczników ostatniej klatki materiału (LFOC) zamiast długości " +"DCP ma %time znaczników ostatniej klatki materiału (LFOC) zamiast długości " "rolki minus jeden." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." @@ -3601,32 +3616,32 @@ msgstr "" "DCP posiada napisy kodowane, ale nie każda rolka ma tyle samo materiałów z " "napisami." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" "DCP posiada zaszyfrowaną zawartość, ale nie wszystkie materiały w paczce są " "zaszyfrowane." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "DCP nie ma znacznika FFOC (Pierwsza klatka materiału)." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "DCP nie ma znacznika LFOC (Ostatnia klatka materiału)." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "DCP posiada napisy, ale przynajmniej jedna rolka nie ma napisów." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" "Paczka DCP jest oznaczona jako pełen metraż, ale nie posiada znacznika FFEC " "(Pierwsza klatka napisów końcowych)." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3652,41 +3667,43 @@ msgstr "" "Okres ważności klucza KDM zaczyna się przed (lub blisko) początku okresu " "ważności certyfikatów. Ustaw późniejszą datę ważności tego klucza." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, fuzzy, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "Plik z dźwiękiem %f posiada nieprawidłową liczbę klatek: %n." +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "" +"Plik z dźwiękiem %f posiada nieprawidłową liczbę klatek: %xml_namespace." -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"Plik PKL %n zawiera znacznik <AnnotationText>, który nie odpowiada wartości " -"znacznika <ContentTitleText> w pliku CPL." +"Plik PKL %pkl zawiera znacznik <AnnotationText>, który nie odpowiada " +"wartości znacznika <ContentTitleText> w pliku CPL." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "Plik PKL %n posiada zaszyfrowaną zawartość, ale nie jest podpisany." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "Plik PKL %pkl posiada zaszyfrowaną zawartość, ale nie jest podpisany." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, fuzzy, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "Plik PKL %n posiada zaszyfrowaną zawartość, ale nie jest podpisany." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "" +"Plik PKL %pkl_id posiada zaszyfrowaną zawartość, ale nie jest podpisany." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "Hasze plików PKL i CPL nie są zgodne dla materiału wideo %f." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "Hasze plików PKL i CPL nie są zgodne dla materiału audio %f." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." @@ -3694,75 +3711,79 @@ msgstr "" "Identyfikator zawartości w pliku MXF kodowanych napisów nie jest zgodny z " "identyfikatorem zawartym w pliku XML." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "Plik XML w %f zawiera błędy (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "Plik XML w %f zawiera błędy (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "Plik XML w %f zawiera błędy w linii %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "Plik XML w %f zawiera błędy w linii %l (%error)." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -"Plik XML z napisami kodowanymi %f zawiera %n bajtów i przekracza limit 256KB." +"Plik XML z napisami kodowanymi %f zawiera %size_in_bytes bajtów i przekracza " +"limit 256KB." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "Zawartość %f jest w formacie 3D, ale plik MXF jest oznaczony jako 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "Zawartość %asset_id trwa krócej niż 1 sekunda, co jest nieprawidłowe." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "Nie mogę znaleźć zawartości %f." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" +"Rzeczywista długość materiału %asset_id jest krótsza od 1 sekundy, co jest " +"nieprawidłowe." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "Zawartość %n trwa krócej niż 1 sekunda, co jest nieprawidłowe." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "Zawartość %asset_id nie ma znacznika <Hash> w pliku CPL." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "" -"Rzeczywista długość materiału %n jest krótsza od 1 sekundy, co jest " -"nieprawidłowe." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "Zawartość %f jest w formacie 3D, ale plik MXF jest oznaczony jako 2D." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "Zawartość %n nie ma znacznika <Hash> w pliku CPL." +msgid "The asset %f is missing." +msgstr "Nie mogę znaleźć zawartości %f." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "Materiał z napisami kodowanymi %n nie ma znacznika <EntryPoint>." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "" +"Materiał z napisami kodowanymi %asset_id nie ma znacznika <EntryPoint>." #: src/wx/film_name_location_dialog.cc:146 #, fuzzy, c-format @@ -3802,30 +3823,30 @@ msgstr "" "Plik %s już istnieje. Chcesz użyć go jako nowej konfiguracji lub nadpisać " "nim obecne ustawienia?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" "Pierwszy napis lub napis kodowany pojawia się w 4 początkowych sekundach " "pierwszej rolki." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"Czcionki w materiale %f z napisami kodowanymi zabierają %n bajtów, co " -"przekracza limit 10MB." +"Czcionki w materiale %f z napisami kodowanymi zabierają %size_in_bytes " +"bajtów, co przekracza limit 10MB." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 #, fuzzy msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " @@ -3835,7 +3856,7 @@ msgstr "" "Hasz materiału wideo %f nie zgadza się z haszem zawartym w pliku PKL. To " "prawdopodobnie oznacza, że plik jest uszkodzony." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 #, fuzzy msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " @@ -3845,7 +3866,7 @@ msgstr "" "Hasz materiału audio %f nie zgadza się z haszem zawartym w pliku PKL. To " "prawdopodobnie oznacza, że plik jest uszkodzony." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 #, fuzzy msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " @@ -3855,38 +3876,37 @@ msgstr "" "Hasz pliku CPL %n w pliku PKL nie zgadza się z haszem pliku CPL. To " "prawdopodobnie oznacza, że plik CPL jest uszkodzony." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "Użyto nieprawidłowego oznaczenia języka %n." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "Użyto nieprawidłowego oznaczenia języka %language." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "Język użyty w tytule filmu (\"%s\") znajduje się w" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" "Obraz w rolce posiada liczbę klatek/s: %frame_rate, która jest nieprawidłowa." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"Długość rolki (%s) zawarta w niektórych napisach jest inna od długości " -"materiału (%s) pliku MXF." +"Długość rolki (%other_duration) zawarta w niektórych napisach jest inna od " +"długości materiału (%duration) pliku MXF." -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, fuzzy, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "Plik z dźwiękiem %f posiada nieprawidłową liczbę klatek: %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "Plik z dźwiękiem %f posiada nieprawidłową liczbę klatek: %bit_depth." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "Plik z dźwiękiem %f posiada nieprawidłową liczbę klatek: %frame_rate." @@ -3897,38 +3917,40 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, fuzzy, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "Plik z napisami %f nie zawiera znacznika <StartTime>." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "Plik z napisami %asset_id nie ma znacznika <EntryPoint>." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "Plik z napisami %f nie zawiera znacznika <Language>." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "Plik z napisami %f nie zawiera znacznika <StartTime>." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "Plik z napisami %f zawiera znacznik <StartTime> z niezerową wartością." -#: src/wx/verify_dcp_result_panel.cc:643 -#, fuzzy, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "Plik z napisami %f nie zawiera znacznika <StartTime>." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "Plik z napisami %n nie ma znacznika <EntryPoint>." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." -msgstr "Plik z napisami %f zajmuje %n bajtów, co przekracza limit 115MB." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." +msgstr "" +"Plik z napisami %f zajmuje %size_in_bytes bajtów, co przekracza limit 115MB." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3937,40 +3959,40 @@ msgstr "" "Liczba klatek/s materiału wideo %f wynosi %frame_rate, co jest nieprawidłowe " "dla formatu 4K." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "Materiał wideo %f ma nieprawidłową liczbę klatek/s: %frame_rate." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "Materiał wideo %f ma nieprawidłową rozdzielczość: %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "Materiał wideo %f ma nieprawidłową rozdzielczość: %size_in_pixels." -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 #, fuzzy msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" "Liczba klatek/s materiału wideo %f wynosi %frame_rate, co jest nieprawidłowe " "dla formatu 3D." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "W jednym momencie wyświetlają się ponad 3 linie podpisów." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "W jednym momencie wyświetlają się ponad 3 linie napisów." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "Co najmniej jedna linia podpisów zawiera ponad 32 znaki." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "Co najmniej jedna linia napisów zawiera ponad 52 znaki." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "Co najmniej jedna linia napisów zawiera ponad 79 znaków." @@ -3982,11 +4004,11 @@ msgstr "Brak wskazówek: sprawdzanie Projektu w toku." msgid "There are no hints: everything looks good!" msgstr "Brak wskazówek: wszystko wygląda świetnie!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -4011,16 +4033,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Plik CPL nie zawiera zaszyfrowanych materiałów." -#: src/wx/verify_dcp_result_panel.cc:333 -#, c-format +#: src/wx/verify_dcp_result_panel.cc:348 +#, fuzzy, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"To DCP odnosi się do materiału %n z innej paczki DCP (albo wielu paczek), " -"dlatego powinno być oznaczone jako \"version file\" (VF)" +"To DCP odnosi się do materiału %asset_id z innej paczki DCP (albo wielu " +"paczek), dlatego powinno być oznaczone jako \"version file\" (VF)" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" "Ta paczka DCP korzysta ze standardu Interop, ale powinna być przygotowana " @@ -4425,7 +4447,7 @@ msgstr "" msgid "Vendor" msgstr "Sprzedawca" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "Weryfikacja DCP" diff --git a/src/wx/po/pt_BR.po b/src/wx/po/pt_BR.po index c9d814c1f..c33ef79af 100644 --- a/src/wx/po/pt_BR.po +++ b/src/wx/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2018-01-15 18:18-0200\n" "Last-Translator: \n" "Language-Team: \n" @@ -236,14 +236,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -266,70 +266,76 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -338,9 +344,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "Há uma nova versão de DCP-o-matic disponível." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -348,11 +354,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -573,13 +579,13 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Apoiado por" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -627,24 +633,24 @@ msgstr "" "Tem certeza que deseja enviar e-mails para os seguintes endereços?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -884,9 +890,9 @@ msgid "Click the button to set all selected content to the same value." msgstr "" "Clique no botão para aplicar a todos os vídeos selecionados o mesmo valor." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -1038,9 +1044,9 @@ msgstr "Não foi possível importar o certificado (%s)" msgid "Could not play content" msgstr "Não foi possível carregar o KDM." -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Não foi possível carregar o KDM." #: src/wx/gl_video_view.cc:131 @@ -1609,25 +1615,25 @@ msgstr "" msgid "Format" msgstr "Formato" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2238,80 +2244,80 @@ msgstr "" msgid "Mix audio down to stereo" msgstr "Mixar áudio para stereo 2.0" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2401,7 +2407,7 @@ msgstr "" msgid "No" msgstr "Nenhum" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2409,7 +2415,7 @@ msgstr "" msgid "No DCP loaded." msgstr "Nenhum DCP carregado." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2422,11 +2428,11 @@ msgstr "Nenhum áudio será passado do canal %d do vídeo para o canal %d do DCP msgid "No content found in this folder." msgstr "Nenhum conteúdo encontrado nesta pasta." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2441,7 +2447,7 @@ msgstr "Padrão" msgid "None" msgstr "Nenhum" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2579,11 +2585,11 @@ msgstr "Taxa de quadros do vídeo" msgid "Overwrite this file with current configuration" msgstr "Sobrescrever este arquivo com a configuração atual" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3123,7 +3129,7 @@ msgstr "Selecionar arquivo de saída" msgid "Select output file" msgstr "Selecionar arquivo de saída" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Selecionar OV" @@ -3299,13 +3305,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3314,7 +3320,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3403,9 +3409,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "Aparência da legenda" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3500,113 +3506,113 @@ msgstr "Testado por" msgid "The 'until' time must be after the 'from' time." msgstr "O tempo 'Até' deve vir depois do tempo 'De'." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3625,109 +3631,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3763,49 +3771,48 @@ msgstr "" "O arquivo %s já existe. Você deseja utilizá-lo como sua configuração, ou " "deseja sobrescrevê-lo com suas configurações atuais?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3813,25 +3820,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3842,75 +3849,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3923,11 +3931,11 @@ msgstr "Não há dicas: tudo parece perfeito!" msgid "There are no hints: everything looks good!" msgstr "Não há dicas: tudo parece perfeito!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3951,14 +3959,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "O conteúdo do CPL não está encriptado." -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4348,7 +4356,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "Fazer cadeia de certificado" diff --git a/src/wx/po/pt_PT.po b/src/wx/po/pt_PT.po index 28d4b7cd2..a1f543c77 100644 --- a/src/wx/po/pt_PT.po +++ b/src/wx/po/pt_PT.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic PORTUGUESE (Portugal)\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2016-03-19 13:56+0000\n" "Last-Translator: Tiago Casal Ribeiro <tiago@casalribeiro.com>\n" "Language-Team: \n" @@ -236,14 +236,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -264,70 +264,76 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -336,9 +342,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "Nova versão do DCP-o-matic disponível." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -346,11 +352,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -571,13 +577,13 @@ msgstr "Alfa O" msgid "Also supported by" msgstr "Apoiado por " -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -623,24 +629,24 @@ msgid "" "\n" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -880,9 +886,9 @@ msgid "Click the button to set all selected content to the same value." msgstr "" "Clique no botão para definir o mesmo valor para todo o conteúdo seleccionado." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -1034,9 +1040,9 @@ msgstr "Não foi possível ler o ficheiro do certificado (%s)" msgid "Could not play content" msgstr "Não foi possível carregar a KDM (%s)" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Não foi possível carregar a KDM (%s)" #: src/wx/gl_video_view.cc:131 @@ -1612,25 +1618,25 @@ msgstr "" msgid "Format" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2233,80 +2239,80 @@ msgstr "" msgid "Mix audio down to stereo" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2404,7 +2410,7 @@ msgstr "" msgid "No" msgstr "Nenhum" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2413,7 +2419,7 @@ msgstr "" msgid "No DCP loaded." msgstr "Nenhum DCP seleccionado." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2426,11 +2432,11 @@ msgstr "Não será passado audio do canal de conteúdo %d para o canal DCP %d." msgid "No content found in this folder." msgstr "Não foi encontrado conteúdo nesta pasta." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2445,7 +2451,7 @@ msgstr "Norma" msgid "None" msgstr "Nenhum" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2583,11 +2589,11 @@ msgstr "Cadência de fotogramas de vídeo" msgid "Overwrite this file with current configuration" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3136,7 +3142,7 @@ msgstr "Seleccionar Ficheiro do Certificado" msgid "Select output file" msgstr "Seleccionar Ficheiro do Certificado" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Seleccionar KDM" @@ -3315,13 +3321,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3330,7 +3336,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3419,9 +3425,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "Aparência da legenda" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3514,113 +3520,113 @@ msgstr "Testado por" msgid "The 'until' time must be after the 'from' time." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3639,109 +3645,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3774,49 +3782,48 @@ msgid "" "or overwrite it with your current configuration?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3824,25 +3831,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3853,75 +3860,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3934,11 +3942,11 @@ msgstr "Não há sugestões: Tudo parece bem!" msgid "There are no hints: everything looks good!" msgstr "Não há sugestões: Tudo parece bem!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3961,14 +3969,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4355,7 +4363,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "Criar cadeia de certificados" diff --git a/src/wx/po/ru_RU.po b/src/wx/po/ru_RU.po index 79143ba3e..43fb8e942 100644 --- a/src/wx/po/ru_RU.po +++ b/src/wx/po/ru_RU.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2025-06-08 21:02+0300\n" "Last-Translator: Mikhail Epshteyn <virus-2006@yandex.ru>\n" "Language-Team: Russian\n" @@ -234,15 +234,15 @@ msgstr "96kHz" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" -msgstr "<IssueDate> имеет недопустимое значение %n" +msgid "<IssueDate> has an invalid value %issue_date" +msgstr "<IssueDate> имеет недопустимое значение %issue_date" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" -msgstr "<MainSoundConfiguration> недопустима (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" +msgstr "<MainSoundConfiguration> недопустима (%error)" #: src/wx/subtitle_appearance_dialog.cc:118 msgid "<b>New colour</b>" @@ -264,72 +264,80 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." -msgstr "Кадр 2K JPEG2000 содержит %n части(ей) тайла вместо 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." +msgstr "Кадр 2K JPEG2000 содержит %tile_parts части(ей) тайла вместо 3." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -"Кадр 2K JPEG2000 содержит недопустимое значение Rsiz (возможности), равное %n" +"Кадр 2K JPEG2000 содержит недопустимое значение Rsiz (возможности), равное " +"%capabilities" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "Кадр 2K JPEG2000 содержит %n маркера(ов) POC вместо 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "Кадр 2K JPEG2000 содержит %guard_bits защитных разряда(ов) вместо 1." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "Кадр 2K JPEG2000 содержит %n защитных разряда(ов) вместо 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "Кадр 2K JPEG2000 содержит %poc_markers маркера(ов) POC вместо 0." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." -msgstr "Кадр 4K JPEG2000 содержит %n части(ей) тайла вместо 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." +msgstr "Кадр 4K JPEG2000 содержит %tile_parts части(ей) тайла вместо 6." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -"Кадр 4K JPEG2000 содержит недопустимое значение Rsiz (возможности), равное %n" +"Кадр 4K JPEG2000 содержит недопустимое значение Rsiz (возможности), равное " +"%capabilities" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "Кадр 4K JPEG2000 содержит %n маркера(ов) POC вместо 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "Кадр 4K JPEG2000 содержит %guard_bits защитных разряда(ов) вместо 2." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "Кадр 4K JPEG2000 содержит %n защитных разряда(ов) вместо 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "Кадр 4K JPEG2000 содержит %poc_markers маркера(ов) POC вместо 1." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "Кадр JPEG2000 содержит маркер POC в некорректном месте." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "Кадр JPEG2000 содержит некорректный маркер POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "Кадр JPEG2000 имеет высоту кода блока %n вместо 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "Кадр JPEG2000 имеет высоту кода блока %code_block_height вместо 32." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "Кадр JPEG2000 имеет ширину кода блока %n вместо 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "Кадр JPEG2000 имеет ширину кода блока %code_block_width вместо 32." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "Кадр JPEG2000 не содержит маркер TLM." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "Размер тайла JPEG2000 не соответствует размеру изображения." @@ -338,21 +346,21 @@ msgstr "Размер тайла JPEG2000 не соответствует раз msgid "A new version of %s is available." msgstr "Доступна новая версия %s." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "Кадр изображения содержит некорректный поток кода JPEG2000 (%n)" +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "Кадр изображения содержит некорректный поток кода JPEG2000 (%error)" #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "Произошла ошибка при поиске подсказок (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "Субтитр длится дольше, чем продолжительность этой части фильма." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -563,14 +571,14 @@ msgstr "Альфа 0" msgid "Also supported by" msgstr "Также поддерживали" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "Ресурс содержит пустой путь в ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." -msgstr "Было использовано недопустимое значение <Content Kind> %n." +msgid "An invalid <ContentKind> %content_kind has been used." +msgstr "Было использовано недопустимое значение <Content Kind> %content_kind." #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 msgid "An unknown exception occurred." @@ -616,25 +624,25 @@ msgstr "" "Вы точно хотите отправить электронные письма на эти адреса?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "Имеется пустой узел <Text> в субтитрах." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" "В части фильма имеется ресурс, длительность которого отлична от остальных." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "Имеется пара субтитров, отделённых менее, чем двумя кадрами." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "Имеется субтитр, длительность которого нулевая или отрицательная." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "Имеется субтитр, длительность которого менее 15 кадров." @@ -862,10 +870,11 @@ msgstr "" "Нажмите кнопку, чтобы применить одинаковые значения ко всему выделенному " "контенту." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "Ресурсов скрытых субтитров %n содержит ненулевой тег <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "" +"Ресурсов скрытых субтитров %asset_id содержит ненулевой тег <EntryPoint>." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1008,10 +1017,10 @@ msgstr "Не удалось загрузить сертификат (%s)." msgid "Could not play content" msgstr "Не удалось воспроизвести содержимое" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" -msgstr "Не удалось прочитать DCP (%n)" +msgid "Could not read DCP (%error)" +msgstr "Не удалось прочитать DCP (%error)" #: src/wx/gl_video_view.cc:131 #, c-format @@ -1559,7 +1568,7 @@ msgstr "Добавлять метки отслеживания (FMID) в вид msgid "Format" msgstr "Формат" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1568,7 +1577,7 @@ msgstr "" "Кадр %frame (временной код %timecode) в ресурсе %f имеет мгновенный битрейт, " "близкий к пределу в 250 Мбит/с." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1577,14 +1586,14 @@ msgstr "" "Кадр %frame (временной код %timecode) в ресурсе %f имеет мгновенный битрейт, " "превышающий 250 Мбит/с." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" "Кадр %frame содержит слишком большой компонент изображения (размер " -"компонента %component равен %size в байтах)." +"компонента %component равен %size_in_bytes в байтах)." #: src/wx/dcp_panel.cc:868 msgid "Frame Rate" @@ -2199,90 +2208,90 @@ msgstr "Метаданные..." msgid "Mix audio down to stereo" msgstr "Микшировать аудио в стерео" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "Другие кадры формата 2K JPEG2000 (не указанные в списке) содержат " "неправильное количество фрагментов фрагмента." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "Другие кадры формата 2K JPEG2000 (не указанные в списке) содержат " "недопустимое количество защитных битов." -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" "На большем количестве кадров формата 2K JPEG2000 (не перечисленных в списке) " "слишком много POC-маркеров." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" "Другие кадры формата 4K JPEG2000 (не указанные в списке) содержат " "недопустимое количество защитных битов." -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" "На других кадрах формата 4K JPEG2000 (не перечисленных в списке) слишком " "много POC-маркеров." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" "Другие кадры формата JPEG 2000 (не указанные в списке) содержат маркеры POC " "в недопустимых местах." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" "Другие кадры JPEG2000 (не указанные в списке) содержат недопустимые маркеры " "POC." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" "Другие кадры JPEG2000 (не указанные в списке) содержат недопустимые значения " "Rsiz." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" "Другие кадры формата JPEG 2000 (не указанные в списке) содержат неправильное " "количество фрагментов фрагмента." -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" "Для большего количества кадров формата JPEG 2000 (не перечисленных в списке) " "указана недопустимая высота кодового блока." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" "Другие кадры формата JPEG 2000 (не указанные в списке) имеют недопустимую " "ширину кодового блока." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" "На других кадрах формата JPEG 2000 (не перечисленных в списке) маркер TLM " "отсутствует." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" "Другие размеры фрагментов JPEG2000 (не указанные в списке) не соответствуют " "размеру изображения." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." @@ -2290,7 +2299,7 @@ msgstr "" "У большего количества кадров (не перечисленных в списке) мгновенная скорость " "передачи данных близка к пределу в 250 Мбит/с." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." @@ -2298,13 +2307,13 @@ msgstr "" "У большего количества кадров (не перечисленных в списке) мгновенная скорость " "передачи данных превышает 250 Мбит/с." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" "В других кадрах (не перечисленных в списке) компоненты изображения слишком " "велики." -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" "Другие рамки для фотографий (не указанные в списке) содержат недопустимые " @@ -2396,7 +2405,7 @@ msgstr "Следующий" msgid "No" msgstr "Нет" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "Нет ASSETMAP или не найден файл ASSETMAP.xml." @@ -2404,7 +2413,7 @@ msgstr "Нет ASSETMAP или не найден файл ASSETMAP.xml." msgid "No DCP loaded." msgstr "Нет загруженных DCP." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "Не найдено ошибок SMPTE Bv2.1." @@ -2417,11 +2426,11 @@ msgstr "Аудио не будет перемещено из %s канала '%s msgid "No content found in this folder." msgstr "В данной папке не обнаружен контент." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "Ошибок не обнаружено." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "Замечаний не обнаружено." @@ -2436,7 +2445,7 @@ msgstr "Нестандартный" msgid "None" msgstr "Нет" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "Не все файлы ресурсов субтитров содержат одинаковый тег <Language>." @@ -2567,11 +2576,11 @@ msgstr "Игнорировать обнаруженную частоту кад msgid "Overwrite this file with current configuration" msgstr "Перезаписать этот файл текущей конфиграцией" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "Часть DCP не может быть проверена, поскольку отсутствует ключ KDM." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3087,7 +3096,7 @@ msgstr "Выберите отладочный лог-файл" msgid "Select output file" msgstr "Выберите файл вывода" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "Выбрать..." @@ -3257,7 +3266,7 @@ msgstr "" "У некоторых KDM могут быть сроки действия, которые выходят за рамки сроков " "действия сертификата получателя. Что вы хотите сделать?" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." @@ -3265,7 +3274,7 @@ msgstr "" "Некоторые закрытые теги <Text> или <Image> имеют различное выравнивание по " "вертикали внутри <Subtitle>." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3276,7 +3285,7 @@ msgstr "" msgid "Sound" msgstr "Звук" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "Не все звуковые ресурсы имеют одинаковое количество каналов." @@ -3361,10 +3370,10 @@ msgstr "Абоненты" msgid "Subtitle appearance" msgstr "Внешний вид субтитров" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "Ресурс субтитров %n содержит ненулевой тег <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "Ресурс субтитров %asset_id содержит ненулевой тег <EntryPoint>." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3447,25 +3456,26 @@ msgstr "Тестировщики" msgid "The 'until' time must be after the 'from' time." msgstr "Время \"до\" должно быть после времени \"от\"." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "Поле <LabelText> в <ContentVersion> в CPL %cpl пустое" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" "Параметр <MainPictureActiveArea> либо не кратен 2, либо больше, чем ресурс." -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -"В ASSETMAP %n содержится более одного ресурса с одинаковым идентификатором." +"В ASSETMAP %asset_map_id содержится более одного ресурса с одинаковым " +"идентификатором." -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." @@ -3473,7 +3483,7 @@ msgstr "" "ID ресурса (asset) в файле субтитров MXF совпадает с ID ресурса (resource) " "или такового в имеющемся XML." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " @@ -3482,59 +3492,59 @@ msgstr "" "CPL %cpl содержит тег <AnnotationText>, который не совпадает с " "<ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "CPL %cpl содержит недопустимое пространство имен %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "CPL %cpl содержит недопустимое пространство имен %xml_namespace" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "CPL %cpl не подписан, но содержит зашифрованный контент." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "CPL %cpl не содержит тег <AnnotationText>." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "CPL %cpl не содержит тег <ContentVersion>" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "CPL %cpl не содержит тег \"CPL extension metadata\"." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "CPL %cpl не содержит тег метаданных CPL." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "CPL %cpl не содержит тег версии метаданных CPL." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "CPL %f содержит некорректный тег \"CPL extension metadata\" (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "CPL %f содержит некорректный тег \"CPL extension metadata\" (%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "DCP имеет маркер FFOC, равный %n вместо 1." +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "DCP имеет маркер FFOC, равный %time вместо 1." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -"DCP имеет маркер LFOC, равный %n вместо \"продолжительность части фильма " +"DCP имеет маркер LFOC, равный %time вместо \"продолжительность части фильма " "минус 1\"." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." @@ -3542,30 +3552,30 @@ msgstr "" "DCP содержит скрытые субтитры, но не каждая часть фильма имеет такое же " "количество ресурсов субтитров." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "DCP содержит зашифрованный контент, но не все данные зашифрованы." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "DCP не имеет маркера FFOC." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "DCP не имеет маркера LFOC." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" "DCP содержит субтитры, но имеется часть фильма, в которой нет ресурсов " "субтитров." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "DCP помечен как FTR (Полнометражный фильм), но не имеет маркера FFEC." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "DCP помечен как FTR (Полнометражный фильм), но не имеет маркера FFMC." @@ -3589,41 +3599,42 @@ msgstr "" "Начало действия KDM ранее или близко к началу срока действия подписывающих " "сертификатов. Используйте более поздний начальный срок этого KDM." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "В файле PCL %f указано недопустимое пространство имен %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "В файле PCL %f указано недопустимое пространство имен %xml_namespace" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"PKL %n содержит тег <AnnotationText>, который не соответствует тегу " +"PKL %pkl содержит тег <AnnotationText>, который не соответствует тегу " "<ContentTitleText> в CPL." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "PKL %n не подписан, но содержит зашифрованный контент." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "PKL %pkl не подписан, но содержит зашифрованный контент." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "В PKL %n содержится более одного ресурса с одинаковым идентификатором." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "" +"В PKL %pkl_id содержится более одного ресурса с одинаковым идентификатором." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "Хэши PKL и CPL не согласован с ресурсом изображений %f." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "Хэши PKL и CPL не согласован с ресурсом звука %f." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." @@ -3631,66 +3642,70 @@ msgstr "" "ID ресурса (resource) в файле субтитров MXF не совпадает с ID в имеющемся " "XML." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" "В ресурсе %asset_id субтитров SMPTE есть узлы <Text>, но нет узла <LoadFont>" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "XML в %f содержит ошибку (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "XML в %f содержит ошибку (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "XML в %f содержит ошибку в строке %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "XML в %f содержит ошибку в строке %l (%error)." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -"XML в файле ресурсов скрытых субтитров %f занимает %n байт, что превышает " -"лимит 256КБ." +"XML в файле ресурсов скрытых субтитров %f занимает %size_in_bytes байт, что " +"превышает лимит 256КБ." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." -msgstr "XML в субтитре %n содержит более одного объявления пространства имен." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." +msgstr "" +"XML в субтитре %asset_id содержит более одного объявления пространства имен." -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "Ресурс %f является 3D, но его файл MXF помечен как 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "Продолжительность ресурса %asset_id менее 1 секунды, что некорректно." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "Ресурс %f отсутствует." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" +"Собственная продолжительность ресурса %asset_id менее 1 секунды, что " +"некорректно." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "Продолжительность ресурса %n менее 1 секунды, что некорректно." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "Ресурс %asset_id не содержит тег <Hash> в CPL." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "" -"Собственная продолжительность ресурса %n менее 1 секунды, что некорректно." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "Ресурс %f является 3D, но его файл MXF помечен как 2D." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "Ресурс %n не содержит тег <Hash> в CPL." +msgid "The asset %f is missing." +msgstr "Ресурс %f отсутствует." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " @@ -3699,10 +3714,10 @@ msgstr "" "Ресурс с идентификатором %asset_id в карте ресурсов на самом деле имеет " "идентификатор %other_asset_id" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "Ресурс скрытых субтитров %n не содержит тег <EntryPoint>." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "Ресурс скрытых субтитров %asset_id не содержит тег <EntryPoint>." #: src/wx/film_name_location_dialog.cc:146 #, c-format @@ -3744,29 +3759,30 @@ msgstr "" "Файл %s уже существует. Вы хотите использовать его в качестве новой " "конфигурации или перезаписать его текущей конфигурацией?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "Первый субтитр встретился ранее 4-х секунд в первой части фильма." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -"Файл шрифта с идентификатором шрифта \"%n\" не был найден или на него не " -"было ссылки в ASSETMAP." +"Файл шрифта с идентификатором шрифта \"%load_font_id\" не был найден или на " +"него не было ссылки в ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"Шрифты в ресурсе субтитров %f занимают %n байт, что превышает лимит в 10 МБ." +"Шрифты в ресурсе субтитров %f занимают %size_in_bytes байт, что превышает " +"лимит в 10 МБ." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3775,7 +3791,7 @@ msgstr "" "Хэш (%calculated_hash) изображения %f не согласован с PKL-файлом " "(%reference_hash). Возможно это значит, что файл повреждён." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " @@ -3784,7 +3800,7 @@ msgstr "" "Хэш (%calculated_hash) ресурса звука %f не согласован с PKL-файлом " "(%reference_hash). Возможно, файл ресурса повреждён." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " @@ -3793,38 +3809,37 @@ msgstr "" "Хэш (%reference_hash) CPL %cpl в PKL несогласован с CPL-файлом " "(%calculated_hash). Возможно это значит, что CPL-файл повреждён.." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "Используется некорректный тег языка %n." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "Используется некорректный тег языка %language." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "Язык в заголовке фильма (\"%s\") - " -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" "Часть фильма содержит изображение с некорректной частотой кадров %frame_rate." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"Продолжительность части фильма (%s) для субтитров не совпадает с " -"продолжительность контейнера (%s) в его MXF." +"Продолжительность части фильма (%other_duration) для субтитров не совпадает " +"с продолжительность контейнера (%duration) в его MXF." -#: src/wx/verify_dcp_result_panel.cc:408 -#, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "Звуковой ресурс %f имеет некорректную битовую глубину %n." +#: src/wx/verify_dcp_result_panel.cc:423 +#, fuzzy, c-format +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "Звуковой ресурс %f имеет некорректную битовую глубину %bit_depth." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "Звуковой ресурс %f имеет некорректную частоту кадров %frame_rate." @@ -3838,38 +3853,41 @@ msgstr "" "старым, а SMPTE - более новым (текущим) стандартом. Если вы сомневаетесь, " "выберите \"SMPTE\"" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "Ресурс субтитров %asset_id не содержит субтитров." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "Ресурс субтитров %asset_id не содержит тег <EntryPoint>." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "Ресурс субтитров %f не содержит тег <Language>." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "Ресурс субтитров %f не содержит тег <StartTime>." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "Ресурс субтитров %f содержит ненулевой тег <StartTime>." -#: src/wx/verify_dcp_result_panel.cc:643 -#, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "Ресурс субтитров %n не содержит субтитров." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "Ресурс субтитров %n не содержит тег <EntryPoint>." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." -msgstr "Ресурс субтитров %f занимает %n байт, что превышает лимит в 115 МБ." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." +msgstr "" +"Ресурс субтитров %f занимает %size_in_bytes байт, что превышает лимит в 115 " +"МБ." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3877,39 +3895,39 @@ msgid "" msgstr "" "Видеоресурс %f имеет частоту кадров %frame_rate, что некорректно для 4K." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "Видеоресурс %f имеет некорректную частоту кадров %frame_rate." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "Видеоресурс %f имеет некорректный размер изображения %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "Видеоресурс %f имеет некорректный размер изображения %size_in_pixels." -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 #, fuzzy msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" "Видеоресурс %f имеет частоту кадров %frame_rate, что некорректно для 3D." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "Найдены скрытые субтитры из более трёх строк." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "Найдены субтитры из более трёх строк." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "Найдены скрытые субтитры со строкой из более 32 символов." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "Найдены скрытые субтитры со строкой из более 52 символов." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "Найдены скрытые субтитры со строкой из более 79 символов." @@ -3921,11 +3939,11 @@ msgstr "Подсказок пока нет: проект проверяется. msgid "There are no hints: everything looks good!" msgstr "Нет подсказок: похоже всё хорошо!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "Внутри <MainMarkers> есть тег <Duration>." -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "Внутри <MainMarkers> есть тег <EntryPoint>." @@ -3950,16 +3968,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Данный CPL не содержит зашифрованных данных." -#: src/wx/verify_dcp_result_panel.cc:333 -#, c-format +#: src/wx/verify_dcp_result_panel.cc:348 +#, fuzzy, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"DCP ссылается на ресурс %n в другом (других) DCP, поэтому это \"файл " +"DCP ссылается на ресурс %asset_id в другом (других) DCP, поэтому это \"файл " "вариантов\" (VF)" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "DCP использует стандарт Interop, но должен быть сделан как SMPTE." @@ -4367,7 +4385,7 @@ msgstr "Действителен до" msgid "Vendor" msgstr "Производитель" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "Отчет о проверке" diff --git a/src/wx/po/sk_SK.po b/src/wx/po/sk_SK.po index 21fc3d83e..bc8ee2ce8 100644 --- a/src/wx/po/sk_SK.po +++ b/src/wx/po/sk_SK.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2016-01-06 00:23+0100\n" "Last-Translator: Tomáš Hlaváč\n" "Language-Team: DCP-o-matic translators\n" @@ -237,14 +237,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -265,70 +265,76 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -337,9 +343,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "Je k dispozícií nová verzia DCP-o-matic." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -347,11 +353,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -576,13 +582,13 @@ msgstr "" msgid "Also supported by" msgstr "Podporované(ý)" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -628,24 +634,24 @@ msgid "" "\n" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -883,9 +889,9 @@ msgstr "" msgid "Click the button to set all selected content to the same value." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -1039,9 +1045,9 @@ msgstr "Nemôžem načítať súbor s certifikátom (%s)" msgid "Could not play content" msgstr "Nemôžem načítať kDM (%s)" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Nemôžem načítať kDM (%s)" #: src/wx/gl_video_view.cc:131 @@ -1617,25 +1623,25 @@ msgstr "" msgid "Format" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2239,80 +2245,80 @@ msgstr "Metadata" msgid "Mix audio down to stereo" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2407,7 +2413,7 @@ msgstr "" msgid "No" msgstr "Žiadny(e)" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2415,7 +2421,7 @@ msgstr "" msgid "No DCP loaded." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2428,11 +2434,11 @@ msgstr "Žiadne audio nebude prenesený z kanálu %d do DCP kanálu %d." msgid "No content found in this folder." msgstr "Žiadny obsah v priečinku nebol nájdený." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2447,7 +2453,7 @@ msgstr "Štandard" msgid "None" msgstr "Žiadny(e)" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2584,11 +2590,11 @@ msgstr "Počet snímok za sekundu (frame rate)" msgid "Overwrite this file with current configuration" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3137,7 +3143,7 @@ msgstr "Select Certificate File" msgid "Select output file" msgstr "Select Certificate File" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Vybrať KDM" @@ -3317,13 +3323,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3332,7 +3338,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3421,9 +3427,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "Vzhľad titulkov" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3516,113 +3522,113 @@ msgstr "Testované" msgid "The 'until' time must be after the 'from' time." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3641,109 +3647,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3776,49 +3784,48 @@ msgid "" "or overwrite it with your current configuration?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3826,25 +3833,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3855,75 +3862,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3936,11 +3944,11 @@ msgstr "Žiadne upozornenie; všetko vyzerá dobre !" msgid "There are no hints: everything looks good!" msgstr "Žiadne upozornenie; všetko vyzerá dobre !" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3963,14 +3971,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4356,7 +4364,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "Zertifikat" diff --git a/src/wx/po/sl_SI.po b/src/wx/po/sl_SI.po index 0c7bbfe68..ea08d0465 100644 --- a/src/wx/po/sl_SI.po +++ b/src/wx/po/sl_SI.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2024-02-10 16:17+0100\n" "Last-Translator: Martin Srebotnjak <miles@filmsi.net>\n" "Language-Team: \n" @@ -235,15 +235,15 @@ msgstr "96 kHz" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" -msgstr "<IssueDate> ima neveljavno vrednost %n" +msgid "<IssueDate> has an invalid value %issue_date" +msgstr "<IssueDate> ima neveljavno vrednost %issue_date" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, fuzzy, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" -msgstr "<MainSoundConfiguration> opisuje nepravilno število kanalov (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" +msgstr "<MainSoundConfiguration> opisuje nepravilno število kanalov (%error)" #: src/wx/subtitle_appearance_dialog.cc:118 msgid "<b>New colour</b>" @@ -265,71 +265,79 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." -msgstr "Sličica 2K JPEG2000 vsebuje %n delov tlakovcev namesto 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." +msgstr "Sličica 2K JPEG2000 vsebuje %tile_parts delov tlakovcev namesto 3." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, fuzzy, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%n)." +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "Sličica 2K JPEG2000 ima %n oznak POC namesto 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "Sličica 2K JPEG2000 ima %guard_bits varovalnih bitov namesto 1." -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "Sličica 2K JPEG2000 ima %n varovalnih bitov namesto 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "Sličica 2K JPEG2000 ima %poc_markers oznak POC namesto 0." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." -msgstr "Sličica 4K JPEG2000 vsebuje %n delov tlakovcev namesto 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." +msgstr "Sličica 4K JPEG2000 vsebuje %tile_parts delov tlakovcev namesto 6." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, fuzzy, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%n)." +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "Sličica 4K JPEG2000 ima %n oznak POC namesto 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "Sličica 4K JPEG2000 ima %guard_bits varovalnih bitov namesto 2." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "Sličica 4K JPEG2000 ima %n varovalnih bitov namesto 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "Sličica 4K JPEG2000 ima %poc_markers oznak POC namesto 1." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 #, fuzzy msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "Sličica JPEG2000 vsebuje oznako POC na neveljavnem mestu." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "Sličica JPEG2000 ima višino kodnega bloka %n namesto 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "" +"Sličica JPEG2000 ima višino kodnega bloka %code_block_height namesto 32." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "Sličica JPEG2000 ima širino kodnega bloka %n namesto 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "" +"Sličica JPEG2000 ima širino kodnega bloka %code_block_width namesto 32." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "Sličica JPEG2000 nima oznake TLM." -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "Velikost tlakovcev JPEG2000 se ne ujema z velikostjo slike." @@ -338,21 +346,21 @@ msgstr "Velikost tlakovcev JPEG2000 se ne ujema z velikostjo slike." msgid "A new version of %s is available." msgstr "Na voljo je nova različica programa DCP-o-matic." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, fuzzy, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "Sličica ima neveljaven kodni tok JPEG2000 (%n)" +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "Sličica ima neveljaven kodni tok JPEG2000 (%error)" #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "Med iskanjem namigov je prišlo do težave (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "Podnaslov traja dlje, kot je dolg kolut, na katerem se nahaja." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -567,14 +575,14 @@ msgstr "Alfa 0" msgid "Also supported by" msgstr "Podpirajo ga tudi" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "Sredstvo ima prazno pot v ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." -msgstr "Uporabljen je bil neveljaven <ContentKind> %n." +msgid "An invalid <ContentKind> %content_kind has been used." +msgstr "Uporabljen je bil neveljaven <ContentKind> %content_kind." #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 msgid "An unknown exception occurred." @@ -621,25 +629,25 @@ msgstr "" "Ali ste prepričani, da želite pošiljati e-poštna sporočila na te naslove?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "Vsaj eno vozlišče <Text> v podnaslovu ali zaprtem napisu je prazno." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "Vsaj eno sredstvo v kolutu nima enakega trajanja kot ostala." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "Vsaj en par podnaslovov je ločen za manj kot 2 sličici." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 #, fuzzy msgid "At least one subtitle has zero or negative duration." msgstr "Vsaj en podnaslov traja manj kot 15 sličic." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "Vsaj en podnaslov traja manj kot 15 sličic." @@ -869,11 +877,12 @@ msgstr "Datoteka zbirke podatkov kinodvoran in platen" msgid "Click the button to set all selected content to the same value." msgstr "Kliknite gumb, da nastavite vse izbrane vsebine na isto vrednost." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" -"Sredstvo zaprtega napisa z %n ima ne-ničelno vstopno točko <EntryPoint>." +"Sredstvo zaprtega napisa z %asset_id ima ne-ničelno vstopno točko " +"<EntryPoint>." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1017,9 +1026,9 @@ msgstr "Potrdila ni bilo mogoče naložiti (%s)" msgid "Could not play content" msgstr "Vsebine ni mogoče predvajati" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Ni bilo mogoče prebrati DCP: %s" #: src/wx/gl_video_view.cc:131 @@ -1569,28 +1578,28 @@ msgstr "Forenzično označi video" msgid "Format" msgstr "Oblika" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "Vsaj ena sličica video vsebine %f je blizu omejitve 250 MBit/s." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "Vsaj ena sličica video vsebine %f je blizu omejitve 250 MBit/s." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" "Okvir %frame ima slikovno komponento, ki je prevelika (komponenta %component " -"je velika %size bajtov)." +"je velika %size_in_bytes bajtov)." #: src/wx/dcp_panel.cc:868 msgid "Frame Rate" @@ -2209,92 +2218,92 @@ msgstr "Metapodatki ..." msgid "Mix audio down to stereo" msgstr "Zmešaj zvok na manj kanalov v stereo" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 #, fuzzy msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "Sličica 2K JPEG2000 vsebuje %n delov tlakovcev namesto 3." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 #, fuzzy msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 #, fuzzy msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 #, fuzzy msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "Sličica JPEG2000 vsebuje oznako POC na neveljavnem mestu." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "Sličica JPEG2000 vsebuje neveljavno oznako POC (%n)." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "Sličica JPEG2000 vsebuje oznako POC na neveljavnem mestu." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "Sličica JPEG2000 vsebuje oznako POC na neveljavnem mestu." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 #, fuzzy msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "Sličica JPEG2000 nima oznake TLM." -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 #, fuzzy msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "Velikost tlakovcev JPEG2000 se ne ujema z velikostjo slike." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "Vsaj ena sličica video vsebine %f je blizu omejitve 250 MBit/s." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "Vsaj ena sličica video vsebine %f je blizu omejitve 250 MBit/s." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 #, fuzzy msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "Sličica ima neveljaven kodni tok JPEG2000 (%n)" @@ -2385,7 +2394,7 @@ msgstr "" msgid "No" msgstr "Brez" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "Datoteke ASSETMAP ali ASSETMAP.xml ni mogoče najti." @@ -2393,7 +2402,7 @@ msgstr "Datoteke ASSETMAP ali ASSETMAP.xml ni mogoče najti." msgid "No DCP loaded." msgstr "Noben DCP ni naložen." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "Napak SMPTE Bv2.1 ni mogoče najti." @@ -2406,11 +2415,11 @@ msgstr "Noben zvok ne po preusmerjen s %s kanala »%s« na %s kanal »%s«." msgid "No content found in this folder." msgstr "V tej mapi ni najdene vsebine." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "Napak ni bilo mogoče zaznati." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "Opozorila niso bila najdena." @@ -2424,7 +2433,7 @@ msgstr "Nestandardno" msgid "None" msgstr "Brez" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "Vsa podnaslovna sredstva ne določajo iste oznake <Language>." @@ -2554,11 +2563,11 @@ msgstr "Preglasi zaznano hitrost video sličic" msgid "Overwrite this file with current configuration" msgstr "Prepiši to datoteko s trenutno prilagoditvijo" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "Dela DCP-ja ni bilo mogoče preveriti, ker KDM ni bil na voljo." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3081,7 +3090,7 @@ msgstr "Izberite datoteko dnevnika odpravljanja napak" msgid "Select output file" msgstr "Izberite izhodno datoteko" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Izberite" @@ -3253,7 +3262,7 @@ msgstr "" "Nekateri KDM bi imeli obdobja veljavnosti, ki so zunaj obdobij veljavnosti " "prejemnikovega potrdila. Kaj želite storiti?" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." @@ -3261,7 +3270,7 @@ msgstr "" "Nekatera zaprta vozlišča <Text> ali <Image> imajo različne navpične " "poravnave v <Subtitle>." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3272,7 +3281,7 @@ msgstr "" msgid "Sound" msgstr "Zvok" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "Sredstva zvoka nimajo enakega števila kanalov." @@ -3356,10 +3365,10 @@ msgstr "Naročniki" msgid "Subtitle appearance" msgstr "Videz podnaslovov" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "Enota podnaslova %n ima ne-ničelno točko vstopa <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "Enota podnaslova %asset_id ima ne-ničelno točko vstopa <EntryPoint>." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3444,23 +3453,23 @@ msgstr "Preizkuševalci" msgid "The 'until' time must be after the 'from' time." msgstr "Čas »do« mora slediti času »od«." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, fuzzy, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "<LabelText> v <ContentVersion> v CPL %cpl je prazen" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "<MainPictureActiveArea> ni večkratnik 2 ali pa je večji od sredstva." -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." -msgstr "ASSETMAP %n ima več kot eno sredstvo z istim ID-jem." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." +msgstr "ASSETMAP %asset_map_id ima več kot eno sredstvo z istim ID-jem." -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." @@ -3468,64 +3477,64 @@ msgstr "" "ID sredstva v časovno opredeljenem besedilu MXF je enak ID-ju vira ali ID-ju " "vsebovanega XML." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, fuzzy, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "CPL %n ima <AnnotationText>, ki ni enak kot njegov <ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, fuzzy, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "Zvočno sredstvo %f nima veveljavne hitrosti sličic %n." +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "Zvočno sredstvo %f nima veveljavne hitrosti sličic %xml_namespace." -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, fuzzy, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "CPL %n ima šifrirano vsebino, vendar ni podpisan." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, fuzzy, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "CPL %n nima oznake <AnnotationText>." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, fuzzy, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "CPL %n nima oznake <AnnotationText>." -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, fuzzy, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "CPL %n nima oznake metapodatkov razširitve CPL." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, fuzzy, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "CPL %n nima oznake metapodatkov CPL." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, fuzzy, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "CPL %n nima oznake številke različice metapodatkov CPL." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "CPL %f ima neveljavno oznako metapodatkov CPL razširitve (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "CPL %f ima neveljavno oznako metapodatkov CPL razširitve (%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "DCP ima FFOC %n namesto 1." +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "DCP ima FFOC %time namesto 1." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." -msgstr "DCP ima LFOC %n namesto trajanja koluta manj 1." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." +msgstr "DCP ima LFOC %time namesto trajanja koluta manj 1." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." @@ -3533,29 +3542,29 @@ msgstr "" "DCP ima zaprte napise, vendar nima vsak kolut enako število sredstev zaprtih " "napisov." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "DCP ima šifrirano vsebino, vendar vsa sredstva niso šifrirana." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "DCP nima oznake FFOC (prva sličica vsebine)." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "DCP nima oznake LFOC (zadnja sličica vsebine)." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "DCP ima podnaslove, vendar vsaj en kolut nima sredstva podnaslovov." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" "DCP je celovečerec, vendar nima oznake FFEC (prva sličica končnih napisov)." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3580,40 +3589,40 @@ msgstr "" "Začetek obdobja KDM je pred (ali blizu) začetkom veljavnosti potrdila o " "podpisovanju. Uporabite kasnejši začetni čas za ta KDM." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, fuzzy, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "Zvočno sredstvo %f nima veveljavne hitrosti sličic %n." +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "Zvočno sredstvo %f nima veveljavne hitrosti sličic %xml_namespace." -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"PKL %n ima <AnnotationText>, ki se ne ujema s CPL-jevim <ContentTitleText>." +"PKL %pkl ima <AnnotationText>, ki se ne ujema s CPL-jevim <ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "PKL %n ima šifrirano vsebino, vendar ni podpisan." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "PKL %pkl ima šifrirano vsebino, vendar ni podpisan." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "PKL %n ima več kot eno sredstvo z istim ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "PKL %pkl_id ima več kot eno sredstvo z istim ID." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "Kontrolni vsoti PKL in CPL se ne ujemata za slikovno sredstvo %f." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "Kontrolni vsoti PKL in CPL se ne ujemata za zvokovno sredstvo %f." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." @@ -3621,7 +3630,7 @@ msgstr "" "ID vira v časovno opredeljenem besedilu MXF se ne ujema z ID-jem vsebovanega " "XML." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" @@ -3629,59 +3638,64 @@ msgstr "" "Sredstvo podnaslovov SMPTE %asset_id ima vozlišča <Text>, nima pa vozlišča " "<LoadFont> " -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "XML v %f je nepravilno oblikovan (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "XML v %f je nepravilno oblikovan (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "XML v %f je nepravilno oblikovan v vrstici %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "XML v %f je nepravilno oblikovan v vrstici %l (%error)." -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -"XML v sredstvu zaprtih napisov %f zavzema %n bajtov, kar je nad mejo 256 KB." +"XML v sredstvu zaprtih napisov %f zavzema %size_in_bytes bajtov, kar je nad " +"mejo 256 KB." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -"XML v sredstvu podnaslova %n ima več kot eno deklaracijo imenskega prostora." +"XML v sredstvu podnaslova %asset_id ima več kot eno deklaracijo imenskega " +"prostora." -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "Sredstvo %f je 3D, vendar je njegov MXF označen kot 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "Sredstvo %asset_id ima trajanje manj kot 1 sekundo, kar je neveljavno." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "Manjka sredstvo %f." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" +"Sredstvo %asset_id ima imanentno trajanje manj kot 1 sekundo, kar je " +"neveljavno." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "Sredstvo %n ima trajanje manj kot 1 sekundo, kar je neveljavno." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "Sredstvo %asset_id nima kontrolne vsote <Hash> v CPL." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "" -"Sredstvo %n ima imanentno trajanje manj kot 1 sekundo, kar je neveljavno." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "Sredstvo %f je 3D, vendar je njegov MXF označen kot 2D." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "Sredstvo %n nima kontrolne vsote <Hash> v CPL." +msgid "The asset %f is missing." +msgstr "Manjka sredstvo %f." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " @@ -3689,10 +3703,11 @@ msgid "" msgstr "" "Sredstvo z ID %asset_id v mapi sredstev ima dejansko ID %other_asset_id" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "Sredstvo zaprtega napisa %n nima oznake vstopne točke <EntryPoint>." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "" +"Sredstvo zaprtega napisa %asset_id nima oznake vstopne točke <EntryPoint>." #: src/wx/film_name_location_dialog.cc:146 #, fuzzy, c-format @@ -3734,31 +3749,31 @@ msgstr "" "Datoteka %s že obstaja. Ali jo želite uporabiti kot novo prilagoditev ali " "jo prepisati s trenutno prilagoditvijo?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" "Prvi podnaslov ali zaprt napis se pojavi pred 4 sekundami na prvem kolutu." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -"Datoteka pisave za pisavo z ID »%n« ni mogoče najti ali pa se nanjo ne " -"sklicuje ASSETMAP." +"Datoteka pisave za pisavo z ID »%load_font_id« ni mogoče najti ali pa se " +"nanjo ne sklicuje ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"Pisave v sredstvu časovno opredeljenega besedila %f zaseda %n bajtov, kar " -"presega omejitev 10 MB." +"Pisave v sredstvu časovno opredeljenega besedila %f zaseda %size_in_bytes " +"bajtov, kar presega omejitev 10 MB." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 #, fuzzy msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " @@ -3768,7 +3783,7 @@ msgstr "" "Kontrolna vsota slikovnega sredstva %f se ne ujema z datoteko PKL. To " "verjetno pomeni, da je datoteka sredstva poškodovana." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 #, fuzzy msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " @@ -3778,7 +3793,7 @@ msgstr "" "Kontrolna vsota zvočnega sredstva %f se ne ujema z datoteko PKL. To " "verjetno pomeni, da je datoteka sredstva poškodovana." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 #, fuzzy msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " @@ -3788,37 +3803,36 @@ msgstr "" "Kontrolna vsota CPL %n v PKL se ne ujema z datoteko CPL. To verjetno " "pomeni, da je datoteka CPL poškodovana." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "Uporabljena je neveljavna jezikovna oznaka %n." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "Uporabljena je neveljavna jezikovna oznaka %language." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "Jezik, v katerem je naslov filma (»%s«)" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "Slika v kolutu ima hitrost sličic %frame_rate, ki ni veljavna." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"Trajanje koluta (%s) nekega časovno opredeljenega besedila ni enako trajanju " -"vsebnika (%s) njegovega MXF." +"Trajanje koluta (%other_duration) nekega časovno opredeljenega besedila ni " +"enako trajanju vsebnika (%duration) njegovega MXF." -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, fuzzy, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "Zvočno sredstvo %f nima veveljavne hitrosti sličic %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "Zvočno sredstvo %f nima veveljavne hitrosti sličic %bit_depth." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "Zvočno sredstvo %f nima veveljavne hitrosti sličic %frame_rate." @@ -3832,41 +3846,42 @@ msgstr "" "Kateri standard naj uporablja DCP. Interop je starejši, SMPTE pa je sodobni " "standard. Če ste v dvomu, izberite »SMPTE«." -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "Sredstvo podnaslovov %asset_id ne vsebuje podnaslovov." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "Sredstvo podnaslovov %asset_id nima oznake vstopne točke <EntryPoint>." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "Sredstvo podnaslovov %f ne vsebuje oznake jezika <Language>." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "Sredstvo podnaslovov %f ne vsebuje oznake časa pričetka <StartTime>." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" "Sredstvo podnaslovov %f ima ne-ničelno vrednost začetnega časa <StartTime>." -#: src/wx/verify_dcp_result_panel.cc:643 -#, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "Sredstvo podnaslovov %n ne vsebuje podnaslovov." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "Sredstvo podnaslovov %n nima oznake vstopne točke <EntryPoint>." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -"Sredstvo časovno opredeljenega besedila %f zavzema %n bajtov, kar presega " -"omejitev 115 MB." +"Sredstvo časovno opredeljenega besedila %f zavzema %size_in_bytes bajtov, " +"kar presega omejitev 115 MB." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3875,40 +3890,40 @@ msgstr "" "Sredstvo videa %f uporablja hitrost sličic %frame_rate, ki ni veljavna za 4K-" "video." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "Sredstvo videa %f uporablja neveljavno hitrost sličic %frame_rate." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "Sredstvo videa %f uporablja neveljavno velikost slike %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "Sredstvo videa %f uporablja neveljavno velikost slike %size_in_pixels." -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 #, fuzzy msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" "Sredstvo videa %f uporablja hitrost sličic %frame_rate, ki ni veljavna za 3D-" "video." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "Na vsaj enem mestu so v zaprtih napisih več kot 3 vrstice." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "Na vsaj enem mestu so v podnaslovih več kot 3 vrstice." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "V vsaj eni vrstici zaprtih napisov je več kot 32 znakov." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "V vsaj eni vrstici podnaslovov je več kot 52 znakov." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "V vsaj eni vrstici podnaslovov je več kot 79 znakov." @@ -3920,11 +3935,11 @@ msgstr "Namigov še ni: preverjanje projekta je v teku." msgid "There are no hints: everything looks good!" msgstr "Ni namigov: vse je videti dobro!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "V oznaki <MainMarkers> je oznaka <Duration>." -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "V oznaki <MainMarkers> je oznaka <EntryPoint>." @@ -3949,16 +3964,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Ta CPL ne vsebuje šifriranih sredstev." -#: src/wx/verify_dcp_result_panel.cc:333 -#, c-format +#: src/wx/verify_dcp_result_panel.cc:348 +#, fuzzy, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"Ta DCP se sklicuje na sredstvo %n v drugem DCP-ju (in morda drugih), tako da " -"je »različica datoteke« (VF)" +"Ta DCP se sklicuje na sredstvo %asset_id v drugem DCP-ju (in morda drugih), " +"tako da je »različica datoteke« (VF)" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" "Ta DCP uporablja standard Interop, vendar bi ga bilo potrebno izdelati s " @@ -4358,7 +4373,7 @@ msgstr "Veljaven do" msgid "Vendor" msgstr "Prodajalec" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "Preverjanje DCP" diff --git a/src/wx/po/sv_SE.po b/src/wx/po/sv_SE.po index 0c939e941..466bff712 100644 --- a/src/wx/po/sv_SE.po +++ b/src/wx/po/sv_SE.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: DCP-o-matic\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2021-12-28 14:46+0100\n" "Last-Translator: Mattias Mattsson <vitplister@gmail.com>\n" "Language-Team: \n" @@ -237,14 +237,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -268,74 +268,86 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." -msgstr "En 2K JPEG2000-bild innehåller %n bildsegment istället för 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." +msgstr "En 2K JPEG2000-bild innehåller %tile_parts bildsegment istället för 3." -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, fuzzy, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%n)." +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:527 +# Svengelska +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "En 2K JPEG2000-bild innehåller %n POC-markeing(ar) istället för 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "En 2K JPEG2000-bild innehåller %guard_bits guard bits istället för 1." -# Svengelska -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "En 2K JPEG2000-bild innehåller %n guard bits istället för 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "" +"En 2K JPEG2000-bild innehåller %poc_markers POC-markeing(ar) istället för 0." -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." -msgstr "En 4K JPEG2000-bild innehåller %n bildsegment istället för 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." +msgstr "En 4K JPEG2000-bild innehåller %tile_parts bildsegment istället för 6." -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, fuzzy, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%n)." +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%capabilities)." -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "En 4K JPEG2000-bild innehåller %n POC-markeing(ar) istället för 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "En 4K JPEG2000-bild innehåller %guard_bits guard bits istället för 2." -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "En 4K JPEG2000-bild innehåller %n guard bits istället för 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "" +"En 4K JPEG2000-bild innehåller %poc_markers POC-markeing(ar) istället för 1." -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 #, fuzzy msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "En JPEG2000-bild innehåller POC-markering på ett felaktigt ställe." -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%n)." # Svengelska -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "En JPEG2000-bild innehåller en kodblockshöjd på %n istället för 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "" +"En JPEG2000-bild innehåller en kodblockshöjd på %code_block_height istället " +"för 32." -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "En JPEG2000-bild innehåller en kodblocksbredd på %n istället för 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "" +"En JPEG2000-bild innehåller en kodblocksbredd på %code_block_width istället " +"för 32." -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "En JPEG2000-bild saknar TLM-markeing." # Svengelska -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "En JPEG2000 tile-storlek stämmer inte med bildstorleken." @@ -344,21 +356,21 @@ msgstr "En JPEG2000 tile-storlek stämmer inte med bildstorleken." msgid "A new version of %s is available." msgstr "Det finns en nyare version av DCP-o-matic." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, fuzzy, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "En bild har en trasig JPEG2000-ström (%n)" +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "En bild har en trasig JPEG2000-ström (%error)" #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "Problem uppstod när vi letade efter tips (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "En undertext är längre än akten den ligger i." -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -573,13 +585,13 @@ msgstr "Alpha 0" msgid "Also supported by" msgstr "Också med stöd från" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "En komponent har tom sökväg i ASSETMAP." -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -627,25 +639,25 @@ msgstr "" "Är du säker på att du vill skicka epost till följande adresser?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "Minst en <Text> node i en subtitel är tom." -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "Åtminstone en komponent i akten är inte lika lång som de andra." -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "Åtminstone ett par undertexter ligger närmare än 2 bilder." -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 #, fuzzy msgid "At least one subtitle has zero or negative duration." msgstr "Åtminstone en undertext är kortare än 15 bilder." -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "Åtminstone en undertext är kortare än 15 bilder." @@ -884,10 +896,10 @@ msgid "Click the button to set all selected content to the same value." msgstr "" "Klicka på knappen för att ange samma värde för det valda källmaterialet." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "Undertexten %n har en icke-tom <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "Undertexten %asset_id har en icke-tom <EntryPoint>." #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1033,9 +1045,9 @@ msgstr "Kunde inte ladda in certifikat (%s)" msgid "Could not play content" msgstr "Kunde inte ladda KDM" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Kunde inte ladda DCP: %s" #: src/wx/gl_video_view.cc:131 @@ -1596,7 +1608,7 @@ msgstr "Märk bildspår forensiskt" msgid "Format" msgstr "Format" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1605,7 +1617,7 @@ msgstr "" "Minst en bildruta i videokomponenten %f har en bitrate nära gränsen 250MBit/" "s." -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, fuzzy, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " @@ -1614,11 +1626,11 @@ msgstr "" "Minst en bildruta i videokomponenten %f har en bitrate nära gränsen 250MBit/" "s." -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2245,75 +2257,75 @@ msgstr "Metadata..." msgid "Mix audio down to stereo" msgstr "Mixa ner ljudspår till stereo" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 #, fuzzy msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "En 2K JPEG2000-bild innehåller %n bildsegment istället för 3." -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 #, fuzzy msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%n)." -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 #, fuzzy msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%n)." -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 #, fuzzy msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "En JPEG2000-bild innehåller POC-markering på ett felaktigt ställe." -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%n)." -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 #, fuzzy msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "En JPEG2000-bild innehåller en felaktig POC-markering (%n)." -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "En JPEG2000-bild innehåller POC-markering på ett felaktigt ställe." -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 #, fuzzy msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "En JPEG2000-bild innehåller POC-markering på ett felaktigt ställe." -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 #, fuzzy msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "En JPEG2000-bild saknar TLM-markeing." # Svengelska -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 #, fuzzy msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "En JPEG2000 tile-storlek stämmer inte med bildstorleken." -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " @@ -2322,7 +2334,7 @@ msgstr "" "Minst en bildruta i videokomponenten %f har en bitrate nära gränsen 250MBit/" "s." -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 #, fuzzy msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " @@ -2331,11 +2343,11 @@ msgstr "" "Minst en bildruta i videokomponenten %f har en bitrate nära gränsen 250MBit/" "s." -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 #, fuzzy msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "En bild har en trasig JPEG2000-ström (%n)" @@ -2426,7 +2438,7 @@ msgstr "" msgid "No" msgstr "Ingen" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "Ingen ASSETMAP eller ASSETMAP.xml-fil hittades." @@ -2434,7 +2446,7 @@ msgstr "Ingen ASSETMAP eller ASSETMAP.xml-fil hittades." msgid "No DCP loaded." msgstr "Ingen DCP laddad." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "Inga SMPTE Bv2.1 fel hittade." @@ -2447,11 +2459,11 @@ msgstr "Inget ljud kommer överföras från kanal %s '%s' till kanal %s '%s'." msgid "No content found in this folder." msgstr "Inget innehåll hittades i denna mapp." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "Inga fel hittade." -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "Inga varningar hittade." @@ -2466,7 +2478,7 @@ msgstr "Standard" msgid "None" msgstr "Ingen" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "Inte alla undertextinnehåll använder samma <Language> tagg." @@ -2596,11 +2608,11 @@ msgstr "Forcera bildhastighet" msgid "Overwrite this file with current configuration" msgstr "Skriv över denna fil med nuvarande inställningar" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "Del av DCPn kunde inte checkas eftersom ingen KDM fanns tillgänglig." -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3130,7 +3142,7 @@ msgstr "Välj debug-loggfil" msgid "Select output file" msgstr "Välj utdata-fil" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Välj" @@ -3303,7 +3315,7 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." @@ -3311,7 +3323,7 @@ msgstr "" "Några stängda <Text> eller <Image> noder har olika vertikala början inom en " "<Subtitle>." -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "Någar undertexter är inte listade i ordning enligt vertikal position." @@ -3320,7 +3332,7 @@ msgstr "Någar undertexter är inte listade i ordning enligt vertikal position." msgid "Sound" msgstr "Ljud" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3406,10 +3418,10 @@ msgstr "Prenumeranter" msgid "Subtitle appearance" msgstr "Undertext-utseende" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "Undertexttillgången %n har en icke-tom <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "Undertexttillgången %asset_id har en icke-tom <EntryPoint>." #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3497,23 +3509,23 @@ msgstr "Testat av" msgid "The 'until' time must be after the 'from' time." msgstr "'tills'-tiden måste vara efter 'från'-tiden." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." @@ -3521,7 +3533,7 @@ msgstr "" "Tillgångs-ID i en tajmad-text MXF är samma som Resurs-ID eller ID i den " "inbäddade XML:en." -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, fuzzy, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " @@ -3530,87 +3542,87 @@ msgstr "" "CPL:en %n har en <AnnotationText> som inte är samma som dess " "<ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, fuzzy, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "Ljudspåret %f har ogiltlig bildhastighet %n." +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "Ljudspåret %f har ogiltlig bildhastighet %xml_namespace." -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, fuzzy, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "CPL:en %n har krypterat innehåll men är inte signerat." -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, fuzzy, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "CPL:en %n har ingen <AnnotationText> tagg." -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, fuzzy, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "CPL:en %n har ingen <AnnotationText> tagg." -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, fuzzy, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "CPL:en %n har ingen CPL utökad metadata tagg." -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, fuzzy, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "CPL:en %n har ingen CPL metadata tagg." -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, fuzzy, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "CPL:en %n har ingen CPL metadata versionsnummer tagg." -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "CPL:en %f har en felaktig CPL-utöknings metadata tagg (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "CPL:en %f har en felaktig CPL-utöknings metadata tagg (%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "DCP:n har en FFOC av %n istället för 1." +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "DCP:n har en FFOC av %time istället för 1." -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." -msgstr "DCP:n har en LFOC av %n istället för rullens längd minus ett." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." +msgstr "DCP:n har en LFOC av %time istället för rullens längd minus ett." -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" "DCP:n har undertexter men inte varje rulle har samma antal undertexter." -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "DCP:n har krypterat innehåll, men inte allt innehåll är krypterat." -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "DCP:n har ingen FFOC (first frame of content) markering." -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "DCP:n har ingen LFOC (last frame of content) markering." -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "DCP:n har undertexter men åtminstone en rulle saknar undertext." -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" "DCP:n är en feature men har ingen FFEC ( first frame of end credit) " "markering." -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3638,118 +3650,121 @@ msgstr "" "signeringscertifikatet börjar att gälla. Ange en senare start-tidpunkt för " "KDM:en." -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, fuzzy, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "Ljudspåret %f har ogiltlig bildhastighet %n." +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "Ljudspåret %f har ogiltlig bildhastighet %xml_namespace." -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -"PKL:en %n har en <AnnotationText> som inte stämmer med CPL:ens " +"PKL:en %pkl har en <AnnotationText> som inte stämmer med CPL:ens " "<ContentTitleText>." -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "PKL:en %n har krypterat innehåll men är inte signerat." +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "PKL:en %pkl har krypterat innehåll men är inte signerat." -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, fuzzy, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "PKL:en %n har krypterat innehåll men är inte signerat." +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "PKL:en %pkl_id har krypterat innehåll men är inte signerat." -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "Hashsummorna i PKL och CPL stämmer inte överens för bildkompenten %f." -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" "Hashsummorna i PKL och CPL stämmer inte överens för ljudkomponenten %f." -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" "Resurs-ID i en tajmad text MXF stämmer inte med ID i den inbäddade XML:en." -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "XML-koden i %f är felaktig (%n)." +msgid "The XML in %f is malformed (%error)." +msgstr "XML-koden i %f är felaktig (%error)." -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "XML-koden i %f är felaktig på rad %l (%n)" +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "XML-koden i %f är felaktig på rad %l (%error)" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -"XML:en i undertexttillgången %f tar %n byte vilket är mer än gränsen på " -"256KB." +"XML:en i undertexttillgången %f tar %size_in_bytes byte vilket är mer än " +"gränsen på 256KB." -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "Tillgången %f är 3D men dess MXF är markerat som 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "" +"Komponenten %asset_id har en speltid under 1 sekund, vilket inte är tillåtet." -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "Komponenten %f saknas." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "" +"Komponenten %asset_id har en faktisk speltid under 1 sekund, vilket inte är " +"tillåtet." -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "Komponenten %n har en speltid under 1 sekund, vilket inte är tillåtet." +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "Komponenten %asset_id har ingen <Hash> i CPL:en." -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "" -"Komponenten %n har en faktisk speltid under 1 sekund, vilket inte är " -"tillåtet." +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "Tillgången %f är 3D men dess MXF är markerat som 2D." -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "Komponenten %n har ingen <Hash> i CPL:en." +msgid "The asset %f is missing." +msgstr "Komponenten %f saknas." -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "Undertexttillgången %n har ingen <EntryPoint> tagg." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "Undertexttillgången %asset_id har ingen <EntryPoint> tagg." #: src/wx/film_name_location_dialog.cc:146 #, fuzzy, c-format @@ -3790,28 +3805,28 @@ msgstr "" "Filen %s finns redan. Vill du använda den som din nya inställningsfil eller " "skriva över den med dina nuvarande inställningar?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "Den första undertexten startar innan 4 sekunder på första rullen." -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -"Typsnittet i den tajmade texten %f tar %n byte vilket är mer än gränsen på " -"10MB." +"Typsnittet i den tajmade texten %f tar %size_in_bytes byte vilket är mer än " +"gränsen på 10MB." -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 #, fuzzy msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " @@ -3821,7 +3836,7 @@ msgstr "" "Hashsumman för bildkomponent %f stämmer inte överens med PKL-filen. " "Bildkomponentfilen är förmodligen korrupt." -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 #, fuzzy msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " @@ -3831,7 +3846,7 @@ msgstr "" "Hashsumman för ljudkompononenten %f stämmer inte överens med PKL-filen. " "Ljudkomponentfilen är förmodligen korrupt." -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 #, fuzzy msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " @@ -3841,38 +3856,37 @@ msgstr "" "Hashsumman för CPL %n i PKL-filen stämmer inte överens med CPL-filen. " "Förmodligen är CPL-filen korrupt." -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "Den felaktiga språktaggen %n används." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "Den felaktiga språktaggen %language används." #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "Språket för filmens titel (\"%s\")" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" "Bildspåret i en akt har en bildhastighet %frame_rate, vilket inte är giltigt." -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -"Rullens längd (%s) för någon tajmad text är inte samma som ContainerDuration " -"(%s) för dess MXF." +"Rullens längd (%other_duration) för någon tajmad text är inte samma som " +"ContainerDuration (%duration) för dess MXF." -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, fuzzy, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "Ljudspåret %f har ogiltlig bildhastighet %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "Ljudspåret %f har ogiltlig bildhastighet %bit_depth." -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "Ljudspåret %f har ogiltlig bildhastighet %frame_rate." @@ -3883,39 +3897,41 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, fuzzy, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "Undertexttillgången %f innehåller inte någon <StartTime> tagg." + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "Undertexttillgången %asset_id har ingen <EntryPoint> tagg." + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "Undertexttillgången %f innehåller inte någon <Language> tagg." -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "Undertexttillgången %f innehåller inte någon <StartTime> tagg." -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "Undertexttillgången %f har en <StartTime> som inte är noll." -#: src/wx/verify_dcp_result_panel.cc:643 -#, fuzzy, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "Undertexttillgången %f innehåller inte någon <StartTime> tagg." - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "Undertexttillgången %n har ingen <EntryPoint> tagg." - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -"Den tajmade texttillgången %f tar %n byte vilket är över grånsen 115MB." +"Den tajmade texttillgången %f tar %size_in_bytes byte vilket är över grånsen " +"115MB." -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " @@ -3924,40 +3940,41 @@ msgstr "" "Videotillgången %f använder bildhastigheten %frame_rate vilket inte är " "korrekt för 4K-video." -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "Bildspåret %f använder en ogiltig bildhastighet %frame_rate." -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "Videotillgången %f använder den felaktiga bildstorleken %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "" +"Videotillgången %f använder den felaktiga bildstorleken %size_in_pixels." -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 #, fuzzy msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" "Videotillgången %f använder bildhastigheten %frame_rate vilket inte är " "korrekt för 3D-video." -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "Det finns mer än 3 undertextrader på åtminstone ett ställe." -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "Det finns mer än 3 undertextrader på åtminstone ett ställe." -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "Det finns mer än 32 tecken i åtminstone en undertextrad." -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "Det finns mer än 52 tecken i åtminstone en undertextrad." -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" "Det finns mer än 79\n" @@ -3971,11 +3988,11 @@ msgstr "Det finns inga tips: Projektet kontrolleras." msgid "There are no hints: everything looks good!" msgstr "Det finns inga tips: allt ser bra ut!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -4000,16 +4017,16 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Den här CPL:en innehåller inga krypterade komponenter." -#: src/wx/verify_dcp_result_panel.cc:333 -#, c-format +#: src/wx/verify_dcp_result_panel.cc:348 +#, fuzzy, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"Den här DCP:n refererar till komponenten %n i en annan DCP (och möjligen " -"andra), så den är en \"versionfil\" (VF)" +"Den här DCP:n refererar till komponenten %asset_id i en annan DCP (och " +"möjligen andra), så den är en \"versionfil\" (VF)" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "Denna DCP använder Interop-standarden, men den borde skapas med SMPTE." @@ -4415,7 +4432,7 @@ msgstr "" msgid "Vendor" msgstr "Leverantör" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "DCP-verifiering" diff --git a/src/wx/po/tr_TR.po b/src/wx/po/tr_TR.po index e9eacf928..41be10397 100644 --- a/src/wx/po/tr_TR.po +++ b/src/wx/po/tr_TR.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -232,14 +232,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -260,70 +260,76 @@ msgstr "" msgid "A" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -332,9 +338,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -342,11 +348,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -548,13 +554,13 @@ msgstr "" msgid "Also supported by" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -599,24 +605,24 @@ msgid "" "\n" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -840,9 +846,9 @@ msgstr "" msgid "Click the button to set all selected content to the same value." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -985,9 +991,9 @@ msgstr "" msgid "Could not play content" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "" #: src/wx/gl_video_view.cc:131 @@ -1518,25 +1524,25 @@ msgstr "" msgid "Format" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2114,80 +2120,80 @@ msgstr "" msgid "Mix audio down to stereo" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2275,7 +2281,7 @@ msgstr "" msgid "No" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2283,7 +2289,7 @@ msgstr "" msgid "No DCP loaded." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2296,11 +2302,11 @@ msgstr "" msgid "No content found in this folder." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2314,7 +2320,7 @@ msgstr "" msgid "None" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2443,11 +2449,11 @@ msgstr "" msgid "Overwrite this file with current configuration" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -2959,7 +2965,7 @@ msgstr "" msgid "Select output file" msgstr "" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "" @@ -3127,13 +3133,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3142,7 +3148,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3225,9 +3231,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3311,113 +3317,113 @@ msgstr "" msgid "The 'until' time must be after the 'from' time." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3436,109 +3442,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3571,49 +3579,48 @@ msgid "" "or overwrite it with your current configuration?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3621,25 +3628,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3650,75 +3657,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3730,11 +3738,11 @@ msgstr "" msgid "There are no hints: everything looks good!" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3757,14 +3765,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4140,7 +4148,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "" diff --git a/src/wx/po/uk_UA.po b/src/wx/po/uk_UA.po index 066cdf071..60ed13d71 100644 --- a/src/wx/po/uk_UA.po +++ b/src/wx/po/uk_UA.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" "PO-Revision-Date: 2018-08-20 20:35+0300\n" "Last-Translator: Igor Voytovich <i.voyt@dualvfilms.com>\n" "Language-Team: Ukrainian\n" @@ -234,14 +234,14 @@ msgstr "" msgid ":1" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" +msgid "<IssueDate> has an invalid value %issue_date" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" msgstr "" #: src/wx/subtitle_appearance_dialog.cc:118 @@ -264,70 +264,76 @@ msgstr "" msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "" @@ -336,9 +342,9 @@ msgstr "" msgid "A new version of %s is available." msgstr "Доступна нова версія DCP-o-matic." -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." msgstr "" #: src/wx/hints_dialog.cc:183 @@ -346,11 +352,11 @@ msgstr "" msgid "A problem occurred when looking for hints (%s)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -572,13 +578,13 @@ msgstr "Альфа 0" msgid "Also supported by" msgstr "Фінансова підтримка" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." +msgid "An invalid <ContentKind> %content_kind has been used." msgstr "" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 @@ -626,24 +632,24 @@ msgstr "" "Ви точно хочете відправити електронні листи на ці адреси?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "" @@ -882,9 +888,9 @@ msgstr "" "Натисніть кнопку, щоб встановити однакові значення для всього обраного " "контенту." -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 @@ -1036,9 +1042,9 @@ msgstr "Не вдалося імпортувати сертифікат (%s)" msgid "Could not play content" msgstr "Не вдалося завантажити KDM." -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, fuzzy, c-format -msgid "Could not read DCP (%n)" +msgid "Could not read DCP (%error)" msgstr "Не вдалося завантажити KDM." #: src/wx/gl_video_view.cc:131 @@ -1606,25 +1612,25 @@ msgstr "" msgid "Format" msgstr "Формат" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." +"is %size_in_bytes bytes in size)." msgstr "" #: src/wx/dcp_panel.cc:868 @@ -2234,80 +2240,80 @@ msgstr "" msgid "Mix audio down to stereo" msgstr "Змікшувати аудіо у стерео" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "" @@ -2397,7 +2403,7 @@ msgstr "" msgid "No" msgstr "Нічого" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "" @@ -2405,7 +2411,7 @@ msgstr "" msgid "No DCP loaded." msgstr "Жоден DCP не завантажений." -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "" @@ -2418,11 +2424,11 @@ msgstr "Аудіо не буде переміщено з каналу %d кон msgid "No content found in this folder." msgstr "У даній папці не знайдено контент." -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "" @@ -2437,7 +2443,7 @@ msgstr "Стандарт" msgid "None" msgstr "Нічого" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "" @@ -2572,11 +2578,11 @@ msgstr "Частота кадрів відео" msgid "Overwrite this file with current configuration" msgstr "Перезаписати цей файл поточною конфігураціею" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3116,7 +3122,7 @@ msgstr "Оберіть вихідний файл" msgid "Select output file" msgstr "Оберіть вихідний файл" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 #, fuzzy msgid "Select..." msgstr "Оберіть OV" @@ -3292,13 +3298,13 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "" @@ -3307,7 +3313,7 @@ msgstr "" msgid "Sound" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "" @@ -3396,9 +3402,9 @@ msgstr "" msgid "Subtitle appearance" msgstr "Зовнішній вигляд субтитрів" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." msgstr "" #: src/wx/export_subtitles_dialog.cc:105 @@ -3491,113 +3497,113 @@ msgstr "Тестування" msgid "The 'until' time must be after the 'from' time." msgstr "Час \"до\" має бути після часу \"від\"." -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." +msgid "The DCP has a FFOC of %time instead of 1." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "" @@ -3616,109 +3622,111 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" +msgid "The PKL %f has an invalid namespace %xml_namespace" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." +msgid "The PKL %pkl has encrypted content but is not signed." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." +msgid "The PKL %pkl_id has more than one asset with the same ID." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." +msgid "The XML in %f is malformed (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." +msgid "The asset %asset_id has no <Hash> in the CPL." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." +msgid "The asset %f is 3D but its MXF is marked as 2D." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." +msgid "The asset %f is missing." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." msgstr "" #: src/wx/film_name_location_dialog.cc:146 @@ -3753,49 +3761,48 @@ msgstr "" "Файл %s вже існує. Ви хочете використовувати його у якості нової " "конфігурації або перезаписати його поточною конфігураціею?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." msgstr "" #: src/wx/smpte_metadata_dialog.cc:63 @@ -3803,25 +3810,25 @@ msgstr "" msgid "The language that the film's title (\"%s\") is in" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." +msgid "The sound asset %f has an invalid bit depth of %bit_depth." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "" @@ -3832,75 +3839,76 @@ msgid "" "newer (current) standard. If in doubt, choose 'SMPTE'" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 #, c-format -msgid "The subtitle asset %f contains no <Language> tag." +msgid "The subtitle asset %asset_id contains no subtitles." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:441 #, c-format -msgid "The subtitle asset %f contains no <StartTime> tag." +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format -msgid "The subtitle asset %f has a <StartTime> which is not zero." +msgid "The subtitle asset %f contains no <Language> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:643 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format -msgid "The subtitle asset %n contains no subtitles." +msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:426 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." +msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." +msgid "The video asset %f uses the invalid image size %size_in_pixels." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:354 +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "" @@ -3913,11 +3921,11 @@ msgstr "Немає підказок: схоже, що все добре!" msgid "There are no hints: everything looks good!" msgstr "Немає підказок: схоже, що все добре!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "" @@ -3941,14 +3949,14 @@ msgstr "" msgid "This CPL contains no encrypted assets." msgstr "Зміст CPL-файлу не зашифрований." -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "" @@ -4337,7 +4345,7 @@ msgstr "" msgid "Vendor" msgstr "" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 #, fuzzy msgid "Verification report" msgstr "Перевірка DCP" diff --git a/src/wx/po/zh_CN.po b/src/wx/po/zh_CN.po index fd0524ed8..87833885b 100644 --- a/src/wx/po/zh_CN.po +++ b/src/wx/po/zh_CN.po @@ -12,17 +12,17 @@ msgid "" msgstr "" "Project-Id-Version: libdcpomatic-wx\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-23 01:11+0100\n" -"PO-Revision-Date: 2025-10-05 14:09+0800\n" +"POT-Creation-Date: 2026-04-21 17:39+0200\n" +"PO-Revision-Date: 2026-05-17 10:50+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=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 3.7\n" +"X-Generator: Poedit 3.9\n" "X-Poedit-SourceCharset: UTF-8\n" #: src/wx/player_information.cc:111 @@ -109,9 +109,9 @@ msgid "%s already exists as a file, so you cannot use it for a film." msgstr "%s 文件已经存在,所以不能用它创建工程。" #: src/wx/audio_dialog.cc:175 -#, fuzzy, c-format +#, c-format msgid "%s audio" -msgstr "%s 音频 - %s" +msgstr "%s 音频" #: src/wx/audio_dialog.cc:171 src/wx/audio_dialog.cc:173 #, c-format @@ -124,12 +124,11 @@ msgid "%s test email" msgstr "%s发送测试邮件" #: src/wx/about_dialog.cc:95 -#, fuzzy msgid "" "(C) 2012-2026 Carl Hetherington, Terrence Meiczinger\n" "Aaron Boxer" msgstr "" -"(C) 2012-2025 Carl Hetherington, Terrence Meiczinger\n" +"(C) 2012-2026 Carl Hetherington, Terrence Meiczinger\n" "Aaron Boxer" #: src/wx/full_config_dialog.cc:1227 src/wx/player_config_dialog.cc:131 @@ -248,15 +247,15 @@ msgstr "96kHz" msgid ":1" msgstr ":1" -#: src/wx/verify_dcp_result_panel.cc:646 +#: src/wx/verify_dcp_result_panel.cc:648 #, c-format -msgid "<IssueDate> has an invalid value %n" -msgstr "<IssueDate> 具有无效值 %n" +msgid "<IssueDate> has an invalid value %issue_date" +msgstr "<IssueDate> 具有无效值 %issue_date" -#: src/wx/verify_dcp_result_panel.cc:652 +#: src/wx/verify_dcp_result_panel.cc:654 #, c-format -msgid "<MainSoundConfiguration> is invalid (%n)" -msgstr "<MainSoundConfiguration> 不可用 (%n)" +msgid "<MainSoundConfiguration> is invalid (%error)" +msgstr "<MainSoundConfiguration> 不可用 (%error)" #: src/wx/subtitle_appearance_dialog.cc:118 msgid "<b>New colour</b>" @@ -276,70 +275,76 @@ msgstr "<i>请输入一个有效的邮箱地址,否则我们将无法解决您 msgid "A" msgstr "A" -#: src/wx/verify_dcp_result_panel.cc:555 +#: src/wx/verify_dcp_result_panel.cc:570 #, c-format -msgid "A 2K JPEG2000 frame contains %n tile parts instead of 3." -msgstr "2K JPEG2000帧包含%n个图块部分,而不是3个。" +msgid "A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3." +msgstr "2K JPEG2000帧包含%tile_parts个图块部分,而不是3个。" -#: src/wx/verify_dcp_result_panel.cc:569 +#: src/wx/verify_dcp_result_panel.cc:584 #, c-format -msgid "A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "一个 2K JPEG2000 帧包含无效的 Rsiz(承载力)值 %n" +msgid "" +"A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "一个 2K JPEG2000 帧包含无效的 Rsiz(承载力)值 %capabilities" -#: src/wx/verify_dcp_result_panel.cc:527 +#: src/wx/verify_dcp_result_panel.cc:507 #, c-format -msgid "A 2K JPEG2000 frame has %n POC marker(s) instead of 0." -msgstr "2K JPEG2000帧具有 %n POC标记而不是0。" +msgid "A 2K JPEG2000 frame has %guard_bits guard bits instead of 1." +msgstr "2K JPEG2000帧具有 %guard_bits 保护位而不是1。" -#: src/wx/verify_dcp_result_panel.cc:492 +#: src/wx/verify_dcp_result_panel.cc:542 #, c-format -msgid "A 2K JPEG2000 frame has %n guard bits instead of 1." -msgstr "2K JPEG2000帧具有 %n 保护位而不是1。" +msgid "A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0." +msgstr "2K JPEG2000帧具有 %poc_markers POC标记而不是0。" -#: src/wx/verify_dcp_result_panel.cc:562 +#: src/wx/verify_dcp_result_panel.cc:577 #, c-format -msgid "A 4K JPEG2000 frame contains %n tile parts instead of 6." -msgstr "4K JPEG2000帧包含 %n 个图块部分,而不是6个。" +msgid "A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6." +msgstr "4K JPEG2000帧包含 %tile_parts 个图块部分,而不是6个。" -#: src/wx/verify_dcp_result_panel.cc:576 +#: src/wx/verify_dcp_result_panel.cc:591 #, c-format -msgid "A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n" -msgstr "一个 2K JPEG2000 帧包含无效的 Rsiz(承载力)值 %n" +msgid "" +"A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of " +"%capabilities" +msgstr "一个 2K JPEG2000 帧包含无效的 Rsiz(承载力)值 %capabilities" -#: src/wx/verify_dcp_result_panel.cc:534 +#: src/wx/verify_dcp_result_panel.cc:514 #, c-format -msgid "A 4K JPEG2000 frame has %n POC marker(s) instead of 1." -msgstr "4K JPEG2000帧具有 %n POC标记而不是1。" +msgid "A 4K JPEG2000 frame has %guard_bits guard bits instead of 2." +msgstr "4K JPEG2000帧具有 %guard_bits 保护位 而不是2。" -#: src/wx/verify_dcp_result_panel.cc:499 +#: src/wx/verify_dcp_result_panel.cc:549 #, c-format -msgid "A 4K JPEG2000 frame has %n guard bits instead of 2." -msgstr "4K JPEG2000帧具有 %n 保护位 而不是2。" +msgid "A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1." +msgstr "4K JPEG2000帧具有 %poc_markers POC标记而不是1。" -#: src/wx/verify_dcp_result_panel.cc:548 +#: src/wx/verify_dcp_result_panel.cc:563 msgid "A JPEG2000 frame contains a POC marker in an invalid location." msgstr "JPEG2000帧在无效位置包含POC标记。" -#: src/wx/verify_dcp_result_panel.cc:541 +#: src/wx/verify_dcp_result_panel.cc:556 #, c-format msgid "A JPEG2000 frame contains an invalid POC marker (%n)." msgstr "JPEG2000帧包含无效的POC标记 (%n)。" -#: src/wx/verify_dcp_result_panel.cc:520 +#: src/wx/verify_dcp_result_panel.cc:535 #, c-format -msgid "A JPEG2000 frame has a code-block height of %n instead of 32." -msgstr "JPEG2000帧的代码块高度为 %n ,而不是32。" +msgid "" +"A JPEG2000 frame has a code-block height of %code_block_height instead of 32." +msgstr "JPEG2000帧的代码块高度为 %code_block_height ,而不是32。" -#: src/wx/verify_dcp_result_panel.cc:513 +#: src/wx/verify_dcp_result_panel.cc:528 #, c-format -msgid "A JPEG2000 frame has a code-block width of %n instead of 32." -msgstr "JPEG2000帧的代码块宽度为 %n ,而不是32。" +msgid "" +"A JPEG2000 frame has a code-block width of %code_block_width instead of 32." +msgstr "JPEG2000帧的代码块宽度为 %code_block_width ,而不是32。" -#: src/wx/verify_dcp_result_panel.cc:583 +#: src/wx/verify_dcp_result_panel.cc:598 msgid "A JPEG2000 frame has no TLM marker." msgstr "JPEG2000帧没有TLM标记。" -#: src/wx/verify_dcp_result_panel.cc:506 +#: src/wx/verify_dcp_result_panel.cc:521 msgid "A JPEG2000 tile size does not match the image size." msgstr "JPEG2000图块大小与图像大小不匹配。" @@ -348,21 +353,21 @@ msgstr "JPEG2000图块大小与图像大小不匹配。" msgid "A new version of %s is available." msgstr "发现新版本的%s可用。" -#: src/wx/verify_dcp_result_panel.cc:485 +#: src/wx/verify_dcp_result_panel.cc:500 #, c-format -msgid "A picture frame has an invalid JPEG2000 codestream (%n)." -msgstr "图片帧包含无效的JPEG2000码流(%n)" +msgid "A picture frame has an invalid JPEG2000 codestream (%error)." +msgstr "图片帧包含无效的JPEG2000码流(%error)" #: src/wx/hints_dialog.cc:183 #, c-format msgid "A problem occurred when looking for hints (%s)" msgstr "查找提示时出现问题 (%s)" -#: src/wx/verify_dcp_result_panel.cc:588 +#: src/wx/verify_dcp_result_panel.cc:603 msgid "A subtitle lasts longer than the reel it is in." msgstr "字幕的持续时间比卷轴长。" -#: src/wx/verify_dcp_result_panel.cc:668 +#: src/wx/verify_dcp_result_panel.cc:670 #, c-format msgid "" "A subtitle or closed caption refers to a font with ID %load_font_id that " @@ -553,9 +558,8 @@ msgid "Allow mapping to all audio channels" msgstr "允许映射到所有音频通道" #: src/wx/full_config_dialog.cc:1079 -#, fuzzy msgid "Allow use of MPEG2 Interop" -msgstr "允许使用SMPTE Bv2.0" +msgstr "允许使用MPEG2 Interop" #: src/wx/full_config_dialog.cc:1077 msgid "Allow use of SMPTE Bv2.0" @@ -569,14 +573,14 @@ msgstr "透明度 0" msgid "Also supported by" msgstr "其他支持者" -#: src/wx/verify_dcp_result_panel.cc:292 +#: src/wx/verify_dcp_result_panel.cc:307 msgid "An asset has an empty path in the ASSETMAP." msgstr "有资产在 ASSETMAP 中具有空路径。" -#: src/wx/verify_dcp_result_panel.cc:631 +#: src/wx/verify_dcp_result_panel.cc:633 #, c-format -msgid "An invalid <ContentKind> %n has been used." -msgstr "一个无效的 <ContentKind> %n 被使用。" +msgid "An invalid <ContentKind> %content_kind has been used." +msgstr "一个无效的 <ContentKind> %content_kind 被使用。" #: src/wx/dkdm_output_panel.cc:204 src/wx/kdm_output_panel.cc:321 msgid "An unknown exception occurred." @@ -622,24 +626,24 @@ msgstr "" "你确定要发送邮件到以下地址?\n" "\n" -#: src/wx/verify_dcp_result_panel.cc:616 +#: src/wx/verify_dcp_result_panel.cc:618 msgid "At least one <Text> node in a subtitle or closed caption is empty." msgstr "字幕或隐藏字幕中至少有一条 <Text> 为空。" -#: src/wx/verify_dcp_result_panel.cc:417 +#: src/wx/verify_dcp_result_panel.cc:432 msgid "" "At least one asset in a reel does not have the same duration as the others." msgstr "卷轴中至少一个资产的持续时间与其他资产的持续时间不同。" -#: src/wx/verify_dcp_result_panel.cc:387 +#: src/wx/verify_dcp_result_panel.cc:402 msgid "At least one pair of subtitles is separated by less than 2 frames." msgstr "至少一组字幕相隔少于2帧。" -#: src/wx/verify_dcp_result_panel.cc:381 +#: src/wx/verify_dcp_result_panel.cc:396 msgid "At least one subtitle has zero or negative duration." msgstr "至少有一个字幕持续时间为0或为负数。" -#: src/wx/verify_dcp_result_panel.cc:384 +#: src/wx/verify_dcp_result_panel.cc:399 msgid "At least one subtitle lasts less than 15 frames." msgstr "至少有一个字幕持续时间少于15帧。" @@ -820,9 +824,8 @@ msgid "Check for updates on startup" msgstr "启动时检查软件更新" #: src/wx/content_menu.cc:116 -#, fuzzy msgid "Choose CPL" -msgstr "选择CPL…" +msgstr "选择CPL" #: src/wx/content_panel.cc:677 msgid "Choose a DCP folder" @@ -864,10 +867,10 @@ msgstr "影院和影厅数据库文件" msgid "Click the button to set all selected content to the same value." msgstr "单击该按钮可将所有选定的内容为相同的值。" -#: src/wx/verify_dcp_result_panel.cc:435 +#: src/wx/verify_dcp_result_panel.cc:450 #, c-format -msgid "Closed caption asset %n has a non-zero <EntryPoint>." -msgstr "隐藏式字幕资源 %n 具有非零 <EntryPoint>。" +msgid "Closed caption asset %asset_id has a non-zero <EntryPoint>." +msgstr "隐藏式字幕资源 %asset_id 具有非零 <EntryPoint>。" #: src/wx/closed_captions_dialog.cc:49 src/wx/dcp_referencing_dialog.cc:115 msgid "Closed captions" @@ -1009,10 +1012,10 @@ msgstr "无法载入证书 (%s)" msgid "Could not play content" msgstr "无法播放内容" -#: src/wx/verify_dcp_result_panel.cc:271 +#: src/wx/verify_dcp_result_panel.cc:286 #, c-format -msgid "Could not read DCP (%n)" -msgstr "无法读取 DCP (%n)" +msgid "Could not read DCP (%error)" +msgstr "无法读取 DCP (%error)" #: src/wx/gl_video_view.cc:131 #, c-format @@ -1032,9 +1035,8 @@ msgid "Could not read certificate file." msgstr "无法读取证书文件。" #: src/wx/certificate_chain_editor.cc:195 -#, fuzzy msgid "Could not read certificate file. Make sure it is in PEM format." -msgstr "无法读取证书文件。" +msgstr "无法读取证书文件。确保它是 PEM 格式。" #: src/wx/qube_certificate_panel.cc:55 msgid "Could not read certificates from Qube server." @@ -1134,9 +1136,8 @@ msgid "Debug: audio analysis" msgstr "调试: 音频分析" #: src/wx/full_config_dialog.cc:1322 -#, fuzzy msgid "Debug: butler" -msgstr "调试: 播放器" +msgstr "调试: 管家(butler)" #: src/wx/full_config_dialog.cc:1314 src/wx/kdm_config_dialog.cc:142 msgid "Debug: email sending" @@ -1355,33 +1356,28 @@ msgid "Encoding Servers" msgstr "编码服务器" #: src/wx/encryption_settings_dialog.cc:33 -#, fuzzy msgid "Encrypt picture" -msgstr "加密" +msgstr "加密图像" #: src/wx/encryption_settings_dialog.cc:34 -#, fuzzy msgid "Encrypt sound" -msgstr "加密" +msgstr "加密声音" #: src/wx/encryption_settings_dialog.cc:35 -#, fuzzy msgid "Encrypt text" -msgstr "加密" +msgstr "加密文本" #: src/wx/dcp_panel.cc:106 src/wx/spl_entry_dialog.cc:51 msgid "Encrypted" msgstr "加密" #: src/wx/encryption_settings_dialog.cc:31 -#, fuzzy msgid "Encryption settings" -msgstr "导出所有KDM加密设置…" +msgstr "加密设置" #: src/wx/dcp_panel.cc:107 -#, fuzzy msgid "Encryption settings..." -msgstr "导出所有KDM加密设置…" +msgstr "加密设置..." #: src/wx/text_view.cc:68 msgid "End" @@ -1502,29 +1498,24 @@ msgid "Finding the colours in these subtitles..." msgstr "查找这些字幕中的颜色..." #: src/wx/markers.cc:39 -#, fuzzy msgid "First frame of end credits (FFEC)" -msgstr "片尾的第一帧" +msgstr "片尾字幕的第一帧(FFEC)" #: src/wx/markers.cc:37 -#, fuzzy msgid "First frame of intermission (FFOI)" -msgstr "幕间休息第一帧" +msgstr "幕间休息的第一帧 (FFOI)" #: src/wx/markers.cc:41 -#, fuzzy msgid "First frame of moving credits (FFMC)" -msgstr "动态字幕的第一帧" +msgstr "滚动字幕的第一帧(FFMC)" #: src/wx/markers.cc:33 -#, fuzzy msgid "First frame of ratings band (FFOB)" -msgstr "评级等级的第一帧" +msgstr "评级的第一帧(FFOB)" #: src/wx/markers.cc:35 -#, fuzzy msgid "First frame of title credits (FFTC)" -msgstr "标题字幕第一帧" +msgstr "标题字幕第一帧(FFTC)" #: src/wx/short_kdm_output_panel.cc:115 src/wx/tall_kdm_output_panel.cc:84 msgid "Folder / ZIP name format" @@ -1554,26 +1545,28 @@ msgstr "视频标记" msgid "Format" msgstr "格式" -#: src/wx/verify_dcp_result_panel.cc:328 +#: src/wx/verify_dcp_result_panel.cc:343 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is close to the limit of 250Mbit/s." msgstr "视频资产 %f(时间码 %timecode)的至少一个%f帧接近250MBit/s的限制。" -#: src/wx/verify_dcp_result_panel.cc:321 +#: src/wx/verify_dcp_result_panel.cc:336 #, c-format msgid "" "Frame %frame (timecode %timecode) in asset %f has an instantaneous bit rate " "that is over the limit of 250Mbit/s." msgstr "视频资产 %f (时间码 %ti)的至少一个%f 帧超过250MBit/s的限制。" -#: src/wx/verify_dcp_result_panel.cc:660 +#: src/wx/verify_dcp_result_panel.cc:662 #, c-format msgid "" "Frame %frame has an image component that is too large (component %component " -"is %size bytes in size)." -msgstr "帧 %frame 包含一个图像组件过大(组件 %component 的大小为 %size 字节)" +"is %size_in_bytes bytes in size)." +msgstr "" +"帧 %frame 包含一个图像组件过大(组件 %component 的大小为 %size_in_bytes 字" +"节)" #: src/wx/dcp_panel.cc:868 msgid "Frame Rate" @@ -1945,29 +1938,24 @@ msgid "Language used for any sign language video track" msgstr "用于手语视频轨道的语言" #: src/wx/markers.cc:40 -#, fuzzy msgid "Last frame of end credits (LFEC)" -msgstr "片尾字幕的最后一帧" +msgstr "片尾字幕的最后一帧(LFEC)" #: src/wx/markers.cc:38 -#, fuzzy msgid "Last frame of intermission (LFOI)" -msgstr "幕间休息的最后一帧" +msgstr "幕间休息的最后一帧(LFOI)" #: src/wx/markers.cc:42 -#, fuzzy msgid "Last frame of moving credits (LFMC)" -msgstr "动态字幕的最后一帧" +msgstr "动态字幕的最后一帧(LFMC)" #: src/wx/markers.cc:34 -#, fuzzy msgid "Last frame of ratings band (LFOB)" -msgstr "评级等级的最后一帧" +msgstr "评级等级的最后一帧(LFOB)" #: src/wx/markers.cc:36 -#, fuzzy msgid "Last frame of title credits (LFTC)" -msgstr "标题字幕的最后一帧" +msgstr "标题字幕的最后一帧(LFTC)" #: src/wx/content_panel.cc:292 msgid "Later" @@ -2082,9 +2070,8 @@ msgid "MPEG2 Interop" msgstr "MPEG2 Interop" #: src/wx/export_subtitles_dialog.cc:48 -#, fuzzy msgid "MXF (SMPTE)" -msgstr "SMPTE" +msgstr "MXF (SMPTE)" #. TRANSLATORS: Main and Additional here are a choice for whether a set of subtitles is in the "main" language of the #. film or an "additional" language. @@ -2177,80 +2164,80 @@ msgstr "元数据……" msgid "Mix audio down to stereo" msgstr "将所有音频轨混到一个双声道轨" -#: src/wx/verify_dcp_result_panel.cc:556 +#: src/wx/verify_dcp_result_panel.cc:571 msgid "" "More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "更多2K JPEG2000帧(未列出)包含错误数量的标题部分。" -#: src/wx/verify_dcp_result_panel.cc:493 +#: src/wx/verify_dcp_result_panel.cc:508 msgid "" "More 2K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "更多2K JPEG2000帧(未列出)包含无效的保护位数量。" -#: src/wx/verify_dcp_result_panel.cc:528 +#: src/wx/verify_dcp_result_panel.cc:543 msgid "More 2K JPEG2000 frames (not listed) have too many POC markers." msgstr "更多2K JPEG2000帧(未列出)包含太多POC标记。" -#: src/wx/verify_dcp_result_panel.cc:500 +#: src/wx/verify_dcp_result_panel.cc:515 msgid "" "More 4K JPEG2000 frames (not listed) have an invalid number of guard bits." msgstr "更多4K JPEG2000帧(未列出)包含无效的保护位数量。" -#: src/wx/verify_dcp_result_panel.cc:535 +#: src/wx/verify_dcp_result_panel.cc:550 msgid "More 4K JPEG2000 frames (not listed) have too many POC markers." msgstr "更多4K JPEG2000帧(未列出)包含太多POC标记。" -#: src/wx/verify_dcp_result_panel.cc:549 +#: src/wx/verify_dcp_result_panel.cc:564 msgid "" "More JPEG2000 frames (not listed) contain POC markers in invalid locations." msgstr "更多JPEG2000帧(未列出)在无效位置包含POC标记。" -#: src/wx/verify_dcp_result_panel.cc:542 +#: src/wx/verify_dcp_result_panel.cc:557 msgid "More JPEG2000 frames (not listed) contain invalid POC markers." msgstr "更多JPEG2000帧(未列出)包含无效的POC标记。" -#: src/wx/verify_dcp_result_panel.cc:570 src/wx/verify_dcp_result_panel.cc:577 +#: src/wx/verify_dcp_result_panel.cc:585 src/wx/verify_dcp_result_panel.cc:592 msgid "More JPEG2000 frames (not listed) contain invalid Rsiz values." msgstr "更多JPEG2000帧(未列出)包含无效的Rsiz值。" -#: src/wx/verify_dcp_result_panel.cc:563 +#: src/wx/verify_dcp_result_panel.cc:578 msgid "" "More JPEG2000 frames (not listed) contain the wrong number of tile parts." msgstr "更多JPEG2000帧(未列出)包含错误数量的标题部分。" -#: src/wx/verify_dcp_result_panel.cc:521 +#: src/wx/verify_dcp_result_panel.cc:536 msgid "More JPEG2000 frames (not listed) have an invalid code-block height." msgstr "更多JPEG2000帧(未列出)包含无效的码块高度。" -#: src/wx/verify_dcp_result_panel.cc:514 +#: src/wx/verify_dcp_result_panel.cc:529 msgid "More JPEG2000 frames (not listed) have an invalid code-block width." msgstr "更多JPEG2000帧(未列出)包含无效的码块宽度。" -#: src/wx/verify_dcp_result_panel.cc:584 +#: src/wx/verify_dcp_result_panel.cc:599 msgid "More JPEG2000 frames (not listed) have no TLM marker." msgstr "更多JPEG2000帧(未列出)缺少 TLM 标记。" -#: src/wx/verify_dcp_result_panel.cc:507 +#: src/wx/verify_dcp_result_panel.cc:522 msgid "More JPEG2000 tile sizes (not listed) do not match the image size." msgstr "更多JPEG2000图块大小与图像尺寸不匹配。" -#: src/wx/verify_dcp_result_panel.cc:329 +#: src/wx/verify_dcp_result_panel.cc:344 msgid "" "More frames (not listed) have an instantaneous bit rate that is close to the " "limit of 250Mbit/s." msgstr "更多帧(未列出)的瞬时比特率接近250Mbit/s的极限。" -#: src/wx/verify_dcp_result_panel.cc:322 +#: src/wx/verify_dcp_result_panel.cc:337 msgid "" "More frames (not listed) have an instantaneous bit rate that is over the " "limit of 250Mbit/s." msgstr "更多帧(未列出)的瞬时比特率超过250Mbit/s的限制。" -#: src/wx/verify_dcp_result_panel.cc:661 +#: src/wx/verify_dcp_result_panel.cc:663 msgid "More frames (not listed) have image components that are too large." msgstr "更多帧(未列出)包含过大的图像组件。" -#: src/wx/verify_dcp_result_panel.cc:486 +#: src/wx/verify_dcp_result_panel.cc:501 msgid "More picture frames (not listed) have invalid JPEG2000 codestreams." msgstr "更多图片帧(未列出)包含无效的JPEG2000码流。" @@ -2338,7 +2325,7 @@ msgstr "下一步" msgid "No" msgstr "不" -#: src/wx/verify_dcp_result_panel.cc:310 +#: src/wx/verify_dcp_result_panel.cc:325 msgid "No ASSETMAP or ASSETMAP.xml file was found." msgstr "找不到ASSETMAP或ASSETMAP.xml文件。" @@ -2346,7 +2333,7 @@ msgstr "找不到ASSETMAP或ASSETMAP.xml文件。" msgid "No DCP loaded." msgstr "没有加载DCP。" -#: src/wx/verify_dcp_result_panel.cc:709 +#: src/wx/verify_dcp_result_panel.cc:711 msgid "No SMPTE Bv2.1 errors found." msgstr "未发现SMPTE Bv2.1错误。" @@ -2359,11 +2346,11 @@ msgstr "没有音频将从 %s 通道“%s”传递到 %s 通道“%s”。" msgid "No content found in this folder." msgstr "文件夹中没有找到文件。" -#: src/wx/verify_dcp_result_panel.cc:705 +#: src/wx/verify_dcp_result_panel.cc:707 msgid "No errors found." msgstr "没有发现错误。" -#: src/wx/verify_dcp_result_panel.cc:713 +#: src/wx/verify_dcp_result_panel.cc:715 msgid "No warnings found." msgstr "没有发现任何警告。" @@ -2377,7 +2364,7 @@ msgstr "非标准设置(高级)" msgid "None" msgstr "无" -#: src/wx/verify_dcp_result_panel.cc:369 +#: src/wx/verify_dcp_result_panel.cc:384 msgid "Not all subtitle assets specify the same <Language> tag." msgstr "不是所有字幕资源都指定相同的 <Language> 标签。" @@ -2506,11 +2493,11 @@ msgstr "覆盖已侦测到的视频帧率" msgid "Overwrite this file with current configuration" msgstr "使用当前设置改写这个文件" -#: src/wx/verify_dcp_result_panel.cc:613 +#: src/wx/verify_dcp_result_panel.cc:615 msgid "Part of the DCP could not be checked because no KDM was available." msgstr "由于没有可用的KDM,因此无法检查DCP。" -#: src/wx/verify_dcp_result_panel.cc:298 +#: src/wx/verify_dcp_result_panel.cc:313 msgid "" "Parts of the DCP are written according to the Interop standard and parts " "according to SMPTE." @@ -3022,7 +3009,7 @@ msgstr "选择debug日志文件" msgid "Select output file" msgstr "选择输出文件" -#: src/wx/full_language_tag_dialog.cc:222 +#: src/wx/full_language_tag_dialog.cc:221 msgid "Select..." msgstr "选择…" @@ -3190,14 +3177,14 @@ msgid "" "certificate validity periods. What do you want to do?" msgstr "某些密钥超出有效期,密钥无效,希望如何处理?" -#: src/wx/verify_dcp_result_panel.cc:619 +#: src/wx/verify_dcp_result_panel.cc:621 msgid "" "Some closed <Text> or <Image> nodes have different vertical alignments " "within a <Subtitle>." msgstr "" "部分隐藏式 <Text> 或 <Image> 节点在 <Subtitle> 内的垂直方向排列位置有变化。" -#: src/wx/verify_dcp_result_panel.cc:622 +#: src/wx/verify_dcp_result_panel.cc:624 msgid "" "Some closed captions are not listed in the order of their vertical position." msgstr "部分隐藏式字幕未按其垂直方向位置列出。" @@ -3206,7 +3193,7 @@ msgstr "部分隐藏式字幕未按其垂直方向位置列出。" msgid "Sound" msgstr "声音" -#: src/wx/verify_dcp_result_panel.cc:649 +#: src/wx/verify_dcp_result_panel.cc:651 msgid "Sound assets do not all have the same channel count." msgstr "声音资源的声道数不一致。" @@ -3291,10 +3278,10 @@ msgstr "订阅者" msgid "Subtitle appearance" msgstr "字幕外观" -#: src/wx/verify_dcp_result_panel.cc:429 +#: src/wx/verify_dcp_result_panel.cc:444 #, c-format -msgid "Subtitle asset %n has a non-zero <EntryPoint>." -msgstr "字幕文件 %n有非零 <EntryPoint>。" +msgid "Subtitle asset %asset_id has a non-zero <EntryPoint>." +msgstr "字幕文件 %asset_id有非零 <EntryPoint>。" #: src/wx/export_subtitles_dialog.cc:105 msgid "Subtitle files (.mxf)|*.mxf" @@ -3377,113 +3364,113 @@ msgstr "测试人员和机构" msgid "The 'until' time must be after the 'from' time." msgstr "结束时间必须大于开始时间。" -#: src/wx/verify_dcp_result_panel.cc:677 +#: src/wx/verify_dcp_result_panel.cc:679 #, c-format msgid "The <LabelText> in a <ContentVersion> in CPL %cpl is empty" msgstr "CPL %cpl中的<ContentVersion>中的<LabelText>为空" -#: src/wx/verify_dcp_result_panel.cc:634 +#: src/wx/verify_dcp_result_panel.cc:636 msgid "" "The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than " "an asset." msgstr "<MainPictureActiveArea>不是2的倍数,或者大于资产。" -#: src/wx/verify_dcp_result_panel.cc:640 +#: src/wx/verify_dcp_result_panel.cc:642 #, c-format -msgid "The ASSETMAP %n has more than one asset with the same ID." -msgstr "ASSETMAP %n 中有一个以上的资产具有相同的ID。" +msgid "The ASSETMAP %asset_map_id has more than one asset with the same ID." +msgstr "ASSETMAP %asset_map_id 中有一个以上的资产具有相同的ID。" -#: src/wx/verify_dcp_result_panel.cc:594 +#: src/wx/verify_dcp_result_panel.cc:609 msgid "" "The Asset ID in a timed text MXF is the same as the Resource ID or that of " "the contained XML." msgstr "时间文本 MXF 中的资产 ID 与资源 ID 或包含的 XML 的资源 ID 相同。" -#: src/wx/verify_dcp_result_panel.cc:414 +#: src/wx/verify_dcp_result_panel.cc:429 #, c-format msgid "" "The CPL %cpl has an <AnnotationText> which is not the same as its " "<ContentTitleText>." msgstr "CPL %cpl的 <AnnotationText> 与其 <ContentTitleText> 不同。" -#: src/wx/verify_dcp_result_panel.cc:680 +#: src/wx/verify_dcp_result_panel.cc:682 #, c-format -msgid "The CPL %cpl has an invalid namespace %n" -msgstr "声音资产 %cpl 的帧率 %n 非法" +msgid "The CPL %cpl has an invalid namespace %xml_namespace" +msgstr "声音资产 %cpl 的帧率 %xml_namespace 非法" -#: src/wx/verify_dcp_result_panel.cc:471 +#: src/wx/verify_dcp_result_panel.cc:486 #, c-format msgid "The CPL %cpl has encrypted content but is not signed." msgstr "CPL %cpl已加密内容,但未签名。" -#: src/wx/verify_dcp_result_panel.cc:411 +#: src/wx/verify_dcp_result_panel.cc:426 #, c-format msgid "The CPL %cpl has no <AnnotationText> tag." msgstr "CPL %cpl没有 <AnnotationText> 标记。" -#: src/wx/verify_dcp_result_panel.cc:683 +#: src/wx/verify_dcp_result_panel.cc:685 #, c-format msgid "The CPL %cpl has no <ContentVersion> tag" msgstr "CPL %cpl没有 <ContentVersion> 标记" -#: src/wx/verify_dcp_result_panel.cc:465 +#: src/wx/verify_dcp_result_panel.cc:480 #, c-format msgid "The CPL %cpl has no CPL extension metadata tag." msgstr "CPL %cpl 没有CPL扩展元数据标记。" -#: src/wx/verify_dcp_result_panel.cc:459 +#: src/wx/verify_dcp_result_panel.cc:474 #, c-format msgid "The CPL %cpl has no CPL metadata tag." msgstr "CPL %cpl 没有CPL元数据标记。" -#: src/wx/verify_dcp_result_panel.cc:462 +#: src/wx/verify_dcp_result_panel.cc:477 #, c-format msgid "The CPL %cpl has no CPL metadata version number tag." msgstr "CPL %cpl 没有CPL元数据版本号标记。" -#: src/wx/verify_dcp_result_panel.cc:468 +#: src/wx/verify_dcp_result_panel.cc:483 #, c-format -msgid "The CPL %f has an invalid CPL extension metadata tag (%n)" -msgstr "CPL %f具有无效的CPL扩展元数据标记(%n)" +msgid "The CPL %f has an invalid CPL extension metadata tag (%error)" +msgstr "CPL %f具有无效的CPL扩展元数据标记(%error)" -#: src/wx/verify_dcp_result_panel.cc:453 +#: src/wx/verify_dcp_result_panel.cc:468 #, c-format -msgid "The DCP has a FFOC of %n instead of 1." -msgstr "DCP的FFOC为%n,而不是1。" +msgid "The DCP has a FFOC of %time instead of 1." +msgstr "DCP的FFOC为%time,而不是1。" -#: src/wx/verify_dcp_result_panel.cc:456 +#: src/wx/verify_dcp_result_panel.cc:471 #, c-format -msgid "The DCP has a LFOC of %n instead of the reel duration minus one." -msgstr "DCP的LFOC为%n,而不是卷轴持续时间减1。" +msgid "The DCP has a LFOC of %time instead of the reel duration minus one." +msgstr "DCP的LFOC为%time,而不是卷轴持续时间减1。" -#: src/wx/verify_dcp_result_panel.cc:423 +#: src/wx/verify_dcp_result_panel.cc:438 msgid "" "The DCP has closed captions but not every reel has the same number of closed " "caption assets." msgstr "DCP有隐藏字幕,但不是每一卷都有相同数量的隐藏字幕资产。" -#: src/wx/verify_dcp_result_panel.cc:480 +#: src/wx/verify_dcp_result_panel.cc:495 msgid "The DCP has encrypted content, but not all its assets are encrypted." msgstr "DCP具有已加密内容,但并非所有资产都已加密。" -#: src/wx/verify_dcp_result_panel.cc:447 +#: src/wx/verify_dcp_result_panel.cc:462 msgid "The DCP has no FFOC (first frame of content) marker." msgstr "DCP没有FFOC(内容的第一帧)标记。" -#: src/wx/verify_dcp_result_panel.cc:450 +#: src/wx/verify_dcp_result_panel.cc:465 msgid "The DCP has no LFOC (last frame of content) marker." msgstr "DCP没有LFOC(内容的最后一帧)标记。" -#: src/wx/verify_dcp_result_panel.cc:420 +#: src/wx/verify_dcp_result_panel.cc:435 msgid "The DCP has subtitles but at least one reel has no subtitle asset." msgstr "DCP有字幕,但至少有一个卷没有字幕资产。" -#: src/wx/verify_dcp_result_panel.cc:441 +#: src/wx/verify_dcp_result_panel.cc:456 msgid "" "The DCP is a feature but has no FFEC (first frame of end credits) marker." msgstr "此DCP被标记为影片的正片,但没有FFEC(片尾字幕的第一帧)标记。" -#: src/wx/verify_dcp_result_panel.cc:444 +#: src/wx/verify_dcp_result_panel.cc:459 msgid "" "The DCP is a feature but has no FFMC (first frame of moving credits) marker." msgstr "此DCP被标记为影片的正片,但没有FFMC(动态字幕的第一帧)标记。" @@ -3504,110 +3491,113 @@ msgid "" "certificate's validity period. Use a later start time for this KDM." msgstr "KDM起始时间在签署证书生效之前 (或接近)。为此KDM设置较晚的起始时间。" -#: src/wx/verify_dcp_result_panel.cc:699 +#: src/wx/verify_dcp_result_panel.cc:701 #, c-format -msgid "The PKL %f has an invalid namespace %n" -msgstr "声音资产 %f 的帧率 %n 非法" +msgid "The PKL %f has an invalid namespace %xml_namespace" +msgstr "声音资产 %f 的帧率 %xml_namespace 非法" -#: src/wx/verify_dcp_result_panel.cc:477 +#: src/wx/verify_dcp_result_panel.cc:492 #, c-format msgid "" -"The PKL %n has an <AnnotationText> which does not match its CPL's " +"The PKL %pkl has an <AnnotationText> which does not match its CPL's " "<ContentTitleText>." -msgstr "PKL%n具有与其CPL的 <ContentTitleText> 不匹配的 <AnnotationText> 。" +msgstr "PKL%pkl具有与其CPL的 <ContentTitleText> 不匹配的 <AnnotationText> 。" -#: src/wx/verify_dcp_result_panel.cc:474 +#: src/wx/verify_dcp_result_panel.cc:489 #, c-format -msgid "The PKL %n has encrypted content but is not signed." -msgstr "PKL %n包含已加密内容,但未签名。" +msgid "The PKL %pkl has encrypted content but is not signed." +msgstr "PKL %pkl包含已加密内容,但未签名。" -#: src/wx/verify_dcp_result_panel.cc:637 +#: src/wx/verify_dcp_result_panel.cc:639 #, c-format -msgid "The PKL %n has more than one asset with the same ID." -msgstr "PKL %n 包含一个以上的资产具有相同的ID。" +msgid "The PKL %pkl_id has more than one asset with the same ID." +msgstr "PKL %pkl_id 包含一个以上的资产具有相同的ID。" -#: src/wx/verify_dcp_result_panel.cc:283 +#: src/wx/verify_dcp_result_panel.cc:298 #, c-format msgid "The PKL and CPL hashes disagree for picture asset %f." msgstr "图片资产 %f 的 PKL 和 CPL 哈希值同该资产不一致。" -#: src/wx/verify_dcp_result_panel.cc:289 +#: src/wx/verify_dcp_result_panel.cc:304 #, c-format msgid "The PKL and CPL hashes disagree for sound asset %f." msgstr "音频资产 %f 的 PKL 和 CPL 哈希值同该资产不一致。" -#: src/wx/verify_dcp_result_panel.cc:591 +#: src/wx/verify_dcp_result_panel.cc:606 msgid "" "The Resource ID in a timed text MXF did not match the ID of the contained " "XML." msgstr "时间文本 MXF 中的资源 ID 与所包含的 XML 的 ID 不匹配。" -#: src/wx/verify_dcp_result_panel.cc:671 +#: src/wx/verify_dcp_result_panel.cc:673 #, c-format msgid "" "The SMPTE subtitle asset %asset_id has <Text> nodes but no <LoadFont> node" msgstr "SMPTE 字幕资产 %asset_id 有 <Text> 节点,但缺少 <LoadFont> 节点" -#: src/wx/verify_dcp_result_panel.cc:305 +#: src/wx/verify_dcp_result_panel.cc:320 #, c-format -msgid "The XML in %f is malformed (%n)." -msgstr "%f中的XML格式不正确(%n)。" +msgid "The XML in %f is malformed (%error)." +msgstr "%f中的XML格式不正确(%error)。" -#: src/wx/verify_dcp_result_panel.cc:303 -msgid "The XML in %f is malformed on line %l (%n)." -msgstr "%f 中的XML在第 %l 行格式不正确(%n)。" +#: src/wx/verify_dcp_result_panel.cc:318 +msgid "The XML in %f is malformed on line %l (%error)." +msgstr "%f 中的XML在第 %l 行格式不正确(%error)。" -#: src/wx/verify_dcp_result_panel.cc:357 +#: src/wx/verify_dcp_result_panel.cc:372 #, c-format msgid "" -"The XML in the closed caption asset %f takes up %n bytes which is over the " -"256KB limit." -msgstr "隐藏式字幕资产 %f 中的XML占用了 %n 字节,超过了256KB的限制。" +"The XML in the closed caption asset %f takes up %size_in_bytes bytes which " +"is over the 256KB limit." +msgstr "" +"隐藏式字幕资产 %f 中的XML占用了 %size_in_bytes 字节,超过了256KB的限制。" -#: src/wx/verify_dcp_result_panel.cc:665 +#: src/wx/verify_dcp_result_panel.cc:667 #, c-format msgid "" -"The XML in the subtitle asset %n has more than one namespace declaration." -msgstr "字幕资产 %n 中的 XML 包含多个命名空间声明。" +"The XML in the subtitle asset %asset_id has more than one namespace " +"declaration." +msgstr "字幕资产 %asset_id 中的 XML 包含多个命名空间声明。" -#: src/wx/verify_dcp_result_panel.cc:336 +#: src/wx/verify_dcp_result_panel.cc:331 #, c-format -msgid "The asset %f is 3D but its MXF is marked as 2D." -msgstr "此资产 %f 是3D的,但其MXF被标记为2D。" +msgid "" +"The asset %asset_id has a duration of less than 1 second, which is invalid." +msgstr "此资产 %asset_id 的持续时间少于1秒,这是无效的。" -#: src/wx/verify_dcp_result_panel.cc:295 +#: src/wx/verify_dcp_result_panel.cc:328 #, c-format -msgid "The asset %f is missing." -msgstr "丢失资产 %f。" +msgid "" +"The asset %asset_id has an intrinsic duration of less than 1 second, which " +"is invalid." +msgstr "此资产 %asset_id 的持续时间小于1秒,这是无效的。" -#: src/wx/verify_dcp_result_panel.cc:316 +#: src/wx/verify_dcp_result_panel.cc:453 #, c-format -msgid "The asset %n has a duration of less than 1 second, which is invalid." -msgstr "此资产 %n 的持续时间少于1秒,这是无效的。" +msgid "The asset %asset_id has no <Hash> in the CPL." +msgstr "此资产 %asset_id 在CPL中没有<Hash>。" -#: src/wx/verify_dcp_result_panel.cc:313 +#: src/wx/verify_dcp_result_panel.cc:351 #, c-format -msgid "" -"The asset %n has an intrinsic duration of less than 1 second, which is " -"invalid." -msgstr "此资产 %n 的持续时间小于1秒,这是无效的。" +msgid "The asset %f is 3D but its MXF is marked as 2D." +msgstr "此资产 %f 是3D的,但其MXF被标记为2D。" -#: src/wx/verify_dcp_result_panel.cc:438 +#: src/wx/verify_dcp_result_panel.cc:310 #, c-format -msgid "The asset %n has no <Hash> in the CPL." -msgstr "此资产 %n 在CPL中没有<Hash>。" +msgid "The asset %f is missing." +msgstr "丢失资产 %f。" -#: src/wx/verify_dcp_result_panel.cc:674 +#: src/wx/verify_dcp_result_panel.cc:676 #, c-format msgid "" "The asset with ID %asset_id in the asset map actually has an id of " "%other_asset_id" msgstr "资产映射中 ID 为 %asset_id 的资产实际上具有 ID %other_asset_id" -#: src/wx/verify_dcp_result_panel.cc:432 +#: src/wx/verify_dcp_result_panel.cc:447 #, c-format -msgid "The closed caption asset %n has no <EntryPoint> tag." -msgstr "隐藏式字幕资产 %n 没有 <EntryPoint> 标记。" +msgid "The closed caption asset %asset_id has no <EntryPoint> tag." +msgstr "隐藏式字幕资产 %asset_id 没有 <EntryPoint> 标记。" #: src/wx/film_name_location_dialog.cc:146 #, c-format @@ -3643,75 +3633,76 @@ msgid "" "or overwrite it with your current configuration?" msgstr "文件 %s 已经存在。您希望将它作为新设置或是用现有设置覆盖他?" -#: src/wx/verify_dcp_result_panel.cc:378 +#: src/wx/verify_dcp_result_panel.cc:393 msgid "" "The first subtitle or closed caption happens before 4s into the first reel." msgstr "第一个字幕或隐藏式字幕出现在第一卷4秒之前。" -#: src/wx/verify_dcp_result_panel.cc:655 +#: src/wx/verify_dcp_result_panel.cc:657 #, c-format msgid "" -"The font file for font ID \"%n\" was not found, or was not referred to in " -"the ASSETMAP." -msgstr "字体文件 ID “%n” 未找到,或未在 ASSETMAP 中引用。" +"The font file for font ID \"%load_font_id\" was not found, or was not " +"referred to in the ASSETMAP." +msgstr "字体文件 ID “%load_font_id” 未找到,或未在 ASSETMAP 中引用。" -#: src/wx/verify_dcp_result_panel.cc:363 +#: src/wx/verify_dcp_result_panel.cc:378 #, c-format msgid "" -"The fonts in the timed text asset %f take up %n bytes which is over the 10MB " -"limit." -msgstr "字幕资产 %f 中的字体占用了 %n 字节,超过了10MB的限制。" +"The fonts in the timed text asset %f take up %size_in_bytes bytes which is " +"over the 10MB limit." +msgstr "字幕资产 %f 中的字体占用了 %size_in_bytes 字节,超过了10MB的限制。" -#: src/wx/verify_dcp_result_panel.cc:280 +#: src/wx/verify_dcp_result_panel.cc:295 msgid "" "The hash (%calculated_hash) of the picture asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "图片资产的哈希值与PKL文件中哈希值不一致。可能资产文件已损坏。" -#: src/wx/verify_dcp_result_panel.cc:286 +#: src/wx/verify_dcp_result_panel.cc:301 msgid "" "The hash (%calculated_hash) of the sound asset %f does not agree with the " "PKL file (%reference_hash). This probably means that the asset file is " "corrupt." msgstr "声音资产的哈希值与PKL文件的哈希值不一致。可能资产文件已损坏。" -#: src/wx/verify_dcp_result_panel.cc:274 +#: src/wx/verify_dcp_result_panel.cc:289 msgid "" "The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with " "the CPL file (%calculated_hash). This probably means that the CPL file is " "corrupt." msgstr "PKL中CPL哈希值与CPL文件的哈希值不一致。可能CPL文件已损坏。" -#: src/wx/verify_dcp_result_panel.cc:342 -#, c-format -msgid "The invalid language tag %n is used." -msgstr "使用了无效的语言标记%n。" +#: src/wx/verify_dcp_result_panel.cc:357 +msgid "The invalid language tag %language is used." +msgstr "使用了无效的语言标记%language。" #: src/wx/smpte_metadata_dialog.cc:63 #, c-format msgid "The language that the film's title (\"%s\") is in" msgstr "电影标题(“%s”)使用的语言" -#: src/wx/verify_dcp_result_panel.cc:277 +#: src/wx/verify_dcp_result_panel.cc:292 #, c-format msgid "" "The picture in a reel has a frame rate of %frame_rate, which is not valid." msgstr "分卷包含的图像内容帧速率 %frame_rate 非法。" -#: src/wx/verify_dcp_result_panel.cc:604 +#: src/wx/verify_dcp_result_panel.cc:612 #, c-format msgid "" -"The reel duration (%s) of some timed text is not the same as the " -"ContainerDuration (%s) of its MXF." -msgstr "某些字幕文本的分卷持续时间 (%s) 与其MXF的容器持续时间 (%s) 不同。" +"The reel duration (%other_duration) of some timed text is not the same as " +"the ContainerDuration (%duration) of its MXF." +msgstr "" +"某些字幕文本的分卷持续时间 (%other_duration) 与其MXF的容器持续时间 " +"(%duration) 不同。" -#: src/wx/verify_dcp_result_panel.cc:408 +#: src/wx/verify_dcp_result_panel.cc:423 #, c-format -msgid "The sound asset %f has an invalid bit depth of %n." -msgstr "声音资产 %f 的位深度 %n 无效。" +msgid "The sound asset %f has an invalid bit depth of %bit_depth." +msgstr "音频资产 %f 的位深 %bit_depth 无效。" -#: src/wx/verify_dcp_result_panel.cc:405 +#: src/wx/verify_dcp_result_panel.cc:420 #, c-format msgid "The sound asset %f has an invalid frame rate of %frame_rate." msgstr "声音资产 %f 的帧率 %frame_rate 无效。" @@ -3724,76 +3715,76 @@ msgstr "" "DCP 应使用的标准。 Interop是较旧的标准,而 SMPTE 是更新(当前)标准。 如果您" "拿不准,请选择“SMPTE”" -#: src/wx/verify_dcp_result_panel.cc:366 +#: src/wx/verify_dcp_result_panel.cc:645 +#, c-format +msgid "The subtitle asset %asset_id contains no subtitles." +msgstr "字幕资源 %asset_id 不包含字幕。" + +#: src/wx/verify_dcp_result_panel.cc:441 +#, c-format +msgid "The subtitle asset %asset_id has no <EntryPoint> tag." +msgstr "字幕资产 %asset_id 没有<EntryPoint>标记。" + +#: src/wx/verify_dcp_result_panel.cc:381 #, c-format msgid "The subtitle asset %f contains no <Language> tag." msgstr "字幕资产 %f 不包含<Language>标记。" -#: src/wx/verify_dcp_result_panel.cc:372 +#: src/wx/verify_dcp_result_panel.cc:387 #, c-format msgid "The subtitle asset %f contains no <StartTime> tag." msgstr "字幕资产 %f 不包含<StartTime>标记。" -#: src/wx/verify_dcp_result_panel.cc:375 +#: src/wx/verify_dcp_result_panel.cc:390 #, c-format msgid "The subtitle asset %f has a <StartTime> which is not zero." msgstr "字幕资产 %f 的<StartTime>不是零。" -#: src/wx/verify_dcp_result_panel.cc:643 -#, c-format -msgid "The subtitle asset %n contains no subtitles." -msgstr "字幕资源 %n 不包含字幕。" - -#: src/wx/verify_dcp_result_panel.cc:426 -#, c-format -msgid "The subtitle asset %n has no <EntryPoint> tag." -msgstr "字幕资产 %n 没有<EntryPoint>标记。" - -#: src/wx/verify_dcp_result_panel.cc:360 +#: src/wx/verify_dcp_result_panel.cc:375 #, c-format msgid "" -"The timed text asset %f takes up %n bytes which is over the 115MB limit." -msgstr "字幕文本资产 %f 占用了%n字节,超出了115MB的限制。" +"The timed text asset %f takes up %size_in_bytes bytes which is over the " +"115MB limit." +msgstr "字幕文本资产 %f 占用了%size_in_bytes字节,超出了115MB的限制。" -#: src/wx/verify_dcp_result_panel.cc:351 +#: src/wx/verify_dcp_result_panel.cc:366 #, c-format msgid "" "The video asset %f uses the frame rate %frame_rate which is invalid for 4K " "video." msgstr "视频资产 %f 使用的帧速率 %frame_rate 对4K视频无效。" -#: src/wx/verify_dcp_result_panel.cc:348 +#: src/wx/verify_dcp_result_panel.cc:363 #, c-format msgid "The video asset %f uses the invalid frame rate %frame_rate." msgstr "视频资产 %f 的帧率 %frame_rate 非法。" -#: src/wx/verify_dcp_result_panel.cc:345 +#: src/wx/verify_dcp_result_panel.cc:360 #, c-format -msgid "The video asset %f uses the invalid image size %n." -msgstr "视频资产 %f 使用了无效的图像大小 %n。" +msgid "The video asset %f uses the invalid image size %size_in_pixels." +msgstr "视频资产 %f 使用了无效的图像大小 %size_in_pixels。" -#: src/wx/verify_dcp_result_panel.cc:354 -#, fuzzy +#: src/wx/verify_dcp_result_panel.cc:369 msgid "The video asset is 4K which is not allowed for 3D video." -msgstr "视频资产 %f 使用的帧速率 %frame_rate 对于3D视频无效。" +msgstr "该视频素材为4K,不允许用于3D视频。" -#: src/wx/verify_dcp_result_panel.cc:399 +#: src/wx/verify_dcp_result_panel.cc:414 msgid "There are more than 3 closed caption lines in at least one place." msgstr "至少有一处有3条以上的隐藏式字幕行。" -#: src/wx/verify_dcp_result_panel.cc:390 +#: src/wx/verify_dcp_result_panel.cc:405 msgid "There are more than 3 subtitle lines in at least one place." msgstr "至少一处有超过 3 行字幕。" -#: src/wx/verify_dcp_result_panel.cc:402 +#: src/wx/verify_dcp_result_panel.cc:417 msgid "There are more than 32 characters in at least one closed caption line." msgstr "至少有一个隐藏字幕行中的字符超过32个。" -#: src/wx/verify_dcp_result_panel.cc:393 +#: src/wx/verify_dcp_result_panel.cc:408 msgid "There are more than 52 characters in at least one subtitle line." msgstr "至少有一个字幕行中的字符超过52个。" -#: src/wx/verify_dcp_result_panel.cc:396 +#: src/wx/verify_dcp_result_panel.cc:411 msgid "There are more than 79 characters in at least one subtitle line." msgstr "至少有一个字幕行中的字符超过79个。" @@ -3805,11 +3796,11 @@ msgstr "尚无任何提示:检查工程中。" msgid "There are no hints: everything looks good!" msgstr "尚无任何提示:一切正常!" -#: src/wx/verify_dcp_result_panel.cc:628 +#: src/wx/verify_dcp_result_panel.cc:630 msgid "There is a <Duration> tag inside a <MainMarkers>." msgstr "在一个 <MainMarkers> 中有一个 <Duration> 标签。" -#: src/wx/verify_dcp_result_panel.cc:625 +#: src/wx/verify_dcp_result_panel.cc:627 msgid "There is a <EntryPoint> tag inside a <MainMarkers>." msgstr "在一个 <MainMarkers> 中有一个 <EntryPoint> 标签。" @@ -3832,16 +3823,16 @@ msgstr "开始播放音频时出现问题。请在首选项中尝试其他音频 msgid "This CPL contains no encrypted assets." msgstr "该CPL没有包含加密内容。" -#: src/wx/verify_dcp_result_panel.cc:333 +#: src/wx/verify_dcp_result_panel.cc:348 #, c-format msgid "" -"This DCP refers to at the asset %n in another DCP (and perhaps others), so " -"it is a \"version file\" (VF)" +"This DCP refers to the asset %asset_id in another DCP (and perhaps others), " +"so it is a \"version file\" (VF)" msgstr "" -"此DCP引用了另一个DCP(可能还有其他DCP)中的资产 %n,因此它是一个“版本文件”" -"(VF)" +"这个DCP引用了另一个DCP中的资产%asset_id(也可能是其他DCP中的资产),因此它是" +"一个“版本文件”(VF)" -#: src/wx/verify_dcp_result_panel.cc:339 +#: src/wx/verify_dcp_result_panel.cc:354 msgid "This DCP uses the Interop standard, but it should be made with SMPTE." msgstr "此DCP使用Interop标准,但应使用SMPTE制作。" @@ -4235,7 +4226,7 @@ msgstr "有效期至" msgid "Vendor" msgstr "供应商" -#: src/wx/verify_dcp_result_panel.cc:723 +#: src/wx/verify_dcp_result_panel.cc:725 msgid "Verification report" msgstr "DCP验证" @@ -4244,18 +4235,16 @@ msgid "Verify" msgstr "验证" #: src/wx/content_menu.cc:425 -#, fuzzy msgid "Verify DCP" -msgstr "验证" +msgstr "验证DCP" #: src/wx/verify_dcp_dialog.cc:94 msgid "Verify picture asset details" msgstr "验证图像资产详细信息" #: src/wx/content_menu.cc:107 -#, fuzzy msgid "Verify..." -msgstr "验证" +msgstr "验证..." #: src/wx/smpte_metadata_dialog.cc:109 src/wx/system_information_dialog.cc:67 msgid "Version" @@ -4372,9 +4361,8 @@ msgid "X" msgstr "X" #: src/wx/export_subtitles_dialog.cc:47 -#, fuzzy msgid "XML (Interop)" -msgstr "Interop" +msgstr "XML (Interop)" #: src/wx/text_panel.cc:93 msgid "Y" diff --git a/src/wx/standard_controls.cc b/src/wx/standard_controls.cc index 942c49fc4..d9b8c998b 100644 --- a/src/wx/standard_controls.cc +++ b/src/wx/standard_controls.cc @@ -38,6 +38,7 @@ StandardControls::StandardControls(wxWindow* parent, FilmViewer& viewer, bool ed { _button_sizer->Add (_play_button, 0, wxALL | wxALIGN_CENTER_VERTICAL, 2); _play_button->Bind (wxEVT_TOGGLEBUTTON, boost::bind(&StandardControls::play_clicked, this)); + setup_sensitivity(); } diff --git a/src/wx/supporters.cc b/src/wx/supporters.cc index ba9f4119a..cd331bba7 100644 --- a/src/wx/supporters.cc +++ b/src/wx/supporters.cc @@ -12,6 +12,7 @@ supported_by.Add (wxT ("Japan Film Fest Hamburg (JFFH)")); supported_by.Add (wxT ("Graham Cook (Movies@Malmesbury)")); supported_by.Add (wxT ("Zone 33")); supported_by.Add (wxT ("Red Star 3D")); +supported_by.Add (wxT ("@diz_qo")); supported_by.Add (wxT ("Studio Korsholm AB")); supported_by.Add (wxT ("Yellow Tone AB")); supported_by.Add (wxT ("Louise Abbott")); @@ -85,8 +86,10 @@ supported_by.Add (wxT ("John Bacon")); supported_by.Add (wxT ("Lee Bailes")); supported_by.Add (wxT ("Pietro Baj")); supported_by.Add (wxT ("Joshua Baker")); +supported_by.Add (wxT ("David Baker")); supported_by.Add (wxT ("José Val Bal")); supported_by.Add (wxT ("Grant Baldwin")); +supported_by.Add (wxT ("Kai Balin")); supported_by.Add (wxT ("Ely Bams")); supported_by.Add (wxT ("Elvert Bañares")); supported_by.Add (wxT ("Laurent Baraton")); @@ -94,6 +97,7 @@ supported_by.Add (wxT ("Rachel Barbash")); supported_by.Add (wxT ("Hubert Bartholomae")); supported_by.Add (wxT ("Danny Bartlett")); supported_by.Add (wxT ("Mustafa Battal")); +supported_by.Add (wxT ("The Rio Theatre, Vancouver BC")); supported_by.Add (wxT ("Frank Beachem")); supported_by.Add (wxT ("Kenneth Beals")); supported_by.Add (wxT ("Jean-Pierre Beauviala")); @@ -137,6 +141,7 @@ supported_by.Add (wxT ("Jason Boulware")); supported_by.Add (wxT ("Yves Bourget")); supported_by.Add (wxT ("Cédric Bourquard")); supported_by.Add (wxT ("Erik Bowen")); +supported_by.Add (wxT ("Parker Bowling")); supported_by.Add (wxT ("Derek Boyes")); supported_by.Add (wxT ("Fabio Bozzoli")); supported_by.Add (wxT ("Jean-Pierre Brachet")); @@ -248,6 +253,7 @@ supported_by.Add (wxT ("Dan Cohen")); supported_by.Add (wxT ("Jonathan Cole")); supported_by.Add (wxT ("Shane Colella")); supported_by.Add (wxT ("Blair Collie")); +supported_by.Add (wxT ("Andrew Collins")); supported_by.Add (wxT ("Devon Collins")); supported_by.Add (wxT ("Kimberly Collmer")); supported_by.Add (wxT ("Sodalite Color")); @@ -258,6 +264,7 @@ supported_by.Add (wxT ("Marketplace Media Company")); supported_by.Add (wxT ("The Archetype Company")); supported_by.Add (wxT ("Conta'm")); supported_by.Add (wxT ("Mike Coombs")); +supported_by.Add (wxT ("Griffin Cork")); supported_by.Add (wxT ("Kathy Corley")); supported_by.Add (wxT ("Xavier Cortes")); supported_by.Add (wxT ("Thomas Cosgrove")); @@ -404,6 +411,7 @@ supported_by.Add (wxT ("Nicole Ferre")); supported_by.Add (wxT ("Bruno Roque Ferreira")); supported_by.Add (wxT ("Antonio Ferreira")); supported_by.Add (wxT ("Santiago Ferreira")); +supported_by.Add (wxT ("Ilena Ferrer")); supported_by.Add (wxT ("Scott Ferril")); supported_by.Add (wxT ("The Highland Park Independent Film Festival")); supported_by.Add (wxT ("Vancouver Latin American Film Festival")); @@ -435,6 +443,7 @@ supported_by.Add (wxT ("“How to Successfully Fail in Hollywood” Film")); supported_by.Add (wxT ("Hamann Film")); supported_by.Add (wxT ("Traverse City Film Festival")); supported_by.Add (wxT ("Z-fest Film Project")); +supported_by.Add (wxT ("New Vizion Film/Media")); supported_by.Add (wxT ("DIAMETRALE Filmfestival")); supported_by.Add (wxT ("Lichtwerk && Kamera Filmkunst")); supported_by.Add (wxT ("Casablanca Filmkunsttheater")); @@ -471,6 +480,7 @@ supported_by.Add (wxT ("Labyrinth Films")); supported_by.Add (wxT ("Tiempos Dificiles Films")); supported_by.Add (wxT ("Artio Films")); supported_by.Add (wxT ("Jason Gray (Loaded Films)")); +supported_by.Add (wxT ("Solothurner Filmtage")); supported_by.Add (wxT ("Broadway Filmtheater")); supported_by.Add (wxT ("Diego Fincatto")); supported_by.Add (wxT ("Andres Fink")); @@ -523,6 +533,7 @@ supported_by.Add (wxT ("Reeju George")); supported_by.Add (wxT ("Rob George")); supported_by.Add (wxT ("Ian Gibbins")); supported_by.Add (wxT ("John Gigrich")); +supported_by.Add (wxT ("Weldon Gillian")); supported_by.Add (wxT ("Barry J. Gillis")); supported_by.Add (wxT ("Victor Gimenez")); supported_by.Add (wxT ("Sebastian Hernandis Giner")); @@ -582,11 +593,13 @@ supported_by.Add (wxT ("Filmcrew Hamburg")); supported_by.Add (wxT ("Frédéric Hamelin")); supported_by.Add (wxT ("Howard Hamilton")); supported_by.Add (wxT ("Florian Hammann")); +supported_by.Add (wxT ("Dominic Büttner Hammerfilm")); supported_by.Add (wxT ("Hassan Hamza")); supported_by.Add (wxT ("Jessica Han")); supported_by.Add (wxT ("Mark Hanrahan")); supported_by.Add (wxT ("Niels-Erik Constantin Hansen")); supported_by.Add (wxT ("Richard Hansen")); +supported_by.Add (wxT ("Paul Hara")); supported_by.Add (wxT ("Jozef Hardos")); supported_by.Add (wxT ("Filmschuur Harlem")); supported_by.Add (wxT ("Jens Harms")); @@ -607,11 +620,13 @@ supported_by.Add (wxT ("Martin Oliveros Heinze")); supported_by.Add (wxT ("Patrik Gunnar Helin")); supported_by.Add (wxT ("Bert Helsen")); supported_by.Add (wxT ("Jeff Hemingway")); +supported_by.Add (wxT ("Ton Hendriks")); supported_by.Add (wxT ("Pascal Hennequin")); supported_by.Add (wxT ("Mark Hensley")); supported_by.Add (wxT ("Ronny Hermansen")); supported_by.Add (wxT ("Antonio Ruiz Hernandez")); supported_by.Add (wxT ("Javier Hernandez")); +supported_by.Add (wxT ("Francisco Javier Espinal Hernández")); supported_by.Add (wxT ("Mark Van Heusden")); supported_by.Add (wxT ("Michael Higgins")); supported_by.Add (wxT ("Erin Hill")); @@ -776,7 +791,7 @@ supported_by.Add (wxT ("Christian Kreil")); supported_by.Add (wxT ("Sebastian Kreis")); supported_by.Add (wxT ("Tobias Kremer")); supported_by.Add (wxT ("Indu Krishnan")); -supported_by.Add (wxT ("Cabine Filmtheater Kriterion")); +supported_by.Add (wxT ("Filmtheater Kriterion")); supported_by.Add (wxT ("Kino Krokodil")); supported_by.Add (wxT ("Jakub Królikowski")); supported_by.Add (wxT ("Peter Kuehnis-Dietz")); @@ -817,6 +832,7 @@ supported_by.Add (wxT ("Stuart Leask")); supported_by.Add (wxT ("David Armati Lechner")); supported_by.Add (wxT ("Youen Leclerc")); supported_by.Add (wxT ("Richard Lecocq")); +supported_by.Add (wxT ("Philipp Leder")); supported_by.Add (wxT ("Lilian Lefranc")); supported_by.Add (wxT ("Robert Legato")); supported_by.Add (wxT ("Nicholas Legault")); @@ -862,6 +878,7 @@ supported_by.Add (wxT ("Divine Sign Productions LLC")); supported_by.Add (wxT ("8 Picture House LLC")); supported_by.Add (wxT ("Hummingbear && Company LLC")); supported_by.Add (wxT ("DAA Montenegro LLC")); +supported_by.Add (wxT ("Ghost Ship LLC")); supported_by.Add (wxT ("Mainstreem LLC")); supported_by.Add (wxT ("Mesh Multimedia LLC")); supported_by.Add (wxT ("Deep Structure Productions LLC")); @@ -878,6 +895,7 @@ supported_by.Add (wxT ("ColabDM Productions LLP")); supported_by.Add (wxT ("Marco Löber")); supported_by.Add (wxT ("Sergio Lobo-Navia")); supported_by.Add (wxT ("Locarco")); +supported_by.Add (wxT ("Colin Locascio")); supported_by.Add (wxT ("Joshua Logan")); supported_by.Add (wxT ("LoïcK!")); supported_by.Add (wxT ("Kwen In London")); @@ -886,6 +904,7 @@ supported_by.Add (wxT ("Kara Long")); supported_by.Add (wxT ("Juan Marin Lorenzo")); supported_by.Add (wxT ("Tim Lorge")); supported_by.Add (wxT ("Thomas Lorin")); +supported_by.Add (wxT ("Stephen Lorusso")); supported_by.Add (wxT ("Leonard Louder")); supported_by.Add (wxT ("Auguste && Louise")); supported_by.Add (wxT ("Cubic Films Pty Ltd")); @@ -895,6 +914,7 @@ supported_by.Add (wxT ("Code 7 Ltd")); supported_by.Add (wxT ("The Digital Picture House Ltd")); supported_by.Add (wxT ("Futurilla Ltd")); supported_by.Add (wxT ("Sector Zero Ltd")); +supported_by.Add (wxT ("Zooid Pictures Ltd")); supported_by.Add (wxT ("Lewis && Coleman Consulting Services Pty Ltd")); supported_by.Add (wxT ("Keen i Media Ltd")); supported_by.Add (wxT ("Ted Lubin")); @@ -1089,6 +1109,7 @@ supported_by.Add (wxT ("Antons Video Productions P/L")); supported_by.Add (wxT ("k pakiz")); supported_by.Add (wxT ("Nina Paley")); supported_by.Add (wxT ("Sigurður Sverrir Pálsson")); +supported_by.Add (wxT ("Ambuj Pandey")); supported_by.Add (wxT ("Pedro Pão")); supported_by.Add (wxT ("Harald Pape")); supported_by.Add (wxT ("Stanley Papulkas")); @@ -1160,6 +1181,7 @@ supported_by.Add (wxT ("Denis Postle")); supported_by.Add (wxT ("Postware")); supported_by.Add (wxT ("Mariana Pottier")); supported_by.Add (wxT ("Vanessa Magowan Horrocks Powers")); +supported_by.Add (wxT ("Bernard Pradal")); supported_by.Add (wxT ("Drago Prahin")); supported_by.Add (wxT ("Aditya Pratama")); supported_by.Add (wxT ("Jörg-Dieter Prause")); @@ -1173,11 +1195,13 @@ supported_by.Add (wxT ("Hitman Productions")); supported_by.Add (wxT ("WLFK Productions")); supported_by.Add (wxT ("Ceridwen Productions")); supported_by.Add (wxT ("ZooTime Productions")); +supported_by.Add (wxT ("Boom Video Productions")); supported_by.Add (wxT ("SmallStage Productions")); supported_by.Add (wxT ("A Tractor Productions")); supported_by.Add (wxT ("Second Wind Productions")); supported_by.Add (wxT ("Locomotive Productions")); supported_by.Add (wxT ("Stoneman Productions")); +supported_by.Add (wxT ("Zombie Zoo Productions")); supported_by.Add (wxT ("Oley Sassone Productions")); supported_by.Add (wxT ("RIOT Productions")); supported_by.Add (wxT ("Undercrank Productions")); @@ -1248,6 +1272,7 @@ supported_by.Add (wxT ("Leigh Rosin")); supported_by.Add (wxT ("Jean-Maurice Rossel")); supported_by.Add (wxT ("Antonio Rotunno")); supported_by.Add (wxT ("Georges Rousseau")); +supported_by.Add (wxT ("Shelagh Rowan-Legg")); supported_by.Add (wxT ("David Rozenthal")); supported_by.Add (wxT ("Damon Rubio")); supported_by.Add (wxT ("Jean-Marc Rueff")); @@ -1371,6 +1396,7 @@ supported_by.Add (wxT ("Chris Stevens")); supported_by.Add (wxT ("Mike Stiebing")); supported_by.Add (wxT ("Tomislav Stojanović")); supported_by.Add (wxT ("The Icelandic Academy of Storytelling")); +supported_by.Add (wxT ("Jon Stout")); supported_by.Add (wxT ("Robert Stracke")); supported_by.Add (wxT ("Patrik Strömdahl")); supported_by.Add (wxT ("Francois Stuck")); @@ -1479,6 +1505,7 @@ supported_by.Add (wxT ("Tilman Vatteroth")); supported_by.Add (wxT ("Jos Vecht")); supported_by.Add (wxT ("Christian Vennefrohne")); supported_by.Add (wxT ("Jaap Verseput")); +supported_by.Add (wxT ("Dan Viafore")); supported_by.Add (wxT ("Videoworld")); supported_by.Add (wxT ("Robert Vidić")); supported_by.Add (wxT ("Burg Kino Vienna")); @@ -1520,6 +1547,7 @@ supported_by.Add (wxT ("Mike Wendt")); supported_by.Add (wxT ("Frank Wenz")); supported_by.Add (wxT ("Anja Wenz")); supported_by.Add (wxT ("Olav Werner")); +supported_by.Add (wxT ("Georg Werner")); supported_by.Add (wxT ("Maik Wieczorek")); supported_by.Add (wxT ("Ralph Wiegandt")); supported_by.Add (wxT ("Johannes Wilbrand")); @@ -1565,6 +1593,7 @@ supported_by.Add (wxT ("Daniel Židek")); supported_by.Add (wxT ("Hens Zimmerman")); supported_by.Add (wxT ("Ernst Zimmerman")); supported_by.Add (wxT ("Roberto Zin")); +supported_by.Add (wxT ("Grygorii Zinchenko")); supported_by.Add (wxT ("Matthieu Zingle")); supported_by.Add (wxT ("Allard Zoetman")); supported_by.Add (wxT ("zondergeluid")); diff --git a/src/wx/text_view.cc b/src/wx/text_view.cc index bde7b09e9..999fe94ab 100644 --- a/src/wx/text_view.cc +++ b/src/wx/text_view.cc @@ -142,7 +142,7 @@ TextView::data_start (ContentStringText cts) wxListItem list_item; list_item.SetId (_subs); _list->InsertItem (list_item); - _list->SetItem (_subs, 0, std_to_wx (cts.from().timecode (_frc->source))); + _list->SetItem (_subs, 0, std_to_wx (cts.from().timecode (_frc->source()))); _list->SetItem (_subs, 2, std_to_wx (i.text ())); _start_times.push_back (cts.from ()); ++_subs; @@ -160,7 +160,7 @@ TextView::data_stop (ContentTime time) } for (int i = _subs - *_last_count; i < _subs; ++i) { - _list->SetItem (i, 1, std_to_wx (time.timecode (_frc->source))); + _list->SetItem (i, 1, std_to_wx (time.timecode (_frc->source()))); } } @@ -176,5 +176,5 @@ TextView::subtitle_selected (wxListEvent& ev) auto lc = _content.lock (); DCPOMATIC_ASSERT (lc); /* Add on a frame here to work around any rounding errors and make sure we land in the subtitle */ - _film_viewer.seek(lc, _start_times[ev.GetIndex()] + ContentTime::from_frames(1, _frc->source), true); + _film_viewer.seek(lc, _start_times[ev.GetIndex()] + ContentTime::from_frames(1, _frc->source()), true); } diff --git a/src/wx/verify_dcp_result_panel.cc b/src/wx/verify_dcp_result_panel.cc index 19d2b4831..6b319b03e 100644 --- a/src/wx/verify_dcp_result_panel.cc +++ b/src/wx/verify_dcp_result_panel.cc @@ -193,9 +193,6 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) dcp::Time(note.frame().get(), note.frame_rate()->as_float(), note.frame_rate()->numerator).as_string(dcp::Standard::SMPTE) )); } - if (auto const n = note.note()) { - message.Replace(char_to_wx("%n"), std_to_wx(*n)); - } if (auto const f = note.file()) { message.Replace(char_to_wx("%f"), std_to_wx(f->filename().string())); } @@ -205,8 +202,8 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) if (auto const component = note.component()) { message.Replace(char_to_wx("%component"), std_to_wx(fmt::to_string(*component))); } - if (auto const size = note.size()) { - message.Replace(char_to_wx("%size"), std_to_wx(fmt::to_string(*size))); + if (auto const size_in_bytes = note.size_in_bytes()) { + message.Replace(char_to_wx("%size_in_bytes"), std_to_wx(fmt::to_string(*size_in_bytes))); } if (auto const load_font_id = note.load_font_id()) { message.Replace(char_to_wx("%load_font_id"), std_to_wx(*load_font_id)); @@ -220,6 +217,9 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) if (auto const cpl = note.cpl_id()) { message.Replace(char_to_wx("%cpl"), std_to_wx(*cpl)); } + if (auto const pkl = note.pkl_id()) { + message.Replace(char_to_wx("%pkl"), std_to_wx(*pkl)); + } if (auto const frame_rate = note.frame_rate()) { if (frame_rate->denominator == 1) { message.Replace(char_to_wx("%frame_rate"), std_to_wx(fmt::to_string(frame_rate->numerator))); @@ -227,6 +227,21 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) message.Replace(char_to_wx("%frame_rate"), std_to_wx(fmt::to_string(frame_rate->as_float()))); } } + if (auto const error = note.error()) { + message.Replace(char_to_wx("%error"), std_to_wx(*error)); + } + if (auto const bit_depth = note.bit_depth()) { + message.Replace(char_to_wx("%bit_depth"), std_to_wx(fmt::to_string(*bit_depth))); + } + if (auto const issue_date = note.issue_date()) { + message.Replace(char_to_wx("%issue_date"), std_to_wx(*issue_date)); + } + if (auto const size_in_pixels = note.size_in_pixels()) { + message.Replace(char_to_wx("%size_in_pixels"), wxString::Format(char_to_wx("%dx%d"), size_in_pixels->width, size_in_pixels->height)); + } + if (auto const time = note.time()) { + message.Replace(char_to_wx("%time"), std_to_wx(time->as_string(dcp::Standard::SMPTE))); + } return message; }; @@ -268,7 +283,7 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) for (auto const& i: notes_by_code) { switch (i.first) { case dcp::VerificationNote::Code::FAILED_READ: - add(i.second, _("Could not read DCP (%n)")); + add(i.second, _("Could not read DCP (%error)")); break; case dcp::VerificationNote::Code::MISMATCHED_CPL_HASHES: add(i.second, _("The hash (%reference_hash) of the CPL %cpl in the PKL does not agree with the CPL file (%calculated_hash). This probably means that the CPL file is corrupt.")); @@ -300,9 +315,9 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) case dcp::VerificationNote::Code::INVALID_XML: for (auto const& note: i.second) { if (note.line()) { - add({ note }, _("The XML in %f is malformed on line %l (%n).")); + add({ note }, _("The XML in %f is malformed on line %l (%error).")); } else { - add({ note }, _("The XML in %f is malformed (%n).")); + add({ note }, _("The XML in %f is malformed (%error).")); } } break; @@ -310,10 +325,10 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("No ASSETMAP or ASSETMAP.xml file was found.")); break; case dcp::VerificationNote::Code::INVALID_INTRINSIC_DURATION: - add(i.second, _("The asset %n has an intrinsic duration of less than 1 second, which is invalid.")); + add(i.second, _("The asset %asset_id has an intrinsic duration of less than 1 second, which is invalid.")); break; case dcp::VerificationNote::Code::INVALID_DURATION: - add(i.second, _("The asset %n has a duration of less than 1 second, which is invalid.")); + add(i.second, _("The asset %asset_id has a duration of less than 1 second, which is invalid.")); break; case dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_SIZE_IN_BYTES: add( @@ -330,7 +345,7 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) ); break; case dcp::VerificationNote::Code::EXTERNAL_ASSET: - add(i.second, _("This DCP refers to at the asset %n in another DCP (and perhaps others), so it is a \"version file\" (VF)")); + add(i.second, _("This DCP refers to the asset %asset_id in another DCP (and perhaps others), so it is a \"version file\" (VF)")); break; case dcp::VerificationNote::Code::THREED_ASSET_MARKED_AS_TWOD: add(i.second, _("The asset %f is 3D but its MXF is marked as 2D.")); @@ -339,10 +354,10 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("This DCP uses the Interop standard, but it should be made with SMPTE.")); break; case dcp::VerificationNote::Code::INVALID_LANGUAGE: - add(i.second, _("The invalid language tag %n is used.")); + add(i.second, _("The invalid language tag %language is used.")); break; case dcp::VerificationNote::Code::INVALID_PICTURE_SIZE_IN_PIXELS: - add(i.second, _("The video asset %f uses the invalid image size %n.")); + add(i.second, _("The video asset %f uses the invalid image size %size_in_pixels.")); break; case dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_2K: add(i.second, _("The video asset %f uses the invalid frame rate %frame_rate.")); @@ -354,13 +369,13 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("The video asset is 4K which is not allowed for 3D video.")); break; case dcp::VerificationNote::Code::INVALID_CLOSED_CAPTION_XML_SIZE_IN_BYTES: - add(i.second, _("The XML in the closed caption asset %f takes up %n bytes which is over the 256KB limit.")); + add(i.second, _("The XML in the closed caption asset %f takes up %size_in_bytes bytes which is over the 256KB limit.")); break; case dcp::VerificationNote::Code::INVALID_TIMED_TEXT_SIZE_IN_BYTES: - add(i.second, _("The timed text asset %f takes up %n bytes which is over the 115MB limit.")); + add(i.second, _("The timed text asset %f takes up %size_in_bytes bytes which is over the 115MB limit.")); break; case dcp::VerificationNote::Code::INVALID_TIMED_TEXT_FONT_SIZE_IN_BYTES: - add(i.second, _("The fonts in the timed text asset %f take up %n bytes which is over the 10MB limit.")); + add(i.second, _("The fonts in the timed text asset %f take up %size_in_bytes bytes which is over the 10MB limit.")); break; case dcp::VerificationNote::Code::MISSING_SUBTITLE_LANGUAGE: add(i.second, _("The subtitle asset %f contains no <Language> tag.")); @@ -405,7 +420,7 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("The sound asset %f has an invalid frame rate of %frame_rate.")); break; case dcp::VerificationNote::Code::INVALID_SOUND_BIT_DEPTH: - add(i.second, _("The sound asset %f has an invalid bit depth of %n.")); + add(i.second, _("The sound asset %f has an invalid bit depth of %bit_depth.")); break; case dcp::VerificationNote::Code::MISSING_CPL_ANNOTATION_TEXT: add(i.second, _("The CPL %cpl has no <AnnotationText> tag.")); @@ -423,19 +438,19 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("The DCP has closed captions but not every reel has the same number of closed caption assets.")); break; case dcp::VerificationNote::Code::MISSING_SUBTITLE_ENTRY_POINT: - add(i.second, _("The subtitle asset %n has no <EntryPoint> tag.")); + add(i.second, _("The subtitle asset %asset_id has no <EntryPoint> tag.")); break; case dcp::VerificationNote::Code::INCORRECT_SUBTITLE_ENTRY_POINT: - add(i.second, _("Subtitle asset %n has a non-zero <EntryPoint>.")); + add(i.second, _("Subtitle asset %asset_id has a non-zero <EntryPoint>.")); break; case dcp::VerificationNote::Code::MISSING_CLOSED_CAPTION_ENTRY_POINT: - add(i.second, _("The closed caption asset %n has no <EntryPoint> tag.")); + add(i.second, _("The closed caption asset %asset_id has no <EntryPoint> tag.")); break; case dcp::VerificationNote::Code::INCORRECT_CLOSED_CAPTION_ENTRY_POINT: - add(i.second, _("Closed caption asset %n has a non-zero <EntryPoint>.")); + add(i.second, _("Closed caption asset %asset_id has a non-zero <EntryPoint>.")); break; case dcp::VerificationNote::Code::MISSING_HASH: - add(i.second, _("The asset %n has no <Hash> in the CPL.")); + add(i.second, _("The asset %asset_id has no <Hash> in the CPL.")); break; case dcp::VerificationNote::Code::MISSING_FFEC_IN_FEATURE: add(i.second, _("The DCP is a feature but has no FFEC (first frame of end credits) marker.")); @@ -450,10 +465,10 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("The DCP has no LFOC (last frame of content) marker.")); break; case dcp::VerificationNote::Code::INCORRECT_FFOC: - add(i.second, _("The DCP has a FFOC of %n instead of 1.")); + add(i.second, _("The DCP has a FFOC of %time instead of 1.")); break; case dcp::VerificationNote::Code::INCORRECT_LFOC: - add(i.second, _("The DCP has a LFOC of %n instead of the reel duration minus one.")); + add(i.second, _("The DCP has a LFOC of %time instead of the reel duration minus one.")); break; case dcp::VerificationNote::Code::MISSING_CPL_METADATA: add(i.second, _("The CPL %cpl has no CPL metadata tag.")); @@ -465,16 +480,16 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("The CPL %cpl has no CPL extension metadata tag.")); break; case dcp::VerificationNote::Code::INVALID_EXTENSION_METADATA: - add(i.second, _("The CPL %f has an invalid CPL extension metadata tag (%n)")); + add(i.second, _("The CPL %f has an invalid CPL extension metadata tag (%error)")); break; case dcp::VerificationNote::Code::UNSIGNED_CPL_WITH_ENCRYPTED_CONTENT: add(i.second, _("The CPL %cpl has encrypted content but is not signed.")); break; case dcp::VerificationNote::Code::UNSIGNED_PKL_WITH_ENCRYPTED_CONTENT: - add(i.second, _("The PKL %n has encrypted content but is not signed.")); + add(i.second, _("The PKL %pkl has encrypted content but is not signed.")); break; case dcp::VerificationNote::Code::MISMATCHED_PKL_ANNOTATION_TEXT_WITH_CPL: - add(i.second, _("The PKL %n has an <AnnotationText> which does not match its CPL's <ContentTitleText>.")); + add(i.second, _("The PKL %pkl has an <AnnotationText> which does not match its CPL's <ContentTitleText>.")); break; case dcp::VerificationNote::Code::PARTIALLY_ENCRYPTED: add(i.second, _("The DCP has encrypted content, but not all its assets are encrypted.")); @@ -482,21 +497,21 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) case dcp::VerificationNote::Code::INVALID_JPEG2000_CODESTREAM: add( i.second, - _("A picture frame has an invalid JPEG2000 codestream (%n)."), + _("A picture frame has an invalid JPEG2000 codestream (%error)."), _("More picture frames (not listed) have invalid JPEG2000 codestreams.") ); break; case dcp::VerificationNote::Code::INVALID_JPEG2000_GUARD_BITS_FOR_2K: add( i.second, - _("A 2K JPEG2000 frame has %n guard bits instead of 1."), + _("A 2K JPEG2000 frame has %guard_bits guard bits instead of 1."), _("More 2K JPEG2000 frames (not listed) have an invalid number of guard bits.") ); break; case dcp::VerificationNote::Code::INVALID_JPEG2000_GUARD_BITS_FOR_4K: add( i.second, - _("A 4K JPEG2000 frame has %n guard bits instead of 2."), + _("A 4K JPEG2000 frame has %guard_bits guard bits instead of 2."), _("More 4K JPEG2000 frames (not listed) have an invalid number of guard bits.") ); break; @@ -510,28 +525,28 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) case dcp::VerificationNote::Code::INVALID_JPEG2000_CODE_BLOCK_WIDTH: add( i.second, - _("A JPEG2000 frame has a code-block width of %n instead of 32."), + _("A JPEG2000 frame has a code-block width of %code_block_width instead of 32."), _("More JPEG2000 frames (not listed) have an invalid code-block width.") ); break; case dcp::VerificationNote::Code::INVALID_JPEG2000_CODE_BLOCK_HEIGHT: add( i.second, - _("A JPEG2000 frame has a code-block height of %n instead of 32."), + _("A JPEG2000 frame has a code-block height of %code_block_height instead of 32."), _("More JPEG2000 frames (not listed) have an invalid code-block height.") ); break; case dcp::VerificationNote::Code::INCORRECT_JPEG2000_POC_MARKER_COUNT_FOR_2K: add( i.second, - _("A 2K JPEG2000 frame has %n POC marker(s) instead of 0."), + _("A 2K JPEG2000 frame has %poc_markers POC marker(s) instead of 0."), _("More 2K JPEG2000 frames (not listed) have too many POC markers.") ); break; case dcp::VerificationNote::Code::INCORRECT_JPEG2000_POC_MARKER_COUNT_FOR_4K: add( i.second, - _("A 4K JPEG2000 frame has %n POC marker(s) instead of 1."), + _("A 4K JPEG2000 frame has %poc_markers POC marker(s) instead of 1."), _("More 4K JPEG2000 frames (not listed) have too many POC markers.") ); break; @@ -552,28 +567,28 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) case dcp::VerificationNote::Code::INVALID_JPEG2000_TILE_PARTS_FOR_2K: add( i.second, - _("A 2K JPEG2000 frame contains %n tile parts instead of 3."), + _("A 2K JPEG2000 frame contains %tile_parts tile parts instead of 3."), _("More 2K JPEG2000 frames (not listed) contain the wrong number of tile parts.") ); break; case dcp::VerificationNote::Code::INVALID_JPEG2000_TILE_PARTS_FOR_4K: add( i.second, - _("A 4K JPEG2000 frame contains %n tile parts instead of 6."), + _("A 4K JPEG2000 frame contains %tile_parts tile parts instead of 6."), _("More JPEG2000 frames (not listed) contain the wrong number of tile parts.") ); break; case dcp::VerificationNote::Code::INVALID_JPEG2000_RSIZ_FOR_2K: add( i.second, - _("A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n"), + _("A 2K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %capabilities"), _("More JPEG2000 frames (not listed) contain invalid Rsiz values.") ); break; case dcp::VerificationNote::Code::INVALID_JPEG2000_RSIZ_FOR_4K: add( i.second, - _("A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %n"), + _("A 4K JPEG2000 frame contains an invalid Rsiz (capabilities) value of %capabilities"), _("More JPEG2000 frames (not listed) contain invalid Rsiz values.") ); break; @@ -594,21 +609,8 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("The Asset ID in a timed text MXF is the same as the Resource ID or that of the contained XML.")); break; case dcp::VerificationNote::Code::MISMATCHED_TIMED_TEXT_DURATION: - { - for (auto const& note: i.second) { - vector<string> parts; - boost::split(parts, note.note().get(), boost::is_any_of(" ")); - add( - { note }, - wxString::Format( - _("The reel duration (%s) of some timed text is not the same as the ContainerDuration (%s) of its MXF."), - std_to_wx(parts[0]), - std_to_wx(parts[1]) - ) - ); - } + add(i.second, _("The reel duration (%other_duration) of some timed text is not the same as the ContainerDuration (%duration) of its MXF.")); break; - } case dcp::VerificationNote::Code::MISSED_CHECK_OF_ENCRYPTED: add(i.second, _("Part of the DCP could not be checked because no KDM was available.")); break; @@ -628,41 +630,41 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("There is a <Duration> tag inside a <MainMarkers>.")); break; case dcp::VerificationNote::Code::INVALID_CONTENT_KIND: - add(i.second, _("An invalid <ContentKind> %n has been used.")); + add(i.second, _("An invalid <ContentKind> %content_kind has been used.")); break; case dcp::VerificationNote::Code::INVALID_MAIN_PICTURE_ACTIVE_AREA: add(i.second, _("The <MainPictureActiveArea> is either not a multiple of 2, or is bigger than an asset.")); break; case dcp::VerificationNote::Code::DUPLICATE_ASSET_ID_IN_PKL: - add(i.second, _("The PKL %n has more than one asset with the same ID.")); + add(i.second, _("The PKL %pkl_id has more than one asset with the same ID.")); break; case dcp::VerificationNote::Code::DUPLICATE_ASSET_ID_IN_ASSETMAP: - add(i.second, _("The ASSETMAP %n has more than one asset with the same ID.")); + add(i.second, _("The ASSETMAP %asset_map_id has more than one asset with the same ID.")); break; case dcp::VerificationNote::Code::MISSING_SUBTITLE: - add(i.second, _("The subtitle asset %n contains no subtitles.")); + add(i.second, _("The subtitle asset %asset_id contains no subtitles.")); break; case dcp::VerificationNote::Code::INVALID_SUBTITLE_ISSUE_DATE: - add(i.second, _("<IssueDate> has an invalid value %n")); + add(i.second, _("<IssueDate> has an invalid value %issue_date")); break; case dcp::VerificationNote::Code::MISMATCHED_SOUND_CHANNEL_COUNTS: add(i.second, _("Sound assets do not all have the same channel count.")); break; case dcp::VerificationNote::Code::INVALID_MAIN_SOUND_CONFIGURATION: - add(i.second, _("<MainSoundConfiguration> is invalid (%n)")); + add(i.second, _("<MainSoundConfiguration> is invalid (%error)")); break; case dcp::VerificationNote::Code::MISSING_FONT: - add(i.second, _("The font file for font ID \"%n\" was not found, or was not referred to in the ASSETMAP.")); + add(i.second, _("The font file for font ID \"%load_font_id\" was not found, or was not referred to in the ASSETMAP.")); break; case dcp::VerificationNote::Code::INVALID_JPEG2000_TILE_PART_SIZE: add( i.second, - _("Frame %frame has an image component that is too large (component %component is %size bytes in size)."), + _("Frame %frame has an image component that is too large (component %component is %size_in_bytes bytes in size)."), _("More frames (not listed) have image components that are too large.") ); break; case dcp::VerificationNote::Code::INCORRECT_SUBTITLE_NAMESPACE_COUNT: - add(i.second, _("The XML in the subtitle asset %n has more than one namespace declaration.")); + add(i.second, _("The XML in the subtitle asset %asset_id has more than one namespace declaration.")); break; case dcp::VerificationNote::Code::MISSING_LOAD_FONT_FOR_FONT: add(i.second, _("A subtitle or closed caption refers to a font with ID %load_font_id that does not have a corresponding <LoadFont> node.")); @@ -677,7 +679,7 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) add(i.second, _("The <LabelText> in a <ContentVersion> in CPL %cpl is empty")); break; case dcp::VerificationNote::Code::INVALID_CPL_NAMESPACE: - add(i.second, _("The CPL %cpl has an invalid namespace %n")); + add(i.second, _("The CPL %cpl has an invalid namespace %xml_namespace")); break; case dcp::VerificationNote::Code::MISSING_CPL_CONTENT_VERSION: add(i.second, _("The CPL %cpl has no <ContentVersion> tag")); @@ -696,7 +698,7 @@ VerifyDCPResultPanel::add(shared_ptr<const VerifyDCPJob> job, bool many) /* These are all "OK" messages which we don't report here */ break; case dcp::VerificationNote::Code::INVALID_PKL_NAMESPACE: - add(i.second, _("The PKL %f has an invalid namespace %n")); + add(i.second, _("The PKL %f has an invalid namespace %xml_namespace")); break; } } diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index 8d21a3e63..8e86a5408 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -65,9 +65,9 @@ using namespace dcpomatic; wxStaticText * #ifdef __WXOSX__ -create_label (wxWindow* p, wxString t, bool left) +create_label(wxWindow* p, wxString t, bool left) #else -create_label (wxWindow* p, wxString t, bool) +create_label(wxWindow* p, wxString t, bool) #endif { #ifdef __WXOSX__ @@ -75,14 +75,14 @@ create_label (wxWindow* p, wxString t, bool) t += char_to_wx(":"); } #endif - return new StaticText (p, t); + return new StaticText(p, t); } #ifdef __WXOSX__ static void -setup_osx_flags (wxSizer* s, bool left, int& flags) +setup_osx_flags(wxSizer* s, bool left, int& flags) { if (left) { auto box = dynamic_cast<wxBoxSizer*>(s); @@ -103,28 +103,28 @@ setup_osx_flags (wxSizer* s, bool left, int& flags) * @param prop Proportion to pass when calling Add() on the wxSizer. */ wxStaticText * -add_label_to_sizer (wxSizer* s, wxWindow* p, wxString t, bool left, int prop, int flags) +add_label_to_sizer(wxSizer* s, wxWindow* p, wxString t, bool left, int prop, int flags) { #ifdef __WXOSX__ - setup_osx_flags (s, left, flags); + setup_osx_flags(s, left, flags); #endif - auto m = create_label (p, t, left); - s->Add (m, prop, flags, DCPOMATIC_SIZER_GAP); + auto m = create_label(p, t, left); + s->Add(m, prop, flags, DCPOMATIC_SIZER_GAP); return m; } wxStaticText * #ifdef __WXOSX__ -add_label_to_sizer (wxSizer* s, wxStaticText* t, bool left, int prop, int flags) +add_label_to_sizer(wxSizer* s, wxStaticText* t, bool left, int prop, int flags) #else -add_label_to_sizer (wxSizer* s, wxStaticText* t, bool, int prop, int flags) +add_label_to_sizer(wxSizer* s, wxStaticText* t, bool, int prop, int flags) #endif { #ifdef __WXOSX__ - setup_osx_flags (s, left, flags); + setup_osx_flags(s, left, flags); #endif - s->Add (t, prop, flags, DCPOMATIC_SIZER_GAP); + s->Add(t, prop, flags, DCPOMATIC_SIZER_GAP); return t; } @@ -134,9 +134,9 @@ add_label_to_sizer(wxGridBagSizer* s, wxWindow* p, wxString t, bool left, wxGBPo { int flags = wxALIGN_CENTER_VERTICAL | wxLEFT; #ifdef __WXOSX__ - setup_osx_flags (s, left, flags); + setup_osx_flags(s, left, flags); #endif - auto m = create_label (p, t, left); + auto m = create_label(p, t, left); s->Add(m, pos, span, flags, indent ? DCPOMATIC_SIZER_X_GAP : 0); return m; } @@ -144,16 +144,16 @@ add_label_to_sizer(wxGridBagSizer* s, wxWindow* p, wxString t, bool left, wxGBPo wxStaticText * #ifdef __WXOSX__ -add_label_to_sizer (wxGridBagSizer* s, wxStaticText* t, bool left, wxGBPosition pos, wxGBSpan span) +add_label_to_sizer(wxGridBagSizer* s, wxStaticText* t, bool left, wxGBPosition pos, wxGBSpan span) #else -add_label_to_sizer (wxGridBagSizer* s, wxStaticText* t, bool, wxGBPosition pos, wxGBSpan span) +add_label_to_sizer(wxGridBagSizer* s, wxStaticText* t, bool, wxGBPosition pos, wxGBSpan span) #endif { int flags = wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT; #ifdef __WXOSX__ - setup_osx_flags (s, left, flags); + setup_osx_flags(s, left, flags); #endif - s->Add (t, pos, span, flags); + s->Add(t, pos, span, flags); return t; } @@ -164,12 +164,12 @@ add_label_to_sizer (wxGridBagSizer* s, wxStaticText* t, bool, wxGBPosition pos, * @param e Extended message. */ void -error_dialog (wxWindow* parent, wxString m, optional<wxString> e) +error_dialog(wxWindow* parent, wxString m, optional<wxString> e) { wxMessageDialog dialog(parent, m, variant::wx::dcpomatic(), wxOK | wxICON_ERROR); if (e) { wxString em = *e; - em[0] = wxToupper (em[0]); + em[0] = wxToupper(em[0]); dialog.SetExtendedMessage(em); } dialog.ShowModal(); @@ -181,7 +181,7 @@ error_dialog (wxWindow* parent, wxString m, optional<wxString> e) * @param m Message. */ void -message_dialog (wxWindow* parent, wxString m) +message_dialog(wxWindow* parent, wxString m) { wxMessageDialog dialog(parent, m, variant::wx::dcpomatic(), wxOK | wxICON_INFORMATION); dialog.ShowModal(); @@ -190,7 +190,7 @@ message_dialog (wxWindow* parent, wxString m) /** @return true if the user answered "yes" */ bool -confirm_dialog (wxWindow* parent, wxString m) +confirm_dialog(wxWindow* parent, wxString m) { wxMessageDialog dialog(parent, m, variant::wx::dcpomatic(), wxYES_NO | wxICON_QUESTION); return dialog.ShowModal() == wxID_YES; @@ -201,9 +201,9 @@ confirm_dialog (wxWindow* parent, wxString m) * @return Corresponding STL string. */ string -wx_to_std (wxString s) +wx_to_std(wxString s) { - return string (s.ToUTF8()); + return string(s.ToUTF8()); } @@ -211,9 +211,9 @@ wx_to_std (wxString s) * @return Corresponding wxWidgets string. */ wxString -std_to_wx (string s) +std_to_wx(string s) { - return wxString (s.c_str(), wxConvUTF8); + return wxString(s.c_str(), wxConvUTF8); } @@ -225,14 +225,14 @@ char_to_wx(char const* s) string -string_client_data (wxClientData* o) +string_client_data(wxClientData* o) { - return wx_to_std (dynamic_cast<wxStringClientData*>(o)->GetData()); + return wx_to_std(dynamic_cast<wxStringClientData*>(o)->GetData()); } void -checked_set (FilePickerCtrl* widget, boost::filesystem::path value) +checked_set(FilePickerCtrl* widget, boost::filesystem::path value) { if (widget->path() != value) { if (value.empty()) { @@ -247,60 +247,60 @@ checked_set (FilePickerCtrl* widget, boost::filesystem::path value) void -checked_set (wxDirPickerCtrl* widget, boost::filesystem::path value) +checked_set(wxDirPickerCtrl* widget, boost::filesystem::path value) { - if (widget->GetPath() != std_to_wx (value.string())) { + if (widget->GetPath() != std_to_wx(value.string())) { if (value.empty()) { /* Hack to make wxWidgets clear the control when we are passed an empty value. */ value = " "; } - widget->SetPath (std_to_wx (value.string())); + widget->SetPath(std_to_wx(value.string())); } } void -checked_set (wxSpinCtrl* widget, int value) +checked_set(wxSpinCtrl* widget, int value) { if (widget->GetValue() != value) { - widget->SetValue (value); + widget->SetValue(value); } } void -checked_set (wxSpinCtrlDouble* widget, double value) +checked_set(wxSpinCtrlDouble* widget, double value) { /* XXX: completely arbitrary epsilon */ - if (fabs (widget->GetValue() - value) > 1e-16) { - widget->SetValue (value); + if (fabs(widget->GetValue() - value) > 1e-16) { + widget->SetValue(value); } } void -checked_set (wxChoice* widget, int value) +checked_set(wxChoice* widget, int value) { if (widget->GetSelection() != value) { - widget->SetSelection (value); + widget->SetSelection(value); } } void -checked_set (wxChoice* widget, string value) +checked_set(wxChoice* widget, string value) { wxClientData* o = nullptr; if (widget->GetSelection() != -1) { - o = widget->GetClientObject (widget->GetSelection ()); + o = widget->GetClientObject(widget->GetSelection()); } if (!o || string_client_data(o) != value) { for (unsigned int i = 0; i < widget->GetCount(); ++i) { - if (string_client_data (widget->GetClientObject (i)) == value) { - widget->SetSelection (i); + if (string_client_data(widget->GetClientObject(i)) == value) { + widget->SetSelection(i); } } } @@ -308,11 +308,11 @@ checked_set (wxChoice* widget, string value) void -checked_set (wxChoice* widget, vector<pair<string, string>> items) +checked_set(wxChoice* widget, vector<pair<string, string>> items) { vector<pair<string, string>> current; for (unsigned int i = 0; i < widget->GetCount(); ++i) { - current.push_back ( + current.push_back( make_pair( wx_to_std(widget->GetString(i)), widget->GetClientData() ? string_client_data(widget->GetClientObject(i)) : "" @@ -324,24 +324,24 @@ checked_set (wxChoice* widget, vector<pair<string, string>> items) return; } - widget->Clear (); + widget->Clear(); for (auto i: items) { - widget->Append (std_to_wx(i.first), new wxStringClientData(std_to_wx(i.second))); + widget->Append(std_to_wx(i.first), new wxStringClientData(std_to_wx(i.second))); } } void -checked_set (wxTextCtrl* widget, string value) +checked_set(wxTextCtrl* widget, string value) { - if (widget->GetValue() != std_to_wx (value)) { - widget->ChangeValue (std_to_wx (value)); + if (widget->GetValue() != std_to_wx(value)) { + widget->ChangeValue(std_to_wx(value)); } } void -checked_set (PasswordEntry* entry, string value) +checked_set(PasswordEntry* entry, string value) { if (entry->get() != value) { entry->set(value); @@ -350,46 +350,46 @@ checked_set (PasswordEntry* entry, string value) void -checked_set (wxTextCtrl* widget, wxString value) +checked_set(wxTextCtrl* widget, wxString value) { if (widget->GetValue() != value) { - widget->ChangeValue (value); + widget->ChangeValue(value); } } void -checked_set (wxStaticText* widget, string value) +checked_set(wxStaticText* widget, string value) { - if (widget->GetLabel() != std_to_wx (value)) { - widget->SetLabel (std_to_wx (value)); + if (widget->GetLabel() != std_to_wx(value)) { + widget->SetLabel(std_to_wx(value)); } } void -checked_set (wxStaticText* widget, wxString value) +checked_set(wxStaticText* widget, wxString value) { if (widget->GetLabel() != value) { - widget->SetLabel (value); + widget->SetLabel(value); } } void -checked_set (wxCheckBox* widget, bool value) +checked_set(wxCheckBox* widget, bool value) { if (widget->GetValue() != value) { - widget->SetValue (value); + widget->SetValue(value); } } void -checked_set (wxRadioButton* widget, bool value) +checked_set(wxRadioButton* widget, bool value) { if (widget->GetValue() != value) { - widget->SetValue (value); + widget->SetValue(value); } } @@ -422,23 +422,23 @@ checked_set(RegionSubtagWidget* widget, optional<dcp::LanguageTag::RegionSubtag> int -wx_get (wxSpinCtrl* w) +wx_get(wxSpinCtrl* w) { - return w->GetValue (); + return w->GetValue(); } int -wx_get (wxChoice* w) +wx_get(wxChoice* w) { - return w->GetSelection (); + return w->GetSelection(); } double -wx_get (wxSpinCtrlDouble* w) +wx_get(wxSpinCtrlDouble* w) { - return w->GetValue (); + return w->GetValue(); } @@ -454,7 +454,7 @@ context_translation(char const* s) /* No translation; strip the context */ int c = t.Find(char_to_wx("|")); if (c != wxNOT_FOUND) { - t = t.Mid (c + 1); + t = t.Mid(c + 1); } } @@ -463,46 +463,46 @@ context_translation(char const* s) wxString -time_to_timecode (DCPTime t, double fps) +time_to_timecode(DCPTime t, double fps) { - auto w = t.seconds (); + auto w = t.seconds(); int const h = (w / 3600); w -= h * 3600; int const m = (w / 60); w -= m * 60; - int const s = floor (w); + int const s = floor(w); w -= s; - int const f = lrint (w * fps); - return wxString::Format(char_to_wx("%02d:%02d:%02d.%02d"), h, m, s, f); + int const f = lrint(w * fps); + return wxString::Format(char_to_wx("%02d:%02d:%02d:%02d"), h, m, s, f); } void -setup_audio_channels_choice (wxChoice* choice, int minimum) +setup_audio_channels_choice(wxChoice* choice, int minimum) { vector<pair<string, string>> items; for (int i = minimum; i <= 16; i += 2) { if (i == 2) { - items.push_back (make_pair(wx_to_std(_("2 - stereo")), locale_convert<string>(i))); + items.push_back(make_pair(wx_to_std(_("2 - stereo")), locale_convert<string>(i))); } else if (i == 4) { - items.push_back (make_pair(wx_to_std(_("4 - L/C/R/Lfe")), locale_convert<string>(i))); + items.push_back(make_pair(wx_to_std(_("4 - L/C/R/Lfe")), locale_convert<string>(i))); } else if (i == 6) { - items.push_back (make_pair(wx_to_std(_("6 - 5.1")), locale_convert<string>(i))); + items.push_back(make_pair(wx_to_std(_("6 - 5.1")), locale_convert<string>(i))); } else if (i == 8) { - items.push_back (make_pair(wx_to_std(_("8 - 5.1/HI/VI")), locale_convert<string>(i))); + items.push_back(make_pair(wx_to_std(_("8 - 5.1/HI/VI")), locale_convert<string>(i))); } else if (i == 12) { - items.push_back (make_pair(wx_to_std(_("12 - 7.1/HI/VI")), locale_convert<string>(i))); + items.push_back(make_pair(wx_to_std(_("12 - 7.1/HI/VI")), locale_convert<string>(i))); } else { - items.push_back (make_pair(locale_convert<string> (i), locale_convert<string>(i))); + items.push_back(make_pair(locale_convert<string>(i), locale_convert<string>(i))); } } - checked_set (choice, items); + checked_set(choice, items); } wxSplashScreen* -maybe_show_splash () +maybe_show_splash() { wxSplashScreen* splash = nullptr; @@ -523,7 +523,7 @@ maybe_show_splash () #else splash = new wxSplashScreen(bitmap, wxSPLASH_CENTRE_ON_SCREEN | wxSPLASH_NO_TIMEOUT, 0, nullptr, -1); #endif - wxYield (); + wxYield(); } } catch (boost::filesystem::filesystem_error& e) { /* Maybe we couldn't find the splash image; never mind */ @@ -534,19 +534,19 @@ maybe_show_splash () double -calculate_mark_interval (double mark_interval) +calculate_mark_interval(double mark_interval) { if (mark_interval > 5) { - mark_interval -= lrint (mark_interval) % 5; + mark_interval -= lrint(mark_interval) % 5; } if (mark_interval > 10) { - mark_interval -= lrint (mark_interval) % 10; + mark_interval -= lrint(mark_interval) % 10; } if (mark_interval > 60) { - mark_interval -= lrint (mark_interval) % 60; + mark_interval -= lrint(mark_interval) % 60; } if (mark_interval > 3600) { - mark_interval -= lrint (mark_interval) % 3600; + mark_interval -= lrint(mark_interval) % 3600; } if (mark_interval < 1) { @@ -559,16 +559,16 @@ calculate_mark_interval (double mark_interval) /** @return false if the task was cancelled */ bool -display_progress (wxString title, wxString task) +display_progress(wxString title, wxString task) { - auto jm = JobManager::instance (); + auto jm = JobManager::instance(); - wxProgressDialog progress (title, task, 100, 0, wxPD_CAN_ABORT); + wxProgressDialog progress(title, task, 100, 0, wxPD_CAN_ABORT); bool ok = true; while (jm->work_to_do()) { - dcpomatic_sleep_seconds (1); + dcpomatic_sleep_seconds(1); if (!progress.Pulse()) { /* user pressed cancel */ for (auto i: jm->get()) { @@ -584,7 +584,7 @@ display_progress (wxString title, wxString task) int -get_offsets (vector<Offset>& offsets) +get_offsets(vector<Offset>& offsets) { offsets.push_back({_("UTC-11"), dcp::UTCOffset(-11, 0)}); offsets.push_back({_("UTC-10"), dcp::UTCOffset(-10, 0)}); @@ -623,13 +623,13 @@ get_offsets (vector<Offset>& offsets) wxString -bitmap_path (string name) +bitmap_path(string name) { boost::filesystem::path base; #ifdef DCPOMATIC_DEBUG /* Hack to allow Linux and OS X to find icons when running from the source tree */ - char* path = getenv ("DCPOMATIC_GRAPHICS"); + char* path = getenv("DCPOMATIC_GRAPHICS"); if (path) { base = path; } else { @@ -644,7 +644,7 @@ bitmap_path (string name) #endif auto p = base / name; - return std_to_wx (p.string()); + return std_to_wx(p.string()); } @@ -656,18 +656,18 @@ icon_path(string name) wxSize -small_button_size (wxWindow* parent, wxString text) +small_button_size(wxWindow* parent, wxString text) { - wxClientDC dc (parent); - auto size = dc.GetTextExtent (text); - size.SetHeight (-1); - size.IncBy (32, 0); + wxClientDC dc(parent); + auto size = dc.GetTextExtent(text); + size.SetHeight(-1); + size.IncBy(32, 0); return size; } bool -gui_is_dark () +gui_is_dark() { #ifdef DCPOMATIC_WINDOWS /* Dark mode doesn't really work at all on Windows at the moment, so just don't use it */ @@ -684,13 +684,13 @@ gui_is_dark () #if wxCHECK_VERSION(3,1,0) double -dpi_scale_factor (wxWindow* window) +dpi_scale_factor(wxWindow* window) { return window->GetDPIScaleFactor(); } #else double -dpi_scale_factor (wxWindow*) +dpi_scale_factor(wxWindow*) { return 1; } @@ -699,7 +699,7 @@ dpi_scale_factor (wxWindow*) int -search_ctrl_height () +search_ctrl_height() { #ifdef __WXGTK3__ return 30; diff --git a/src/wx/wx_util.h b/src/wx/wx_util.h index 6f84705fb..957957589 100644 --- a/src/wx/wx_util.h +++ b/src/wx/wx_util.h @@ -94,34 +94,34 @@ class PasswordEntry; #define S_(x) context_translation(x) -extern void error_dialog (wxWindow *, wxString, boost::optional<wxString> e = boost::optional<wxString>()); -extern void message_dialog (wxWindow *, wxString); -extern bool confirm_dialog (wxWindow *, wxString); -extern wxStaticText* create_label (wxWindow* p, wxString t, bool left); -extern wxStaticText* add_label_to_sizer (wxSizer *, wxWindow *, wxString, bool left, int prop = 0, int flags = wxLEFT | wxRIGHT); -extern wxStaticText* add_label_to_sizer (wxSizer *, wxStaticText *, bool left, int prop = 0, int flags = wxLEFT | wxRIGHT); +extern void error_dialog(wxWindow *, wxString, boost::optional<wxString> e = boost::optional<wxString>()); +extern void message_dialog(wxWindow *, wxString); +extern bool confirm_dialog(wxWindow *, wxString); +extern wxStaticText* create_label(wxWindow* p, wxString t, bool left); +extern wxStaticText* add_label_to_sizer(wxSizer *, wxWindow *, wxString, bool left, int prop = 0, int flags = wxLEFT | wxRIGHT); +extern wxStaticText* add_label_to_sizer(wxSizer *, wxStaticText *, bool left, int prop = 0, int flags = wxLEFT | wxRIGHT); extern wxStaticText* add_label_to_sizer(wxGridBagSizer *, wxWindow *, wxString, bool, wxGBPosition, wxGBSpan span = wxDefaultSpan, bool indent = false); -extern wxStaticText* add_label_to_sizer (wxGridBagSizer *, wxStaticText *, bool, wxGBPosition, wxGBSpan span = wxDefaultSpan); -extern std::string wx_to_std (wxString); -extern wxString std_to_wx (std::string); +extern wxStaticText* add_label_to_sizer(wxGridBagSizer *, wxStaticText *, bool, wxGBPosition, wxGBSpan span = wxDefaultSpan); +extern std::string wx_to_std(wxString); +extern wxString std_to_wx(std::string); /** Convert UTF8-encoded char array to wxString */ extern wxString char_to_wx(char const* s); extern wxString context_translation(char const* s); -extern std::string string_client_data (wxClientData* o); -extern wxString time_to_timecode (dcpomatic::DCPTime t, double fps); -extern void setup_audio_channels_choice (wxChoice* choice, int minimum); +extern std::string string_client_data(wxClientData* o); +extern wxString time_to_timecode(dcpomatic::DCPTime t, double fps); +extern void setup_audio_channels_choice(wxChoice* choice, int minimum); extern wxSplashScreen* maybe_show_splash(); -extern double calculate_mark_interval (double start); -extern bool display_progress (wxString title, wxString task); -extern bool report_errors_from_last_job (wxWindow* parent); -extern wxString bitmap_path (std::string name); +extern double calculate_mark_interval(double start); +extern bool display_progress(wxString title, wxString task); +extern bool report_errors_from_last_job(wxWindow* parent); +extern wxString bitmap_path(std::string name); extern wxString icon_path(std::string name); -extern wxSize small_button_size (wxWindow* parent, wxString text); -extern bool gui_is_dark (); -extern double dpi_scale_factor (wxWindow* window); -extern int search_ctrl_height (); +extern wxSize small_button_size(wxWindow* parent, wxString text); +extern bool gui_is_dark(); +extern double dpi_scale_factor(wxWindow* window); +extern int search_ctrl_height(); extern void report_config_load_failure(wxWindow* parent, Config::LoadFailure what); extern bool layout_for_short_screen(wxWindow* reference); @@ -137,7 +137,7 @@ struct Offset dcp::UTCOffset offset; }; -extern int get_offsets (std::vector<Offset>& offsets); +extern int get_offsets(std::vector<Offset>& offsets); namespace dcpomatic { namespace wx { @@ -149,27 +149,27 @@ namespace wx { } -extern void checked_set (FilePickerCtrl* widget, boost::filesystem::path value); -extern void checked_set (wxDirPickerCtrl* widget, boost::filesystem::path value); -extern void checked_set (wxSpinCtrl* widget, int value); -extern void checked_set (wxSpinCtrlDouble* widget, double value); -extern void checked_set (wxChoice* widget, int value); -extern void checked_set (wxChoice* widget, std::string value); -extern void checked_set (wxChoice* widget, std::vector<std::pair<std::string, std::string> > items); -extern void checked_set (wxTextCtrl* widget, std::string value); -extern void checked_set (wxTextCtrl* widget, wxString value); -extern void checked_set (PasswordEntry* widget, std::string value); -extern void checked_set (wxCheckBox* widget, bool value); -extern void checked_set (wxRadioButton* widget, bool value); -extern void checked_set (wxStaticText* widget, std::string value); -extern void checked_set (wxStaticText* widget, wxString value); +extern void checked_set(FilePickerCtrl* widget, boost::filesystem::path value); +extern void checked_set(wxDirPickerCtrl* widget, boost::filesystem::path value); +extern void checked_set(wxSpinCtrl* widget, int value); +extern void checked_set(wxSpinCtrlDouble* widget, double value); +extern void checked_set(wxChoice* widget, int value); +extern void checked_set(wxChoice* widget, std::string value); +extern void checked_set(wxChoice* widget, std::vector<std::pair<std::string, std::string> > items); +extern void checked_set(wxTextCtrl* widget, std::string value); +extern void checked_set(wxTextCtrl* widget, wxString value); +extern void checked_set(PasswordEntry* widget, std::string value); +extern void checked_set(wxCheckBox* widget, bool value); +extern void checked_set(wxRadioButton* widget, bool value); +extern void checked_set(wxStaticText* widget, std::string value); +extern void checked_set(wxStaticText* widget, wxString value); extern void checked_set(LanguageTagWidget* widget, dcp::LanguageTag value); extern void checked_set(LanguageTagWidget* widget, boost::optional<dcp::LanguageTag> value); extern void checked_set(RegionSubtagWidget* widget, boost::optional<dcp::LanguageTag::RegionSubtag> value); -extern int wx_get (wxChoice* widget); -extern int wx_get (wxSpinCtrl* widget); -extern double wx_get (wxSpinCtrlDouble* widget); +extern int wx_get(wxChoice* widget); +extern int wx_get(wxSpinCtrl* widget); +extern double wx_get(wxSpinCtrlDouble* widget); #ifdef DCPOMATIC_WINDOWS #define DCPOMATIC_USE_OWN_PICKER diff --git a/test/audio_analysis_test.cc b/test/audio_analysis_test.cc index 19555001b..578250b2c 100644 --- a/test/audio_analysis_test.cc +++ b/test/audio_analysis_test.cc @@ -40,6 +40,7 @@ #include "lib/playlist.h" #include "lib/ratio.h" #include "test.h" +#include <dcp/scope_guard.h> #include <boost/test/unit_test.hpp> #include <numeric> @@ -49,142 +50,142 @@ using std::vector; using namespace dcpomatic; -BOOST_AUTO_TEST_CASE (audio_analysis_serialisation_test) +BOOST_AUTO_TEST_CASE(audio_analysis_serialisation_test) { int const channels = 3; int const points = 4096; auto random_float = []() { - return (float (rand ()) / RAND_MAX) * 2 - 1; + return (float(rand()) / RAND_MAX) * 2 - 1; }; - AudioAnalysis a (3); + AudioAnalysis a(3); for (int i = 0; i < channels; ++i) { for (int j = 0; j < points; ++j) { AudioPoint p; - p[AudioPoint::PEAK] = random_float (); - p[AudioPoint::RMS] = random_float (); - a.add_point (i, p); + p[AudioPoint::PEAK] = random_float(); + p[AudioPoint::RMS] = random_float(); + a.add_point(i, p); } } vector<AudioAnalysis::PeakTime> peak; for (int i = 0; i < channels; ++i) { - peak.push_back (AudioAnalysis::PeakTime(random_float(), DCPTime(rand()))); + peak.push_back(AudioAnalysis::PeakTime(random_float(), DCPTime(rand()))); } - a.set_sample_peak (peak); + a.set_sample_peak(peak); - a.set_samples_per_point (100); - a.set_sample_rate (48000); - a.write ("build/test/audio_analysis_serialisation_test"); + a.set_samples_per_point(100); + a.set_sample_rate(48000); + a.write("build/test/audio_analysis_serialisation_test"); - AudioAnalysis b ("build/test/audio_analysis_serialisation_test"); + AudioAnalysis b("build/test/audio_analysis_serialisation_test"); for (int i = 0; i < channels; ++i) { - BOOST_CHECK_EQUAL (b.points(i), points); + BOOST_CHECK_EQUAL(b.points(i), points); for (int j = 0; j < points; ++j) { - AudioPoint p = a.get_point (i, j); - AudioPoint q = b.get_point (i, j); - BOOST_CHECK_CLOSE (p[AudioPoint::PEAK], q[AudioPoint::PEAK], 1); - BOOST_CHECK_CLOSE (p[AudioPoint::RMS], q[AudioPoint::RMS], 1); + AudioPoint p = a.get_point(i, j); + AudioPoint q = b.get_point(i, j); + BOOST_CHECK_CLOSE(p[AudioPoint::PEAK], q[AudioPoint::PEAK], 1); + BOOST_CHECK_CLOSE(p[AudioPoint::RMS], q[AudioPoint::RMS], 1); } } - BOOST_REQUIRE_EQUAL (b.sample_peak().size(), 3U); + BOOST_REQUIRE_EQUAL(b.sample_peak().size(), 3U); for (int i = 0; i < channels; ++i) { - BOOST_CHECK_CLOSE (b.sample_peak()[i].peak, peak[i].peak, 1); - BOOST_CHECK_EQUAL (b.sample_peak()[i].time.get(), peak[i].time.get()); + BOOST_CHECK_CLOSE(b.sample_peak()[i].peak, peak[i].peak, 1); + BOOST_CHECK_EQUAL(b.sample_peak()[i].time.get(), peak[i].time.get()); } - BOOST_CHECK_EQUAL (a.samples_per_point(), 100); - BOOST_CHECK_EQUAL (a.sample_rate(), 48000); + BOOST_CHECK_EQUAL(a.samples_per_point(), 100); + BOOST_CHECK_EQUAL(a.sample_rate(), 48000); } -BOOST_AUTO_TEST_CASE (audio_analysis_test) +BOOST_AUTO_TEST_CASE(audio_analysis_test) { auto c = make_shared<FFmpegContent>(TestPaths::private_data() / "betty_L.wav"); auto film = new_test_film("audio_analysis_test", { c }); auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false); - JobManager::instance()->add (job); - BOOST_REQUIRE (!wait_for_jobs()); + JobManager::instance()->add(job); + BOOST_REQUIRE(!wait_for_jobs()); } /** Check that audio analysis works (i.e. runs without error) with a -ve delay */ -BOOST_AUTO_TEST_CASE (audio_analysis_negative_delay_test) +BOOST_AUTO_TEST_CASE(audio_analysis_negative_delay_test) { auto c = make_shared<FFmpegContent>(TestPaths::private_data() / "boon_telly.mkv"); auto film = new_test_film("audio_analysis_negative_delay_test", { c }); - c->audio->set_delay (-250); + c->audio->set_delay(-250); auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false); - JobManager::instance()->add (job); - BOOST_REQUIRE (!wait_for_jobs()); + JobManager::instance()->add(job); + BOOST_REQUIRE(!wait_for_jobs()); } /** Check audio analysis that is incorrect in 2e98263 */ -BOOST_AUTO_TEST_CASE (audio_analysis_test2) +BOOST_AUTO_TEST_CASE(audio_analysis_test2) { auto c = make_shared<FFmpegContent>(TestPaths::private_data() / "3d_thx_broadway_2010_lossless.m2ts"); auto film = new_test_film("audio_analysis_test2", { c }); auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), false); - JobManager::instance()->add (job); - BOOST_REQUIRE (!wait_for_jobs()); + JobManager::instance()->add(job); + BOOST_REQUIRE(!wait_for_jobs()); } /* Test a case which was reported to throw an exception; analysing * a 12-channel DCP's audio. */ -BOOST_AUTO_TEST_CASE (audio_analysis_test3) +BOOST_AUTO_TEST_CASE(audio_analysis_test3) { auto content = make_shared<FFmpegContent>("test/data/white.wav"); auto film = new_test_film("analyse_audio_test", { content }); - film->set_audio_channels (12); + film->set_audio_channels(12); boost::signals2::connection connection; bool done = false; JobManager::instance()->analyse_audio(film, film->playlist(), false, connection, [&done](Job::Result) { done = true; }); - BOOST_REQUIRE (!wait_for_jobs()); - BOOST_CHECK (done); + BOOST_REQUIRE(!wait_for_jobs()); + BOOST_CHECK(done); } /** Run an audio analysis that triggered an exception in the audio decoder at one point */ -BOOST_AUTO_TEST_CASE (analyse_audio_test4) +BOOST_AUTO_TEST_CASE(analyse_audio_test4) { auto content = content_factory(TestPaths::private_data() / "20 The Wedding Convoy Song.m4a")[0]; auto film = new_test_film("analyse_audio_test", { content }); auto playlist = make_shared<Playlist>(); - playlist->add (film, content); + playlist->add(film, content); boost::signals2::connection c; JobManager::instance()->analyse_audio(film, playlist, false, c, [](Job::Result) {}); - BOOST_CHECK (!wait_for_jobs ()); + BOOST_CHECK(!wait_for_jobs()); } -BOOST_AUTO_TEST_CASE (analyse_audio_leqm_test) +BOOST_AUTO_TEST_CASE(analyse_audio_leqm_test) { auto film = new_test_film("analyse_audio_leqm_test"); - film->set_audio_channels (2); + film->set_audio_channels(2); auto content = content_factory(TestPaths::private_data() / "betty_stereo_48k.wav")[0]; film->examine_and_add_content({content}); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); auto playlist = make_shared<Playlist>(); - playlist->add (film, content); + playlist->add(film, content); boost::signals2::connection c; JobManager::instance()->analyse_audio(film, playlist, false, c, [](Job::Result) {}); - BOOST_CHECK (!wait_for_jobs()); + BOOST_CHECK(!wait_for_jobs()); AudioAnalysis analysis(film->audio_analysis_path(playlist)); /* The CLI tool of leqm_nrt gives this value for betty_stereo_48k.wav */ - BOOST_CHECK_CLOSE (analysis.leqm().get_value_or(0), 88.276, 0.001); + BOOST_CHECK_CLOSE(analysis.leqm().get_value_or(0), 88.276, 0.001); } @@ -315,3 +316,38 @@ BOOST_AUTO_TEST_CASE(ebur128_test) } #endif + +static bool saw_ffmpeg_error = false; + +static +void +test_log_callback(void*, int level, const char*, va_list) +{ + if (level <= AV_LOG_WARNING) { + saw_ffmpeg_error = true; + } +} + + +/* The file in this test has the audio stream as index 0, video as 1, + * with both streams having the same ID. This triggered a bug where + * on analysis (with video disabled) the video packets would be fed + * to the audio decoder, causing chaos manifesting as many audio decoder + * errors. + */ +BOOST_AUTO_TEST_CASE(analysis_stream_confusion_test) +{ + auto sound = content_factory(TestPaths::private_data() / "ge.mkv")[0]; + auto film = new_test_film("analysis_stream_confusion_test", { sound }); + + av_log_set_callback(test_log_callback); + dcp::ScopeGuard sg = []() { + capture_ffmpeg_logs(); + }; + + auto job = make_shared<AnalyseAudioJob>(film, film->playlist(), true); + JobManager::instance()->add(job); + BOOST_REQUIRE(!wait_for_jobs()); + + BOOST_CHECK(!saw_ffmpeg_error); +} diff --git a/test/audio_mapping_test.cc b/test/audio_mapping_test.cc index dfde022a0..9bc5bcf5f 100644 --- a/test/audio_mapping_test.cc +++ b/test/audio_mapping_test.cc @@ -36,71 +36,71 @@ using std::string; using boost::optional; -BOOST_AUTO_TEST_CASE (audio_mapping_test) +BOOST_AUTO_TEST_CASE(audio_mapping_test) { AudioMapping none; - BOOST_CHECK_EQUAL (none.input_channels(), 0); + BOOST_CHECK_EQUAL(none.input_channels(), 0); - AudioMapping four (4, MAX_DCP_AUDIO_CHANNELS); - BOOST_CHECK_EQUAL (four.input_channels(), 4); + AudioMapping four(4, MAX_DCP_AUDIO_CHANNELS); + BOOST_CHECK_EQUAL(four.input_channels(), 4); - four.set (0, 1, 1); + four.set(0, 1, 1); for (int i = 0; i < 4; ++i) { for (int j = 0; j < MAX_DCP_AUDIO_CHANNELS; ++j) { - BOOST_CHECK_EQUAL (four.get(i, j), (i == 0 && j == 1) ? 1 : 0); + BOOST_CHECK_EQUAL(four.get(i, j), (i == 0 && j == 1) ? 1 : 0); } } - auto mapped = four.mapped_output_channels (); - BOOST_CHECK_EQUAL (mapped.size(), 1U); - BOOST_CHECK_EQUAL (mapped.front(), 1); + auto mapped = four.mapped_output_channels(); + BOOST_CHECK_EQUAL(mapped.size(), 1U); + BOOST_CHECK_EQUAL(mapped.front(), 1); - four.make_zero (); + four.make_zero(); for (int i = 0; i < 4; ++i) { for (int j = 0; j < MAX_DCP_AUDIO_CHANNELS; ++j) { - BOOST_CHECK_EQUAL (four.get (i, j), 0); + BOOST_CHECK_EQUAL(four.get(i, j), 0); } } } static void -guess_check (boost::filesystem::path filename, int output_channel) +guess_check(boost::filesystem::path filename, dcp::Channel output_channel) { - AudioMapping m (1, 8); - m.make_default (0, filename); - for (int i = 0; i < 8; ++i) { + AudioMapping m(1, 12); + m.make_default(0, filename); + for (int i = 0; i < 12; ++i) { BOOST_TEST_INFO(fmt::format("{} channel {}", filename.string(), i)); - BOOST_CHECK_CLOSE (m.get(0, i), i == output_channel ? 1 : 0, 0.01); + BOOST_CHECK_CLOSE(m.get(0, i), i == static_cast<int>(output_channel) ? 1 : 0, 0.01); } } -BOOST_AUTO_TEST_CASE (audio_mapping_guess_test) +BOOST_AUTO_TEST_CASE(audio_mapping_guess_test) { - guess_check ("stuff_L_nonsense.wav", 0); - guess_check ("stuff_nonsense.wav", 2); - guess_check ("fred_R.wav", 1); - guess_check ("jim_C_sheila.aiff", 2); - guess_check ("things_Lfe_and.wav", 3); - guess_check ("weeee_Ls.aiff", 4); - guess_check ("try_Rs-it.wav", 5); + guess_check("stuff_L_nonsense.wav", dcp::Channel::LEFT); + guess_check("stuff_nonsense.wav", dcp::Channel::CENTRE); + guess_check("fred_R.wav", dcp::Channel::RIGHT); + guess_check("jim_C_sheila.aiff", dcp::Channel::CENTRE); + guess_check("things_Lfe_and.wav", dcp::Channel::LFE); + guess_check("weeee_Ls.aiff", dcp::Channel::LS); + guess_check("try_Rs-it.wav", dcp::Channel::RS); /* PT-style */ - guess_check ("things_LFE.wav", 3); - guess_check ("ptish_Lsr_abc.wav", 6); - guess_check ("ptish_Rsr_abc.wav", 7); - guess_check ("more_Lss_s.wav", 4); - guess_check ("other_Rss.aiff", 5); + guess_check("things_LFE.wav", dcp::Channel::LFE); + guess_check("ptish_Lsr_abc.wav", dcp::Channel::BSL); + guess_check("ptish_Rsr_abc.wav", dcp::Channel::BSR); + guess_check("more_Lss_s.wav", dcp::Channel::LS); + guess_check("other_Rss.aiff", dcp::Channel::RS); /* Only the filename should be taken into account */ - guess_check ("-Lfe-/foo_L.wav", 0); + guess_check("-Lfe-/foo_L.wav", dcp::Channel::LEFT); /* Dolby-style */ - guess_check ("jake-Lrs-good.wav", 6); - guess_check ("elwood-Rrs-good.wav", 7); + guess_check("jake-Lrs-good.wav", dcp::Channel::BSL); + guess_check("elwood-Rrs-good.wav", dcp::Channel::BSR); } diff --git a/test/colour_conversion_test.cc b/test/colour_conversion_test.cc index 7b4d1eebd..fd2b7294b 100644 --- a/test/colour_conversion_test.cc +++ b/test/colour_conversion_test.cc @@ -26,8 +26,19 @@ #include "lib/colour_conversion.h" +#include "lib/content.h" +#include "lib/content_factory.h" #include "lib/film.h" +#include "lib/video_content.h" +#include "test.h" +#include <dcp/cpl.h> +#include <dcp/dcp.h> #include <dcp/gamma_transfer_function.h> +#include <dcp/j2k_transcode.h> +#include <dcp/mono_j2k_picture_asset.h> +#include <dcp/openjpeg_image.h> +#include <dcp/reel.h> +#include <dcp/reel_picture_asset.h> #include <libxml++/libxml++.h> #include <boost/test/unit_test.hpp> #include <iostream> @@ -120,3 +131,62 @@ BOOST_AUTO_TEST_CASE (colour_conversion_test4) BOOST_CHECK (ColourConversion::from_xml(in, Film::current_state_version).get() == i.conversion); } } + + +static void check(std::shared_ptr<const dcp::OpenJPEGImage> image, int px, int py, int cx, int cy, int cz) +{ + BOOST_CHECK_EQUAL(image->data(0)[px + py * image->size().width], cx); + BOOST_CHECK_EQUAL(image->data(1)[px + py * image->size().width], cy); + BOOST_CHECK_EQUAL(image->data(2)[px + py * image->size().width], cz); +} + + +BOOST_AUTO_TEST_CASE(end_to_end_rgb_black_test) +{ + auto pattern = content_factory(TestPaths::private_data() / "BlackCal_Levels_4k.png"); + auto film = new_test_film("end_to_end_rgb_black_test", pattern); + make_and_verify_dcp(film); + + dcp::DCP dcp(film->dir(film->dcp_name())); + dcp.read(); + BOOST_REQUIRE_EQUAL(dcp.cpls().size(), 1U); + auto cpl = dcp.cpls()[0]; + BOOST_REQUIRE_EQUAL(cpl->reels().size(), 1U); + auto reel = cpl->reels()[0]; + auto picture = std::dynamic_pointer_cast<dcp::MonoJ2KPictureAsset>(reel->main_picture()->j2k_asset()); + BOOST_REQUIRE(picture); + + auto reader = picture->start_read(); + auto frame = reader->get_frame(0); + auto image = dcp::decompress_j2k(*frame.get(), 0); + + /* Border is black. Make sure we move past the pillarboxing */ + check(image, 158, 2, 0, 0, 0); +} + + +BOOST_AUTO_TEST_CASE(end_to_end_rgb_white_test) +{ + auto pattern = content_factory(TestPaths::private_data() / "WhiteCal_Levels_4k.png"); + auto film = new_test_film("end_to_end_rgb_white_test", pattern); + make_and_verify_dcp(film); + + dcp::DCP dcp(film->dir(film->dcp_name())); + dcp.read(); + BOOST_REQUIRE_EQUAL(dcp.cpls().size(), 1U); + auto cpl = dcp.cpls()[0]; + BOOST_REQUIRE_EQUAL(cpl->reels().size(), 1U); + auto reel = cpl->reels()[0]; + auto picture = std::dynamic_pointer_cast<dcp::MonoJ2KPictureAsset>(reel->main_picture()->j2k_asset()); + BOOST_REQUIRE(picture); + + auto reader = picture->start_read(); + auto frame = reader->get_frame(0); + auto image = dcp::decompress_j2k(*frame.get(), 0); + + /* Border is white. Make sure we move past the pillarboxing. + * These XYZ values are from the ISDCF framing chart. + */ + check(image, 158, 2, 3883, 3960, 4092); +} + diff --git a/test/create_cli_test.cc b/test/create_cli_test.cc index c71031fbc..0f127c018 100644 --- a/test/create_cli_test.cc +++ b/test/create_cli_test.cc @@ -322,6 +322,22 @@ BOOST_AUTO_TEST_CASE (create_cli_test) BOOST_CHECK(film->content()[0]->video->fade_in() == 24); BOOST_CHECK(film->content()[0]->video->fade_out() == 0); BOOST_CHECK(collected_error.empty()); + + /* Extract a 1.85 frame from a 320x240 source */ + cc = run("dcpomatic2_create --container-ratio 185 --fill-crop test/data/red_24.mp4"); + BOOST_CHECK(!cc.error); + film = cc.make_film(error); + BOOST_REQUIRE_EQUAL(film->content().size(), 1U); + BOOST_REQUIRE(film->content()[0]->video); + BOOST_CHECK(film->content()[0]->video->requested_crop() == Crop(0, 0, 33, 33)); + + /* Extract a 1.85 frame from a 2048x858 source */ + cc = run("dcpomatic2_create --container-ratio 185 --fill-crop test/data/scope_dcp"); + BOOST_CHECK(!cc.error); + film = cc.make_film(error); + BOOST_REQUIRE_EQUAL(film->content().size(), 1U); + BOOST_REQUIRE(film->content()[0]->video); + BOOST_CHECK(film->content()[0]->video->requested_crop() == Crop(230, 230, 0, 0)); } diff --git a/test/data b/test/data -Subproject f93feeca2c9f44819a7e50f98262dc960f8d7e9 +Subproject cec02cb60028b76800357604f8331b903388d77 diff --git a/test/film_test.cc b/test/film_test.cc index 5ce195637..9949fd7d6 100644 --- a/test/film_test.cc +++ b/test/film_test.cc @@ -86,3 +86,24 @@ BOOST_AUTO_TEST_CASE(film_possible_reel_types_test2) BOOST_CHECK_EQUAL(film->possible_reel_types().size(), 2U); } + +BOOST_AUTO_TEST_CASE(film_copy_remembered_assets_test) +{ + dcp::filesystem::remove_all("build/test/film_copy_remembered_assets_test2"); + + auto content = content_factory("test/data/flat_red.png")[0]; + auto film = new_test_film("film_copy_remembered_assets_test", { content }); + make_and_verify_dcp(film); + + auto copy = make_shared<Film>(boost::filesystem::path("build/test/film_copy_remembered_assets_test2")); + copy->copy_from(film, [](float) {}); + + auto remembered = copy->read_remembered_assets(); + BOOST_REQUIRE_EQUAL(remembered.size(), 1U); + auto path = find_asset(remembered, *copy->directory(), dcpomatic::DCPTimePeriod({}, dcpomatic::DCPTime::from_seconds(10)), film->video_identifier()); + BOOST_CHECK(path.has_value()); + + for (auto path: dcp::filesystem::directory_iterator(film->dir("info"))) { + check_file(path.path(), copy->dir("info") / path.path().filename()); + } +} diff --git a/test/frame_rate_test.cc b/test/frame_rate_test.cc index 8d085478f..74f372c95 100644 --- a/test/frame_rate_test.cc +++ b/test/frame_rate_test.cc @@ -42,7 +42,7 @@ /* Test Playlist::best_dcp_frame_rate and FrameRateChange with a single piece of content. */ -BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single) +BOOST_AUTO_TEST_CASE(best_dcp_frame_rate_test_single) { auto content = std::make_shared<FFmpegContent>("test/data/test.mp4"); auto film = new_test_film("best_dcp_frame_rate_test_single", { content }); @@ -50,174 +50,183 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_single) /* Run some tests with a limited range of allowed rates */ std::list<int> afr; - afr.push_back (24); - afr.push_back (25); - afr.push_back (30); - Config::instance()->set_allowed_dcp_frame_rates (afr); + afr.push_back(24); + afr.push_back(25); + afr.push_back(30); + Config::instance()->set_allowed_dcp_frame_rates(afr); content->_video_frame_rate = 60; - int best = film->best_video_frame_rate (); + int best = film->best_video_frame_rate(); auto frc = FrameRateChange(60, best); - BOOST_CHECK_EQUAL (best, 30); - BOOST_CHECK_EQUAL (frc.skip, true); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + BOOST_CHECK_EQUAL(best, 30); + BOOST_CHECK_EQUAL(frc.skip(), 1); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); content->_video_frame_rate = 50; - best = film->best_video_frame_rate (); - frc = FrameRateChange (50, best); - BOOST_CHECK_EQUAL (best, 25); - BOOST_CHECK_EQUAL (frc.skip, true); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(50, best); + BOOST_CHECK_EQUAL(best, 25); + BOOST_CHECK_EQUAL(frc.skip(), 1); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); content->_video_frame_rate = 48; - best = film->best_video_frame_rate (); - frc = FrameRateChange (48, best); - BOOST_CHECK_EQUAL (best, 24); - BOOST_CHECK_EQUAL (frc.skip, true); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(48, best); + BOOST_CHECK_EQUAL(best, 24); + BOOST_CHECK_EQUAL(frc.skip(), 1); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); content->_video_frame_rate = 30; - best = film->best_video_frame_rate (); - frc = FrameRateChange (30, best); - BOOST_CHECK_EQUAL (best, 30); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(30, best); + BOOST_CHECK_EQUAL(best, 30); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); content->_video_frame_rate = 29.97; - best = film->best_video_frame_rate (); - frc = FrameRateChange (29.97, best); - BOOST_CHECK_EQUAL (best, 30); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, true); - BOOST_CHECK_CLOSE (frc.speed_up, 30 / 29.97, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(29.97, best); + BOOST_CHECK_EQUAL(best, 30); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), true); + BOOST_CHECK_CLOSE(frc.speed_up(), 30 / 29.97, 0.1); content->_video_frame_rate = 25; - best = film->best_video_frame_rate (); - frc = FrameRateChange (25, best); - BOOST_CHECK_EQUAL (best, 25); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(25, best); + BOOST_CHECK_EQUAL(best, 25); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); content->_video_frame_rate = 24; - best = film->best_video_frame_rate (); - frc = FrameRateChange (24, best); - BOOST_CHECK_EQUAL (best, 24); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(24, best); + BOOST_CHECK_EQUAL(best, 24); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); content->_video_frame_rate = 14.5; - best = film->best_video_frame_rate (); - frc = FrameRateChange (14.5, best); - BOOST_CHECK_EQUAL (best, 30); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 2); - BOOST_CHECK_EQUAL (frc.change_speed, true); - BOOST_CHECK_CLOSE (frc.speed_up, 15 / 14.5, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(14.5, best); + BOOST_CHECK_EQUAL(best, 30); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 2); + BOOST_CHECK_EQUAL(frc.change_speed(), true); + BOOST_CHECK_CLOSE(frc.speed_up(), 15 / 14.5, 0.1); content->_video_frame_rate = 12.6; - best = film->best_video_frame_rate (); - frc = FrameRateChange (12.6, best); - BOOST_CHECK_EQUAL (best, 25); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 2); - BOOST_CHECK_EQUAL (frc.change_speed, true); - BOOST_CHECK_CLOSE (frc.speed_up, 25 / 25.2, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(12.6, best); + BOOST_CHECK_EQUAL(best, 25); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 2); + BOOST_CHECK_EQUAL(frc.change_speed(), true); + BOOST_CHECK_CLOSE(frc.speed_up(), 25 / 25.2, 0.1); content->_video_frame_rate = 12.4; - best = film->best_video_frame_rate (); - frc = FrameRateChange (12.4, best); - BOOST_CHECK_EQUAL (best, 25); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 2); - BOOST_CHECK_EQUAL (frc.change_speed, true); - BOOST_CHECK_CLOSE (frc.speed_up, 25 / 24.8, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(12.4, best); + BOOST_CHECK_EQUAL(best, 25); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 2); + BOOST_CHECK_EQUAL(frc.change_speed(), true); + BOOST_CHECK_CLOSE(frc.speed_up(), 25 / 24.8, 0.1); content->_video_frame_rate = 12; - best = film->best_video_frame_rate (); - frc = FrameRateChange (12, best); - BOOST_CHECK_EQUAL (best, 24); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 2); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(12, best); + BOOST_CHECK_EQUAL(best, 24); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 2); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); + + content->_video_frame_rate = 120; + best = film->best_video_frame_rate(); + frc = FrameRateChange(120, best); + BOOST_CHECK_EQUAL(best, 30); + BOOST_CHECK_EQUAL(frc.skip(), 3); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); /* Now add some more rates and see if it will use them in preference to skip/repeat. */ - afr.push_back (48); - afr.push_back (50); - afr.push_back (60); - Config::instance()->set_allowed_dcp_frame_rates (afr); + afr.push_back(48); + afr.push_back(50); + afr.push_back(60); + Config::instance()->set_allowed_dcp_frame_rates(afr); content->_video_frame_rate = 60; - best = film->playlist()->best_video_frame_rate (); - frc = FrameRateChange (60, best); - BOOST_CHECK_EQUAL (best, 60); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->playlist()->best_video_frame_rate(); + frc = FrameRateChange(60, best); + BOOST_CHECK_EQUAL(best, 60); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); content->_video_frame_rate = 50; - best = film->playlist()->best_video_frame_rate (); - frc = FrameRateChange (50, best); - BOOST_CHECK_EQUAL (best, 50); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->playlist()->best_video_frame_rate(); + frc = FrameRateChange(50, best); + BOOST_CHECK_EQUAL(best, 50); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); content->_video_frame_rate = 48; - best = film->playlist()->best_video_frame_rate (); - frc = FrameRateChange (48, best); - BOOST_CHECK_EQUAL (best, 48); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, false); - BOOST_CHECK_CLOSE (frc.speed_up, 1, 0.1); + best = film->playlist()->best_video_frame_rate(); + frc = FrameRateChange(48, best); + BOOST_CHECK_EQUAL(best, 48); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), false); + BOOST_CHECK_CLOSE(frc.speed_up(), 1, 0.1); /* Check some out-there conversions (not the best) */ - frc = FrameRateChange (14.99, 24); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 2); - BOOST_CHECK_EQUAL (frc.change_speed, true); - BOOST_CHECK_CLOSE (frc.speed_up, 24 / (2 * 14.99), 0.1); + frc = FrameRateChange(14.99, 24); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 2); + BOOST_CHECK_EQUAL(frc.change_speed(), true); + BOOST_CHECK_CLOSE(frc.speed_up(), 24 / (2 * 14.99), 0.1); /* Check some conversions with limited DCP targets */ - afr.clear (); - afr.push_back (24); - Config::instance()->set_allowed_dcp_frame_rates (afr); + afr.clear(); + afr.push_back(24); + Config::instance()->set_allowed_dcp_frame_rates(afr); content->_video_frame_rate = 25; - best = film->best_video_frame_rate (); - frc = FrameRateChange (25, best); - BOOST_CHECK_EQUAL (best, 24); - BOOST_CHECK_EQUAL (frc.skip, false); - BOOST_CHECK_EQUAL (frc.repeat, 1); - BOOST_CHECK_EQUAL (frc.change_speed, true); - BOOST_CHECK_CLOSE (frc.speed_up, 24.0 / 25, 0.1); + best = film->best_video_frame_rate(); + frc = FrameRateChange(25, best); + BOOST_CHECK_EQUAL(best, 24); + BOOST_CHECK_EQUAL(frc.skip(), 0); + BOOST_CHECK_EQUAL(frc.repeat(), 1); + BOOST_CHECK_EQUAL(frc.change_speed(), true); + BOOST_CHECK_CLOSE(frc.speed_up(), 24.0 / 25, 0.1); } /* Test Playlist::best_dcp_frame_rate and FrameRateChange with two pieces of content. */ -BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_double) +BOOST_AUTO_TEST_CASE(best_dcp_frame_rate_test_double) { auto A = std::make_shared<FFmpegContent>("test/data/test.mp4"); auto B = std::make_shared<FFmpegContent>("test/data/test.mp4"); @@ -226,71 +235,71 @@ BOOST_AUTO_TEST_CASE (best_dcp_frame_rate_test_double) /* Run some tests with a limited range of allowed rates */ std::list<int> afr = { 24, 25, 30 }; - Config::instance()->set_allowed_dcp_frame_rates (afr); + Config::instance()->set_allowed_dcp_frame_rates(afr); A->_video_frame_rate = 30; B->_video_frame_rate = 24; - BOOST_CHECK_EQUAL (film->best_video_frame_rate(), 25); + BOOST_CHECK_EQUAL(film->best_video_frame_rate(), 25); A->_video_frame_rate = 24; B->_video_frame_rate = 24; - BOOST_CHECK_EQUAL (film->best_video_frame_rate(), 24); + BOOST_CHECK_EQUAL(film->best_video_frame_rate(), 24); A->_video_frame_rate = 24; B->_video_frame_rate = 48; - BOOST_CHECK_EQUAL (film->best_video_frame_rate(), 24); + BOOST_CHECK_EQUAL(film->best_video_frame_rate(), 24); } -BOOST_AUTO_TEST_CASE (audio_sampling_rate_test) +BOOST_AUTO_TEST_CASE(audio_sampling_rate_test) { auto content = std::make_shared<FFmpegContent>("test/data/test.mp4"); auto film = new_test_film("audio_sampling_rate_test", { content }); std::list<int> afr = { 24, 25, 30 }; - Config::instance()->set_allowed_dcp_frame_rates (afr); + Config::instance()->set_allowed_dcp_frame_rates(afr); auto stream = std::make_shared<FFmpegAudioStream>("foo", 0, 0, 0, 0, 0, 0); content->audio = std::make_shared<AudioContent>(content.get()); - content->audio->add_stream (stream); + content->audio->add_stream(stream); content->_video_frame_rate = 24; - film->set_video_frame_rate (24); + film->set_video_frame_rate(24); stream->_frame_rate = 48000; - BOOST_CHECK_EQUAL (content->audio->resampled_frame_rate(film), 48000); + BOOST_CHECK_EQUAL(content->audio->resampled_frame_rate(film), 48000); stream->_frame_rate = 44100; - BOOST_CHECK_EQUAL (content->audio->resampled_frame_rate(film), 48000); + BOOST_CHECK_EQUAL(content->audio->resampled_frame_rate(film), 48000); stream->_frame_rate = 80000; - BOOST_CHECK_EQUAL (content->audio->resampled_frame_rate(film), 48000); + BOOST_CHECK_EQUAL(content->audio->resampled_frame_rate(film), 48000); content->_video_frame_rate = 23.976; - film->set_video_frame_rate (24); + film->set_video_frame_rate(24); stream->_frame_rate = 48000; - BOOST_CHECK_EQUAL (content->audio->resampled_frame_rate(film), 47952); + BOOST_CHECK_EQUAL(content->audio->resampled_frame_rate(film), 47952); content->_video_frame_rate = 29.97; - film->set_video_frame_rate (30); - BOOST_CHECK_EQUAL (film->video_frame_rate (), 30); + film->set_video_frame_rate(30); + BOOST_CHECK_EQUAL(film->video_frame_rate(), 30); stream->_frame_rate = 48000; - BOOST_CHECK_EQUAL (content->audio->resampled_frame_rate(film), 47952); + BOOST_CHECK_EQUAL(content->audio->resampled_frame_rate(film), 47952); content->_video_frame_rate = 25; - film->set_video_frame_rate (24); + film->set_video_frame_rate(24); stream->_frame_rate = 48000; - BOOST_CHECK_EQUAL (content->audio->resampled_frame_rate(film), 50000); + BOOST_CHECK_EQUAL(content->audio->resampled_frame_rate(film), 50000); content->_video_frame_rate = 25; - film->set_video_frame_rate (24); + film->set_video_frame_rate(24); stream->_frame_rate = 44100; - BOOST_CHECK_EQUAL (content->audio->resampled_frame_rate(film), 50000); + BOOST_CHECK_EQUAL(content->audio->resampled_frame_rate(film), 50000); /* Check some out-there conversions (not the best) */ content->_video_frame_rate = 14.99; - film->set_video_frame_rate (25); + film->set_video_frame_rate(25); stream->_frame_rate = 16000; /* The FrameRateChange within resampled_frame_rate should choose to double-up the 14.99 fps video to 30 and then run it slow at 25. */ - BOOST_CHECK_EQUAL (content->audio->resampled_frame_rate(film), lrint (48000 * 2 * 14.99 / 25)); + BOOST_CHECK_EQUAL(content->audio->resampled_frame_rate(film), lrint(48000 * 2 * 14.99 / 25)); } diff --git a/test/hints_test.cc b/test/hints_test.cc index 55bd9d77f..7cb9d676b 100644 --- a/test/hints_test.cc +++ b/test/hints_test.cc @@ -211,7 +211,7 @@ BOOST_AUTO_TEST_CASE (hint_subtitle_mxf_too_big) BOOST_CHECK_EQUAL ( hints[0], "At least one of your subtitle files is larger than " MAX_TEXT_MXF_SIZE_TEXT " in total. " - "You should divide the DCP into shorter reels." + "The largest file is 134MB. You should divide the DCP into shorter reels." ); } @@ -245,7 +245,7 @@ BOOST_AUTO_TEST_CASE (hint_closed_caption_xml_too_big) BOOST_CHECK_EQUAL ( hints[0], "At least one of your closed caption files' XML part is larger than " MAX_CLOSED_CAPTION_XML_SIZE_TEXT ". " - "You should divide the DCP into shorter reels." + "The largest XML part is 482KB. You should divide the DCP into shorter reels." ); } @@ -315,3 +315,43 @@ BOOST_AUTO_TEST_CASE(hints_mpeg2) "encoded with JPEG2000 rather than MPEG2. Make sure that your cinema really wants an old-style MPEG2 DCP." ); } + + +BOOST_AUTO_TEST_CASE(hints_120fps) +{ + auto content = content_factory("test/data/numbered_120.mp4"); + auto film = new_test_film("hints_120fps", content); + auto hints = get_hints(film); + for (auto hint: hints) { + BOOST_CHECK(hint.find("There is a large difference between the frame rate of your DCP and that of some of your content.") == std::string::npos); + } +} + + +BOOST_AUTO_TEST_CASE(hints_ccap_not_too_many_lines_xml) +{ + auto content = content_factory(TestPaths::private_data() / "ccap_not_too_many_lines.xml")[0]; + auto film = new_test_film("hints_ccap_not_too_many_lines", { content }); + content->text[0]->set_type(TextType::CLOSED_CAPTION); + auto hints = get_hints(film); + + BOOST_CHECK( + std::none_of(hints.begin(), hints.end(), [](string const& hint) { + return hint.find("Some of your closed captions span more than 3 lines") != std::string::npos; + }) + ); +} + + +BOOST_AUTO_TEST_CASE(hints_ccap_too_many_lines_xml) +{ + auto content = content_factory(TestPaths::private_data() / "ccap_too_many_lines.xml")[0]; + auto film = new_test_film("hints_ccap_too_many_lines", { content }); + content->text[0]->set_type(TextType::CLOSED_CAPTION); + auto hints = get_hints(film); + BOOST_CHECK( + std::any_of(hints.begin(), hints.end(), [](string const& hint) { + return hint.find("Some of your closed captions span more than 3 lines") != std::string::npos; + }) + ); +} diff --git a/test/image_content_fade_test.cc b/test/image_content_fade_test.cc index 70d72871e..b033050e5 100644 --- a/test/image_content_fade_test.cc +++ b/test/image_content_fade_test.cc @@ -24,16 +24,24 @@ #include "lib/film.h" #include "lib/video_content.h" #include "test.h" +#include <dcp/cpl.h> +#include <dcp/dcp.h> +#include <dcp/mono_j2k_picture_asset.h> +#include <dcp/mono_j2k_picture_asset_reader.h> +#include <dcp/openjpeg_image.h> +#include <dcp/reel.h> +#include <dcp/reel_picture_asset.h> #include <boost/test/unit_test.hpp> +using std::dynamic_pointer_cast; using std::string; using std::list; -BOOST_AUTO_TEST_CASE (image_content_fade_test) +BOOST_AUTO_TEST_CASE(image_content_fade_in_test) { - auto film = new_test_film("image_content_fade_test"); + auto film = new_test_film("image_content_fade_in_test"); auto content = content_factory("test/data/flat_red.png")[0]; film->examine_and_add_content({content}); BOOST_REQUIRE (!wait_for_jobs()); @@ -45,5 +53,31 @@ BOOST_AUTO_TEST_CASE (image_content_fade_test) * differences in sound between the DCP and the reference to avoid test * failures for unrelated reasons. */ - check_dcp("test/data/image_content_fade_test", film->dir(film->dcp_name()), true); + check_dcp("test/data/image_content_fade_in_test", film->dir(film->dcp_name()), true); +} + + +BOOST_AUTO_TEST_CASE(image_content_fade_out_test) +{ + auto content = content_factory("test/data/flat_red.png")[0]; + auto film = new_test_film("image_content_fade_out_test", {content}); + content->video->set_fade_out(12); + make_and_verify_dcp(film); + + dcp::DCP dcp(film->dir(film->dcp_name())); + dcp.read(); + auto picture = dynamic_pointer_cast<dcp::MonoJ2KPictureAsset>(dcp.cpls()[0]->reels()[0]->main_picture()->asset()); + auto reader = picture->start_read(); + auto frame = reader->get_frame(239)->xyz_image(); + + auto const width = frame->size().width; + auto const height = frame->size().height; + + for (int y = 0; y < height; ++y) { + for (int x = 0; x < width; ++x) { + for (int c = 0; c < 2; ++c) { + BOOST_REQUIRE(frame->data(c)[y * width + x] <= 4); + } + } + } } diff --git a/test/image_test.cc b/test/image_test.cc index aa3baeb4f..6d566aac7 100644 --- a/test/image_test.cc +++ b/test/image_test.cc @@ -43,50 +43,50 @@ using std::make_shared; using std::string; -BOOST_AUTO_TEST_CASE (aligned_image_test) +BOOST_AUTO_TEST_CASE(aligned_image_test) { - auto s = new Image (AV_PIX_FMT_RGB24, dcp::Size (50, 50), Image::Alignment::PADDED); - BOOST_CHECK_EQUAL (s->planes(), 1); + auto s = new Image(AV_PIX_FMT_RGB24, dcp::Size(50, 50), Image::Alignment::PADDED); + BOOST_CHECK_EQUAL(s->planes(), 1); /* 192 is 150 aligned to the nearest 64 bytes */ - BOOST_CHECK_EQUAL (s->stride()[0], 192); - BOOST_CHECK_EQUAL (s->line_size()[0], 150); - BOOST_CHECK (s->data()[0]); - BOOST_CHECK (!s->data()[1]); - BOOST_CHECK (!s->data()[2]); - BOOST_CHECK (!s->data()[3]); + BOOST_CHECK_EQUAL(s->stride()[0], 192); + BOOST_CHECK_EQUAL(s->line_size()[0], 150); + BOOST_CHECK(s->data()[0]); + BOOST_CHECK(!s->data()[1]); + BOOST_CHECK(!s->data()[2]); + BOOST_CHECK(!s->data()[3]); /* copy constructor */ - auto t = new Image (*s); - BOOST_CHECK_EQUAL (t->planes(), 1); - BOOST_CHECK_EQUAL (t->stride()[0], 192); - BOOST_CHECK_EQUAL (t->line_size()[0], 150); - BOOST_CHECK (t->data()[0]); - BOOST_CHECK (!t->data()[1]); - BOOST_CHECK (!t->data()[2]); - BOOST_CHECK (!t->data()[3]); - BOOST_CHECK (t->data() != s->data()); - BOOST_CHECK (t->data()[0] != s->data()[0]); - BOOST_CHECK (t->line_size() != s->line_size()); - BOOST_CHECK_EQUAL (t->line_size()[0], s->line_size()[0]); - BOOST_CHECK (t->stride() != s->stride()); - BOOST_CHECK_EQUAL (t->stride()[0], s->stride()[0]); + auto t = new Image(*s); + BOOST_CHECK_EQUAL(t->planes(), 1); + BOOST_CHECK_EQUAL(t->stride()[0], 192); + BOOST_CHECK_EQUAL(t->line_size()[0], 150); + BOOST_CHECK(t->data()[0]); + BOOST_CHECK(!t->data()[1]); + BOOST_CHECK(!t->data()[2]); + BOOST_CHECK(!t->data()[3]); + BOOST_CHECK(t->data() != s->data()); + BOOST_CHECK(t->data()[0] != s->data()[0]); + BOOST_CHECK(t->line_size() != s->line_size()); + BOOST_CHECK_EQUAL(t->line_size()[0], s->line_size()[0]); + BOOST_CHECK(t->stride() != s->stride()); + BOOST_CHECK_EQUAL(t->stride()[0], s->stride()[0]); /* assignment operator */ - auto u = new Image (AV_PIX_FMT_YUV422P, dcp::Size (150, 150), Image::Alignment::COMPACT); + auto u = new Image(AV_PIX_FMT_YUV422P, dcp::Size(150, 150), Image::Alignment::COMPACT); *u = *s; - BOOST_CHECK_EQUAL (u->planes(), 1); - BOOST_CHECK_EQUAL (u->stride()[0], 192); - BOOST_CHECK_EQUAL (u->line_size()[0], 150); - BOOST_CHECK (u->data()[0]); - BOOST_CHECK (!u->data()[1]); - BOOST_CHECK (!u->data()[2]); - BOOST_CHECK (!u->data()[3]); - BOOST_CHECK (u->data() != s->data()); - BOOST_CHECK (u->data()[0] != s->data()[0]); - BOOST_CHECK (u->line_size() != s->line_size()); - BOOST_CHECK_EQUAL (u->line_size()[0], s->line_size()[0]); - BOOST_CHECK (u->stride() != s->stride()); - BOOST_CHECK_EQUAL (u->stride()[0], s->stride()[0]); + BOOST_CHECK_EQUAL(u->planes(), 1); + BOOST_CHECK_EQUAL(u->stride()[0], 192); + BOOST_CHECK_EQUAL(u->line_size()[0], 150); + BOOST_CHECK(u->data()[0]); + BOOST_CHECK(!u->data()[1]); + BOOST_CHECK(!u->data()[2]); + BOOST_CHECK(!u->data()[3]); + BOOST_CHECK(u->data() != s->data()); + BOOST_CHECK(u->data()[0] != s->data()[0]); + BOOST_CHECK(u->line_size() != s->line_size()); + BOOST_CHECK_EQUAL(u->line_size()[0], s->line_size()[0]); + BOOST_CHECK(u->stride() != s->stride()); + BOOST_CHECK_EQUAL(u->stride()[0], s->stride()[0]); delete s; delete t; @@ -94,49 +94,49 @@ BOOST_AUTO_TEST_CASE (aligned_image_test) } -BOOST_AUTO_TEST_CASE (compact_image_test) +BOOST_AUTO_TEST_CASE(compact_image_test) { - auto s = new Image (AV_PIX_FMT_RGB24, dcp::Size (50, 50), Image::Alignment::COMPACT); - BOOST_CHECK_EQUAL (s->planes(), 1); - BOOST_CHECK_EQUAL (s->stride()[0], 50 * 3); - BOOST_CHECK_EQUAL (s->line_size()[0], 50 * 3); - BOOST_CHECK (s->data()[0]); - BOOST_CHECK (!s->data()[1]); - BOOST_CHECK (!s->data()[2]); - BOOST_CHECK (!s->data()[3]); + auto s = new Image(AV_PIX_FMT_RGB24, dcp::Size(50, 50), Image::Alignment::COMPACT); + BOOST_CHECK_EQUAL(s->planes(), 1); + BOOST_CHECK_EQUAL(s->stride()[0], 50 * 3); + BOOST_CHECK_EQUAL(s->line_size()[0], 50 * 3); + BOOST_CHECK(s->data()[0]); + BOOST_CHECK(!s->data()[1]); + BOOST_CHECK(!s->data()[2]); + BOOST_CHECK(!s->data()[3]); /* copy constructor */ - auto t = new Image (*s); - BOOST_CHECK_EQUAL (t->planes(), 1); - BOOST_CHECK_EQUAL (t->stride()[0], 50 * 3); - BOOST_CHECK_EQUAL (t->line_size()[0], 50 * 3); - BOOST_CHECK (t->data()[0]); - BOOST_CHECK (!t->data()[1]); - BOOST_CHECK (!t->data()[2]); - BOOST_CHECK (!t->data()[3]); - BOOST_CHECK (t->data() != s->data()); - BOOST_CHECK (t->data()[0] != s->data()[0]); - BOOST_CHECK (t->line_size() != s->line_size()); - BOOST_CHECK_EQUAL (t->line_size()[0], s->line_size()[0]); - BOOST_CHECK (t->stride() != s->stride()); - BOOST_CHECK_EQUAL (t->stride()[0], s->stride()[0]); + auto t = new Image(*s); + BOOST_CHECK_EQUAL(t->planes(), 1); + BOOST_CHECK_EQUAL(t->stride()[0], 50 * 3); + BOOST_CHECK_EQUAL(t->line_size()[0], 50 * 3); + BOOST_CHECK(t->data()[0]); + BOOST_CHECK(!t->data()[1]); + BOOST_CHECK(!t->data()[2]); + BOOST_CHECK(!t->data()[3]); + BOOST_CHECK(t->data() != s->data()); + BOOST_CHECK(t->data()[0] != s->data()[0]); + BOOST_CHECK(t->line_size() != s->line_size()); + BOOST_CHECK_EQUAL(t->line_size()[0], s->line_size()[0]); + BOOST_CHECK(t->stride() != s->stride()); + BOOST_CHECK_EQUAL(t->stride()[0], s->stride()[0]); /* assignment operator */ - auto u = new Image (AV_PIX_FMT_YUV422P, dcp::Size (150, 150), Image::Alignment::PADDED); + auto u = new Image(AV_PIX_FMT_YUV422P, dcp::Size(150, 150), Image::Alignment::PADDED); *u = *s; - BOOST_CHECK_EQUAL (u->planes(), 1); - BOOST_CHECK_EQUAL (u->stride()[0], 50 * 3); - BOOST_CHECK_EQUAL (u->line_size()[0], 50 * 3); - BOOST_CHECK (u->data()[0]); - BOOST_CHECK (!u->data()[1]); - BOOST_CHECK (!u->data()[2]); - BOOST_CHECK (!u->data()[3]); - BOOST_CHECK (u->data() != s->data()); - BOOST_CHECK (u->data()[0] != s->data()[0]); - BOOST_CHECK (u->line_size() != s->line_size()); - BOOST_CHECK_EQUAL (u->line_size()[0], s->line_size()[0]); - BOOST_CHECK (u->stride() != s->stride()); - BOOST_CHECK_EQUAL (u->stride()[0], s->stride()[0]); + BOOST_CHECK_EQUAL(u->planes(), 1); + BOOST_CHECK_EQUAL(u->stride()[0], 50 * 3); + BOOST_CHECK_EQUAL(u->line_size()[0], 50 * 3); + BOOST_CHECK(u->data()[0]); + BOOST_CHECK(!u->data()[1]); + BOOST_CHECK(!u->data()[2]); + BOOST_CHECK(!u->data()[3]); + BOOST_CHECK(u->data() != s->data()); + BOOST_CHECK(u->data()[0] != s->data()[0]); + BOOST_CHECK(u->line_size() != s->line_size()); + BOOST_CHECK_EQUAL(u->line_size()[0], s->line_size()[0]); + BOOST_CHECK(u->stride() != s->stride()); + BOOST_CHECK_EQUAL(u->stride()[0], s->stride()[0]); delete s; delete t; @@ -150,10 +150,10 @@ alpha_blend_test_bgra_onto(AVPixelFormat format, string suffix) { auto proxy = make_shared<FFmpegImageProxy>(TestPaths::private_data() / "prophet_frame.tiff"); auto raw = proxy->image(Image::Alignment::PADDED).image; - auto background = raw->convert_pixel_format (dcp::YUVToRGB::REC709, format, Image::Alignment::PADDED, false); + auto background = raw->convert_pixel_format(dcp::YUVToRGB::REC709, format, Image::Alignment::PADDED, false); auto overlay = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size(431, 891), Image::Alignment::PADDED); - overlay->make_transparent (); + overlay->make_transparent(); for (int y = 0; y < 128; ++y) { auto p = overlay->data()[0] + y * overlay->stride()[0]; @@ -179,9 +179,9 @@ alpha_blend_test_bgra_onto(AVPixelFormat format, string suffix) } } - background->alpha_blend (overlay, Position<int> (13, 17)); + background->alpha_blend(overlay, Position<int>(13, 17)); - auto save = background->convert_pixel_format (dcp::YUVToRGB::REC709, AV_PIX_FMT_RGB24, Image::Alignment::COMPACT, false); + auto save = background->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_RGB24, Image::Alignment::COMPACT, false); write_image(save, "build/test/image_test_bgra_" + suffix + ".png"); check_image("build/test/image_test_bgra_" + suffix + ".png", TestPaths::private_data() / ("image_test_bgra_" + suffix + ".png")); @@ -194,7 +194,7 @@ alpha_blend_test_rgba64be_onto(AVPixelFormat format, string suffix) { auto proxy = make_shared<FFmpegImageProxy>(TestPaths::private_data() / "prophet_frame.tiff"); auto raw = proxy->image(Image::Alignment::PADDED).image; - auto background = raw->convert_pixel_format (dcp::YUVToRGB::REC709, format, Image::Alignment::PADDED, false); + auto background = raw->convert_pixel_format(dcp::YUVToRGB::REC709, format, Image::Alignment::PADDED, false); auto overlay = make_shared<Image>(AV_PIX_FMT_RGBA64BE, dcp::Size(431, 891), Image::Alignment::PADDED); overlay->make_transparent(); @@ -233,7 +233,7 @@ alpha_blend_test_rgba64be_onto(AVPixelFormat format, string suffix) /** Test Image::alpha_blend */ -BOOST_AUTO_TEST_CASE (alpha_blend_test) +BOOST_AUTO_TEST_CASE(alpha_blend_test) { alpha_blend_test_bgra_onto(AV_PIX_FMT_RGB24, "rgb24"); alpha_blend_test_bgra_onto(AV_PIX_FMT_BGRA, "bgra"); @@ -348,12 +348,12 @@ BOOST_AUTO_TEST_CASE(alpha_blend_text) /** Test merge (list<PositionImage>) with a single image */ -BOOST_AUTO_TEST_CASE (merge_test1) +BOOST_AUTO_TEST_CASE(merge_test1) { int const stride = 48 * 4; - auto A = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size (48, 48), Image::Alignment::COMPACT); - A->make_transparent (); + auto A = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size(48, 48), Image::Alignment::COMPACT); + A->make_transparent(); auto a = A->data()[0]; for (int y = 0; y < 48; ++y) { @@ -367,19 +367,19 @@ BOOST_AUTO_TEST_CASE (merge_test1) } list<PositionImage> all; - all.push_back (PositionImage (A, Position<int>(0, 0))); - auto merged = merge (all, Image::Alignment::COMPACT); + all.push_back(PositionImage(A, Position<int>(0, 0))); + auto merged = merge(all, Image::Alignment::COMPACT); - BOOST_CHECK (merged.position == Position<int>(0, 0)); - BOOST_CHECK_EQUAL (memcmp (merged.image->data()[0], A->data()[0], stride * 48), 0); + BOOST_CHECK(merged.position == Position<int>(0, 0)); + BOOST_CHECK_EQUAL(memcmp(merged.image->data()[0], A->data()[0], stride * 48), 0); } /** Test merge (list<PositionImage>) with two images */ -BOOST_AUTO_TEST_CASE (merge_test2) +BOOST_AUTO_TEST_CASE(merge_test2) { - auto A = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size (48, 1), Image::Alignment::COMPACT); - A->make_transparent (); + auto A = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size(48, 1), Image::Alignment::COMPACT); + A->make_transparent(); auto a = A->data()[0]; for (int x = 0; x < 16; ++x) { /* blue */ @@ -388,8 +388,8 @@ BOOST_AUTO_TEST_CASE (merge_test2) a[x * 4 + 3] = 255; } - auto B = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size (48, 1), Image::Alignment::COMPACT); - B->make_transparent (); + auto B = make_shared<Image>(AV_PIX_FMT_BGRA, dcp::Size(48, 1), Image::Alignment::COMPACT); + B->make_transparent(); auto b = B->data()[0]; for (int x = 0; x < 16; ++x) { /* red */ @@ -399,26 +399,26 @@ BOOST_AUTO_TEST_CASE (merge_test2) } list<PositionImage> all; - all.push_back (PositionImage(A, Position<int>(0, 0))); - all.push_back (PositionImage(B, Position<int>(0, 0))); - auto merged = merge (all, Image::Alignment::COMPACT); + all.push_back(PositionImage(A, Position<int>(0, 0))); + all.push_back(PositionImage(B, Position<int>(0, 0))); + auto merged = merge(all, Image::Alignment::COMPACT); - BOOST_CHECK (merged.position == Position<int>(0, 0)); + BOOST_CHECK(merged.position == Position<int>(0, 0)); auto m = merged.image->data()[0]; for (int x = 0; x < 16; ++x) { - BOOST_CHECK_EQUAL (m[x * 4], 255); - BOOST_CHECK_EQUAL (m[x * 4 + 3], 255); - BOOST_CHECK_EQUAL (m[(x + 16) * 4 + 3], 0); - BOOST_CHECK_EQUAL (m[(x + 32) * 4 + 2], 255); - BOOST_CHECK_EQUAL (m[(x + 32) * 4 + 3], 255); + BOOST_CHECK_EQUAL(m[x * 4], 255); + BOOST_CHECK_EQUAL(m[x * 4 + 3], 255); + BOOST_CHECK_EQUAL(m[(x + 16) * 4 + 3], 0); + BOOST_CHECK_EQUAL(m[(x + 32) * 4 + 2], 255); + BOOST_CHECK_EQUAL(m[(x + 32) * 4 + 3], 255); } } /** Test Image::crop_scale_window with YUV420P and some windowing */ -BOOST_AUTO_TEST_CASE (crop_scale_window_test) +BOOST_AUTO_TEST_CASE(crop_scale_window_test) { auto proxy = make_shared<FFmpegImageProxy>("test/data/flat_red.png"); auto raw = proxy->image(Image::Alignment::PADDED).image; @@ -432,19 +432,19 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test) /** Special cases of Image::crop_scale_window which triggered some valgrind warnings */ -BOOST_AUTO_TEST_CASE (crop_scale_window_test2) +BOOST_AUTO_TEST_CASE(crop_scale_window_test2) { auto image = make_shared<Image>(AV_PIX_FMT_XYZ12LE, dcp::Size(2048, 858), Image::Alignment::PADDED); - image->crop_scale_window ( + image->crop_scale_window( Crop(279, 0, 0, 0), dcp::Size(1069, 448), dcp::Size(1069, 578), dcp::YUVToRGB::REC709, VideoRange::FULL, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::COMPACT, false ); - image->crop_scale_window ( + image->crop_scale_window( Crop(2048, 0, 0, 0), dcp::Size(1069, 448), dcp::Size(1069, 578), dcp::YUVToRGB::REC709, VideoRange::FULL, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::COMPACT, false ); } -BOOST_AUTO_TEST_CASE (crop_scale_window_test3) +BOOST_AUTO_TEST_CASE(crop_scale_window_test3) { auto proxy = make_shared<FFmpegImageProxy>(TestPaths::private_data() / "player_seek_test_0.png"); auto xyz = proxy->image(Image::Alignment::PADDED).image->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_RGB24, Image::Alignment::PADDED, false); @@ -456,7 +456,7 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test3) } -BOOST_AUTO_TEST_CASE (crop_scale_window_test4) +BOOST_AUTO_TEST_CASE(crop_scale_window_test4) { auto proxy = make_shared<FFmpegImageProxy>(TestPaths::private_data() / "player_seek_test_0.png"); auto xyz = proxy->image(Image::Alignment::PADDED).image->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_RGB24, Image::Alignment::PADDED, false); @@ -472,7 +472,7 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test4) } -BOOST_AUTO_TEST_CASE (crop_scale_window_test5) +BOOST_AUTO_TEST_CASE(crop_scale_window_test5) { auto proxy = make_shared<FFmpegImageProxy>(TestPaths::private_data() / "player_seek_test_0.png"); auto xyz = proxy->image(Image::Alignment::PADDED).image->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_XYZ12LE, Image::Alignment::PADDED, false); @@ -484,7 +484,7 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test5) } -BOOST_AUTO_TEST_CASE (crop_scale_window_test6) +BOOST_AUTO_TEST_CASE(crop_scale_window_test6) { auto proxy = make_shared<FFmpegImageProxy>(TestPaths::private_data() / "player_seek_test_0.png"); auto xyz = proxy->image(Image::Alignment::PADDED).image->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_XYZ12LE, Image::Alignment::PADDED, false); @@ -501,7 +501,7 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test6) /** Test some small crops with an image that shows up errors in registration of the YUV planes (#1872) */ -BOOST_AUTO_TEST_CASE (crop_scale_window_test7) +BOOST_AUTO_TEST_CASE(crop_scale_window_test7) { using namespace boost::filesystem; for (int left_crop = 0; left_crop < 8; ++left_crop) { @@ -526,7 +526,7 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test7) } -BOOST_AUTO_TEST_CASE (crop_scale_window_test8) +BOOST_AUTO_TEST_CASE(crop_scale_window_test8) { using namespace boost::filesystem; @@ -543,20 +543,20 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test8) } -BOOST_AUTO_TEST_CASE (as_png_test) +BOOST_AUTO_TEST_CASE(as_png_test) { auto proxy = make_shared<FFmpegImageProxy>("test/data/3d_test/000001.png"); auto image_rgb = proxy->image(Image::Alignment::PADDED).image; auto image_bgr = image_rgb->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_BGRA, Image::Alignment::PADDED, false); - image_as_png(image_rgb).write ("build/test/as_png_rgb.png"); - image_as_png(image_bgr).write ("build/test/as_png_bgr.png"); + image_as_png(image_rgb).write("build/test/as_png_rgb.png"); + image_as_png(image_bgr).write("build/test/as_png_bgr.png"); - check_image ("test/data/3d_test/000001.png", "build/test/as_png_rgb.png"); - check_image ("test/data/3d_test/000001.png", "build/test/as_png_bgr.png"); + check_image("test/data/3d_test/000001.png", "build/test/as_png_rgb.png"); + check_image("test/data/3d_test/000001.png", "build/test/as_png_bgr.png"); } -BOOST_AUTO_TEST_CASE (as_jpeg_test) +BOOST_AUTO_TEST_CASE(as_jpeg_test) { auto proxy = make_shared<FFmpegImageProxy>("test/data/3d_test/000001.png"); auto image_rgb = proxy->image(Image::Alignment::PADDED).image; @@ -564,67 +564,67 @@ BOOST_AUTO_TEST_CASE (as_jpeg_test) image_as_jpeg(image_rgb, 60).write("build/test/as_jpeg_rgb.jpeg"); image_as_jpeg(image_bgr, 60).write("build/test/as_jpeg_bgr.jpeg"); - check_image ("test/data/as_jpeg_rgb.jpeg", "build/test/as_jpeg_rgb.jpeg"); - check_image ("test/data/as_jpeg_bgr.jpeg", "build/test/as_jpeg_bgr.jpeg"); + check_image("test/data/as_jpeg_rgb.jpeg", "build/test/as_jpeg_rgb.jpeg"); + check_image("test/data/as_jpeg_bgr.jpeg", "build/test/as_jpeg_bgr.jpeg"); } /* Very dumb test to fade black to make sure it stays black */ static void -fade_test_format_black (AVPixelFormat f, string name) +fade_test_format_black(AVPixelFormat f, string name) { - Image yuv (f, dcp::Size(640, 480), Image::Alignment::PADDED); - yuv.make_black (); - yuv.fade (0); + Image yuv(f, dcp::Size(640, 480), Image::Alignment::PADDED); + yuv.make_black(); + yuv.fade(0); string const filename = "fade_test_black_" + name + ".png"; image_as_png(yuv.convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_RGBA, Image::Alignment::PADDED, false)).write("build/test/" + filename); - check_image ("test/data/" + filename, "build/test/" + filename); + check_image("test/data/" + filename, "build/test/" + filename); } /* Fade red to make sure it stays red */ static void -fade_test_format_red (AVPixelFormat f, float amount, string name) +fade_test_format_red(AVPixelFormat f, float amount, string name) { auto proxy = make_shared<FFmpegImageProxy>("test/data/flat_red.png"); auto red = proxy->image(Image::Alignment::PADDED).image->convert_pixel_format(dcp::YUVToRGB::REC709, f, Image::Alignment::PADDED, false); - red->fade (amount); + red->fade(amount); string const filename = "fade_test_red_" + name + ".png"; image_as_png(red->convert_pixel_format(dcp::YUVToRGB::REC709, AV_PIX_FMT_RGBA, Image::Alignment::PADDED, false)).write("build/test/" + filename); - check_image ("test/data/" + filename, "build/test/" + filename); + check_image("test/data/" + filename, "build/test/" + filename); } -BOOST_AUTO_TEST_CASE (fade_test) +BOOST_AUTO_TEST_CASE(fade_test) { - fade_test_format_black (AV_PIX_FMT_YUV420P, "yuv420p"); - fade_test_format_black (AV_PIX_FMT_YUV422P10, "yuv422p10"); - fade_test_format_black (AV_PIX_FMT_RGB24, "rgb24"); - fade_test_format_black (AV_PIX_FMT_XYZ12LE, "xyz12le"); - fade_test_format_black (AV_PIX_FMT_RGB48LE, "rgb48le"); - - fade_test_format_red (AV_PIX_FMT_YUV420P, 0, "yuv420p_0"); - fade_test_format_red (AV_PIX_FMT_YUV420P, 0.5, "yuv420p_50"); - fade_test_format_red (AV_PIX_FMT_YUV420P, 1, "yuv420p_100"); - fade_test_format_red (AV_PIX_FMT_YUV422P10, 0, "yuv422p10_0"); - fade_test_format_red (AV_PIX_FMT_YUV422P10, 0.5, "yuv422p10_50"); - fade_test_format_red (AV_PIX_FMT_YUV422P10, 1, "yuv422p10_100"); - fade_test_format_red (AV_PIX_FMT_RGB24, 0, "rgb24_0"); - fade_test_format_red (AV_PIX_FMT_RGB24, 0.5, "rgb24_50"); - fade_test_format_red (AV_PIX_FMT_RGB24, 1, "rgb24_100"); - fade_test_format_red (AV_PIX_FMT_XYZ12LE, 0, "xyz12le_0"); - fade_test_format_red (AV_PIX_FMT_XYZ12LE, 0.5, "xyz12le_50"); - fade_test_format_red (AV_PIX_FMT_XYZ12LE, 1, "xyz12le_100"); - fade_test_format_red (AV_PIX_FMT_RGB48LE, 0, "rgb48le_0"); - fade_test_format_red (AV_PIX_FMT_RGB48LE, 0.5, "rgb48le_50"); - fade_test_format_red (AV_PIX_FMT_RGB48LE, 1, "rgb48le_100"); + fade_test_format_black(AV_PIX_FMT_YUV420P, "yuv420p"); + fade_test_format_black(AV_PIX_FMT_YUV422P10, "yuv422p10"); + fade_test_format_black(AV_PIX_FMT_RGB24, "rgb24"); + fade_test_format_black(AV_PIX_FMT_XYZ12LE, "xyz12le"); + fade_test_format_black(AV_PIX_FMT_RGB48LE, "rgb48le"); + + fade_test_format_red (AV_PIX_FMT_YUV420P, 0, "yuv420p_0"); + fade_test_format_red (AV_PIX_FMT_YUV420P, 0.5, "yuv420p_50"); + fade_test_format_red (AV_PIX_FMT_YUV420P, 1, "yuv420p_100"); + fade_test_format_red (AV_PIX_FMT_YUV422P10, 0, "yuv422p10_0"); + fade_test_format_red (AV_PIX_FMT_YUV422P10, 0.5, "yuv422p10_50"); + fade_test_format_red (AV_PIX_FMT_YUV422P10, 1, "yuv422p10_100"); + fade_test_format_red (AV_PIX_FMT_RGB24, 0, "rgb24_0"); + fade_test_format_red (AV_PIX_FMT_RGB24, 0.5, "rgb24_50"); + fade_test_format_red (AV_PIX_FMT_RGB24, 1, "rgb24_100"); + fade_test_format_red (AV_PIX_FMT_XYZ12LE, 0, "xyz12le_0"); + fade_test_format_red (AV_PIX_FMT_XYZ12LE, 0.5, "xyz12le_50"); + fade_test_format_red (AV_PIX_FMT_XYZ12LE, 1, "xyz12le_100"); + fade_test_format_red (AV_PIX_FMT_RGB48LE, 0, "rgb48le_0"); + fade_test_format_red (AV_PIX_FMT_RGB48LE, 0.5, "rgb48le_50"); + fade_test_format_red (AV_PIX_FMT_RGB48LE, 1, "rgb48le_100"); } -BOOST_AUTO_TEST_CASE (make_black_test) +BOOST_AUTO_TEST_CASE(make_black_test) { - dcp::Size in_size (512, 512); - dcp::Size out_size (1024, 1024); + dcp::Size in_size(512, 512); + dcp::Size out_size(1024, 1024); list<AVPixelFormat> pix_fmts = { AV_PIX_FMT_RGB24, // 2 @@ -667,8 +667,8 @@ BOOST_AUTO_TEST_CASE (make_black_test) for (auto i: pix_fmts) { auto foo = make_shared<Image>(i, in_size, Image::Alignment::PADDED); - foo->make_black (); - auto bar = foo->scale (out_size, dcp::YUVToRGB::REC601, AV_PIX_FMT_RGB24, Image::Alignment::PADDED, false); + foo->make_black(); + auto bar = foo->scale(out_size, dcp::YUVToRGB::REC601, AV_PIX_FMT_RGB24, Image::Alignment::PADDED, false); uint8_t* p = bar->data()[0]; for (int y = 0; y < bar->size().height; ++y) { @@ -677,7 +677,7 @@ BOOST_AUTO_TEST_CASE (make_black_test) if (*q != 0) { std::cerr << "x=" << x << ", (x % 3)=" << (x % 3) << "\n"; } - BOOST_CHECK_EQUAL (*q++, 0); + BOOST_CHECK_EQUAL(*q++, 0); } p += bar->stride()[0]; } @@ -685,7 +685,7 @@ BOOST_AUTO_TEST_CASE (make_black_test) } -BOOST_AUTO_TEST_CASE (make_part_black_test) +BOOST_AUTO_TEST_CASE(make_part_black_test) { auto proxy = make_shared<FFmpegImageProxy>("test/data/flat_red.png"); auto original = proxy->image(Image::Alignment::PADDED).image; @@ -709,8 +709,8 @@ BOOST_AUTO_TEST_CASE (make_part_black_test) for (auto i: pix_fmts) { for (auto j: positions) { auto foo = original->convert_pixel_format(dcp::YUVToRGB::REC601, i, Image::Alignment::PADDED, false); - foo->make_part_black (j.first, j.second); - auto bar = foo->convert_pixel_format (dcp::YUVToRGB::REC601, AV_PIX_FMT_RGB24, Image::Alignment::PADDED, false); + foo->make_part_black(j.first, j.second); + auto bar = foo->convert_pixel_format(dcp::YUVToRGB::REC601, AV_PIX_FMT_RGB24, Image::Alignment::PADDED, false); auto p = bar->data()[0]; for (int y = 0; y < bar->size().height; ++y) { @@ -720,19 +720,19 @@ BOOST_AUTO_TEST_CASE (make_part_black_test) int g = *q++; int b = *q++; if (x >= j.first && x < (j.first + j.second)) { - BOOST_CHECK_MESSAGE ( + BOOST_CHECK_MESSAGE( r < 3, "red=" << static_cast<int>(r) << " at (" << x << "," << y << ") format " << i << " from " << j.first << " width " << j.second ); } else { - BOOST_CHECK_MESSAGE ( + BOOST_CHECK_MESSAGE( r >= 252, "red=" << static_cast<int>(r) << " at (" << x << "," << y << ") format " << i << " from " << j.first << " width " << j.second ); } - BOOST_CHECK_MESSAGE ( + BOOST_CHECK_MESSAGE( g == 0, "green=" << static_cast<int>(g) << " at (" << x << "," << y << ") format " << i << " from " << j.first << " width " << j.second ); - BOOST_CHECK_MESSAGE ( + BOOST_CHECK_MESSAGE( b == 0, "blue=" << static_cast<int>(b) << " at (" << x << "," << y << ") format " << i << " from " << j.first << " width " << j.second ); } @@ -747,14 +747,27 @@ BOOST_AUTO_TEST_CASE (make_part_black_test) * filler 128x128 black frame is emitted from the FFmpegDecoder and the overall crop in either direction * is greater than 128 pixels. */ -BOOST_AUTO_TEST_CASE (over_crop_test) +BOOST_AUTO_TEST_CASE(over_crop_test) { auto image = make_shared<Image>(AV_PIX_FMT_RGB24, dcp::Size(128, 128), Image::Alignment::PADDED); - image->make_black (); - auto scaled = image->crop_scale_window ( + image->make_black(); + auto scaled = image->crop_scale_window( Crop(0, 0, 128, 128), dcp::Size(1323, 565), dcp::Size(1349, 565), dcp::YUVToRGB::REC709, VideoRange::FULL, AV_PIX_FMT_RGB24, VideoRange::FULL, Image::Alignment::PADDED, true ); string const filename = "over_crop_test.png"; - write_image (scaled, "build/test/" + filename); - check_image ("test/data/" + filename, "build/test/" + filename); + write_image(scaled, "build/test/" + filename); + check_image("test/data/" + filename, "build/test/" + filename); } + + +BOOST_AUTO_TEST_CASE(rgb0_image_test) +{ + auto proxy = make_shared<FFmpegImageProxy>(TestPaths::private_data() / "rgb0.tif"); + write_image( + proxy->image(Image::Alignment::PADDED).image->convert_pixel_format( + dcp::YUVToRGB::REC709, AV_PIX_FMT_RGB24, Image::Alignment::COMPACT, false + ), "build/test/rgb0.png" + ); + check_image(TestPaths::private_data() / "rgb0.png", "build/test/rgb0.png"); +} + diff --git a/test/kdm_cli_test.cc b/test/kdm_cli_test.cc index 4bc3ddf46..4913986f3 100644 --- a/test/kdm_cli_test.cc +++ b/test/kdm_cli_test.cc @@ -364,3 +364,61 @@ BOOST_AUTO_TEST_CASE(kdm_cli_add_dkdm) BOOST_CHECK_EQUAL(dkdm->dkdm().as_xml(), dcp::file_to_string("test/data/dkdm.xml")); } + +BOOST_AUTO_TEST_CASE(kdm_cli_formulation_warning) +{ + vector<string> args = { + "kdm_cli", + "--valid-from", "now", + "--valid-duration", "2 weeks", + "--trusted-device-chain", "test/data/decryption_chain", + "--projector-certificate", "test/data/cert.pem", + "-S", "my great screen", + "-o", "build/test", + "test/data/dkdm.xml" + }; + + boost::filesystem::path const kdm_filename = "build/test/KDM_Test_FTR-1_F-133_XX-XX_MOS_2K_20220109_SMPTE_OV__my_great_screen.xml"; + boost::system::error_code ec; + boost::filesystem::remove(kdm_filename, ec); + + vector<string> output; + auto error = run(args, output); + BOOST_CHECK(!error); + BOOST_REQUIRE_EQUAL(output.size(), 1U); + BOOST_CHECK(output[0].find("the KDM formulation you specified will not write them to the KDM") != std::string::npos); + + BOOST_CHECK(boost::filesystem::exists(kdm_filename)); +} + + +BOOST_AUTO_TEST_CASE(kdm_cli_trusted_device_chain) +{ + vector<string> args = { + "kdm_cli", + "--valid-from", "now", + "--valid-duration", "2 weeks", + "--trusted-device-chain", "test/data/decryption_chain", + "--projector-certificate", "test/data/cert.pem", + "-S", "my great screen", + "-o", "build/test", + "-F", "multiple-modified-transitional-1", + "test/data/dkdm.xml" + }; + + boost::filesystem::path const kdm_filename = "build/test/KDM_Test_FTR-1_F-133_XX-XX_MOS_2K_20220109_SMPTE_OV__my_great_screen.xml"; + boost::system::error_code ec; + boost::filesystem::remove(kdm_filename, ec); + + vector<string> output; + auto error = run(args, output); + BOOST_CHECK(!error); + BOOST_CHECK(output.empty()); + + BOOST_CHECK(boost::filesystem::exists(kdm_filename)); + + dcp::EncryptedKDM kdm(dcp::file_to_string(kdm_filename)); + BOOST_REQUIRE_EQUAL(kdm.trusted_devices().size(), 1U); + BOOST_CHECK_EQUAL(kdm.trusted_devices()[0], "KTEVkrCuEsqjXQSPy/H/lpVC9ys="); +} + diff --git a/test/memory_util_test.cc b/test/memory_util_test.cc new file mode 100644 index 000000000..340ac17fb --- /dev/null +++ b/test/memory_util_test.cc @@ -0,0 +1,72 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "lib/memory_util.h" +#include <boost/test/unit_test.hpp> + + +void check(void* p, int size, uint64_t value) +{ + uint8_t* up = reinterpret_cast<uint8_t*>(p); + for (int i = 0; i < size; ++i) { + BOOST_CHECK_EQUAL(*up++, (value >> (i * 8)) & 0xff); + } +} + + +/** Aligned, multiple of 64 size */ +BOOST_AUTO_TEST_CASE(fill_memory_test1) +{ + int constexpr size = 256; + auto memory = wrapped_av_malloc(size); + BOOST_REQUIRE_EQUAL(reinterpret_cast<uintptr_t>(memory) % 8, 0U); + + fill_memory(memory, size, 0x1928374654abdfea); + check(memory, size, 0x1928374654abdfea); +} + + +/** Aligned, extra bytes at the end */ +BOOST_AUTO_TEST_CASE(fill_memory_test2) +{ + int constexpr size = 259; + + auto memory = wrapped_av_malloc(size); + BOOST_REQUIRE_EQUAL(reinterpret_cast<uintptr_t>(memory) % 8, 0U); + + fill_memory(memory, size, 0x1928374654abdfea); + check(memory, size, 0x1928374654abdfea); +} + + +/** Non-aligned, extra bytes at start and end */ +BOOST_AUTO_TEST_CASE(fill_memory_test3) +{ + int constexpr size = 265; + + auto memory = wrapped_av_malloc(size + 512); + BOOST_REQUIRE_EQUAL(reinterpret_cast<uintptr_t>(memory) % 8, 0U); + memory = reinterpret_cast<void*>(reinterpret_cast<uintptr_t>(memory) + 3); + + fill_memory(memory, size, 0x1928374654abdfea); + check(memory, size, 0x1928374654abdfea); +} + diff --git a/test/packet_queue_test.cc b/test/packet_queue_test.cc new file mode 100644 index 000000000..ae1cc5b22 --- /dev/null +++ b/test/packet_queue_test.cc @@ -0,0 +1,116 @@ +/* + Copyright (C) 2026 Carl Hetherington <cth@carlh.net> + + This file is part of DCP-o-matic. + + DCP-o-matic 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. + + DCP-o-matic 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 DCP-o-matic. If not, see <http://www.gnu.org/licenses/>. + +*/ + + +#include "lib/subtitle_sync_packet_queue.h" +extern "C" { +#include <libavcodec/packet.h> +} +#include <boost/test/unit_test.hpp> + + +BOOST_AUTO_TEST_CASE(subtitle_sync_packet_queue_test) +{ + SubtitleSyncPacketQueue queue; + std::vector<std::pair<AVPacket*, PacketQueue::Type>> expected; + + auto add_video = [&queue, &expected]() { + auto packet = av_packet_alloc(); + queue.add(packet, PacketQueue::Type::VIDEO); + expected.push_back(std::make_pair(packet, PacketQueue::Type::VIDEO)); + return packet; + }; + + auto add_audio = [&queue, &expected]() { + auto packet = av_packet_alloc(); + queue.add(packet, PacketQueue::Type::AUDIO); + expected.push_back(std::make_pair(packet, PacketQueue::Type::AUDIO)); + return packet; + }; + + auto add_subtitle = [&queue]() { + auto packet = av_packet_alloc(); + queue.add(packet, PacketQueue::Type::SUBTITLE); + return packet; + }; + + auto check = [&queue](bool flush, std::pair<AVPacket*, PacketQueue::Type> ref) { + auto check = queue.get(flush); + BOOST_CHECK(check.has_value()); + BOOST_CHECK(boost::get<AVPacket*>(check->first) == ref.first); + BOOST_CHECK(check->second == ref.second); + }; + + for (int i = 0; i < 24; ++i) { + add_video(); + add_audio(); + add_audio(); + } + + BOOST_CHECK(queue.get(false) == boost::none); + + for (int i = 0; i < 23; ++i) { + add_video(); + add_audio(); + add_audio(); + } + + BOOST_CHECK(queue.get(false) == boost::none); + + auto iter = expected.begin(); + + add_video(); + check(false, *iter); + ++iter; + + auto sub1 = add_subtitle(); + auto sub2 = add_subtitle(); + + for (int i = 0; i < 24; ++i) { + add_video(); + add_audio(); + add_audio(); + } + + check(false, { sub1, PacketQueue::Type::SUBTITLE }); + check(false, { sub2, PacketQueue::Type::SUBTITLE }); + + for (int i = 0; i < 24; ++i) { + check(false, *iter); + ++iter; + check(false, *iter); + ++iter; + check(false, *iter); + ++iter; + } + + for (int i = 0; i < 47; ++i) { + check(true, *iter); + BOOST_REQUIRE(iter != expected.end()); + ++iter; + check(true, *iter); + BOOST_REQUIRE(iter != expected.end()); + ++iter; + check(true, *iter); + BOOST_REQUIRE(iter != expected.end()); + ++iter; + } +} + diff --git a/test/render_subtitles_test.cc b/test/render_subtitles_test.cc index 4e87abde0..4fc98cb56 100644 --- a/test/render_subtitles_test.cc +++ b/test/render_subtitles_test.cc @@ -176,8 +176,11 @@ BOOST_AUTO_TEST_CASE(render_text_with_newline_test) #elif defined(DCPOMATIC_WINDOWS) check_image("test/data/windows/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); #elif PANGO_VERSION_CHECK(1, 57, 0) - /* This pango version is the one on Arch, which renders slightly differently */ - check_image("test/data/arch/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); + /* This pango version is the one on Arch and Ubuntu 26.04, both of which render slightly differently */ + BOOST_REQUIRE( + check_image_and_report("test/data/arch/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png") + || check_image_and_report("test/data/ubuntu-26.04/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png") + ); #elif PANGO_VERSION_CHECK(1, 52, 1) /* This pango version is the one on Ubuntu 24.04, which renders slightly differently */ check_image("test/data/ubuntu-24.04/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); diff --git a/test/test.cc b/test/test.cc index 641ee4085..27b00b9d3 100644 --- a/test/test.cc +++ b/test/test.cc @@ -473,6 +473,13 @@ check_image (boost::filesystem::path ref, boost::filesystem::path check, double } +bool +check_image_and_report(boost::filesystem::path ref, boost::filesystem::path check, double threshold) +{ + return rms_error(ref, check) < threshold; +} + + void check_file (boost::filesystem::path ref, boost::filesystem::path check) { diff --git a/test/test.h b/test/test.h index 172edcf71..cd40c7872 100644 --- a/test/test.h +++ b/test/test.h @@ -69,6 +69,7 @@ extern bool mxf_atmos_files_same (boost::filesystem::path ref, boost::filesystem extern void check_xml(boost::filesystem::path, boost::filesystem::path, std::list<Glib::ustring>); extern void check_ffmpeg(boost::filesystem::path, boost::filesystem::path, float audio_tolerance); extern void check_image(boost::filesystem::path ref, boost::filesystem::path check, double threshold = 4); +extern bool check_image_and_report(boost::filesystem::path ref, boost::filesystem::path check, double threshold = 4); extern boost::filesystem::path test_film_dir (std::string); extern void write_image (std::shared_ptr<const Image> image, boost::filesystem::path file); boost::filesystem::path dcp_file (std::shared_ptr<const Film> film, std::string prefix); diff --git a/test/threed_test.cc b/test/threed_test.cc index bc6f83f59..3a8a50a40 100644 --- a/test/threed_test.cc +++ b/test/threed_test.cc @@ -54,54 +54,54 @@ using std::shared_ptr; /** Basic sanity check of THREE_D_LEFT_RIGHT */ -BOOST_AUTO_TEST_CASE (threed_test1) +BOOST_AUTO_TEST_CASE(threed_test1) { auto c = make_shared<FFmpegContent>("test/data/test.mp4"); auto film = new_test_film("threed_test1", { c }); - c->video->set_frame_type (VideoFrameType::THREE_D_LEFT_RIGHT); + c->video->set_frame_type(VideoFrameType::THREE_D_LEFT_RIGHT); - film->set_container (Ratio::from_id ("185")); - film->set_dcp_content_type (DCPContentType::from_isdcf_name ("TST")); - film->set_three_d (true); - make_and_verify_dcp (film); + film->set_container(Ratio::from_id("185")); + film->set_dcp_content_type(DCPContentType::from_isdcf_name("TST")); + film->set_three_d(true); + make_and_verify_dcp(film); } /** Basic sanity check of THREE_D_ALTERNATE; at the moment this is just to make sure * that such a transcode completes without error. */ -BOOST_AUTO_TEST_CASE (threed_test2) +BOOST_AUTO_TEST_CASE(threed_test2) { auto c = make_shared<FFmpegContent>("test/data/test.mp4"); auto film = new_test_film("threed_test2", { c }); - c->video->set_frame_type (VideoFrameType::THREE_D_ALTERNATE); + c->video->set_frame_type(VideoFrameType::THREE_D_ALTERNATE); - film->set_three_d (true); - make_and_verify_dcp (film); + film->set_three_d(true); + make_and_verify_dcp(film); } /** Basic sanity check of THREE_D_LEFT and THREE_D_RIGHT; at the moment this is just to make sure * that such a transcode completes without error. */ -BOOST_AUTO_TEST_CASE (threed_test3) +BOOST_AUTO_TEST_CASE(threed_test3) { auto film = new_test_film("threed_test3"); auto L = make_shared<FFmpegContent>("test/data/test.mp4"); auto R = make_shared<FFmpegContent>("test/data/test.mp4"); film->examine_and_add_content({L, R}); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); - L->video->set_frame_type (VideoFrameType::THREE_D_LEFT); - R->video->set_frame_type (VideoFrameType::THREE_D_RIGHT); + L->video->set_frame_type(VideoFrameType::THREE_D_LEFT); + R->video->set_frame_type(VideoFrameType::THREE_D_RIGHT); - film->set_three_d (true); - make_and_verify_dcp (film); + film->set_three_d(true); + make_and_verify_dcp(film); } -BOOST_AUTO_TEST_CASE (threed_test4) +BOOST_AUTO_TEST_CASE(threed_test4) { ConfigRestorer cr; @@ -109,18 +109,18 @@ BOOST_AUTO_TEST_CASE (threed_test4) auto L = make_shared<FFmpegContent>(TestPaths::private_data() / "LEFT_TEST_DCP3D4K.mov"); auto R = make_shared<FFmpegContent>(TestPaths::private_data() / "RIGHT_TEST_DCP3D4K.mov"); film->examine_and_add_content({L, R}); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); - L->video->set_frame_type (VideoFrameType::THREE_D_LEFT); - R->video->set_frame_type (VideoFrameType::THREE_D_RIGHT); + L->video->set_frame_type(VideoFrameType::THREE_D_LEFT); + R->video->set_frame_type(VideoFrameType::THREE_D_RIGHT); /* There doesn't seem much point in encoding the whole input, especially as we're only * checking for errors during the encode and not the result. Also decoding these files * (4K HQ Prores) is very slow. */ - L->set_trim_end (dcpomatic::ContentTime::from_seconds(22)); - R->set_trim_end (dcpomatic::ContentTime::from_seconds(22)); + L->set_trim_end(dcpomatic::ContentTime::from_seconds(22)); + R->set_trim_end(dcpomatic::ContentTime::from_seconds(22)); - film->set_three_d (true); + film->set_three_d(true); make_and_verify_dcp( film, {dcp::VerificationNote::Code::INVALID_PICTURE_ASSET_RESOLUTION_FOR_3D}, @@ -131,47 +131,47 @@ BOOST_AUTO_TEST_CASE (threed_test4) } -BOOST_AUTO_TEST_CASE (threed_test5) +BOOST_AUTO_TEST_CASE(threed_test5) { auto film = new_test_film("threed_test5"); auto L = make_shared<FFmpegContent>(TestPaths::private_data() / "boon_telly.mkv"); auto R = make_shared<FFmpegContent>(TestPaths::private_data() / "boon_telly.mkv"); film->examine_and_add_content({L, R}); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); - L->video->set_frame_type (VideoFrameType::THREE_D_LEFT); - R->video->set_frame_type (VideoFrameType::THREE_D_RIGHT); + L->video->set_frame_type(VideoFrameType::THREE_D_LEFT); + R->video->set_frame_type(VideoFrameType::THREE_D_RIGHT); /* There doesn't seem much point in encoding the whole input, especially as we're only * checking for errors during the encode and not the result. */ - L->set_trim_end (dcpomatic::ContentTime::from_seconds(3 * 60 + 20)); - R->set_trim_end (dcpomatic::ContentTime::from_seconds(3 * 60 + 20)); + L->set_trim_end(dcpomatic::ContentTime::from_seconds(3 * 60 + 20)); + R->set_trim_end(dcpomatic::ContentTime::from_seconds(3 * 60 + 20)); - film->set_three_d (true); - make_and_verify_dcp (film, {dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_2K}); + film->set_three_d(true); + make_and_verify_dcp(film, {dcp::VerificationNote::Code::INVALID_PICTURE_FRAME_RATE_FOR_2K}); } -BOOST_AUTO_TEST_CASE (threed_test6) +BOOST_AUTO_TEST_CASE(threed_test6) { auto film = new_test_film("threed_test6"); auto L = make_shared<FFmpegContent>("test/data/3dL.mp4"); auto R = make_shared<FFmpegContent>("test/data/3dR.mp4"); film->examine_and_add_content({L, R}); film->set_audio_channels(16); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); - L->video->set_frame_type (VideoFrameType::THREE_D_LEFT); - R->video->set_frame_type (VideoFrameType::THREE_D_RIGHT); + L->video->set_frame_type(VideoFrameType::THREE_D_LEFT); + R->video->set_frame_type(VideoFrameType::THREE_D_RIGHT); - film->set_three_d (true); - make_and_verify_dcp (film); - check_dcp ("test/data/threed_test6", film->dir(film->dcp_name())); + film->set_three_d(true); + make_and_verify_dcp(film); + check_dcp("test/data/threed_test6", film->dir(film->dcp_name())); } /** Check 2D content set as being 3D; this should give an informative error */ -BOOST_AUTO_TEST_CASE (threed_test7) +BOOST_AUTO_TEST_CASE(threed_test7) { using boost::filesystem::path; @@ -179,87 +179,87 @@ BOOST_AUTO_TEST_CASE (threed_test7) path const content_path = "test/data/flat_red.png"; auto c = content_factory(content_path)[0]; film->examine_and_add_content({c}); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); - c->video->set_frame_type (VideoFrameType::THREE_D); - c->video->set_length (24); + c->video->set_frame_type(VideoFrameType::THREE_D); + c->video->set_length(24); - film->set_three_d (true); - make_dcp (film, TranscodeJob::ChangedBehaviour::IGNORE); - film->write_metadata (); + film->set_three_d(true); + make_dcp(film, TranscodeJob::ChangedBehaviour::IGNORE); + film->write_metadata(); - auto jm = JobManager::instance (); - while (jm->work_to_do ()) { + auto jm = JobManager::instance(); + while (jm->work_to_do()) { while (signal_manager->ui_idle()) {} - dcpomatic_sleep_seconds (1); + dcpomatic_sleep_seconds(1); } - while (signal_manager->ui_idle ()) {} + while (signal_manager->ui_idle()) {} - BOOST_REQUIRE (jm->errors()); + BOOST_REQUIRE(jm->errors()); shared_ptr<Job> failed; for (auto i: jm->_jobs) { if (i->finished_in_error()) { - BOOST_REQUIRE (!failed); + BOOST_REQUIRE(!failed); failed = i; } } - BOOST_REQUIRE (failed); - BOOST_CHECK_EQUAL (failed->error_summary(), fmt::format("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 ticking the 3D option in the DCP video tab.", boost::filesystem::canonical(content_path).string())); + BOOST_REQUIRE(failed); + BOOST_CHECK_EQUAL(failed->error_summary(), fmt::format("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 ticking the 3D option in the DCP video tab.", boost::filesystem::canonical(content_path).string())); - while (signal_manager->ui_idle ()) {} + while (signal_manager->ui_idle()) {} - JobManager::drop (); + JobManager::drop(); } /** Trigger a -114 error by trying to make a 3D DCP out of two files with slightly * different lengths. */ -BOOST_AUTO_TEST_CASE (threed_test_separate_files_slightly_different_lengths) +BOOST_AUTO_TEST_CASE(threed_test_separate_files_slightly_different_lengths) { auto film = new_test_film("threed_test3"); auto L = make_shared<FFmpegContent>("test/data/test.mp4"); auto R = make_shared<FFmpegContent>("test/data/test.mp4"); film->examine_and_add_content({L, R}); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); - L->video->set_frame_type (VideoFrameType::THREE_D_LEFT); - R->video->set_frame_type (VideoFrameType::THREE_D_RIGHT); - R->set_trim_end (dcpomatic::ContentTime::from_frames(1, 24)); + L->video->set_frame_type(VideoFrameType::THREE_D_LEFT); + R->video->set_frame_type(VideoFrameType::THREE_D_RIGHT); + R->set_trim_end(dcpomatic::ContentTime::from_frames(1, 24)); - film->set_three_d (true); - make_and_verify_dcp (film); + film->set_three_d(true); + make_and_verify_dcp(film); } /** Trigger a -114 error by trying to make a 3D DCP out of two files with very * different lengths. */ -BOOST_AUTO_TEST_CASE (threed_test_separate_files_very_different_lengths) +BOOST_AUTO_TEST_CASE(threed_test_separate_files_very_different_lengths) { auto film = new_test_film("threed_test3"); auto L = make_shared<FFmpegContent>("test/data/test.mp4"); auto R = make_shared<FFmpegContent>("test/data/test.mp4"); film->examine_and_add_content({L, R}); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); - L->video->set_frame_type (VideoFrameType::THREE_D_LEFT); - R->video->set_frame_type (VideoFrameType::THREE_D_RIGHT); - R->set_trim_end (dcpomatic::ContentTime::from_seconds(1.5)); + L->video->set_frame_type(VideoFrameType::THREE_D_LEFT); + R->video->set_frame_type(VideoFrameType::THREE_D_RIGHT); + R->set_trim_end(dcpomatic::ContentTime::from_seconds(1.5)); - film->set_three_d (true); - make_and_verify_dcp (film); + film->set_three_d(true); + make_and_verify_dcp(film); } -BOOST_AUTO_TEST_CASE (threed_test_butler_overfill) +BOOST_AUTO_TEST_CASE(threed_test_butler_overfill) { auto film = new_test_film("threed_test_butler_overfill"); auto A = make_shared<FFmpegContent>(TestPaths::private_data() / "arrietty_JP-EN.mkv"); auto B = make_shared<FFmpegContent>(TestPaths::private_data() / "arrietty_JP-EN.mkv"); film->examine_and_add_content({A, B}); - BOOST_REQUIRE (!wait_for_jobs()); + BOOST_REQUIRE(!wait_for_jobs()); Player player(film, Image::Alignment::COMPACT, false); int const audio_channels = 2; @@ -279,7 +279,7 @@ BOOST_AUTO_TEST_CASE (threed_test_butler_overfill) butler->get_video(Butler::Behaviour::BLOCKING, &error); butler->get_audio(Butler::Behaviour::BLOCKING, audio.data(), audio_frames); } - BOOST_REQUIRE (error.code == Butler::Error::Code::NONE); + BOOST_REQUIRE(error.code == Butler::Error::Code::NONE); } diff --git a/test/util_test.cc b/test/util_test.cc index defc7f907..ee26cc18c 100644 --- a/test/util_test.cc +++ b/test/util_test.cc @@ -93,11 +93,11 @@ BOOST_AUTO_TEST_CASE(seconds_to_approximate_hms_test) BOOST_AUTO_TEST_CASE(time_to_hmsf_test) { - BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_frames(12, 24), 24), "00:00:00.12"); - BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_frames(24, 24), 24), "00:00:01.00"); - BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_frames(32, 24), 24), "00:00:01.08"); - BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_seconds(92), 24), "00:01:32.00"); - BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_seconds(2 * 60 * 60 + 92), 24), "02:01:32.00"); + BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_frames(12, 24), 24), "00:00:00:12"); + BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_frames(24, 24), 24), "00:00:01:00"); + BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_frames(32, 24), 24), "00:00:01:08"); + BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_seconds(92), 24), "00:01:32:00"); + BOOST_CHECK_EQUAL(time_to_hmsf(DCPTime::from_seconds(2 * 60 * 60 + 92), 24), "02:01:32:00"); } @@ -110,14 +110,6 @@ BOOST_AUTO_TEST_CASE(tidy_for_filename_test) } -BOOST_AUTO_TEST_CASE(utf8_strlen_test) -{ - BOOST_CHECK_EQUAL(utf8_strlen("hello world"), 11U); - BOOST_CHECK_EQUAL(utf8_strlen("hëllo world"), 11U); - BOOST_CHECK_EQUAL(utf8_strlen("hëłlo wørld"), 11U); -} - - BOOST_AUTO_TEST_CASE(careful_string_filter_test) { BOOST_CHECK_EQUAL("hello_world", careful_string_filter("hello_world")); diff --git a/test/vf_test.cc b/test/vf_test.cc index 9c7ff65be..29b9913fd 100644 --- a/test/vf_test.cc +++ b/test/vf_test.cc @@ -592,3 +592,99 @@ BOOST_AUTO_TEST_CASE(vf_subs_get_font_from_ov) auto vf_font = find_file(*font_dir, "font"); check_file("test/data/Inconsolata-VF.ttf", vf_font); } + + +/** CCAPs in OVs would not correctly be referred to as we'd incorrectly create an + * empty filler CCAP asset. + */ +BOOST_AUTO_TEST_CASE(vf_referring_to_ov_ccap_test) +{ + auto picture = content_factory("test/data/flat_red.png")[0]; + auto ccap = content_factory("test/data/short.srt")[0]; + auto ov = new_test_film("vf_referring_to_ov_ccap_test_ov", { picture, ccap }); + ccap->only_text()->set_use(true); + ccap->only_text()->set_type(TextType::CLOSED_CAPTION); + ccap->only_text()->set_dcp_track(DCPTextTrack("First track", dcp::LanguageTag("fr"))); + make_and_verify_dcp(ov, { dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME }); + + auto ov_dcp = make_shared<DCPContent>(ov->dir(ov->dcp_name())); + auto subs = content_factory("test/data/short.srt")[0]; + auto vf = new_test_film("vf_referring_to_ov_ccap_test_vf", { ov_dcp, subs }); + vf->set_reel_type(ReelType::BY_VIDEO_CONTENT); + ov_dcp->set_reference_video(true); + ov_dcp->set_reference_audio(true); + ov_dcp->set_reference_text(TextType::CLOSED_CAPTION, true); + subs->only_text()->set_use(true); + subs->only_text()->set_type(TextType::OPEN_SUBTITLE); + subs->set_position(vf, dcpomatic::DCPTime()); + vf->write_metadata(); + make_dcp(vf, TranscodeJob::ChangedBehaviour::IGNORE); + BOOST_REQUIRE(!wait_for_jobs()); + + dcp::DCP ov_check(ov->dir(ov->dcp_name())); + ov_check.read(); + dcp::DCP vf_check(vf->dir(vf->dcp_name())); + vf_check.read(); + + BOOST_REQUIRE_EQUAL(ov_check.cpls().size(), 1U); + BOOST_REQUIRE_EQUAL(vf_check.cpls().size(), 1U); + BOOST_REQUIRE_EQUAL(ov_check.cpls()[0]->reels().size(), 1U); + BOOST_REQUIRE_EQUAL(vf_check.cpls()[0]->reels().size(), 1U); + BOOST_REQUIRE_EQUAL(ov_check.cpls()[0]->reels()[0]->closed_captions().size(), 1U); + BOOST_REQUIRE_EQUAL(vf_check.cpls()[0]->reels()[0]->closed_captions().size(), 1U); + + BOOST_CHECK_EQUAL( + ov_check.cpls()[0]->reels()[0]->closed_captions()[0]->id(), + vf_check.cpls()[0]->reels()[0]->closed_captions()[0]->id() + ); +} + + +/** Check that in a VF we can have a CCAP reel which refers to the OV and another + * which is an auto-created filler. + */ +BOOST_AUTO_TEST_CASE(ccaps_can_be_referred_and_filled_test) +{ + auto picture = content_factory("test/data/flat_red.png")[0]; + auto ccap = content_factory("test/data/short.srt")[0]; + auto ov = new_test_film("ccaps_can_be_referred_and_filled_test_ov", { picture, ccap }); + ccap->only_text()->set_use(true); + ccap->only_text()->set_type(TextType::CLOSED_CAPTION); + ccap->only_text()->set_dcp_track(DCPTextTrack("First track", dcp::LanguageTag("fr"))); + make_and_verify_dcp(ov, { dcp::VerificationNote::Code::INVALID_SUBTITLE_FIRST_TEXT_TIME }); + + auto ov_dcp = make_shared<DCPContent>(ov->dir(ov->dcp_name())); + auto subs = content_factory("test/data/short.srt")[0]; + auto vf = new_test_film("ccaps_can_be_referred_and_filled_test_vf", { ov_dcp, subs, picture }); + vf->set_reel_type(ReelType::BY_VIDEO_CONTENT); + ov_dcp->set_reference_video(true); + ov_dcp->set_reference_audio(true); + ov_dcp->set_reference_text(TextType::CLOSED_CAPTION, true); + subs->only_text()->set_use(true); + subs->only_text()->set_type(TextType::OPEN_SUBTITLE); + subs->set_position(vf, dcpomatic::DCPTime()); + vf->write_metadata(); + make_dcp(vf, TranscodeJob::ChangedBehaviour::IGNORE); + BOOST_REQUIRE(!wait_for_jobs()); + + dcp::DCP ov_check(ov->dir(ov->dcp_name())); + ov_check.read(); + dcp::DCP vf_check(vf->dir(vf->dcp_name())); + vf_check.read(); + + BOOST_REQUIRE_EQUAL(ov_check.cpls().size(), 1U); + BOOST_REQUIRE_EQUAL(vf_check.cpls().size(), 1U); + BOOST_REQUIRE_EQUAL(ov_check.cpls()[0]->reels().size(), 1U); + BOOST_REQUIRE_EQUAL(vf_check.cpls()[0]->reels().size(), 2U); + + BOOST_REQUIRE_EQUAL(ov_check.cpls()[0]->reels()[0]->closed_captions().size(), 1U); + BOOST_REQUIRE_EQUAL(vf_check.cpls()[0]->reels()[0]->closed_captions().size(), 1U); + + BOOST_CHECK_EQUAL( + ov_check.cpls()[0]->reels()[0]->closed_captions()[0]->id(), + vf_check.cpls()[0]->reels()[0]->closed_captions()[0]->id() + ); + + BOOST_REQUIRE_EQUAL(vf_check.cpls()[0]->reels()[1]->closed_captions().size(), 1U); +} + diff --git a/test/wscript b/test/wscript index 1390beebb..3c8e2229a 100644 --- a/test/wscript +++ b/test/wscript @@ -136,11 +136,13 @@ def build(bld): markers_test.cc map_cli_test.cc mca_subdescriptors_test.cc + memory_util_test.cc mpeg2_dcp_test.cc no_use_video_test.cc open_caption_test.cc optimise_stills_test.cc overlap_video_test.cc + packet_queue_test.cc pixel_formats_test.cc player_test.cc playlist_test.cc @@ -402,7 +402,7 @@ def configure(conf): check_via_pkg_config(conf, 'libdcp-1.0', 'DCP', mandatory=True, static=True, minimum_version=libdcp_version) conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP] conf.env.STLIB_DCP = ['dcp-1.0', 'asdcp-dcpomatic', 'kumu-dcpomatic', 'openjp2'] - conf.env.LIB_DCP = ['glibmm-' + conf.env.GLIBMM_API, 'ssl', 'crypto', 'bz2', 'xslt', 'xerces-c', 'fmt', 'hpdf'] + conf.env.LIB_DCP = ['glibmm-' + conf.env.GLIBMM_API, 'ssl', 'crypto', 'bz2', 'xslt', 'xerces-c', 'fmt', 'hpdf', 'xml2'] else: check_via_pkg_config(conf, 'libdcp-1.0', 'DCP', mandatory=True, static=False, minimum_version=libdcp_version) conf.env.DEFINES_DCP = [f.replace('\\', '') for f in conf.env.DEFINES_DCP] @@ -766,6 +766,7 @@ def build(bld): bld.recurse('src') bld.recurse('graphics') bld.recurse('web') + bld.recurse('benchmark') if not bld.env.DISABLE_TESTS: bld.recurse('test') |
