more i18n fixes, this time removing a hack that broke i18n in bundles, and also only initializing NLS stuff if ENABLE_NLS is in effect. note that if translations are disabled by the user, we set the localedir used to look for message catalogs to a dir that is assumed to not exist (/this/cannot/exist) which should block all translation from happening.

git-svn-id: svn://localhost/ardour2/branches/3.0@13975 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Paul Davis 2013-01-23 16:09:10 +00:00
parent 9d29fb8e0a
commit a8bf2e9402
4 changed files with 36 additions and 34 deletions

View file

@ -148,14 +148,22 @@ fixup_bundle_environment (int, char* [])
bundle_dir = Glib::path_get_dirname (exec_dir); bundle_dir = Glib::path_get_dirname (exec_dir);
/* force localedir into the bundle */ #ifdef ENABLE_NLS
if (ARDOUR::translations_are_disabled ()) {
vector<string> lpath; localedir = "/this/cannot/exist";
lpath.push_back (bundle_dir); export_search_path (bundle_dir, "GTK_LOCALEDIR", "/Resources/locale");
lpath.push_back ("share"); } else {
lpath.push_back ("locale"); /* force localedir into the bundle */
localedir = strdup (Glib::build_filename (lpath).c_str());
vector<string> lpath;
lpath.push_back (bundle_dir);
lpath.push_back ("share");
lpath.push_back ("locale");
localedir = strdup (Glib::build_filename (lpath).c_str());
export_search_path (bundle_dir, "GTK_LOCALEDIR", "/Resources/locale");
}
#endif
export_search_path (bundle_dir, "ARDOUR_DLL_PATH", "/lib"); export_search_path (bundle_dir, "ARDOUR_DLL_PATH", "/lib");
/* inside an OS X .app bundle, there is no difference /* inside an OS X .app bundle, there is no difference
@ -177,10 +185,6 @@ fixup_bundle_environment (int, char* [])
unsetenv ("GTK_RC_FILES"); unsetenv ("GTK_RC_FILES");
if (!ARDOUR::translations_are_disabled ()) {
export_search_path (bundle_dir, "GTK_LOCALEDIR", "/Resources/locale");
}
/* write a pango.rc file and tell pango to use it. we'd love /* write a pango.rc file and tell pango to use it. we'd love
to put this into the PROGRAM_NAME.app bundle and leave it there, to put this into the PROGRAM_NAME.app bundle and leave it there,
but the user may not have write permission. so ... but the user may not have write permission. so ...
@ -232,13 +236,20 @@ fixup_bundle_environment (int /*argc*/, char* argv[])
std::string dir_path = Glib::path_get_dirname (Glib::path_get_dirname (argv[0])); std::string dir_path = Glib::path_get_dirname (Glib::path_get_dirname (argv[0]));
std::string userconfigdir = user_config_directory(); std::string userconfigdir = user_config_directory();
/* force localedir into the bundle */ #ifdef ENABLE_NLS
if (ARDOUR::translations_are_disabled ()) {
vector<string> lpath; localedir = "/this/cannot/exist";
lpath.push_back (dir_path); export_search_path (dir_path, "GTK_LOCALEDIR", "/this/cannot/exist");
lpath.push_back ("share"); } else {
lpath.push_back ("locale"); /* force localedir into the bundle */
localedir = realpath (Glib::build_filename (lpath).c_str(), NULL); vector<string> lpath;
lpath.push_back (dir_path);
lpath.push_back ("share");
lpath.push_back ("locale");
localedir = realpath (Glib::build_filename (lpath).c_str(), NULL);
export_search_path (dir_path, "GTK_LOCALEDIR", "/share/locale");
}
#endif
/* note that this function is POSIX/Linux specific, so using / as /* note that this function is POSIX/Linux specific, so using / as
a dir separator in this context is just fine. a dir separator in this context is just fine.
@ -259,10 +270,6 @@ fixup_bundle_environment (int /*argc*/, char* argv[])
unsetenv ("GTK_RC_FILES"); unsetenv ("GTK_RC_FILES");
if (!ARDOUR::translations_are_disabled ()) {
export_search_path (dir_path, "GTK_LOCALEDIR", "/share/locale");
}
/* Tell fontconfig where to find fonts.conf. Use the system version /* Tell fontconfig where to find fonts.conf. Use the system version
if it exists, otherwise use the stuff we included in the bundle if it exists, otherwise use the stuff we included in the bundle
*/ */
@ -388,7 +395,9 @@ int main (int argc, char *argv[])
Glib::thread_init(); Glib::thread_init();
} }
#ifdef ENABLE_NLS
gtk_set_locale (); gtk_set_locale ();
#endif
#ifdef WINDOWS_VST_SUPPORT #ifdef WINDOWS_VST_SUPPORT
/* this does some magic that is needed to make GTK and Wine's own /* this does some magic that is needed to make GTK and Wine's own
@ -406,7 +415,6 @@ int main (int argc, char *argv[])
we use that when handling them. we use that when handling them.
*/ */
(void) bind_textdomain_codeset (PACKAGE,"UTF-8"); (void) bind_textdomain_codeset (PACKAGE,"UTF-8");
(void) textdomain (PACKAGE);
#endif #endif
pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0); pthread_setcanceltype (PTHREAD_CANCEL_ASYNCHRONOUS, 0);

View file

@ -224,7 +224,9 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir
// this really should be in PBD::init..if there was one // this really should be in PBD::init..if there was one
Gio::init (); Gio::init ();
#ifdef ENABLE_NLS
(void) bindtextdomain(PACKAGE, localedir); (void) bindtextdomain(PACKAGE, localedir);
#endif
PBD::ID::init (); PBD::ID::init ();
SessionEvent::init_event_pool (); SessionEvent::init_event_pool ();

View file

@ -39,8 +39,9 @@ using namespace std;
void void
Gtkmm2ext::init (const char* localedir) Gtkmm2ext::init (const char* localedir)
{ {
// Necessary for gettext #ifdef ENABLE_NLS
(void) bindtextdomain(PACKAGE, localedir); (void) bindtextdomain(PACKAGE, localedir);
#endif
} }
void void

View file

@ -51,15 +51,6 @@ export LD_LIBRARY_PATH=$INSTALL_DIR/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}
sed "s?@ROOTDIR@/modules?$LIB_DIR/modules?" < $ETC_DIR/pango.modules.in > $USER_ARDOUR_DIR/pango.modules sed "s?@ROOTDIR@/modules?$LIB_DIR/modules?" < $ETC_DIR/pango.modules.in > $USER_ARDOUR_DIR/pango.modules
sed "s?@ROOTDIR@/loaders?$LIB_DIR/loaders?" < $ETC_DIR/gdk-pixbuf.loaders.in > $USER_ARDOUR_DIR/gdk-pixbuf.loaders sed "s?@ROOTDIR@/loaders?$LIB_DIR/loaders?" < $ETC_DIR/gdk-pixbuf.loaders.in > $USER_ARDOUR_DIR/gdk-pixbuf.loaders
# Hack to fix i18n issue where the grid button gets translated even when translations are disabled.
if [ ! -e $USER_ARDOUR_DIR/.love_is_the_language_of_audio ]; then
# Translations are disabled. Force english
export LANG=C
fi
if [ "T" = "$DEBUG" ]; then if [ "T" = "$DEBUG" ]; then
export ARDOUR_INSIDE_GDB=1 export ARDOUR_INSIDE_GDB=1
exec gdb $INSTALL_DIR/bin/ardour-3.0 exec gdb $INSTALL_DIR/bin/ardour-3.0