@@ -210,7 +210,7 @@ ByteVector Matroska::Tag::render()
210210 auto targetTypeValue = frontTag->targetTypeValue ();
211211 auto tag = new EBML::MasterElement (EBML::ElementIDs::MkTag);
212212
213- // Build <Tag Targets element>
213+ // Build <Tag Targets> element
214214 auto targets = new EBML::MasterElement (EBML::ElementIDs::MkTagTargets);
215215 if (targetTypeValue != Matroska::SimpleTag::TargetTypeValue::None) {
216216 auto element = new EBML::UIntElement (EBML::ElementIDs::MkTagTargetTypeValue);
@@ -226,6 +226,7 @@ ByteVector Matroska::Tag::render()
226226 tagName->setValue (simpleTag->name ());
227227 t->appendElement (tagName);
228228
229+ // Tag Value
229230 Matroska::SimpleTagString *tStr = nullptr ;
230231 Matroska::SimpleTagBinary *tBin = nullptr ;
231232 if ((tStr = dynamic_cast <Matroska::SimpleTagString*>(simpleTag))) {
@@ -237,7 +238,17 @@ ByteVector Matroska::Tag::render()
237238 // Todo
238239 }
239240
240- // Todo: language
241+ // Language
242+ auto language = new EBML::Latin1StringElement (EBML::ElementIDs::MkTagsTagLanguage);
243+ const String &lang = simpleTag->language ();
244+ language->setValue (!lang.isEmpty () ? lang : " und" );
245+ t->appendElement (language);
246+
247+ // Default language flag
248+ auto dlf = new EBML::UIntElement (EBML::ElementIDs::MkTagsLanguageDefault);
249+ dlf->setValue (simpleTag->defaultLanguageFlag () ? 1 : 0 );
250+ t->appendElement (dlf);
251+
241252 tag->appendElement (t);
242253 }
243254 tags.appendElement (tag);
0 commit comments