diff --git a/picard/mbxml.py b/picard/mbxml.py index 83e575ef04..3d47e535b7 100644 --- a/picard/mbxml.py +++ b/picard/mbxml.py @@ -278,6 +278,8 @@ def track_to_metadata(node, track): m.length = int(nodes[0].text) elif name == 'artist_credit': artist_credit_to_metadata(nodes[0], m) + if config.setting["language_from_release"] and 'language' not in m and '~releaselanguage' in m: + m.add_unique("language", m['~releaselanguage']) m['~length'] = format_time(m.length) diff --git a/picard/ui/options/metadata.py b/picard/ui/options/metadata.py index a880ac366e..fa57c1bc17 100644 --- a/picard/ui/options/metadata.py +++ b/picard/ui/options/metadata.py @@ -41,6 +41,7 @@ class MetadataOptionsPage(OptionsPage): config.BoolOption("setting", "folksonomy_tags", False), config.BoolOption("setting", "convert_punctuation", True), config.BoolOption("setting", "standardize_artists", False), + config.BoolOption("setting", "language_from_release", False), ] def __init__(self, parent=None): @@ -70,6 +71,7 @@ def load(self): self.ui.va_name.setText(config.setting["va_name"]) self.ui.nat_name.setText(config.setting["nat_name"]) self.ui.standardize_artists.setChecked(config.setting["standardize_artists"]) + self.ui.language_from_release.setChecked(config.setting["language_from_release"]) def save(self): config.setting["translate_artist_names"] = self.ui.translate_artist_names.isChecked() @@ -85,6 +87,7 @@ def save(self): if self.tagger.nats is not None: self.tagger.nats.update() config.setting["standardize_artists"] = self.ui.standardize_artists.isChecked() + config.setting["language_from_release"] = self.ui.language_from_release.isChecked() def set_va_name_default(self): self.ui.va_name.setText(self.options[0].default) diff --git a/picard/ui/ui_options_metadata.py b/picard/ui/ui_options_metadata.py index 15f0d06594..1eb4860f24 100644 --- a/picard/ui/ui_options_metadata.py +++ b/picard/ui/ui_options_metadata.py @@ -36,6 +36,9 @@ def setupUi(self, MetadataOptionsPage): self.standardize_artists = QtGui.QCheckBox(self.metadata_groupbox) self.standardize_artists.setObjectName(_fromUtf8("standardize_artists")) self.verticalLayout_3.addWidget(self.standardize_artists) + self.language_from_release = QtGui.QCheckBox(self.metadata_groupbox) + self.language_from_release.setObjectName(_fromUtf8("language_from_release")) + self.verticalLayout_3.addWidget(self.language_from_release) self.convert_punctuation = QtGui.QCheckBox(self.metadata_groupbox) self.convert_punctuation.setObjectName(_fromUtf8("convert_punctuation")) self.verticalLayout_3.addWidget(self.convert_punctuation) @@ -88,7 +91,8 @@ def setupUi(self, MetadataOptionsPage): QtCore.QMetaObject.connectSlotsByName(MetadataOptionsPage) MetadataOptionsPage.setTabOrder(self.translate_artist_names, self.artist_locale) MetadataOptionsPage.setTabOrder(self.artist_locale, self.standardize_artists) - MetadataOptionsPage.setTabOrder(self.standardize_artists, self.convert_punctuation) + MetadataOptionsPage.setTabOrder(self.standardize_artists, self.language_from_release) + MetadataOptionsPage.setTabOrder(self.language_from_release, self.convert_punctuation) MetadataOptionsPage.setTabOrder(self.convert_punctuation, self.release_ars) MetadataOptionsPage.setTabOrder(self.release_ars, self.track_ars) MetadataOptionsPage.setTabOrder(self.track_ars, self.folksonomy_tags) @@ -101,6 +105,7 @@ def retranslateUi(self, MetadataOptionsPage): self.metadata_groupbox.setTitle(_("Metadata")) self.translate_artist_names.setText(_("Translate artist names to this locale where possible:")) self.standardize_artists.setText(_("Use standardized artist names")) + self.language_from_release.setText(_("Use the release language as fallback for tracks")) self.convert_punctuation.setText(_("Convert Unicode punctuation characters to ASCII")) self.release_ars.setText(_("Use release relationships")) self.track_ars.setText(_("Use track relationships")) diff --git a/test/test_mbxml.py b/test/test_mbxml.py index 2739a06eaf..d94d846cc6 100644 --- a/test/test_mbxml.py +++ b/test/test_mbxml.py @@ -16,6 +16,7 @@ "standardize_tracks": False, "standardize_artists": False, "standardize_releases": False, + "language_from_release": False, "translate_artist_names": False } diff --git a/ui/options_metadata.ui b/ui/options_metadata.ui index c9ba4308bc..e8daf3f284 100644 --- a/ui/options_metadata.ui +++ b/ui/options_metadata.ui @@ -49,6 +49,13 @@ + + + + Use the release language as fallback for tracks + + + @@ -166,6 +173,7 @@ translate_artist_names artist_locale standardize_artists + language_from_release convert_punctuation release_ars track_ars