def available_languages(self): """ Returns a the list of language codes available for the domain, or [] if no languages are specified. """ translation_doc = StandaloneTranslationDoc.get_obj(self.domain, "sms") if translation_doc and translation_doc.langs: return translation_doc.langs return []
def get_message(msg_id, verified_number=None, context=None): default_msg = _MESSAGES.get(msg_id, "") if verified_number: tdoc = StandaloneTranslationDoc.get_obj(verified_number.domain, "sms") else: tdoc = None try: user_lang = verified_number.owner.get_language_code() except: user_lang = None def get_translation(lang): return tdoc.translations.get(lang, {}).get(msg_id, None) def domain_msg_user_lang(): if tdoc and user_lang in tdoc.langs: return get_translation(user_lang) else: return None def domain_msg_domain_lang(): if tdoc and tdoc.default_lang: return get_translation(tdoc.default_lang) else: return None def global_msg_user_lang(): result = None if user_lang: with localize(user_lang): result = _(default_msg) return result if result != default_msg else None def global_msg_domain_lang(): result = None if tdoc and tdoc.default_lang: with localize(tdoc.default_lang): result = _(default_msg) return result if result != default_msg else None msg = ( domain_msg_user_lang() or domain_msg_domain_lang() or global_msg_user_lang() or global_msg_domain_lang() or default_msg ) if context: msg = msg.format(*context) return msg
def get_message(msg_id, verified_number=None, context=None): default_msg = _MESSAGES.get(msg_id, "") if verified_number: tdoc = StandaloneTranslationDoc.get_obj(verified_number.domain, "sms") else: tdoc = None try: user_lang = verified_number.owner.get_language_code() except: user_lang = None def get_translation(lang): return tdoc.translations.get(lang, {}).get(msg_id, None) def domain_msg_user_lang(): if tdoc and user_lang in tdoc.langs: return get_translation(user_lang) else: return None def domain_msg_domain_lang(): if tdoc and tdoc.default_lang: return get_translation(tdoc.default_lang) else: return None def global_msg_user_lang(): result = None if user_lang: with localize(user_lang): result = _(default_msg) return result if result != default_msg else None def global_msg_domain_lang(): result = None if tdoc and tdoc.default_lang: with localize(tdoc.default_lang): result = _(default_msg) return result if result != default_msg else None msg = (domain_msg_user_lang() or domain_msg_domain_lang() or global_msg_user_lang() or global_msg_domain_lang() or default_msg) if context: msg = msg.format(*context) return msg
def get_domain_languages(domain): query = AppES().domain(domain).terms_aggregation("langs", "languages").size(0) app_languages = query.run().aggregations.languages.keys translation_doc = StandaloneTranslationDoc.get_obj(domain, "sms") sms_languages = translation_doc.langs if translation_doc else [] domain_languages = [] for lang_code in set(app_languages + sms_languages): name = langcodes.get_name(lang_code) label = u"{} ({})".format(lang_code, name) if name else lang_code domain_languages.append((lang_code, label)) return sorted(domain_languages) or langcodes.get_all_langs_for_select()
def get_domain_languages(domain): query = (AppES().domain(domain).terms_aggregation('langs', 'languages').size(0)) app_languages = query.run().aggregations.languages.keys translation_doc = StandaloneTranslationDoc.get_obj(domain, 'sms') sms_languages = translation_doc.langs if translation_doc else [] domain_languages = [] for lang_code in set(app_languages + sms_languages): name = langcodes.get_name(lang_code) label = u"{} ({})".format(lang_code, name) if name else lang_code domain_languages.append((lang_code, label)) return sorted(domain_languages) or langcodes.get_all_langs_for_select()
def get_translation_from_message_dict(message_dict, schedule, preferred_language_code): """ :param message_dict: a dictionary of {language code: message} :param schedule: an instance of corehq.messaging.scheduling.models.Schedule :param preferred_language_code: the language code of the user's preferred language """ lang_doc = StandaloneTranslationDoc.get_obj(schedule.domain, 'sms') return (Content.get_cleaned_message(message_dict, preferred_language_code) or Content.get_cleaned_message(message_dict, schedule.default_language_code) or (Content.get_cleaned_message( message_dict, lang_doc.default_lang) if lang_doc else None) or Content.get_cleaned_message(message_dict, '*'))
def get_domain_languages(domain): query = (AppES() .domain(domain) .terms_facet('langs', 'languages') .size(0)) app_languages = query.run().facets.languages.terms translation_doc = StandaloneTranslationDoc.get_obj(domain, 'sms') sms_languages = translation_doc.langs if translation_doc else [] domain_languages = [] for lang_code in set(app_languages + sms_languages): name = langcodes.get_name(lang_code) label = u"{} ({})".format(lang_code, name) if name else lang_code domain_languages.append((lang_code, label)) return sorted(domain_languages) or langcodes.get_all_langs_for_select()
def get_domain_languages(domain): app_languages = [ res['key'][1] for res in Application.get_db().view('languages/list', startkey=[domain], endkey=[domain, {}], group='true').all() ] translation_doc = StandaloneTranslationDoc.get_obj(domain, 'sms') sms_languages = translation_doc.langs if translation_doc else [] domain_languages = [] for lang_code in set(app_languages + sms_languages): name = langcodes.get_name(lang_code) label = u"{} ({})".format(lang_code, name) if name else lang_code domain_languages.append((lang_code, label)) return sorted(domain_languages) or langcodes.get_all_langs_for_select()
def get_domain_languages(domain): app_languages = [ res["key"][1] for res in Application.get_db() .view("languages/list", startkey=[domain], endkey=[domain, {}], group="true") .all() ] translation_doc = StandaloneTranslationDoc.get_obj(domain, "sms") sms_languages = translation_doc.langs if translation_doc else [] domain_languages = [] for lang_code in set(app_languages + sms_languages): name = langcodes.get_name(lang_code) label = u"{} ({})".format(lang_code, name) if name else lang_code domain_languages.append((lang_code, label)) return sorted(domain_languages) or langcodes.get_all_langs_for_select()
def download_sms_translations(request, domain): tdoc = StandaloneTranslationDoc.get_obj(domain, "sms") columns = ["property"] + tdoc.langs + ["default"] msg_ids = sorted(_MESSAGES.keys()) rows = [] for msg_id in msg_ids: rows.append([msg_id]) for lang in tdoc.langs: for row in rows: row.append(tdoc.translations[lang].get(row[0], "")) for row in rows: row.append(_MESSAGES.get(row[0])) temp = StringIO() headers = (("translations", tuple(columns)),) data = (("translations", tuple(rows)),) export_raw(headers, data, temp) return export_response(temp, Format.XLS_2007, "translations")
def get_lang_doc(self, domain): return StandaloneTranslationDoc.get_obj(domain, 'sms')
def get_message(msg_id, verified_number=None, context=None, domain=None, language=None): """ Translates the message according to the user's and domain's preferences. msg_id - one of the MSG_* constants above verified_number - pass in the PhoneNumber of a contact in order to use this contact's domain and language to translate context - some messages require additional parameters; pass them as a tuple or list domain - if the contact doesn't have a verified number, pass the domain in here to use this domain's translation doc language - if the contact doesn't have a verified number, pass the language code in here to use this language """ default_msg = _MESSAGES.get(msg_id, "") if domain: tdoc = StandaloneTranslationDoc.get_obj(domain, "sms") elif verified_number: tdoc = StandaloneTranslationDoc.get_obj(verified_number.domain, "sms") else: tdoc = None if language: user_lang = language else: try: user_lang = verified_number.owner.get_language_code() except: user_lang = None def get_translation(lang): return tdoc.translations.get(lang, {}).get(msg_id, None) def domain_msg_user_lang(): if tdoc and user_lang in tdoc.langs: return get_translation(user_lang) else: return None def domain_msg_domain_lang(): if tdoc and tdoc.default_lang: return get_translation(tdoc.default_lang) else: return None def global_msg_user_lang(): result = None if user_lang: with localize(user_lang): result = _(default_msg) return result if result != default_msg else None def global_msg_domain_lang(): result = None if tdoc and tdoc.default_lang: with localize(tdoc.default_lang): result = _(default_msg) return result if result != default_msg else None msg = (domain_msg_user_lang() or domain_msg_domain_lang() or global_msg_user_lang() or global_msg_domain_lang() or default_msg) if context: msg = msg.format(*context) return msg
def project_languages(self): doc = StandaloneTranslationDoc.get_obj(self.domain, 'sms') return getattr(doc, 'langs', ['en'])
def get_message(msg_id, verified_number=None, context=None, domain=None, language=None): """ Translates the message according to the user's and domain's preferences. msg_id - one of the MSG_* constants above verified_number - pass in the PhoneNumber of a contact in order to use this contact's domain and language to translate context - some messages require additional parameters; pass them as a tuple or list domain - if the contact doesn't have a verified number, pass the domain in here to use this domain's translation doc language - if the contact doesn't have a verified number, pass the language code in here to use this language """ default_msg = _MESSAGES.get(msg_id, "") if domain: tdoc = StandaloneTranslationDoc.get_obj(domain, "sms") elif verified_number: tdoc = StandaloneTranslationDoc.get_obj(verified_number.domain, "sms") else: tdoc = None if language: user_lang = language else: try: user_lang = verified_number.owner.get_language_code() except: user_lang = None def get_translation(lang): return tdoc.translations.get(lang, {}).get(msg_id, None) def domain_msg_user_lang(): if tdoc and user_lang in tdoc.langs: return get_translation(user_lang) else: return None def domain_msg_domain_lang(): if tdoc and tdoc.default_lang: return get_translation(tdoc.default_lang) else: return None def global_msg_user_lang(): result = None if user_lang: with localize(user_lang): result = _(default_msg) return result if result != default_msg else None def global_msg_domain_lang(): result = None if tdoc and tdoc.default_lang: with localize(tdoc.default_lang): result = _(default_msg) return result if result != default_msg else None msg = ( domain_msg_user_lang() or domain_msg_domain_lang() or global_msg_user_lang() or global_msg_domain_lang() or default_msg ) if context: msg = msg.format(*context) return msg