Ha! After studying a lot of code found on the internet, remembering what HGM
taught me, learning a little more how things work, plus some very lucky guess
work of my own, I found a working solution to my problem!
In gtk/xboard.c:
#ifdef ENABLE_NLS
// if (appData.debugMode) {
// fprintf(debugFP, "locale = %s\n", setlocale(LC_ALL, NULL));
// }
+ #ifdef __APPLE__
+ char *res_path;
+ res_path = gtkosx_application_get_resource_path ();
+ #undef LOCALEDIR
+ #define LOCALEDIR g_strconcat (res_path, "/share/locale", NULL ) // redefine
localedir for OSX bundle
+ #endif
bindtextdomain(PACKAGE, LOCALEDIR);
bind_textdomain_codeset(PACKAGE, "UTF-8"); // needed when creating markup
for the clocks
textdomain(PACKAGE);
#endif
Not bad for someone who doesn’t know coding. :-)
HGM, I’m sure you have a better solution with the systems in place, whenever
you get around to it for 4.8.1.
Regards,
Josh Pettus
On 05.10.2014, at 01:55 vorm., Joshua Pettus <[email protected]> wrote:
> Hmm, Well I clearly don’t have a clue as to what I’m doing
> I added these lines to xboard.c main() (mimicking what HGM did for SVGDIR) I
> know they would have to be put in ifdef ENABLE_NLS but I just want it working.
>
> #ifdef __APPLE__
> { // prepare to catch OX OpenFile signal, which will tell us the
> clicked file
> char *path = gtkosx_application_get_bundle_path();
> theApp = g_object_new(GTKOSX_TYPE_APPLICATION, NULL);
> strncpy(dataDir, path, MSG_SIZ);
> snprintf(masterSettings, MSG_SIZ,
> "%s/Contents/Resources/etc/xboard.conf", path);
> snprintf(svgDir, MSG_SIZ,
> "%s/Contents/Resources/share/xboard/themes/default", path);
> + char localeDir[MSG_SIZ] = LOCALEDIR;
> + snprintf(localeDir, MSG_SIZ, "%s/Contents/Resources/share/locale", path);
> suppress = (argc == 1 || argc > 1 && argv[1][00] != '-'); // OSX sends
> signal even if name was already argv[1]!
> g_signal_connect(theApp, "NSApplicationOpenFile",
> G_CALLBACK(StartNewXBoard), NULL);
> // we must call application ready before we can get the signal,
> // and supply a (dummy) menu bar before that, to avoid problems with
> dual apples in it
> gtkosx_application_set_menu_bar(theApp,
> GTK_MENU_SHELL(gtk_menu_bar_new()));
> gtkosx_application_ready(theApp);
> if(argc == 1) { // called without args: OSX open-file
> signal might follow
> static char *fakeArgv[3] = {NULL, clickedFile, NULL};
> usleep(10000); // wait 10 msec (and hope this is long
> enough).
> while(gtk_events_pending())
> gtk_main_iteration(); // process all events that came in
> upto now
> suppress = 0; // future open-file signals should
> start new instance
> if(clickedFile[0]) { // we were sent an open-file signal
> with filename!
> fakeArgv[0] = argv[0];
> argc = 2; argv = fakeArgv; // fake that we were called as "xboard
> filename"
> }
> }
> }
> #endif
>
> knowing that below there is
>
> bindtextdomain(PACKAGE, LOCALEDIR);
>
> and to xboard.h
>
> + extern char localeDir[];
>
> It compiles but it doesn’t find the locale folder like I hoped…
>
> Any ideas, or is what I’m doing complete gibberish?
> -Josh
>
>
>
> On 04.10.2014, at 11:14 nachm., Joshua Pettus <[email protected]> wrote:
>
>> I see, it’s a form of Cantonese. I could attempt to make a folder for that.
>> Can’t tell you how useable that would be. :)
>> Google Translate doesn’t have it. I found this site though:
>>
>> http://www.cantonese.sheik.co.uk/scripts/wordsearch.php?level=0
>>
>>
>>
>> On Oct 4, 2014, at 9:39 PM, Tim Mann <[email protected]> wrote:
>>
>>> For what it's worth, a little googling tells me that zh_HK is Hong Kong
>>> Chinese.
>>>
>>> On Sat, Oct 4, 2014 at 12:27 PM, Joshua Pettus <[email protected]> wrote:
>>>> Even if we cant get the code in for 4.8, I kinda would still like to have
>>>> localization in the app bundle for the release, if that’s ok.
>>>>
>>>> Josh
>>>>
>>>> On Oct 3, 2014, at 1:55 AM, Joshua Pettus <[email protected]> wrote:
>>>>
>>>>> Hi Harm,
>>>>>
>>>>> I wanted to let you know that I can have gettext working in the mac app.
>>>>> Turns out, all we needed was to compile xboard with NLS and we were good.
>>>>> Xboard of course checks the LOCALEDIR which is originally set to
>>>>> /usr/local/share/locale in the makefile. I was hoping we could hardcode
>>>>> it for the Xboard.app to be DataDir/Contents/Resources/share/locale in a
>>>>> way similar to what we did with SVGDIR.
>>>>>
>>>>> There was an extra hurdle regarding the gtkmacintegration library with
>>>>> the Application (Xboard) menu, which requires to be localized separately
>>>>> by OSX. Namely a bunch of language.lproj folders with
>>>>> Gtkosxapplication.strings files in the app’s resource folder with each
>>>>> string for the menu items. On the gtk-osx-users-list email list we
>>>>> managed to squash a library bug stoping this from working for us
>>>>> properly. I also updated those .string files that came with the library
>>>>> accordingly, so we now have a matching language folder for every language
>>>>> we have with gettext. Except for zh_HK, which I have no idea what that is.
>>>>>
>>>>> There is one more problem though. “About Xboard” was moved from the help
>>>>> menu to the Xboard menu. John Ralls said that moved menu items need to be
>>>>> handled by gettext, but for some reason this is never translated by
>>>>> gettext. Anything we can do to restore this?
>>>>>
>>>>> Thanks!
>>>>> Josh Pettus
>>>>
>>>>
>>
>