def test_link_translation(multilingual_doc, root, db_session): from kotti_multilingual.api import link_translation from kotti_multilingual.api import get_translations doc2 = root['sl']['doc2'] = Document(language=u'sl') link_translation(multilingual_doc, doc2) assert get_translations(multilingual_doc) == {'sl': doc2}
def test_unlink_translation(translated_docs, db_session): from kotti_multilingual.api import unlink_translation from kotti_multilingual.api import get_translations source, target = translated_docs unlink_translation(target) assert get_translations(source) == {}
def test_language_root_autolink(root, ml_events, config, db_session): from kotti_multilingual.resources import LanguageRoot from kotti_multilingual.api import get_source from kotti_multilingual.api import get_translations root['sl'] = LanguageRoot(language=u'sl') db_session.flush() root['en'] = LanguageRoot(language=u'en') db_session.flush() assert get_translations(root['sl']) == {'en': root['en']} assert get_source(root['en']) == root['sl'] # Add another language root. This one should also connect to 'sl' # automatically. root['de'] = LanguageRoot(language=u'de') assert get_source(root['de']) == root['sl'] assert get_translations(root['de']) == {'en': root['en'], 'sl': root['sl']}
def test_get_translations_alotta(translated_docs, root, db_session): from kotti_multilingual.api import get_translations from kotti_multilingual.api import link_translation from kotti_multilingual.resources import LanguageRoot source, target = translated_docs fr = root['fr'] = LanguageRoot(language=u'fr', title=u'Le root') fr['doc'] = Document(title=u'English doc') link_translation(source, fr['doc']) assert get_translations(fr['doc']) == {'en': source, 'sl': target}
def translation_dropdown(context, request): languages = api.get_languages(request) translations = api.get_translations(context) translatable_into = [] for lang in languages: if lang['id'] in translations or lang['id'] == context.language: continue translated_parent = find_parent( context.__parent__, lambda item: lang['id'] in api.get_translations(item)) if translated_parent is None: continue container = api.get_translations(translated_parent).get(lang['id']) url = request.resource_url( container, 'add-translation', query={'id': context.id} ) if has_permission('add', container, request): translatable_into.append({ 'language': lang['id'], 'title': lang['title'], 'url': url }) translations = [ { 'language': tr.language, 'title': api.get_language_title(tr.language), 'url': request.resource_url(tr), } for tr in translations.values() ] return { 'translations': translations, 'translatable_into': translatable_into }
def test_get_translations_none(root, db_session): from kotti_multilingual.api import get_translations assert get_translations(root) == {}
def test_get_translations(translated_docs, db_session): from kotti_multilingual.api import get_translations source, target = translated_docs assert get_translations(source) == {'sl': target} assert get_translations(target) == {'en': source}