Thanks, Troy. This is helpful!
I'll look into this tomorrow.

Best regards,
Tobias

On 5/15/20 8:22 PM, Troy A. Griffitts wrote:

Sorry, I forgot to respond to this.

Yes, you can have a look at sword/tests/parsekey.cpp

But basically, while you can directly use LocaleMgr to translate any strings, even strings in your application if you augment SWORD's locale's with your application string with something like:

LocaleMgr::getSystemLocaleMgr()->loadConfigDir(SWBuf("~/.myapp/locales.d");

.. only the [Text] section is used directly for the translate method.  E.g., if your application has some strings you'd like to add to SWORD's translatable strings, for German, you might add a file:

# ~/.myapp/locales.d/de-utf8.conf
#

[Meta]
Name=de
Description=Deutsch (Unicode)
Encoding=UTF-8
Contributor=Justin Bellars <jbell...@gmail.com>
Contributor=Ulrich Schmid <schmid...@googlemail.com>

[Text]
View=Abrufen
Bibles=Bibeln
Language Assist=Sprachförderung
Commentary Assist=Kommentarförderung
Verse Study=Vers-für-Vers-Analyse
Bookmarks=Lesezeichen

...

Any strings in this section will be available to LocaleMgr's translate method, including all the ones that come default with SWORD.

The other sections (sections besides [Text] in SWORD's locale files are not specifically for directly translation.  They are used by SWORD's verse parser VerseKey translation, etc.

The typically way an app uses all this is (not usually all in one place each time they want a translated book name, but for ordering purposes all in one place...):

const char *usersPreferredLocaleName = "de"
const char *bookTerm = "Gen";
const char *activeBibleName = "KJVA";

LocaleMgr::getSystemLocaleMgr()->setDefaultLocaleName(usersPreferredLocaleName);

SWMgr library;
SWModule *bible = library.getModule(activeBibleName);

VerseKey *vk = (VerseKey *)bible->getKey();
vk->setText(bookTerm);

std::string translatedAbbreviation = vk->getBookAbbrev();


In summery, usually a user's preferred locale is set systemwide.  Then everything is generally switched to that locale, i.e., VerseKey output will be in that locale so when you getBookAbbrev, you will get German.

You can do lower level work if you'd like.  SWKey has a setLocale method if you'd like to set just a single key to a different language.  But typically our frontends set default locale systemwide before constructing SWMgr.

Hope this helps,

Troy



On 5/15/20 10:38 AM, Tobias Klein wrote:

Hi Peter,

Why is it then that mapping tables like this one are kept in the locales.d files:

[Pref Abbrevs]
Gen=1Mo
Exod=2Mo
Lev=3Mo
Num=4Mo
Deut=5Mo
Josh=Jos
Judg=Rich
Ruth=Rut
1Sam=1Sam
2Sam=2Sam
1Kgs=1Kön
2Kgs=2Kön
1Chr=1Chr
2Chr=2Chr
Ezra=Esr
Neh=Neh

This is the info I need. I'm just wondering how to extract that information with the SWORD API.

Best regards,
Tobias

On 5/15/20 7:19 PM, Peter Von Kaehne wrote:
I think the lack of response is as there is no sensible way of responding.

The whole construct of abbreviations (irrespective of languages) is uniderectional (Abbr->Book name). The same applies to English. What you mix up here is that a particular subset of English abbreviations is also the set of OSIS identifiers.

Peter
*Gesendet:* Freitag, 15. Mai 2020 um 18:03 Uhr
*Von:* "Tobias Klein" <cont...@tklein.info>
*An:* "SWORD Developers' Collaboration Forum" <sword-devel@crosswire.org> *Betreff:* Re: [sword-devel] How to get translated book abbreviations with LocaleMgr?
Hi,
Any feedback regarding this question?
I would appreciate it!
Best regards,
Tobias

    Am 10.05.2020 um 12:45 schrieb Tobias Klein <cont...@tklein.info
    <mailto:cont...@tklein.info>>:

    Hi,

    how can I use the LocaleMgr to get a translated book abbreviation?

    For some reason this code did not work for me:

    sword::SWLocale* locale = this->_localeMgr->getLocale(localeCode);
    std::string translatedAbbreviation =
    std::string(locale->translate(bookTerm));

    I was using "de" as a locale and "Gen" as the term to be
    translated, but I did not get the german variant of "Gen", but
    rather the exact same term "Gen" as a result.

    Best regards,
    Tobias

    _______________________________________________
    sword-devel mailing list: sword-devel@crosswire.org
    <mailto:sword-devel@crosswire.org>
    http://www.crosswire.org/mailman/listinfo/sword-devel
    Instructions to unsubscribe/change your settings at above page

_______________________________________________ sword-devel mailing list: sword-devel@crosswire.org http://www.crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page

_______________________________________________
sword-devel mailing list:sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

_______________________________________________
sword-devel mailing list:sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page
_______________________________________________
sword-devel mailing list: sword-devel@crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-devel
Instructions to unsubscribe/change your settings at above page

Reply via email to