Subtitle language handling tweaks; write multiple subtitle languages
[dcpomatic.git] / src / lib / writer.cc
index 346cbb0c26cdbdd8ee03eda3c3683de58f1971cb..a9700f4f5edbbb7272e2ed2735c56f74cd2535b3 100644 (file)
@@ -620,6 +620,11 @@ Writer::finish ()
        cpl->set_main_picture_stored_area (_film->frame_size());
        cpl->set_main_picture_active_area (_film->active_area());
 
+       vector<dcp::LanguageTag> sl = _film->subtitle_languages();
+       if (sl.size() > 1) {
+               cpl->set_additional_subtitle_languages(std::vector<dcp::LanguageTag>(sl.begin() + 1, sl.end()));
+       }
+
        shared_ptr<const dcp::CertificateChain> signer;
        signer = Config::instance()->signer_chain ();
        /* We did check earlier, but check again here to be on the safe side */
@@ -660,15 +665,12 @@ Writer::write_cover_sheet ()
        boost::algorithm::replace_all (text, "$CONTAINER", _film->container()->container_nickname());
        boost::algorithm::replace_all (text, "$AUDIO_LANGUAGE", _film->isdcf_metadata().audio_language);
 
-       optional<string> subtitle_language;
-       BOOST_FOREACH (shared_ptr<Content> i, _film->content()) {
-               BOOST_FOREACH (shared_ptr<TextContent> j, i->text) {
-                       if (j->type() == TEXT_OPEN_SUBTITLE && j->use()) {
-                               subtitle_language = j->language ();
-                       }
-               }
+       vector<dcp::LanguageTag> subtitle_languages = _film->subtitle_languages();
+       if (subtitle_languages.empty()) {
+               boost::algorithm::replace_all (text, "$SUBTITLE_LANGUAGE", "None");
+       } else {
+               boost::algorithm::replace_all (text, "$SUBTITLE_LANGUAGE", subtitle_languages.front().description());
        }
-       boost::algorithm::replace_all (text, "$SUBTITLE_LANGUAGE", subtitle_language.get_value_or("None"));
 
        boost::uintmax_t size = 0;
        for (