Non-exposed but working language config option.
authorCarl Hetherington <cth@carlh.net>
Thu, 7 Mar 2013 23:48:31 +0000 (23:48 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 7 Mar 2013 23:48:31 +0000 (23:48 +0000)
src/lib/config.cc
src/lib/config.h
src/tools/dvdomatic.cc

index f5273b8753977449fc3334af769e35cf491a8ef1..ad132437a02ac0b47707c659455a1eeda107687c 100644 (file)
@@ -94,6 +94,8 @@ Config::Config ()
                        _tms_password = v;
                } else if (k == N_("sound_processor")) {
                        _sound_processor = SoundProcessor::from_id (v);
+               } else if (k == "language") {
+                       _language = v;
                }
 
                _default_dci_metadata.read (k, v);
@@ -128,8 +130,11 @@ Config::write () const
        ofstream f (file().c_str ());
        f << N_("num_local_encoding_threads ") << _num_local_encoding_threads << N_("\n")
          << N_("default_directory ") << _default_directory << N_("\n")
-         << N_("server_port ") << _server_port << N_("\n")
-         << N_("reference_scaler ") << _reference_scaler->id () << N_("\n");
+         << N_("server_port ") << _server_port << N_("\n");
+
+       if (_reference_scaler) {
+               f << "reference_scaler " << _reference_scaler->id () << "\n";
+       }
 
        for (vector<Filter const *>::const_iterator i = _reference_filters.begin(); i != _reference_filters.end(); ++i) {
                f << N_("reference_filter ") << (*i)->id () << N_("\n");
@@ -143,7 +148,12 @@ Config::write () const
        f << N_("tms_path ") << _tms_path << N_("\n");
        f << N_("tms_user ") << _tms_user << N_("\n");
        f << N_("tms_password ") << _tms_password << N_("\n");
-       f << N_("sound_processor ") << _sound_processor->id () << N_("\n");
+       if (_sound_processor) {
+               f << "sound_processor " << _sound_processor->id () << "\n";
+       }
+       if (_language) {
+               f << "language " << _language.get() << "\n";
+       }
 
        _default_dci_metadata.write (f);
 }
index fed297ad00f91018029f3b51b214bbf3b46c3bfd..0e9c4a60aed4ade7c699b949823625ddedf7bdfa 100644 (file)
@@ -103,6 +103,10 @@ public:
                return _default_dci_metadata;
        }
 
+       boost::optional<std::string> language () const {
+               return _language;
+       }
+
        /** @param n New number of local encoding threads */
        void set_num_local_encoding_threads (int n) {
                _num_local_encoding_threads = n;
@@ -157,6 +161,10 @@ public:
        void set_default_dci_metadata (DCIMetadata d) {
                _default_dci_metadata = d;
        }
+
+       void set_language (std::string l) {
+               _language = l;
+       }
        
        void write () const;
 
@@ -192,6 +200,7 @@ private:
        std::list<int> _allowed_dcp_frame_rates;
        /** Default DCI metadata for newly-created Films */
        DCIMetadata _default_dci_metadata;
+       boost::optional<std::string> _language;
 
        /** Singleton instance, or 0 */
        static Config* _instance;
index 741498c47970e44c662eeb7a0e02588c8e4a100f..d089750614fbcf23b4bf2a6ca9a4817f3dd311a7 100644 (file)
@@ -444,6 +444,11 @@ void
 setup_i18n ()
 {
        int language = wxLANGUAGE_DEFAULT;
+
+       if (Config::instance()->language()) {
+               wxLanguageInfo const * li = wxLocale::FindLanguageInfo (std_to_wx (Config::instance()->language().get()));
+               language = li->Language;
+       }
  
        if (wxLocale::IsAvailable (language)) {
                locale = new wxLocale (language, wxLOCALE_LOAD_DEFAULT);