[glom] Export to po file: Improve the msgtxt hints.
- From: Murray Cumming <murrayc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glom] Export to po file: Improve the msgtxt hints.
- Date: Sun, 8 Jan 2012 00:15:26 +0000 (UTC)
commit eaec54684c91d5a7739dda6acf1e1626c5b90472
Author: Murray Cumming <murrayc murrayc com>
Date: Sun Jan 8 00:46:04 2012 +0100
Export to po file: Improve the msgtxt hints.
* glom/libglom/data_structure/translatable_item.[h|cc]:
get_translatable_item_type(): Make this const.
* glom/libglom/document/document.[h|cc]: get_translatable_items():
Now return a list of pairs, so each TranslatableItem also has a hint
for the msgtxt for the po (gettext) file, so that each can be
identified uniquely and so that the translator has some context.
* glom/libglom/translations_po.[h|cc]: Adapt.
* glom/mode_design/translation/window_translations.[h|cc]: Adapt,
showing the actual hint instead of just the item type.
* tests/test_document_load_translations.cc: Adapted.
* tests/translations_po/data/test.po: Reexported.
ChangeLog | 16 +
glom/libglom/data_structure/translatable_item.cc | 4 +-
glom/libglom/data_structure/translatable_item.h | 2 +-
glom/libglom/document/document.cc | 59 ++-
glom/libglom/document/document.h | 13 +-
glom/libglom/translations_po.cc | 29 +-
glom/libglom/translations_po.h | 7 +
.../mode_design/translation/window_translations.cc | 51 +-
glom/mode_design/translation/window_translations.h | 8 +-
tests/test_document_load_translations.cc | 48 +--
tests/translations_po/data/test.po | 544 ++++++++++----------
11 files changed, 410 insertions(+), 371 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 946d1d6..7f9ec4f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,19 @@
+2012-01-08 Murray Cumming <murrayc murrayc com>
+
+ Export to po file: Improve the msgtxt hints.
+
+ * glom/libglom/data_structure/translatable_item.[h|cc]:
+ get_translatable_item_type(): Make this const.
+ * glom/libglom/document/document.[h|cc]: get_translatable_items():
+ Now return a list of pairs, so each TranslatableItem also has a hint
+ for the msgtxt for the po (gettext) file, so that each can be
+ identified uniquely and so that the translator has some context.
+ * glom/libglom/translations_po.[h|cc]: Adapt.
+ * glom/mode_design/translation/window_translations.[h|cc]: Adapt,
+ showing the actual hint instead of just the item type.
+ * tests/test_document_load_translations.cc: Adapted.
+ * tests/translations_po/data/test.po: Reexported.
+
2012-01-07 Murray Cumming <murrayc murrayc com>
Move po file (gettext) import and export into libglom and test it.
diff --git a/glom/libglom/data_structure/translatable_item.cc b/glom/libglom/data_structure/translatable_item.cc
index 1ae12bd..10e3fa2 100644
--- a/glom/libglom/data_structure/translatable_item.cc
+++ b/glom/libglom/data_structure/translatable_item.cc
@@ -241,7 +241,7 @@ Glib::ustring TranslatableItem::get_original_locale()
return m_original_locale;
}
-bool TranslatableItem::get_current_locale_not_original()
+bool TranslatableItem::get_current_locale_not_original() //TODO: Make this const?
{
if(m_original_locale.empty())
get_original_locale();
@@ -252,7 +252,7 @@ bool TranslatableItem::get_current_locale_not_original()
return m_original_locale != m_current_locale;
}
-TranslatableItem::enumTranslatableItemType TranslatableItem::get_translatable_item_type()
+TranslatableItem::enumTranslatableItemType TranslatableItem::get_translatable_item_type() const
{
return m_translatable_item_type;
}
diff --git a/glom/libglom/data_structure/translatable_item.h b/glom/libglom/data_structure/translatable_item.h
index deb3e2e..a9b606f 100644
--- a/glom/libglom/data_structure/translatable_item.h
+++ b/glom/libglom/data_structure/translatable_item.h
@@ -102,7 +102,7 @@ public:
TRANSLATABLE_TYPE_CHOICEVALUE
};
- enumTranslatableItemType get_translatable_item_type();
+ enumTranslatableItemType get_translatable_item_type() const;
//Direct access, for performance:
const type_map_locale_to_translations& _get_translations_map() const;
diff --git a/glom/libglom/document/document.cc b/glom/libglom/document/document.cc
index 7f95bfb..2612aa8 100644
--- a/glom/libglom/document/document.cc
+++ b/glom/libglom/document/document.cc
@@ -2549,7 +2549,7 @@ void Document::load_after_translations(const xmlpp::Element* element, Translatab
if(!choicevalue) //This item does not use the title, but uses the title translations to translate its value, if it is of type text.
{
item.set_title_original( get_node_attribute_value(element, GLOM_ATTRIBUTE_TITLE) );
- };
+ }
const xmlpp::Element* nodeTranslations = get_node_child_named(element, GLOM_NODE_TRANSLATIONS_SET);
if(nodeTranslations)
@@ -4405,6 +4405,15 @@ std::vector<Glib::ustring> Document::get_translation_available_locales() const
return m_translation_available_locales;
}
+template <typename T_List>
+static void translatable_items_append_with_hint(Document::type_list_translatables& result, T_List& list_items, const Glib::ustring& hint)
+{
+ for(typename T_List::iterator iter = list_items.begin(); iter != list_items.end(); ++iter)
+ {
+ result.push_back( Document::pair_translatable_item_and_hint(*iter, hint) );
+ }
+}
+
Document::type_list_translatables Document::get_translatable_items()
{
type_list_translatables result;
@@ -4417,11 +4426,12 @@ Document::type_list_translatables Document::get_translatable_items()
if(!tableinfo)
continue;
- result.push_back(tableinfo);
+ result.push_back( pair_translatable_item_and_hint(tableinfo, "") );
const Glib::ustring table_name = tableinfo->get_name();
//The table's field titles:
+ Glib::ustring hint = "Parent table: " + table_name;
type_vec_fields fields = get_table_fields(table_name);
for(type_vec_fields::iterator iter = fields.begin(); iter != fields.end(); ++iter)
{
@@ -4429,20 +4439,21 @@ Document::type_list_translatables Document::get_translatable_items()
if(!field)
continue;
- result.push_back(field);
+ result.push_back( pair_translatable_item_and_hint(field, hint) );
//Custom Choices, if any:
if(field->get_glom_type() == Field::TYPE_TEXT) //Choices for other field types could not be translated.
{
+ const Glib::ustring this_hint = hint + ", Parent Field: " + field->get_name();
type_list_translatables list_choice_items;
- Document::fill_translatable_custom_choices(field->m_default_formatting, list_choice_items);
+ Document::fill_translatable_custom_choices(field->m_default_formatting, list_choice_items, this_hint);
result.insert(result.end(), list_choice_items.begin(), list_choice_items.end());
}
}
//The table's relationships:
type_vec_relationships relationships = get_relationships(table_name);
- result.insert(result.end(), relationships.begin(), relationships.end());
+ translatable_items_append_with_hint(result, relationships, hint);
//The table's report titles:
type_listReports listReports = get_report_names(table_name);
@@ -4453,22 +4464,23 @@ Document::type_list_translatables Document::get_translatable_items()
if(!report)
continue;
- result.push_back(report);
+ result.push_back( pair_translatable_item_and_hint(report, hint) );
//Translatable report items:
- type_list_translatables list_layout_items = get_translatable_report_items(table_name, report_name);
+ const Glib::ustring this_hint = hint + ", Parent Report: " + report->get_name();
+ type_list_translatables list_layout_items = get_translatable_report_items(table_name, report_name, this_hint);
result.insert(result.end(), list_layout_items.begin(), list_layout_items.end());
}
//The table's translatable layout items:
- type_list_translatables list_layout_items = get_translatable_layout_items(table_name);
+ type_list_translatables list_layout_items = get_translatable_layout_items(table_name, hint);
result.insert(result.end(), list_layout_items.begin(), list_layout_items.end());
} //for
return result;
}
-Document::type_list_translatables Document::get_translatable_layout_items(const Glib::ustring& table_name)
+Document::type_list_translatables Document::get_translatable_layout_items(const Glib::ustring& table_name, const Glib::ustring& hint)
{
type_list_translatables result;
@@ -4484,7 +4496,7 @@ Document::type_list_translatables Document::get_translatable_layout_items(const
sharedptr<LayoutGroup> group = *iterGroup;
if(group)
{
- fill_translatable_layout_items(group, result);
+ fill_translatable_layout_items(group, result, hint);
}
}
}
@@ -4494,18 +4506,18 @@ Document::type_list_translatables Document::get_translatable_layout_items(const
}
-Document::type_list_translatables Document::get_translatable_report_items(const Glib::ustring& table_name, const Glib::ustring& report_title)
+Document::type_list_translatables Document::get_translatable_report_items(const Glib::ustring& table_name, const Glib::ustring& report_title, const Glib::ustring& hint)
{
Document::type_list_translatables the_list;
sharedptr<Report> report = get_report(table_name, report_title);
if(report)
- fill_translatable_layout_items(report->m_layout_group, the_list);
+ fill_translatable_layout_items(report->m_layout_group, the_list, hint);
return the_list;
}
-void Document::fill_translatable_custom_choices(FieldFormatting& formatting, type_list_translatables& the_list)
+void Document::fill_translatable_custom_choices(FieldFormatting& formatting, type_list_translatables& the_list, const Glib::ustring& hint)
{
if(!formatting.get_has_custom_choices())
return;
@@ -4515,15 +4527,13 @@ void Document::fill_translatable_custom_choices(FieldFormatting& formatting, typ
{
sharedptr<ChoiceValue> value = *iter;
- //TODO: Make the translator comment mention the field name as well
- //as just the fact that it's a custom choice.
- the_list.push_back(value);
+ the_list.push_back( pair_translatable_item_and_hint(value, hint) );
}
}
-void Document::fill_translatable_layout_items(const sharedptr<LayoutGroup>& group, type_list_translatables& the_list)
+void Document::fill_translatable_layout_items(const sharedptr<LayoutGroup>& group, type_list_translatables& the_list, const Glib::ustring& hint)
{
- the_list.push_back(group);
+ the_list.push_back( pair_translatable_item_and_hint(group, hint) );
//Look at each item:
LayoutGroup::type_list_items items = group->get_items();
@@ -4541,21 +4551,21 @@ void Document::fill_translatable_layout_items(const sharedptr<LayoutGroup>& grou
sharedptr<CustomTitle> custom_title = field->get_title_custom();
if(custom_title)
{
- the_list.push_back(custom_title);
+ the_list.push_back( pair_translatable_item_and_hint(custom_title, hint) );
}
- fill_translatable_layout_items(group_by->m_group_secondary_fields, the_list);
+ fill_translatable_layout_items(group_by->m_group_secondary_fields, the_list, hint);
}
//recurse:
- fill_translatable_layout_items(child_group, the_list);
+ fill_translatable_layout_items(child_group, the_list, hint);
}
else
{
//Buttons too:
sharedptr<LayoutItem_Button> button = sharedptr<LayoutItem_Button>::cast_dynamic(item);
if(button)
- the_list.push_back(button);
+ the_list.push_back( pair_translatable_item_and_hint(button, hint) );
else
{
sharedptr<LayoutItem_Field> layout_field = sharedptr<LayoutItem_Field>::cast_dynamic(item);
@@ -4564,13 +4574,14 @@ void Document::fill_translatable_layout_items(const sharedptr<LayoutGroup>& grou
sharedptr<CustomTitle> custom_title = layout_field->get_title_custom();
if(custom_title)
{
- the_list.push_back(custom_title);
+ the_list.push_back( pair_translatable_item_and_hint(custom_title, hint) );
}
//Custom Choices, if any:
//Only text fields can have translated choice values:
+ const Glib::ustring this_hint = hint + ", Parent Field: " + layout_field->get_name();
if(layout_field->get_glom_type() == Field::TYPE_TEXT)
- fill_translatable_custom_choices(layout_field->m_formatting, the_list);
+ fill_translatable_custom_choices(layout_field->m_formatting, the_list, this_hint);
}
}
}
diff --git a/glom/libglom/document/document.h b/glom/libglom/document/document.h
index 266b4db..2155738 100644
--- a/glom/libglom/document/document.h
+++ b/glom/libglom/document/document.h
@@ -257,10 +257,13 @@ public:
type_list_layout_groups get_data_layout_groups_default(const Glib::ustring& layout_name, const Glib::ustring& parent_table_name, const Glib::ustring& layout_platform = Glib::ustring()) const;
- typedef std::list< sharedptr<TranslatableItem> > type_list_translatables;
+ /// The translatable item and a hint about what it is.
+ typedef std::pair< sharedptr<TranslatableItem>, Glib::ustring> pair_translatable_item_and_hint;
+
+ typedef std::list<pair_translatable_item_and_hint> type_list_translatables;
type_list_translatables get_translatable_items();
- static void fill_translatable_custom_choices(FieldFormatting& formatting, type_list_translatables& the_list);
+ static void fill_translatable_custom_choices(FieldFormatting& formatting, type_list_translatables& the_list, const Glib::ustring& hint);
void fill_layout_field_details(const Glib::ustring& parent_table_name, const sharedptr<LayoutGroup>& layout_group) const;
@@ -518,12 +521,12 @@ private:
void on_app_state_userlevel_changed(AppState::userlevels userlevel);
- static void fill_translatable_layout_items(const sharedptr<LayoutGroup>& group, type_list_translatables& the_list);
+ static void fill_translatable_layout_items(const sharedptr<LayoutGroup>& group, type_list_translatables& the_list, const Glib::ustring& hint);
void fill_sort_field_details(const Glib::ustring& parent_table_name, FieldFormatting::type_list_sort_fields& sort_fields) const;
- type_list_translatables get_translatable_layout_items(const Glib::ustring& table_name);
- type_list_translatables get_translatable_report_items(const Glib::ustring& table_name, const Glib::ustring& report_title);
+ type_list_translatables get_translatable_layout_items(const Glib::ustring& table_name, const Glib::ustring& hint);
+ type_list_translatables get_translatable_report_items(const Glib::ustring& table_name, const Glib::ustring& report_title, const Glib::ustring& hint);
/// If the attribute is not there, then the default will be returned.
diff --git a/glom/libglom/translations_po.cc b/glom/libglom/translations_po.cc
index 6faa83f..9ca394d 100644
--- a/glom/libglom/translations_po.cc
+++ b/glom/libglom/translations_po.cc
@@ -112,11 +112,20 @@ static void on_gettextpo_error(int status, int errnum, const char * /* format */
}
#endif //HAVE_GETTEXTPO_XERROR
-static Glib::ustring get_po_context_for_item(const sharedptr<TranslatableItem>& item)
+Glib::ustring get_po_context_for_item(const sharedptr<const TranslatableItem>& item, const Glib::ustring& hint)
{
// Note that this context string should use English rather than the translated strings,
// or the context would change depending on the locale of the user doing the export:
- return TranslatableItem::get_translatable_type_name_nontranslated(item->get_translatable_item_type()) + " (" + item->get_name() + ')';
+ Glib::ustring result = TranslatableItem::get_translatable_type_name_nontranslated(item->get_translatable_item_type());
+
+ const Glib::ustring name = item->get_name();
+ if(!name.empty())
+ result += " (" + item->get_name() + ')';
+
+ if(!hint.empty())
+ result += ". " + hint;
+
+ return result;
}
bool write_translations_to_po_file(Document* document, const Glib::ustring& po_file_uri, const Glib::ustring& translation_locale)
@@ -142,20 +151,24 @@ bool write_translations_to_po_file(Document* document, const Glib::ustring& po_f
Document::type_list_translatables list_layout_items = document->get_translatable_items();
for(Document::type_list_translatables::iterator iter = list_layout_items.begin(); iter != list_layout_items.end(); ++iter)
{
- sharedptr<TranslatableItem> item = *iter;
+ sharedptr<TranslatableItem> item = iter->first;
if(!item)
continue;
if(item->get_title_original().empty())
continue;
+ const Glib::ustring hint = iter->second;
+
po_message_t msg = po_message_create();
po_message_set_msgid(msg, item->get_title_original().c_str());
po_message_set_msgstr(msg, item->get_title_translation(translation_locale, false).c_str());
// Add "context" comments, to uniquely identify similar strings, used in different places,
// and to provide a hint for translators.
- po_message_set_msgctxt(msg, get_po_context_for_item(item).c_str());
+ const Glib::ustring msgtxt = get_po_context_for_item(item, hint);
+ //std::cout << "debug: msgtxt=" << msgtxt << std::endl;
+ po_message_set_msgctxt(msg, msgtxt.c_str());
po_message_insert(msg_iter, msg);
}
@@ -239,12 +252,14 @@ bool import_translations_from_po_file(Document* document, const Glib::ustring& p
//Find the matching item in the list:
for(Document::type_list_translatables::iterator iter = list_layout_items.begin(); iter != list_layout_items.end(); ++iter)
{
- sharedptr<TranslatableItem> item = *iter;
+ sharedptr<TranslatableItem> item = iter->first;
if(!item)
- continue;
+ continue;
+
+ const Glib::ustring hint = iter->second;
if( (item->get_title_original() == msgid) &&
- (get_po_context_for_item(item) == msgcontext) ) // This is not efficient, but it should be reliable.
+ (get_po_context_for_item(item, hint) == msgcontext) ) // This is not efficient, but it should be reliable.
{
item->set_title_translation(translation_locale, msgstr);
// Keep examining items, in case there are duplicates. break;
diff --git a/glom/libglom/translations_po.h b/glom/libglom/translations_po.h
index 1207e88..b5ab6ee 100644
--- a/glom/libglom/translations_po.h
+++ b/glom/libglom/translations_po.h
@@ -30,6 +30,13 @@ bool write_translations_to_po_file(Document* document, const Glib::ustring& po_f
bool import_translations_from_po_file(Document* document, const Glib::ustring& po_file_uri, const Glib::ustring& translation_locale);
+/** Get a hint about what the text is for.
+ * This is also necessary to uniquely identify the item,
+ * because not all text with the same contents should be translated the same
+ * way in all languages - the context might change the translation.
+ */
+Glib::ustring get_po_context_for_item(const sharedptr<const TranslatableItem>& item, const Glib::ustring& hint);
+
} //namespace Glom
#endif //GLOM_TRANSLATIONS_PO
diff --git a/glom/mode_design/translation/window_translations.cc b/glom/mode_design/translation/window_translations.cc
index aea3fa0..87af366 100644
--- a/glom/mode_design/translation/window_translations.cc
+++ b/glom/mode_design/translation/window_translations.cc
@@ -75,7 +75,7 @@ Window_Translations::Window_Translations(BaseObjectType* cobject, const Glib::Re
Gtk::CellRendererText* renderer_item_typename = Gtk::manage(new Gtk::CellRendererText);
column_item_typename->pack_start(*renderer_item_typename);
- column_item_typename->set_cell_data_func(*renderer_item_typename, sigc::mem_fun(*this, &Window_Translations::on_cell_data_item_typename));
+ column_item_typename->set_cell_data_func(*renderer_item_typename, sigc::mem_fun(*this, &Window_Translations::on_cell_data_item_itemhint));
const int col = m_treeview->append_column_editable(_("Translation"), m_columns.m_col_translation);
@@ -178,25 +178,24 @@ void Window_Translations::on_cell_data_original(Gtk::CellRenderer* renderer, con
}
}
-void Window_Translations::on_cell_data_item_typename(Gtk::CellRenderer* renderer, const Gtk::TreeModel::iterator& iter)
+void Window_Translations::on_cell_data_item_itemhint(Gtk::CellRenderer* renderer, const Gtk::TreeModel::iterator& iter)
{
//Set the view's cell properties depending on the model's data:
Gtk::CellRendererText* renderer_text = dynamic_cast<Gtk::CellRendererText*>(renderer);
- if(renderer_text)
- {
- if(iter)
- {
- Gtk::TreeModel::Row row = *iter;
+ if(!renderer_text)
+ return;
- Glib::ustring item_type_name;
- sharedptr<TranslatableItem> item = row[m_columns.m_col_item];
- if(item)
- item_type_name = TranslatableItem::get_translatable_type_name(item->get_translatable_item_type());
+ if(!iter)
+ return;
- renderer_text->property_text() = item_type_name;
- renderer_text->property_editable() = false; //Names can never be edited.
- }
- }
+ Gtk::TreeModel::Row row = *iter;
+
+ Glib::ustring item_type_name;
+ sharedptr<TranslatableItem> item = row[m_columns.m_col_item];
+ const Glib::ustring hint = row[m_columns.m_col_hint];
+
+ renderer_text->property_text() = get_po_context_for_item(item, hint);
+ renderer_text->property_editable() = false; //Names can never be edited.
}
void Window_Translations::load_from_document()
@@ -216,19 +215,19 @@ void Window_Translations::load_from_document()
Document::type_list_translatables list_layout_items = document->get_translatable_items();
for(Document::type_list_translatables::iterator iter = list_layout_items.begin(); iter != list_layout_items.end(); ++iter)
{
- sharedptr<TranslatableItem> item = *iter;
- if(item)
- {
- if(item->get_title_original().empty())
- continue;
+ sharedptr<TranslatableItem> item = iter->first;
+ if(!item)
+ continue;
+
+ if(item->get_title_original().empty())
+ continue;
- Gtk::TreeModel::iterator iterTree = m_model->append();
- Gtk::TreeModel::Row row = *iterTree;
+ Gtk::TreeModel::iterator iterTree = m_model->append();
+ Gtk::TreeModel::Row row = *iterTree;
- row[m_columns.m_col_item] = item;
- row[m_columns.m_col_translation] = item->get_title_translation(m_translation_locale, false);
- //row[m_columns.m_col_parent_table] = table_name;
- }
+ row[m_columns.m_col_item] = item;
+ row[m_columns.m_col_translation] = item->get_title_translation(m_translation_locale, false);
+ row[m_columns.m_col_hint] = iter->second;
}
m_treeview_modified = false;
diff --git a/glom/mode_design/translation/window_translations.h b/glom/mode_design/translation/window_translations.h
index bfbbcbd..2c12609 100644
--- a/glom/mode_design/translation/window_translations.h
+++ b/glom/mode_design/translation/window_translations.h
@@ -57,7 +57,7 @@ private:
//signal handlers:
void on_button_identify();
void on_cell_data_original(Gtk::CellRenderer* renderer, const Gtk::TreeModel::iterator& iter);
- void on_cell_data_item_typename(Gtk::CellRenderer* renderer, const Gtk::TreeModel::iterator& iter);
+ void on_cell_data_item_itemhint(Gtk::CellRenderer* renderer, const Gtk::TreeModel::iterator& iter);
void on_treeview_edited(const Glib::ustring& path, const Glib::ustring& new_text);
void on_combo_target_locale_changed();
@@ -67,8 +67,6 @@ private:
void on_button_copy_translation();
void on_button_import();
void on_button_export();
-
- Glib::ustring get_po_context_for_item(const sharedptr<TranslatableItem>& item);
//Tree model columns:
class ModelColumns : public Gtk::TreeModel::ColumnRecord
@@ -76,11 +74,11 @@ private:
public:
ModelColumns()
- { add(m_col_item); add(m_col_translation); }
+ { add(m_col_item); add(m_col_translation); add(m_col_hint); }
Gtk::TreeModelColumn< sharedptr<TranslatableItem> > m_col_item; //The table name, field name, etc.
Gtk::TreeModelColumn<Glib::ustring> m_col_translation;
- //Gtk::TreeModelColumn<Glib::ustring> m_col_parent_table; //Not shown.
+ Gtk::TreeModelColumn<Glib::ustring> m_col_hint;
};
ModelColumns m_columns;
diff --git a/tests/test_document_load_translations.cc b/tests/test_document_load_translations.cc
index a3e7d35..8b1cb46 100644
--- a/tests/test_document_load_translations.cc
+++ b/tests/test_document_load_translations.cc
@@ -72,7 +72,7 @@ private:
/** A predicate for use with std::find_if() to find a LayoutItem of a particular type.
*/
-template<class T_Element, class T_TypeToFind>
+template<class T_TypeToFind>
class predicate_ItemHasType
{
public:
@@ -84,18 +84,10 @@ public:
{
}
- bool operator() (const Glom::sharedptr<T_Element>& element)
- {
- Glom::sharedptr<T_TypeToFind> derived = Glom::sharedptr<T_TypeToFind>::cast_dynamic(element);
- if(derived)
- return true;
- else
- return false;
- }
-
- bool operator() (const Glom::sharedptr<const T_Element>& element)
+ bool operator() (const Glom::Document::pair_translatable_item_and_hint& element)
{
- Glom::sharedptr<const T_TypeToFind> derived = Glom::sharedptr<const T_TypeToFind>::cast_dynamic(element);
+ Glom::sharedptr<Glom::TranslatableItem> item = element.first;
+ Glom::sharedptr<T_TypeToFind> derived = Glom::sharedptr<T_TypeToFind>::cast_dynamic(item);
if(derived)
return true;
else
@@ -120,20 +112,16 @@ typename T_Container::value_type get_titled(const T_Container& container, const
return result;
}
-template<typename T_Container, typename T_TypeToFind>
-bool contains_item_type(const T_Container& container)
+template<typename T_TypeToFind>
+bool contains_item_type(const Glom::Document::type_list_translatables& container)
{
- typedef typename T_Container::value_type type_sharedptr;
- type_sharedptr result;
-
- typedef typename T_Container::value_type::object_type type_item;
- typename T_Container::const_iterator iter =
+ Glom::Document::type_list_translatables::const_iterator iter =
std::find_if(container.begin(), container.end(),
- predicate_ItemHasType<type_item, T_TypeToFind>());
+ predicate_ItemHasType<T_TypeToFind>());
if(iter != container.end())
- result = *iter;
+ return true;
- return result;
+ return false;
}
static Glom::sharedptr<const Glom::LayoutItem_Field> get_field_on_layout(const Glom::Document& document, const Glib::ustring& layout_table_name, const Glib::ustring& table_name, const Glib::ustring& field_name)
@@ -313,30 +301,30 @@ int main()
Glom::Document::type_list_translatables list_layout_items = document.get_translatable_items();
g_assert(!list_layout_items.empty());
const bool contains_tableinfo =
- contains_item_type<Glom::Document::type_list_translatables, Glom::TableInfo>(list_layout_items);
+ contains_item_type<Glom::TableInfo>(list_layout_items);
g_assert( contains_tableinfo );
const bool contains_layoutitem =
- contains_item_type<Glom::Document::type_list_translatables, Glom::LayoutItem>(list_layout_items);
+ contains_item_type<Glom::LayoutItem>(list_layout_items);
g_assert( contains_layoutitem );
/*
const bool contains_layoutitemfield =
- contains_item_type<Glom::Document::type_list_translatables, Glom::LayoutItem_Field>(list_layout_items);
+ contains_item_type<Glom::LayoutItem_Field>(list_layout_items);
g_assert( contains_layoutitemfield );
*/
const bool contains_relationship =
- contains_item_type<Glom::Document::type_list_translatables, Glom::Relationship>(list_layout_items);
+ contains_item_type<Glom::Relationship>(list_layout_items);
g_assert( contains_relationship );
const bool contains_field =
- contains_item_type<Glom::Document::type_list_translatables, Glom::Field>(list_layout_items);
+ contains_item_type<Glom::Field>(list_layout_items);
g_assert( contains_field );
const bool contains_choicevalue =
- contains_item_type<Glom::Document::type_list_translatables, Glom::ChoiceValue>(list_layout_items);
+ contains_item_type<Glom::ChoiceValue>(list_layout_items);
g_assert( contains_choicevalue );
const bool contains_customtitle =
- contains_item_type<Glom::Document::type_list_translatables, Glom::CustomTitle>(list_layout_items);
+ contains_item_type<Glom::CustomTitle>(list_layout_items);
g_assert( contains_customtitle );
const bool contains_report =
- contains_item_type<Glom::Document::type_list_translatables, Glom::Report>(list_layout_items);
+ contains_item_type<Glom::Report>(list_layout_items);
g_assert( contains_report );
Glom::libglom_deinit();
diff --git a/tests/translations_po/data/test.po b/tests/translations_po/data/test.po
index c063e65..be8cceb 100644
--- a/tests/translations_po/data/test.po
+++ b/tests/translations_po/data/test.po
@@ -2,59 +2,59 @@ msgctxt "Table (accommodation)"
msgid "Accommodation"
msgstr "Unterkunft"
-msgctxt "Field (accommodation_id)"
+msgctxt "Field (accommodation_id). Parent table: accommodation"
msgid "Accommodation ID"
msgstr "Unterkunft ID"
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: accommodation"
msgid "Description"
msgstr "Beschreibung"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: accommodation"
msgid "Comments"
msgstr "Kommentare"
-msgctxt "Field (address_street)"
+msgctxt "Field (address_street). Parent table: accommodation"
msgid "Street"
msgstr "Strasse"
-msgctxt "Field (address_town)"
+msgctxt "Field (address_town). Parent table: accommodation"
msgid "Town"
msgstr "Ort"
-msgctxt "Field (address_county)"
+msgctxt "Field (address_county). Parent table: accommodation"
msgid "County"
msgstr "Bundesland/Kanton"
-msgctxt "Field (address_country)"
+msgctxt "Field (address_country). Parent table: accommodation"
msgid "Country"
msgstr "Land"
-msgctxt "Field (address_postcode)"
+msgctxt "Field (address_postcode). Parent table: accommodation"
msgid "Postcode"
msgstr "Postleitzahl"
-msgctxt "Field (contact_id)"
+msgctxt "Field (contact_id). Parent table: accommodation"
msgid "Contact ID"
msgstr "Kontakt ID"
-msgctxt "Field (name)"
+msgctxt "Field (name). Parent table: accommodation"
msgid "Name"
msgstr ""
-msgctxt "Relationship (contacts)"
+msgctxt "Relationship (contacts). Parent table: accommodation"
msgid "Contacts"
msgstr "Kontakte"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: accommodation"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (address)"
+msgctxt "Layout Group (address). Parent table: accommodation"
msgid "Address"
msgstr "Addresse"
-msgctxt "Layout Group (contact)"
+msgctxt "Layout Group (contact). Parent table: accommodation"
msgid "Contact"
msgstr "Kontakt"
@@ -62,35 +62,35 @@ msgctxt "Table (cars)"
msgid "Cars"
msgstr "Autos"
-msgctxt "Field (car_id)"
+msgctxt "Field (car_id). Parent table: cars"
msgid "Car ID"
msgstr "Auto ID"
-msgctxt "Field (manufacturer)"
+msgctxt "Field (manufacturer). Parent table: cars"
msgid "Manufacturer"
msgstr "Hersteller"
-msgctxt "Field (model)"
+msgctxt "Field (model). Parent table: cars"
msgid "Model"
msgstr "Model"
-msgctxt "Field (registration)"
+msgctxt "Field (registration). Parent table: cars"
msgid "Registration"
msgstr "Kennzeichnung"
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: cars"
msgid "Description"
msgstr "Beschreibung"
-msgctxt "Field (comment)"
+msgctxt "Field (comment). Parent table: cars"
msgid "Comment"
msgstr "Kommentar"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: cars"
msgid "Overview"
msgstr "bersicht"
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: cars"
msgid "Details"
msgstr "Details"
@@ -98,83 +98,83 @@ msgctxt "Table (characters)"
msgid "Characters"
msgstr "Besetzung"
-msgctxt "Field (character_id)"
+msgctxt "Field (character_id). Parent table: characters"
msgid "Cast ID"
msgstr "Besetzung ID"
-msgctxt "Field (character)"
+msgctxt "Field (character). Parent table: characters"
msgid "Character"
msgstr "Charakter"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: characters"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Field (contact_id)"
+msgctxt "Field (contact_id). Parent table: characters"
msgid "Contact ID"
msgstr "Kontakt ID"
-msgctxt "Field (mainpart)"
+msgctxt "Field (mainpart). Parent table: characters"
msgid "Main Part"
msgstr "Hauptrolle"
-msgctxt "Relationship (contacts_actor)"
+msgctxt "Relationship (contacts_actor). Parent table: characters"
msgid "Actor"
msgstr "Schauspieler"
-msgctxt "Relationship (scenes)"
+msgctxt "Relationship (scenes). Parent table: characters"
msgid "Scenes"
msgstr ""
-msgctxt "Report (cast_list)"
+msgctxt "Report (cast_list). Parent table: characters"
msgid "Cast List"
msgstr "Besetzungsliste"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: characters, Parent Report: cast_list"
msgid "Actor"
msgstr "Schauspieler"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: characters, Parent Report: cast_list"
msgid "Agent"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: characters"
msgid "Overview"
msgstr "bersicht"
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: characters"
msgid "Details"
msgstr "Details"
-msgctxt "Layout Group (actor)"
+msgctxt "Layout Group (actor). Parent table: characters"
msgid "Actor"
msgstr "Schauspieler"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: characters"
msgid "Actor's Contact ID"
msgstr "Schauspieler Kontakt ID"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: characters"
msgid "Actor's Name"
msgstr "Schauspieler Name"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: characters"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: characters"
msgid "Details"
msgstr ""
-msgctxt "Layout Group (actor)"
+msgctxt "Layout Group (actor). Parent table: characters"
msgid "Actor"
msgstr ""
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: characters"
msgid "Actor's Name"
msgstr "Schauspieler Name"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: characters"
msgid "Actor"
msgstr ""
@@ -182,39 +182,39 @@ msgctxt "Table (companies)"
msgid "Companies"
msgstr "Firmen"
-msgctxt "Field (company_id)"
+msgctxt "Field (company_id). Parent table: companies"
msgid "Company ID"
msgstr "Firma ID"
-msgctxt "Field (name)"
+msgctxt "Field (name). Parent table: companies"
msgid "Name"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: companies"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: companies"
msgid "Description"
msgstr "Beschreibung"
-msgctxt "Field (logo)"
+msgctxt "Field (logo). Parent table: companies"
msgid "Logo"
msgstr ""
-msgctxt "Field (website)"
+msgctxt "Field (website). Parent table: companies"
msgid "Web Site"
msgstr "Website"
-msgctxt "Relationship (staff)"
+msgctxt "Relationship (staff). Parent table: companies"
msgid "Staff"
msgstr "Angestellte"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: companies"
msgid "Overview"
msgstr "bersicht"
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: companies"
msgid "Details"
msgstr "Details"
@@ -222,199 +222,199 @@ msgctxt "Table (contacts)"
msgid "Contacts"
msgstr "Kontakte"
-msgctxt "Field (contact_id)"
+msgctxt "Field (contact_id). Parent table: contacts"
msgid "Contact ID"
msgstr "Kontakt ID"
-msgctxt "Field (name_first)"
+msgctxt "Field (name_first). Parent table: contacts"
msgid "First Name"
msgstr "Vorname"
-msgctxt "Field (name_middle)"
+msgctxt "Field (name_middle). Parent table: contacts"
msgid "Second Name"
msgstr "Zweiter Name"
-msgctxt "Field (name_last)"
+msgctxt "Field (name_last). Parent table: contacts"
msgid "Last Name"
msgstr "Familiename"
-msgctxt "Field (name_title)"
+msgctxt "Field (name_title). Parent table: contacts"
msgid "Title"
msgstr "Titel"
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: name_title"
msgid "Mr"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: name_title"
msgid "Ms"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: name_title"
msgid "Mrs"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: name_title"
msgid "Miss"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: name_title"
msgid "Dr"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: name_title"
msgid "Prof"
msgstr ""
-msgctxt "Field (address_street2)"
+msgctxt "Field (address_street2). Parent table: contacts"
msgid "Street (line 2)"
msgstr "Strasse (2)"
-msgctxt "Field (address_town)"
+msgctxt "Field (address_town). Parent table: contacts"
msgid "Town"
msgstr "Ort"
-msgctxt "Field (address_state)"
+msgctxt "Field (address_state). Parent table: contacts"
msgid "State"
msgstr "Bundesland/Kanton"
-msgctxt "Field (address_country)"
+msgctxt "Field (address_country). Parent table: contacts"
msgid "Country"
msgstr "Land"
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: address_country"
msgid "Germany"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: address_country"
msgid "United Kingdom"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: address_country"
msgid "USA"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: address_country"
msgid "France"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: contacts, Parent Field: address_country"
msgid "Spain"
msgstr ""
-msgctxt "Field (address_postcode)"
+msgctxt "Field (address_postcode). Parent table: contacts"
msgid "Postcode"
msgstr "Postleitzahl"
-msgctxt "Field (date_of_birth)"
+msgctxt "Field (date_of_birth). Parent table: contacts"
msgid "Date Of Birth"
msgstr "Geburtsdatum"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: contacts"
msgid "Comments"
msgstr "Kommentare"
-msgctxt "Field (name_full)"
+msgctxt "Field (name_full). Parent table: contacts"
msgid "Full Name"
msgstr "Vollstndiger Name"
-msgctxt "Field (company_id)"
+msgctxt "Field (company_id). Parent table: contacts"
msgid "Company ID"
msgstr "Firma ID"
-msgctxt "Field (picture)"
+msgctxt "Field (picture). Parent table: contacts"
msgid "Picture"
msgstr "Bild"
-msgctxt "Field (tel_home)"
+msgctxt "Field (tel_home). Parent table: contacts"
msgid "Home Telephone"
msgstr "Telefon (Privat)"
-msgctxt "Field (tel_mobile)"
+msgctxt "Field (tel_mobile). Parent table: contacts"
msgid "Mobile Telephone"
msgstr "Telefon (Handy)"
-msgctxt "Field (tel_fax)"
+msgctxt "Field (tel_fax). Parent table: contacts"
msgid "Fax"
msgstr ""
-msgctxt "Field (tel_work)"
+msgctxt "Field (tel_work). Parent table: contacts"
msgid "Work Telephone"
msgstr "Telefon (Buro)"
-msgctxt "Field (email)"
+msgctxt "Field (email). Parent table: contacts"
msgid "Email"
msgstr "E-Mail"
-msgctxt "Field (address_street1)"
+msgctxt "Field (address_street1). Parent table: contacts"
msgid "Street (line 1)"
msgstr "Strasse (1)"
-msgctxt "Field (website)"
+msgctxt "Field (website). Parent table: contacts"
msgid "Web Site"
msgstr "Website"
-msgctxt "Field (agent_id)"
+msgctxt "Field (agent_id). Parent table: contacts"
msgid "Agent ID"
msgstr ""
-msgctxt "Field (stagename)"
+msgctxt "Field (stagename). Parent table: contacts"
msgid "Stagename"
msgstr "Knstlername"
-msgctxt "Relationship (company)"
+msgctxt "Relationship (company). Parent table: contacts"
msgid "Company"
msgstr "Firma"
-msgctxt "Relationship (agent)"
+msgctxt "Relationship (agent). Parent table: contacts"
msgid "Agent"
msgstr ""
-msgctxt "Relationship (crew)"
+msgctxt "Relationship (crew). Parent table: contacts"
msgid "Crew"
msgstr ""
-msgctxt "Relationship (cast)"
+msgctxt "Relationship (cast). Parent table: contacts"
msgid "Cast"
msgstr ""
-msgctxt "Report (by_country)"
+msgctxt "Report (by_country). Parent table: contacts"
msgid "Contacts By Country"
msgstr ""
-msgctxt "Report (by_country_by_town)"
+msgctxt "Report (by_country_by_town). Parent table: contacts"
msgid "By Country, By Town"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: contacts"
msgid "Overview"
msgstr "bersicht"
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: contacts"
msgid "Details"
msgstr "Details"
-msgctxt "Layout Group (name)"
+msgctxt "Layout Group (name). Parent table: contacts"
msgid "Name"
msgstr "Name"
-msgctxt "Layout Group (company)"
+msgctxt "Layout Group (company). Parent table: contacts"
msgid "Company"
msgstr "Firma"
-msgctxt "Layout Group (address)"
+msgctxt "Layout Group (address). Parent table: contacts"
msgid "Address"
msgstr "Addresse"
-msgctxt "Layout Group (telephone)"
+msgctxt "Layout Group (telephone). Parent table: contacts"
msgid "Telephone"
msgstr "Telefon"
-msgctxt "Layout Group (agent)"
+msgctxt "Layout Group (agent). Parent table: contacts"
msgid "Agent"
msgstr "Agent"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: contacts"
msgid "Company Name"
msgstr ""
@@ -422,27 +422,27 @@ msgctxt "Table (costume)"
msgid "Costume"
msgstr ""
-msgctxt "Field (costume_id)"
+msgctxt "Field (costume_id). Parent table: costume"
msgid "Costume ID"
msgstr ""
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: costume"
msgid "Description"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: costume"
msgid "Comments"
msgstr ""
-msgctxt "Field (name)"
+msgctxt "Field (name). Parent table: costume"
msgid "Name"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: costume"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: costume"
msgid "Details"
msgstr ""
@@ -450,67 +450,67 @@ msgctxt "Table (crew)"
msgid "Crew"
msgstr ""
-msgctxt "Field (crew_id)"
+msgctxt "Field (crew_id). Parent table: crew"
msgid "Crew ID"
msgstr ""
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: crew"
msgid "Description"
msgstr "Beschreibung"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: crew"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Field (dept_id)"
+msgctxt "Field (dept_id). Parent table: crew"
msgid "Department ID"
msgstr "Abteilung ID"
-msgctxt "Field (contact_id)"
+msgctxt "Field (contact_id). Parent table: crew"
msgid "Contact ID"
msgstr "Kontakt ID"
-msgctxt "Relationship (contacts)"
+msgctxt "Relationship (contacts). Parent table: crew"
msgid "Contacts"
msgstr "Kontakten"
-msgctxt "Relationship (departments)"
+msgctxt "Relationship (departments). Parent table: crew"
msgid "Departments"
msgstr "Abteilungen"
-msgctxt "Relationship (scenes)"
+msgctxt "Relationship (scenes). Parent table: crew"
msgid "Scenes"
msgstr "Szenen"
-msgctxt "Report (crew_list)"
+msgctxt "Report (crew_list). Parent table: crew"
msgid "Crew List"
msgstr "TestResult2"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: crew, Parent Report: crew_list"
msgid "Department Name"
msgstr "Abteilungsname"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: crew"
msgid "Overview"
msgstr "bersicht"
-msgctxt "Layout Group (department)"
+msgctxt "Layout Group (department). Parent table: crew"
msgid "Department"
msgstr "Abteilung"
-msgctxt "Layout Group (contact)"
+msgctxt "Layout Group (contact). Parent table: crew"
msgid "Contact"
msgstr "Kontakt"
-msgctxt "Layout Group (address)"
+msgctxt "Layout Group (address). Parent table: crew"
msgid "Address"
msgstr "Addresse"
-msgctxt "Layout Group (agent)"
+msgctxt "Layout Group (agent). Parent table: crew"
msgid "Agent"
msgstr "Agent"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: crew"
msgid "Department Name"
msgstr "Abteilungsname"
@@ -518,75 +518,75 @@ msgctxt "Table (deliveries)"
msgid "Deliveries"
msgstr "Lieferungen"
-msgctxt "Field (delivery_id)"
+msgctxt "Field (delivery_id). Parent table: deliveries"
msgid "Delivery ID"
msgstr "Lieferung ID"
-msgctxt "Field (arrival_date)"
+msgctxt "Field (arrival_date). Parent table: deliveries"
msgid "Arrival Date"
msgstr "Lieferungsdatum"
-msgctxt "Field (departure_contact_id)"
+msgctxt "Field (departure_contact_id). Parent table: deliveries"
msgid "Contact ID"
msgstr "Kontakt ID"
-msgctxt "Field (arrival_contact_id)"
+msgctxt "Field (arrival_contact_id). Parent table: deliveries"
msgid "Contact ID"
msgstr "Kontakt ID"
-msgctxt "Field (arrival_time)"
+msgctxt "Field (arrival_time). Parent table: deliveries"
msgid "Arrival Time"
msgstr "Lieferungszeit"
-msgctxt "Field (arrival_place)"
+msgctxt "Field (arrival_place). Parent table: deliveries"
msgid "Arrival Place"
msgstr "Lieferungsaddresse"
-msgctxt "Field (departure_time)"
+msgctxt "Field (departure_time). Parent table: deliveries"
msgid "Departure Time"
msgstr "Sendungszeit"
-msgctxt "Field (departure_date)"
+msgctxt "Field (departure_date). Parent table: deliveries"
msgid "Departure Date"
msgstr "Sendungsdatum"
-msgctxt "Field (departure_place)"
+msgctxt "Field (departure_place). Parent table: deliveries"
msgid "Departure Place"
msgstr "Sendungsaddresse"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: deliveries"
msgid "Comments"
msgstr "Kommentare"
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: deliveries"
msgid "Description"
msgstr "Beschreibung"
-msgctxt "Relationship (departure_contact)"
+msgctxt "Relationship (departure_contact). Parent table: deliveries"
msgid "Departure Contact"
msgstr "Sendungskontakt"
-msgctxt "Relationship (arrival_contact)"
+msgctxt "Relationship (arrival_contact). Parent table: deliveries"
msgid "Arrival Contact"
msgstr "Empfaengerkontakt"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: deliveries"
msgid "Departure Name"
msgstr "Sendername"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: deliveries"
msgid "Arrival Name"
msgstr "Empfngerkontakt"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: deliveries"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (departure)"
+msgctxt "Layout Group (departure). Parent table: deliveries"
msgid "Departure"
msgstr "Departure"
-msgctxt "Layout Group (arrival)"
+msgctxt "Layout Group (arrival). Parent table: deliveries"
msgid "Arrival"
msgstr "Arrival"
@@ -594,23 +594,23 @@ msgctxt "Table (departments)"
msgid "Departments"
msgstr "Abteilungen"
-msgctxt "Field (departments_id)"
+msgctxt "Field (departments_id). Parent table: departments"
msgid "Department ID"
msgstr "Abteilung ID"
-msgctxt "Field (name)"
+msgctxt "Field (name). Parent table: departments"
msgid "Name"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: departments"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Relationship (department_crew)"
+msgctxt "Relationship (department_crew). Parent table: departments"
msgid "Department Crew"
msgstr "Abteilung Crew"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: departments"
msgid "Overview"
msgstr "bersicht"
@@ -618,27 +618,27 @@ msgctxt "Table (equipment)"
msgid "Equipment"
msgstr ""
-msgctxt "Field (equipment_id)"
+msgctxt "Field (equipment_id). Parent table: equipment"
msgid "Equipment ID"
msgstr ""
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: equipment"
msgid "Description"
msgstr "Beschreibung"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: equipment"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Relationship (scenes)"
+msgctxt "Relationship (scenes). Parent table: equipment"
msgid "Scenes"
msgstr "Szenen"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: equipment"
msgid "Overview"
msgstr "bersicht"
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: equipment"
msgid "Details"
msgstr "Details"
@@ -646,63 +646,63 @@ msgctxt "Table (journeys)"
msgid "Journeys"
msgstr "Fahrten"
-msgctxt "Field (journey_id)"
+msgctxt "Field (journey_id). Parent table: journeys"
msgid "Journey ID"
msgstr "Fahrt ID"
-msgctxt "Field (comment)"
+msgctxt "Field (comment). Parent table: journeys"
msgid "Comment"
msgstr "Kommentar"
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: journeys"
msgid "Description"
msgstr "Beschreibung"
-msgctxt "Field (arrival_date)"
+msgctxt "Field (arrival_date). Parent table: journeys"
msgid "Arrival Date"
msgstr ""
-msgctxt "Field (arrival_time)"
+msgctxt "Field (arrival_time). Parent table: journeys"
msgid "Arrival Time"
msgstr ""
-msgctxt "Field (arrival_place)"
+msgctxt "Field (arrival_place). Parent table: journeys"
msgid "Arrival Place"
msgstr ""
-msgctxt "Field (departure_date)"
+msgctxt "Field (departure_date). Parent table: journeys"
msgid "Departure Date"
msgstr ""
-msgctxt "Field (departure_time)"
+msgctxt "Field (departure_time). Parent table: journeys"
msgid "Departure Time"
msgstr ""
-msgctxt "Field (departure_place)"
+msgctxt "Field (departure_place). Parent table: journeys"
msgid "Departure Place"
msgstr ""
-msgctxt "Field (contact_id)"
+msgctxt "Field (contact_id). Parent table: journeys"
msgid "Contact ID"
msgstr "Kontakt ID"
-msgctxt "Relationship (contacts)"
+msgctxt "Relationship (contacts). Parent table: journeys"
msgid "Contacts"
msgstr "Kontakte"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: journeys"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (person)"
+msgctxt "Layout Group (person). Parent table: journeys"
msgid "Person"
msgstr "Person"
-msgctxt "Layout Group (departure)"
+msgctxt "Layout Group (departure). Parent table: journeys"
msgid "Departure"
msgstr "Departure"
-msgctxt "Layout Group (arrival)"
+msgctxt "Layout Group (arrival). Parent table: journeys"
msgid "Arrival"
msgstr "Arrival"
@@ -710,63 +710,63 @@ msgctxt "Table (locations)"
msgid "Locations"
msgstr ""
-msgctxt "Field (location_id)"
+msgctxt "Field (location_id). Parent table: locations"
msgid "Location ID"
msgstr ""
-msgctxt "Field (name)"
+msgctxt "Field (name). Parent table: locations"
msgid "Name"
msgstr ""
-msgctxt "Field (address_street)"
+msgctxt "Field (address_street). Parent table: locations"
msgid "Street"
msgstr "Strasse"
-msgctxt "Field (address_town)"
+msgctxt "Field (address_town). Parent table: locations"
msgid "Town"
msgstr "Stadt"
-msgctxt "Field (address_county)"
+msgctxt "Field (address_county). Parent table: locations"
msgid "County"
msgstr "Land"
-msgctxt "Field (address_country)"
+msgctxt "Field (address_country). Parent table: locations"
msgid "Country"
msgstr "Staat"
-msgctxt "Field (address_postcode)"
+msgctxt "Field (address_postcode). Parent table: locations"
msgid "Postcode"
msgstr "Postleitzahl"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: locations"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Field (contact_id)"
+msgctxt "Field (contact_id). Parent table: locations"
msgid "Contact ID"
msgstr ""
-msgctxt "Field (rent)"
+msgctxt "Field (rent). Parent table: locations"
msgid "Rent"
msgstr ""
-msgctxt "Relationship (scenes)"
+msgctxt "Relationship (scenes). Parent table: locations"
msgid "Scenes"
msgstr "Szenen"
-msgctxt "Relationship (contacts)"
+msgctxt "Relationship (contacts). Parent table: locations"
msgid "Contacts"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: locations"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (address)"
+msgctxt "Layout Group (address). Parent table: locations"
msgid "Address"
msgstr "Addresse"
-msgctxt "Layout Group (contact_person)"
+msgctxt "Layout Group (contact_person). Parent table: locations"
msgid "Contact Person"
msgstr "Contact Person"
@@ -774,27 +774,27 @@ msgctxt "Table (props)"
msgid "Props"
msgstr ""
-msgctxt "Field (prop_id)"
+msgctxt "Field (prop_id). Parent table: props"
msgid "Prop ID"
msgstr ""
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: props"
msgid "Description"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: props"
msgid "Comments"
msgstr ""
-msgctxt "Field (name)"
+msgctxt "Field (name). Parent table: props"
msgid "Name"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: props"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: props"
msgid "Details"
msgstr ""
@@ -802,31 +802,31 @@ msgctxt "Table (scene_cast)"
msgid "Scene Cast"
msgstr "Szene Besetzung"
-msgctxt "Field (scene_cast_id)"
+msgctxt "Field (scene_cast_id). Parent table: scene_cast"
msgid "Scene Cast ID"
msgstr "Szene Besetzung ID"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: scene_cast"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Field (cast_id)"
+msgctxt "Field (cast_id). Parent table: scene_cast"
msgid "Cast ID"
msgstr "Besetzung ID"
-msgctxt "Field (scene_id)"
+msgctxt "Field (scene_id). Parent table: scene_cast"
msgid "Scene ID"
msgstr "Szene ID"
-msgctxt "Relationship (cast)"
+msgctxt "Relationship (cast). Parent table: scene_cast"
msgid "Cast"
msgstr "Besetzung"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: scene_cast"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: scene_cast"
msgid "Details"
msgstr ""
@@ -834,35 +834,35 @@ msgctxt "Table (scene_costume)"
msgid "Scene Costume"
msgstr ""
-msgctxt "Field (scene_costume_id)"
+msgctxt "Field (scene_costume_id). Parent table: scene_costume"
msgid "Scene Costume ID"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: scene_costume"
msgid "Comments"
msgstr ""
-msgctxt "Field (scene_id)"
+msgctxt "Field (scene_id). Parent table: scene_costume"
msgid "Scene Id"
msgstr ""
-msgctxt "Field (costume_id)"
+msgctxt "Field (costume_id). Parent table: scene_costume"
msgid "Costume ID"
msgstr ""
-msgctxt "Relationship (costume)"
+msgctxt "Relationship (costume). Parent table: scene_costume"
msgid "Costume"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: scene_costume"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: scene_costume"
msgid "Details"
msgstr ""
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: scene_costume"
msgid "Costume Name"
msgstr ""
@@ -870,59 +870,59 @@ msgctxt "Table (scene_crew)"
msgid "Scene Crew"
msgstr "Szene Crew"
-msgctxt "Field (scene_crew_id)"
+msgctxt "Field (scene_crew_id). Parent table: scene_crew"
msgid "Scene Crew ID"
msgstr "Szene Crew ID"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: scene_crew"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Field (scene_id)"
+msgctxt "Field (scene_id). Parent table: scene_crew"
msgid "Scene ID"
msgstr "Szene ID"
-msgctxt "Field (department_id)"
+msgctxt "Field (department_id). Parent table: scene_crew"
msgid "Department ID"
msgstr ""
-msgctxt "Relationship (department)"
+msgctxt "Relationship (department). Parent table: scene_crew"
msgid "Department"
msgstr ""
-msgctxt "Relationship (scenes)"
+msgctxt "Relationship (scenes). Parent table: scene_crew"
msgid "Scenes"
msgstr "Szenen"
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: scene_crew"
msgid "Overview"
msgstr "bersicht"
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: scene_crew"
msgid "Details"
msgstr "Details"
-msgctxt "Field (scene_equipment_id)"
+msgctxt "Field (scene_equipment_id). Parent table: scene_equipment"
msgid "Scene Equipment ID"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: scene_equipment"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Field (equipment_id)"
+msgctxt "Field (equipment_id). Parent table: scene_equipment"
msgid "Equipment ID"
msgstr ""
-msgctxt "Field (scene_id)"
+msgctxt "Field (scene_id). Parent table: scene_equipment"
msgid "Scene ID"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: scene_equipment"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: scene_equipment"
msgid "Details"
msgstr ""
@@ -930,35 +930,35 @@ msgctxt "Table (scene_extras)"
msgid "Scene Extras"
msgstr ""
-msgctxt "Field (scene_extras_id)"
+msgctxt "Field (scene_extras_id). Parent table: scene_extras"
msgid "Scene Extras ID"
msgstr ""
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: scene_extras"
msgid "Description"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: scene_extras"
msgid "Comments"
msgstr ""
-msgctxt "Field (scene_id)"
+msgctxt "Field (scene_id). Parent table: scene_extras"
msgid "Scene ID"
msgstr ""
-msgctxt "Field (contact_id)"
+msgctxt "Field (contact_id). Parent table: scene_extras"
msgid "Contact ID"
msgstr ""
-msgctxt "Relationship (contact)"
+msgctxt "Relationship (contact). Parent table: scene_extras"
msgid "Contact"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: scene_extras"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: scene_extras"
msgid "Details"
msgstr ""
@@ -966,27 +966,27 @@ msgctxt "Table (scene_makeup)"
msgid "Scene Makeup"
msgstr ""
-msgctxt "Field (scene_makeup_id)"
+msgctxt "Field (scene_makeup_id). Parent table: scene_makeup"
msgid "Scene Makeup ID"
msgstr ""
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: scene_makeup"
msgid "Description"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: scene_makeup"
msgid "Comments"
msgstr ""
-msgctxt "Field (scene_id)"
+msgctxt "Field (scene_id). Parent table: scene_makeup"
msgid "Scene ID"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: scene_makeup"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: scene_makeup"
msgid "Details"
msgstr ""
@@ -994,31 +994,31 @@ msgctxt "Table (scene_props)"
msgid "Scene Props"
msgstr ""
-msgctxt "Field (scene_props_id)"
+msgctxt "Field (scene_props_id). Parent table: scene_props"
msgid "Scene Prop ID"
msgstr ""
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: scene_props"
msgid "Comments"
msgstr ""
-msgctxt "Field (scene_id)"
+msgctxt "Field (scene_id). Parent table: scene_props"
msgid "Scene ID"
msgstr ""
-msgctxt "Field (prop_id)"
+msgctxt "Field (prop_id). Parent table: scene_props"
msgid "Prop ID"
msgstr ""
-msgctxt "Relationship (props)"
+msgctxt "Relationship (props). Parent table: scene_props"
msgid "Props"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: scene_props"
msgid "Overview"
msgstr ""
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: scene_props"
msgid "Details"
msgstr ""
@@ -1026,138 +1026,140 @@ msgctxt "Table (scenes)"
msgid "Scenes"
msgstr "TestResult1"
-msgctxt "Field (scene_id)"
+msgctxt "Field (scene_id). Parent table: scenes"
msgid "Scene ID"
msgstr "Szene ID"
-msgctxt "Field (comments)"
+msgctxt "Field (comments). Parent table: scenes"
msgid "Comments"
msgstr "Kommentar"
-msgctxt "Field (description)"
+msgctxt "Field (description). Parent table: scenes"
msgid "Description"
msgstr "Beschreibung"
-msgctxt "Field (location_id)"
+msgctxt "Field (location_id). Parent table: scenes"
msgid "Location ID"
msgstr ""
-msgctxt "Field (date)"
+msgctxt "Field (date). Parent table: scenes"
msgid "Date"
msgstr "Termin"
-msgctxt "Field (time)"
+msgctxt "Field (time). Parent table: scenes"
msgid "Time"
msgstr "Zeit"
-msgctxt "Field (minutes)"
+msgctxt "Field (minutes). Parent table: scenes"
msgid "Stop (minutes)"
msgstr "Stunde"
-msgctxt "Field (day_or_night)"
+msgctxt "Field (day_or_night). Parent table: scenes"
msgid "Day/Night"
msgstr "Tag/Nacht"
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: scenes, Parent Field: day_or_night"
msgid "Day"
msgstr "Tag"
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: scenes, Parent Field: day_or_night"
msgid "Night"
msgstr "Nacht"
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: scenes, Parent Field: day_or_night"
msgid "Morning"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: scenes, Parent Field: day_or_night"
msgid "Evening"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt "Field Choice. Parent table: scenes, Parent Field: day_or_night"
msgid "Dawn"
msgstr ""
-msgctxt "Field (interior_or_exterior)"
+msgctxt "Field (interior_or_exterior). Parent table: scenes"
msgid "Interior/Exterior"
msgstr "Interior/Exterior"
-msgctxt "Field Choice ()"
+msgctxt ""
+"Field Choice. Parent table: scenes, Parent Field: interior_or_exterior"
msgid "Interior"
msgstr ""
-msgctxt "Field Choice ()"
+msgctxt ""
+"Field Choice. Parent table: scenes, Parent Field: interior_or_exterior"
msgid "Exterior"
msgstr ""
-msgctxt "Field (name)"
+msgctxt "Field (name). Parent table: scenes"
msgid "Name"
msgstr "Szene"
-msgctxt "Field (overview_name)"
+msgctxt "Field (overview_name). Parent table: scenes"
msgid "Scene"
msgstr ""
-msgctxt "Field (pages)"
+msgctxt "Field (pages). Parent table: scenes"
msgid "Pages"
msgstr ""
-msgctxt "Field (script_day)"
+msgctxt "Field (script_day). Parent table: scenes"
msgid "Script Day"
msgstr ""
-msgctxt "Relationship (location)"
+msgctxt "Relationship (location). Parent table: scenes"
msgid "Locations"
msgstr ""
-msgctxt "Relationship (scene_crew)"
+msgctxt "Relationship (scene_crew). Parent table: scenes"
msgid "Additional Crew"
msgstr "Szene Crew"
-msgctxt "Relationship (scene_cast)"
+msgctxt "Relationship (scene_cast). Parent table: scenes"
msgid "Cast"
msgstr "Szene Besetzung"
-msgctxt "Relationship (scene_equipment)"
+msgctxt "Relationship (scene_equipment). Parent table: scenes"
msgid "Additional Equipment"
msgstr ""
-msgctxt "Relationship (scene_extras)"
+msgctxt "Relationship (scene_extras). Parent table: scenes"
msgid "Extras"
msgstr ""
-msgctxt "Relationship (scene_props)"
+msgctxt "Relationship (scene_props). Parent table: scenes"
msgid "Props"
msgstr ""
-msgctxt "Relationship (scene_costume)"
+msgctxt "Relationship (scene_costume). Parent table: scenes"
msgid "Costume"
msgstr ""
-msgctxt "Relationship (scene_makeup)"
+msgctxt "Relationship (scene_makeup). Parent table: scenes"
msgid "Additional Makeup"
msgstr ""
-msgctxt "Layout Group (overview)"
+msgctxt "Layout Group (overview). Parent table: scenes"
msgid "Overview"
msgstr "bersicht"
-msgctxt "Layout Group (details)"
+msgctxt "Layout Group (details). Parent table: scenes"
msgid "Details"
msgstr "Details"
-msgctxt "Layout Group (scenario)"
+msgctxt "Layout Group (scenario). Parent table: scenes"
msgid "Scenario"
msgstr "Stimmung"
-msgctxt "Layout Group (location)"
+msgctxt "Layout Group (location). Parent table: scenes"
msgid "Location"
msgstr "Location"
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: scenes"
msgid "Contact Name"
msgstr ""
-msgctxt "Custom Title ()"
+msgctxt "Custom Title. Parent table: scenes"
msgid "Actor's Name"
msgstr ""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]