Merge branch 'maint'

This commit is contained in:
Christopher Lam 2021-08-12 22:28:58 +08:00
commit eafc290034
68 changed files with 779 additions and 924 deletions

View File

@ -78,9 +78,16 @@ gchar * gnc_build_userdata_path(const gchar *);
%newobject gnc_file_path_absolute;
gchar *gnc_file_path_absolute (const gchar *, const gchar *);
%newobject gnc_build_scm_path;
gchar * gnc_build_scm_path(const gchar *);
%newobject gnc_build_report_path;
gchar * gnc_build_report_path(const gchar *);
%newobject gnc_build_stdreports_path;
gchar * gnc_build_stdreports_path(const gchar *);
%newobject gnc_build_reports_path;
gchar * gnc_build_reports_path(const gchar *);
void gnc_scm_log_warn(const gchar *);

View File

@ -36,10 +36,18 @@ static const GncGUID * gncAccountGetGUID(Account *x)
%include <Split.h>
%newobject gnc_account_get_children;
AccountList * gnc_account_get_children (const Account *account);
%newobject gnc_account_get_children_sorted;
AccountList * gnc_account_get_children_sorted (const Account *account);
%newobject gnc_account_get_descendants;
AccountList * gnc_account_get_descendants (const Account *account);
%newobject gnc_account_get_descendants_sorted;
AccountList * gnc_account_get_descendants_sorted (const Account *account);
%ignore gnc_account_get_children;
%ignore gnc_account_get_children_sorted;
%ignore gnc_account_get_descendants;

View File

@ -190,6 +190,9 @@ const char *qof_session_get_url (QofSession *session);
%ignore qof_print_date_time_buff;
%ignore gnc_tm_free;
%newobject qof_print_date;
%newobject gnc_ctime;
%newobject gnc_print_time64;
%include <gnc-date.h>
extern const char *gnc_default_strftime_date_format;

View File

@ -130,13 +130,13 @@
\Euro
%---------------------------------------------------------------------------
\begin{letter}{% {% endraw %}
{{ invoice.GetOwner().GetName().decode("UTF-8") }} \\
{{ invoice.GetOwner().GetAddr().GetAddr1().decode("UTF-8") }} \\
{{ invoice.GetOwner().GetAddr().GetAddr2().decode("UTF-8") }} \\
{{ invoice.GetOwner().GetAddr().GetAddr3().decode("UTF-8") }}
{{ invoice.GetOwner().GetName() }} \\
{{ invoice.GetOwner().GetAddr().GetAddr1() }} \\
{{ invoice.GetOwner().GetAddr().GetAddr2() }} \\
{{ invoice.GetOwner().GetAddr().GetAddr3() }}
{# if Addr4 is declared put a linebreak here #}
{% if invoice.GetOwner().GetAddr().GetAddr4() %} \\ {% endif %}
{{ invoice.GetOwner().GetAddr().GetAddr4().decode("UTF-8") }} {% raw %}
{{ invoice.GetOwner().GetAddr().GetAddr4() }} {% raw %}
}
%---------------------------------------------------------------------------
% Weitere Optionen
@ -156,7 +156,7 @@ Ich erlaube mir, Ihnen folgende Beträge in Rechnung zu stellen:
{%- for ent in invoice.GetEntries() -%}
{{- '\Artikel' -}}
{{- '{' -}} {{- ent.GetQuantity() -}} {{- '}' -}}
{{- '{' -}} {{- ent.GetDescription().decode("UTF-8") -}} {{- '}' -}}
{{- '{' -}} {{- ent.GetDescription() -}} {{- '}' -}}
{{- '{' -}} {{- ent.GetInvPrice().to_double() -}} {{- '}' -}}
{%- endfor -%}
{#- **************** JINJA2 Entries END ********************** -#}

View File

@ -134,13 +134,13 @@
\Euro
%---------------------------------------------------------------------------
\begin{letter}{ {%- endraw -%}
{{- invoice.GetOwner().GetName().decode("UTF-8") -}} \\
{{- invoice.GetOwner().GetAddr().GetAddr1().decode("UTF-8") -}} \\
{{- invoice.GetOwner().GetAddr().GetAddr2().decode("UTF-8") -}} \\
{{- invoice.GetOwner().GetAddr().GetAddr3().decode("UTF-8") -}}
{{- invoice.GetOwner().GetName() -}} \\
{{- invoice.GetOwner().GetAddr().GetAddr1() -}} \\
{{- invoice.GetOwner().GetAddr().GetAddr2() -}} \\
{{- invoice.GetOwner().GetAddr().GetAddr3() -}}
{# if Addr4 is declared put a linebreak here #}
{%- if invoice.GetOwner().GetAddr().GetAddr4() -%} \\ {%- endif -%}
{{- invoice.GetOwner().GetAddr().GetAddr4().decode("UTF-8") -}} {%- raw -%}
{{- invoice.GetOwner().GetAddr().GetAddr4() -}} {%- raw -%}
}
%---------------------------------------------------------------------------
% Weitere Optionen
@ -167,7 +167,7 @@ Ich erlaube mir, Ihnen folgende Beträge in Rechnung zu stellen:
{%- for ent in invoice.GetEntries() %}
{{ loop.index }} &
{{- locale.format("%.2f", ent.GetQuantity().to_double()) -}} &
{{- ent.GetDescription().decode("UTF-8") -}} &
{{- ent.GetDescription() -}} &
\EUR{ {{- locale.format("%.2f", ent.GetInvPrice().to_double()) -}} } &
\EUR{ {{- locale.format("%.2f", ent.GetInvPrice().to_double() * ent.GetQuantity().to_double()) -}} } \\ \hline
{%- endfor -%}

View File

@ -115,19 +115,19 @@ def invoice_to_lco(invoice):
add_str = u""
owner = invoice.GetOwner()
if owner.GetName() != "":
add_str += owner.GetName().decode("UTF-8") + "\n"
add_str += owner.GetName() + "\n"
addr = owner.GetAddr()
if addr.GetName() != "":
add_str += addr.GetName().decode("UTF-8") + "\n"
add_str += addr.GetName() + "\n"
if addr.GetAddr1() != "":
add_str += addr.GetAddr1().decode("UTF-8") + "\n"
add_str += addr.GetAddr1() + "\n"
if addr.GetAddr2() != "":
add_str += addr.GetAddr2().decode("UTF-8") + "\n"
add_str += addr.GetAddr2() + "\n"
if addr.GetAddr3() != "":
add_str += addr.GetAddr3().decode("UTF-8") + "\n"
add_str += addr.GetAddr3() + "\n"
if addr.GetAddr4() != "":
add_str += addr.GetAddr4().decode("UTF-8") + "\n"
add_str += addr.GetAddr4() + "\n"
lco_out += write_variable("toaddress2", add_str)
@ -147,7 +147,7 @@ def invoice_to_lco(invoice):
# Write the entries
ent_str = u""
locale.setlocale(locale.LC_ALL, "de_DE")
locale.setlocale(locale.LC_ALL, "")
for n, ent in enumerate(invoice.GetEntries()):
line_str = u""
@ -160,14 +160,14 @@ def invoice_to_lco(invoice):
n = ent.GetQuantity()
uprice = locale.currency(price).rstrip(" EUR")
un = unicode(
un = str(
int(float(n.num()) / n.denom())
) # choose best way to format numbers according to locale
line_str = u"\Artikel{"
line_str += un
line_str += u"}{"
line_str += descr.decode("UTF-8")
line_str += descr
line_str += u"}{"
line_str += uprice
line_str += u"}"
@ -288,7 +288,6 @@ def main(argv=None):
# Opening output file
f = open(output_file_name, "w")
lco_str = lco_str.encode("latin1")
f.write(lco_str)
f.close()

View File

@ -2163,7 +2163,7 @@ gnc_account_renumber_create_dialog (GtkWidget *window, Account *account)
RenumberDialog *data;
GtkBuilder *builder;
GtkWidget *widget;
gchar *string;
gchar *string, *fullname;
/* This is a safety check; the menu item calling this dialog
* should be disabled if the account has no children.
@ -2182,12 +2182,14 @@ gnc_account_renumber_create_dialog (GtkWidget *window, Account *account)
g_object_unref);
widget = GTK_WIDGET(gtk_builder_get_object (builder, "header_label"));
fullname = gnc_account_get_full_name (account);
string = g_strdup_printf(_( "Renumber the immediate sub-accounts of %s? "
"This will replace the account code field of "
"each child account with a newly generated code."),
gnc_account_get_full_name(account));
fullname);
gtk_label_set_text(GTK_LABEL(widget), string);
g_free(string);
g_free (fullname);
data->prefix = GTK_WIDGET(gtk_builder_get_object (builder, "prefix_entry"));
data->interval = GTK_WIDGET(gtk_builder_get_object (builder, "interval_spin"));
@ -2256,7 +2258,7 @@ gnc_account_cascade_properties_dialog (GtkWidget *window, Account *account)
GtkWidget *color_box, *placeholder_box, *hidden_box;
GtkWidget *placeholder_button, *hidden_button;
gchar *string;
gchar *string, *fullname;
const char *color_string;
gchar *old_color_string = NULL;
GdkRGBA color;
@ -2287,9 +2289,10 @@ gnc_account_cascade_properties_dialog (GtkWidget *window, Account *account)
g_signal_connect (G_OBJECT(color_button_default), "clicked",
G_CALLBACK(default_color_button_cb), (gpointer)color_button);
fullname = gnc_account_get_full_name (account);
string = g_strdup_printf (_( "Set the account color for account '%s' "
"including all sub-accounts to the selected color"),
gnc_account_get_full_name (account));
fullname);
gtk_label_set_text (GTK_LABEL(label), string);
g_free (string);
@ -2316,7 +2319,7 @@ gnc_account_cascade_properties_dialog (GtkWidget *window, Account *account)
string = g_strdup_printf (_( "Set the account placeholder value for account '%s' "
"including all sub-accounts"),
gnc_account_get_full_name (account));
fullname);
gtk_label_set_text (GTK_LABEL(label), string);
g_free (string);
@ -2330,9 +2333,10 @@ gnc_account_cascade_properties_dialog (GtkWidget *window, Account *account)
string = g_strdup_printf (_( "Set the account hidden value for account '%s' "
"including all sub-accounts"),
gnc_account_get_full_name (account));
fullname);
gtk_label_set_text (GTK_LABEL(label), string);
g_free (string);
g_free (fullname);
/* default to cancel */
gtk_dialog_set_default_response (GTK_DIALOG(dialog), GTK_RESPONSE_CANCEL);

View File

@ -1301,6 +1301,8 @@ gnc_ui_commodity_dialog_to_object(CommodityWindow * w)
c = gnc_commodity_new(book, fullname, name_space, mnemonic, code, fraction);
w->edit_commodity = c;
gnc_commodity_begin_edit(c);
gnc_commodity_set_user_symbol(c, user_symbol);
}
else
{

View File

@ -132,7 +132,7 @@ static gchar *gnc_account_separator_is_valid (const gchar *separator,
message = gnc_account_name_violations_errmsg (*normalized_separator,
conflict_accts);
g_list_free (conflict_accts);
g_list_free_full (conflict_accts, g_free);
return message;
}

View File

@ -233,10 +233,8 @@ gas_populate_list (GNCAccountSel *gas)
ACCT_COL_PTR, acc,
-1);
if (g_utf8_collate (name, currentSel) == 0)
{
active = i;
g_free (name);
}
g_free (name);
}
/* If the account which was in the text box before still exists, then

View File

@ -260,6 +260,7 @@ gtk_cell_editable_key_press_event (GtkEntry *entry,
if (qof_scan_date (date_string, &day, &month, &year))
{
gchar *datestr;
when.tm_year = year - 1900;
when.tm_mon = month - 1;
when.tm_mday = day;
@ -267,7 +268,10 @@ gtk_cell_editable_key_press_event (GtkEntry *entry,
if (!gnc_handle_date_accelerator (key_event, &when, date_string))
return FALSE;
gtk_entry_set_text (entry, qof_print_date (gnc_mktime (&when)));
datestr = qof_print_date (gnc_mktime (&when));
gtk_entry_set_text (entry, datestr);
g_free (datestr);
gtk_widget_grab_focus (GTK_WIDGET(entry));
return TRUE;
}

View File

@ -241,9 +241,9 @@ add_event_type (ComponentEventInfo *cei, QofIdTypeConst entity_type,
mask = g_hash_table_lookup (cei->event_masks, entity_type);
if (!mask)
{
char * key = qof_string_cache_insert ((gpointer) entity_type);
const char * key = qof_string_cache_insert ((gpointer) entity_type);
mask = g_new0 (QofEventId, 1);
g_hash_table_insert (cei->event_masks, key, mask);
g_hash_table_insert (cei->event_masks, (gpointer)key, mask);
}
if (or_in)

View File

@ -1101,6 +1101,7 @@ RESTART:
invalid_account_names );
gnc_warning_dialog(parent, "%s", message);
g_free ( message );
g_list_free_full (invalid_account_names, g_free);
}
// Fix account color slots being set to 'Not Set', should run once on a book

View File

@ -263,7 +263,7 @@ ap_assistant_menu_prepare (GtkAssistant *assistant, gpointer user_data)
{
int nperiods;
GDate period_begin, period_end, date_now;
char * str;
char *str, *earliest_str;
AcctPeriodInfo *info = user_data;
@ -302,8 +302,10 @@ ap_assistant_menu_prepare (GtkAssistant *assistant, gpointer user_data)
* we may have closed books since last time. */
info->earliest = get_earliest_in_book (gnc_get_current_book());
info->earliest_str = qof_print_date(info->earliest);
earliest_str = gnc_ctime (&info->earliest);
PINFO ("Date of earliest transaction is %" G_GINT64_FORMAT " %s",
info->earliest, gnc_ctime (&info->earliest));
info->earliest, earliest_str);
g_free (earliest_str);
/* Display the results */
str = g_strdup_printf (
@ -536,6 +538,7 @@ ap_assistant_create (AcctPeriodInfo *info)
GtkBuilder *builder;
GtkWidget *window;
GtkWidget *box;
gchar *earliest_str;
builder = gtk_builder_new();
gnc_builder_add_from_file (builder , "assistant-acct-period.glade", "account_period_assistant");
@ -566,8 +569,10 @@ ap_assistant_create (AcctPeriodInfo *info)
* and use that to set up the freq spec widget. */
info->earliest = get_earliest_in_book (gnc_get_current_book());
info->earliest_str = qof_print_date(info->earliest);
earliest_str = gnc_ctime (&info->earliest);
PINFO ("date of earliest transaction is %" G_GINT64_FORMAT " %s",
info->earliest, gnc_ctime (&info->earliest));
info->earliest, earliest_str);
g_free (earliest_str);
g_date_clear (&info->closing_date, 1);
gnc_gdate_set_time64 (&info->closing_date, info->earliest);

View File

@ -96,7 +96,7 @@ typedef struct
GtkWidget *region_combo;
GtkWidget *region_label;
const gchar *gnc_accounts_dir;
gchar *gnc_accounts_dir;
GtkTreeView *categories_tree;
GtkTreeRowReference *initial_category;
@ -170,6 +170,8 @@ gnc_hierarchy_destroy_cb (GtkWidget *obj, hierarchy_data *data)
g_hash_table_destroy (hash);
data->balance_hash = NULL;
}
g_free (data->gnc_accounts_dir);
}
static gnc_numeric

View File

@ -690,6 +690,7 @@ gnc_reconcile_view_finalize (GObject *object)
{
GNCReconcileView *view = GNC_RECONCILE_VIEW (object);
g_list_free (view->column_list);
if (view->reconciled != NULL)
{
g_hash_table_destroy (view->reconciled);

View File

@ -262,6 +262,7 @@ recnRecalculateBalance (RecnWindow *recnData)
gnc_numeric ending;
gnc_numeric reconciled;
gnc_numeric diff;
gchar *datestr;
GNCPrintAmountInfo print_info;
gboolean reverse_balance, include_children;
GtkAction *action;
@ -289,8 +290,9 @@ recnRecalculateBalance (RecnWindow *recnData)
diff = gnc_numeric_sub_fixed (ending, reconciled);
gtk_label_set_text(GTK_LABEL(recnData->recn_date),
qof_print_date(recnData->statement_date));
datestr = qof_print_date (recnData->statement_date);
gtk_label_set_text (GTK_LABEL(recnData->recn_date), datestr);
g_free (datestr);
gnc_add_colorized_amount (recnData->starting, starting, print_info, FALSE);
gnc_add_colorized_amount (recnData->ending, ending, print_info, reverse_balance);
@ -1866,13 +1868,16 @@ recnWindowWithBalance (GtkWidget *parent, Account *account, gnc_numeric new_endi
{
Split* split = n->data;
time64 recn_date = xaccSplitGetDateReconciled (split);
gchar *datestr, *recnstr;
if ((xaccSplitGetReconcile (split) != YREC) ||
(recn_date <= statement_date))
continue;
PWARN ("split posting_date=%s, recn_date=%s",
qof_print_date (xaccTransGetDate (xaccSplitGetParent (split))),
qof_print_date (recn_date));
datestr = qof_print_date (xaccTransGetDate (xaccSplitGetParent (split)));
recnstr = qof_print_date (recn_date);
PWARN ("split posting_date=%s, recn_date=%s", datestr, recnstr);
g_free (datestr);
g_free (recnstr);
gtk_statusbar_push (bar, context, _("WARNING! Account contains \
splits whose reconcile date is after statement date. Reconciliation may be \

View File

@ -148,11 +148,14 @@ static gpointer test_acct_online_id_match(Account *acct, gpointer data)
*/
else if (partial_len == acct_len)
{
gchar *name1, *name2;
++match->count;
name1 = gnc_account_get_full_name (match->partial_match);
name2 = gnc_account_get_full_name (acct);
PERR("Accounts %s and %s have the same online-id %s",
gnc_account_get_full_name(match->partial_match),
gnc_account_get_full_name(acct),
partial_online_id);
name1, name2, partial_online_id);
g_free (name1);
g_free (name2);
}
}
}

View File

@ -1048,106 +1048,6 @@ gnc_import_process_trans_item (GncImportMatchMap *matchmap,
return FALSE;
}
/********************************************************************\
* check_trans_online_id() Callback function used by
* gnc_import_exists_online_id. Takes pointers to transaction and split,
* returns 0 if their online_ids do NOT match, or if the split
* belongs to the transaction
\********************************************************************/
static gint check_trans_online_id(Transaction *trans1, void *user_data)
{
Account *account;
Split *split1;
Split *split2 = user_data;
const gchar *online_id1;
const gchar *online_id2;
account = xaccSplitGetAccount(split2);
split1 = xaccTransFindSplitByAccount(trans1, account);
if (split1 == split2)
return 0;
/* hack - we really want to iterate over the _splits_ of the account
instead of the transactions */
g_assert(split1 != NULL);
if (gnc_import_split_has_online_id(split1))
online_id1 = gnc_import_get_split_online_id(split1);
else
online_id1 = gnc_import_get_trans_online_id(trans1);
online_id2 = gnc_import_get_split_online_id(split2);
if ((online_id1 == NULL) ||
(online_id2 == NULL) ||
(strcmp(online_id1, online_id2) != 0))
{
return 0;
}
else
{
/*printf("test_trans_online_id(): Duplicate found\n");*/
return 1;
}
}
static gint collect_trans_online_id(Transaction *trans, void *user_data)
{
Split *split;
GHashTable *id_hash = user_data;
int i=0;
const gchar* online_id = gnc_import_get_trans_online_id (trans);
if (online_id)
g_hash_table_add (id_hash, (void*) online_id);
for (GList *splits = xaccTransGetSplitList (trans); splits; splits = splits->next)
{
if (gnc_import_split_has_online_id (splits->data))
g_hash_table_add(id_hash, (void*) gnc_import_get_split_online_id (splits->data));
}
return 0;
}
/** Checks whether the given transaction's online_id already exists in
its parent account. */
gboolean gnc_import_exists_online_id (Transaction *trans, GHashTable* acct_id_hash)
{
gboolean online_id_exists = FALSE;
Account *dest_acct;
Split *source_split;
/* Look for an online_id in the first split */
source_split = xaccTransGetSplit(trans, 0);
g_assert(source_split);
// No online id, no point in continuing. We'd crash if we tried.
if (!gnc_import_get_split_online_id (source_split))
return FALSE;
// Create a hash per account of a hash of all transactions IDs. Then the test below will be fast if
// we have many transactions to import.
dest_acct = xaccSplitGetAccount (source_split);
if (!g_hash_table_contains (acct_id_hash, dest_acct))
{
GHashTable* new_hash = g_hash_table_new (g_str_hash, g_str_equal);
g_hash_table_insert (acct_id_hash, dest_acct, new_hash);
xaccAccountForEachTransaction (dest_acct, collect_trans_online_id, new_hash);
}
online_id_exists = g_hash_table_contains (g_hash_table_lookup (acct_id_hash, dest_acct),
gnc_import_get_split_online_id (source_split));
/* If it does, abort the process for this transaction, since it is
already in the system. */
if (online_id_exists == TRUE)
{
DEBUG("%s", "Transaction with same online ID exists, destroying current transaction");
xaccTransDestroy(trans);
xaccTransCommitEdit(trans);
}
return online_id_exists;
}
/* ******************************************************************
*/

View File

@ -57,15 +57,6 @@ typedef enum _action
/** @name Non-GUI Functions */
/*@{*/
/** Checks whether the given transaction's online_id already exists in
* its parent account. The given transaction has to be open for
* editing. If a matching online_id exists, the transaction is
* destroyed (!) and TRUE is returned, otherwise FALSE is returned.
*
* @param trans The transaction for which to check for an existing
* online_id. */
gboolean gnc_import_exists_online_id (Transaction *trans, GHashTable* acct_id_hash);
/** Evaluates the match between trans_info and split using the provided parameters.
*
* @param trans_info The TransInfo for the imported transaction

View File

@ -76,7 +76,6 @@ struct _main_matcher_info
gboolean add_toggled; // flag to indicate that add has been toggled to stop selection
gint id;
GSList* temp_trans_list; // Temporary list of imported transactions
GHashTable* acct_id_hash; // Hash table, per account, of list of transaction IDs.
GSList* edited_accounts; // List of accounts currently edited.
};
@ -144,14 +143,6 @@ static gboolean query_tooltip_tree_view_cb (GtkWidget *widget, gint x, gint y,
gpointer user_data);
/* end local prototypes */
static
gboolean delete_hash (gpointer key, gpointer value, gpointer user_data)
{
// Value is a hash table that needs to be destroyed.
g_hash_table_destroy (value);
return TRUE;
}
static void
update_all_balances (GNCImportMainMatcher *info)
{
@ -218,8 +209,6 @@ gnc_gen_trans_list_delete (GNCImportMainMatcher *info)
// We've deferred balance computations on many accounts. Let's do it now that we're done.
update_all_balances (info);
g_hash_table_foreach_remove (info->acct_id_hash, delete_hash, NULL);
info->acct_id_hash = NULL;
g_free (info);
}
@ -735,6 +724,7 @@ gnc_gen_trans_assign_transfer_account (GtkTreeView *treeview,
old_acc = gnc_import_TransInfo_get_destacc (trans_info);
if (*first)
{
gchar *acc_full_name = gnc_account_get_full_name (*new_acc);
ok_pressed = FALSE;
*new_acc = gnc_import_select_account (info->main_widget,
NULL,
@ -746,8 +736,9 @@ gnc_gen_trans_assign_transfer_account (GtkTreeView *treeview,
old_acc,
&ok_pressed);
*first = FALSE;
DEBUG("account selected = %s",
gnc_account_get_full_name (*new_acc));
acc_full_name = gnc_account_get_full_name (*new_acc);
DEBUG("account selected = %s", acc_full_name);
g_free (acc_full_name);
}
if (ok_pressed)
{
@ -805,19 +796,22 @@ gnc_gen_trans_assign_transfer_account_to_selection_cb (GtkMenuItem *menuitem,
{
gchar *path_str = gtk_tree_path_to_string (l->data);
GtkTreeRowReference *ref = gtk_tree_row_reference_new (model, l->data);
gchar *fullname;
DEBUG("passing first = %s", first ? "true" : "false");
DEBUG("passing is_selection = %s", is_selection ? "true" : "false");
DEBUG("passing path = %s", path_str);
g_free (path_str);
refs = g_list_prepend (refs, ref);
DEBUG("passing account value = %s",
gnc_account_get_full_name (assigned_account));
fullname = gnc_account_get_full_name (assigned_account);
DEBUG("passing account value = %s", fullname);
g_free (fullname);
gnc_gen_trans_assign_transfer_account (treeview,
&first, is_selection, l->data,
&assigned_account, info);
DEBUG("returned value of account = %s",
gnc_account_get_full_name (assigned_account));
fullname = gnc_account_get_full_name (assigned_account);
DEBUG("returned value of account = %s", fullname);
DEBUG("returned value of first = %s", first ? "true" : "false");
g_free (fullname);
if (assigned_account == NULL)
break;
@ -848,6 +842,7 @@ gnc_gen_trans_row_activated_cb (GtkTreeView *treeview,
{
Account *assigned_account;
gboolean first, is_selection;
gchar *namestr;
ENTER("");
assigned_account = NULL;
@ -859,7 +854,9 @@ gnc_gen_trans_row_activated_cb (GtkTreeView *treeview,
gtk_tree_selection_select_path (gtk_tree_view_get_selection (treeview), path);
DEBUG("account returned = %s", gnc_account_get_full_name (assigned_account));
namestr = gnc_account_get_full_name (assigned_account);
DEBUG("account returned = %s", namestr);
g_free (namestr);
LEAVE("");
}
@ -1133,8 +1130,6 @@ gnc_gen_trans_init_view (GNCImportMainMatcher *info,
G_CALLBACK(gnc_gen_trans_onButtonPressed_cb), info);
g_signal_connect (view, "popup-menu",
G_CALLBACK(gnc_gen_trans_onPopupMenu_cb), info);
info->acct_id_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
}
static void
@ -1715,16 +1710,11 @@ gnc_gen_trans_list_add_trans_with_ref_id (GNCImportMainMatcher *gui, Transaction
g_assert (gui);
g_assert (trans);
if (gnc_import_exists_online_id (trans, gui->acct_id_hash))
return;
else
{
transaction_info = gnc_import_TransInfo_new (trans, NULL);
gnc_import_TransInfo_set_ref_id (transaction_info, ref_id);
// It's much faster to gather the imported transactions into a GSList than directly into the
// treeview.
gui->temp_trans_list = g_slist_prepend (gui->temp_trans_list, transaction_info);
}
transaction_info = gnc_import_TransInfo_new (trans, NULL);
gnc_import_TransInfo_set_ref_id (transaction_info, ref_id);
// It's much faster to gather the imported transactions into a GSList than directly into the
// treeview.
gui->temp_trans_list = g_slist_prepend (gui->temp_trans_list, transaction_info);
return;
}
@ -1788,8 +1778,6 @@ create_hash_of_potential_matches (GList *candidate_txns,
{
Account* split_account;
GSList* split_list;
if (gnc_import_split_has_online_id (candidate->data))
continue;
split_account = xaccSplitGetAccount (candidate->data);
/* g_hash_table_steal_extended would do the two calls in one shot but is
* not available until GLib 2.58.

View File

@ -57,29 +57,6 @@ void gnc_import_set_acc_online_id (Account *account, const gchar *id)
xaccAccountCommitEdit (account);
}
const gchar * gnc_import_get_trans_online_id (Transaction * transaction)
{
gchar *id = NULL;
qof_instance_get (QOF_INSTANCE (transaction), "online-id", &id, NULL);
return id;
}
/* Not actually used */
void gnc_import_set_trans_online_id (Transaction *transaction,
const gchar *id)
{
g_return_if_fail (transaction != NULL);
xaccTransBeginEdit (transaction);
qof_instance_set (QOF_INSTANCE (transaction), "online-id", id, NULL);
xaccTransCommitEdit (transaction);
}
gboolean gnc_import_trans_has_online_id(Transaction * transaction)
{
const gchar * online_id;
online_id = gnc_import_get_trans_online_id(transaction);
return (online_id != NULL && strlen(online_id) > 0);
}
const gchar * gnc_import_get_split_online_id (Split * split)
{
gchar *id = NULL;

View File

@ -49,17 +49,6 @@ const gchar * gnc_import_get_acc_online_id(Account * account);
void gnc_import_set_acc_online_id(Account * account,
const gchar * string_value);
/** @} */
/** @name Setter-getters
Setter and getter functions for the online_id field for
Transactions.
@{
*/
const gchar * gnc_import_get_trans_online_id(Transaction * transaction);
void gnc_import_set_trans_online_id(Transaction * transaction,
const gchar * string_value);
/** @} */
gboolean gnc_import_trans_has_online_id(Transaction * transaction);
/** @name Setter-getters
Setter and getter functions for the online_id field for

View File

@ -287,7 +287,9 @@ gnc_get_default_report_font_family(void)
pango_font_description_free (font_desc);
if (g_str_has_prefix (default_font_family, ".AppleSystemUIFont"))
if (!default_font_family)
return g_strdup ("Arial");
else if (g_str_has_prefix (default_font_family, ".AppleSystemUIFont"))
{
g_free (default_font_family);
return g_strdup ("Arial");

View File

@ -1832,6 +1832,8 @@ the option '~a'."))
("Links" #f "Transaction Links")
;; invoice.scm, renamed November 2018
("Individual Taxes" #f "Use Detailed Tax Summary")
;; renamed in several reports, April 2021
("Show Accounts until level" #f "Levels of Subaccounts")
;; receipt.scm, renamed July 2021
("Invoice number" #f "Invoice Number")
;; receipt.scm and taxinvoice.scm, renamed July 2021

View File

@ -1100,7 +1100,9 @@ gnc_module_init_backend_dbi (void)
#endif
if (num_drivers <= 0)
{
gchar* dir = g_build_filename (gnc_path_get_libdir (), "dbd", nullptr);
gchar *libdir = gnc_path_get_libdir ();
gchar *dir = g_build_filename (libdir, "dbd", nullptr);
g_free (libdir);
#if HAVE_LIBDBI_R
if (dbi_instance)
return;

View File

@ -656,6 +656,7 @@ GncSqlTransBackend::commit (GncSqlBackend* sql_be, QofInstance* inst)
{
Split* split = xaccTransGetSplit (pTx, 0);
Account* acc = xaccSplitGetAccount (split);
gchar *datestr = qof_print_date (xaccTransGetDate (pTx));
/* FIXME: This needs to be implemented
const char *message1 = "Transaction %s dated %s in account %s not saved due to %s.%s";
const char *message2 = "\nDatabase may be corrupted, check your data carefully.";
@ -668,10 +669,8 @@ GncSqlTransBackend::commit (GncSqlBackend* sql_be, QofInstance* inst)
message2 );
*/
PERR ("Transaction %s dated %s in account %s not saved due to %s.\n",
xaccTransGetDescription (pTx),
qof_print_date (xaccTransGetDate (pTx)),
xaccAccountGetName (acc),
err);
xaccTransGetDescription (pTx), datestr, xaccAccountGetName (acc), err);
g_free (datestr);
}
return is_ok;
}

View File

@ -699,6 +699,7 @@ qof_session_load_from_xml_file_v2_full (
QofBookFileType type)
{
Account* root;
Account* template_root;
sixtp_gdv2* gd;
sixtp* top_parser;
sixtp* main_parser;
@ -851,12 +852,18 @@ qof_session_load_from_xml_file_v2_full (
/* commit all groups, this completes the BeginEdit started when the
* account_end_handler finished reading the account.
*/
template_root = gnc_book_get_template_root (book);
gnc_account_foreach_descendant (root,
(AccountCb) xaccAccountCommitEdit,
NULL);
gnc_account_foreach_descendant (gnc_book_get_template_root (book),
gnc_account_foreach_descendant (template_root,
(AccountCb) xaccAccountCommitEdit,
NULL);
/* if these exist in the XML file then they will be uncommitted */
if (qof_instance_get_editlevel(root) != 0)
xaccAccountCommitEdit(root);
if (qof_instance_get_editlevel(template_root) != 0)
xaccAccountCommitEdit(template_root);
/* start logging again */
xaccLogEnable ();

View File

@ -92,7 +92,8 @@ test_load_file (const char* filename)
g_log_set_handler (logdomain, loglevel,
(GLogFunc)test_checked_handler, &check);
auto session = qof_session_new (nullptr);
auto book = qof_book_new();
auto session = qof_session_new (book);
remove_locks (filename);
@ -102,12 +103,14 @@ test_load_file (const char* filename)
ignore_lock ? SESSION_READ_ONLY : SESSION_NORMAL_OPEN);
qof_session_load (session, NULL);
auto book = qof_session_get_book (session);
auto root = gnc_book_get_root_account (book);
do_test (gnc_account_get_book (root) == book,
"book and root account don't match");
do_test (qof_instance_get_editlevel(root) == 0,
"root account editlevel is not 0");
do_test_args (qof_session_get_error (session) == ERR_BACKEND_NO_ERR,
"session load xml2", __FILE__, __LINE__,
"qof error=%d for file [%s]",
@ -115,6 +118,7 @@ test_load_file (const char* filename)
/* Uncomment the line below to generate corrected files */
/* qof_session_save( session, NULL ); */
qof_session_end (session);
qof_book_destroy (book);
}
int

View File

@ -1174,7 +1174,9 @@ gnc_build_data_path (const gchar *filename)
gchar *
gnc_build_scm_path (const gchar *filename)
{
gchar *result = g_build_filename(gnc_path_get_scmdir(), filename, (gchar *)NULL);
gchar *scmdir = gnc_path_get_scmdir ();
gchar *result = g_build_filename (scmdir, filename, (gchar *)NULL);
g_free (scmdir);
return result;
}
@ -1190,7 +1192,9 @@ gnc_build_scm_path (const gchar *filename)
gchar *
gnc_build_report_path (const gchar *filename)
{
gchar *result = g_build_filename(gnc_path_get_reportdir(), filename, (gchar *)NULL);
gchar *rptdir = gnc_path_get_reportdir ();
gchar *result = g_build_filename (rptdir, filename, (gchar *)NULL);
g_free (rptdir);
return result;
}
@ -1206,7 +1210,9 @@ gnc_build_report_path (const gchar *filename)
gchar *
gnc_build_reports_path (const gchar *dirname)
{
gchar *result = g_build_filename(gnc_path_get_reportsdir(), dirname, (gchar *)NULL);
gchar *rptsdir = gnc_path_get_reportsdir ();
gchar *result = g_build_filename (rptsdir, dirname, (gchar *)NULL);
g_free (rptsdir);
return result;
}
@ -1222,7 +1228,9 @@ gnc_build_reports_path (const gchar *dirname)
gchar *
gnc_build_stdreports_path (const gchar *filename)
{
gchar *result = g_build_filename(gnc_path_get_stdreportsdir(), filename, (gchar *)NULL);
gchar *stdrptdir = gnc_path_get_stdreportsdir ();
gchar *result = g_build_filename (stdrptdir, filename, (gchar *)NULL);
g_free (stdrptdir);
return result;
}
@ -1253,7 +1261,10 @@ gnc_filepath_locate_file (const gchar *default_path, const gchar *name)
gchar *
gnc_filepath_locate_data_file (const gchar *name)
{
return gnc_filepath_locate_file (gnc_path_get_pkgdatadir(), name);
gchar *pkgdatadir = gnc_path_get_pkgdatadir ();
gchar *result = gnc_filepath_locate_file (pkgdatadir, name);
g_free (pkgdatadir);
return result;
}
gchar *
@ -1289,7 +1300,10 @@ gnc_filepath_locate_ui_file (const gchar *name)
gchar *
gnc_filepath_locate_doc_file (const gchar *name)
{
return gnc_filepath_locate_file (gnc_path_get_pkgdocdir(), name);
gchar *docdir = gnc_path_get_pkgdocdir ();
gchar *result = gnc_filepath_locate_file (docdir, name);
g_free (docdir);
return result;
}

View File

@ -327,3 +327,35 @@ void gnc_gpid_kill(GPid pid)
}
#endif /* G_OS_WIN32 */
}
static inline char*
gnc_strcat (char* dest, const char* src)
{
while (*dest) dest++;
while ((*dest++ = *src++));
return --dest;
}
gchar *
gnc_g_list_stringjoin (GList *list_of_strings, const gchar *sep)
{
gint seplen = sep ? strlen(sep) : 0;
gint length = -seplen;
gchar *retval, *p;
if (!list_of_strings)
return NULL;
for (GList *n = list_of_strings; n; n = n->next)
length += strlen ((gchar*)n->data) + seplen;
p = retval = (gchar*) g_malloc0 (length * sizeof (gchar) + 1);
for (GList *n = list_of_strings; n; n = n->next)
{
p = gnc_strcat (p, (gchar*)n->data);
if (n->next && sep)
p = gnc_strcat (p, sep);
}
return retval;
}

View File

@ -183,6 +183,22 @@ void gnc_scm_log_debug(const gchar *msg);
@{
*/
/**
* @brief Return a string joining a GList whose elements are gchar*
* strings. Returns NULL if an empty GList* is passed through. The
* optional sep string will be used as separator. Must be g_freed when
* not needed anymore.
*
* @param list_of_strings A GList of chars*
*
* @param sep a separator or NULL
*
* @return A newly allocated string that has to be g_free'd by the
* caller.
**/
gchar * gnc_g_list_stringjoin (GList *list_of_strings, const gchar *sep);
/** Kill a process. On UNIX send a SIGKILL, on Windows call TerminateProcess.
*
* @param pid The process ID. */

View File

@ -53,6 +53,62 @@ test_gnc_utf8_strip_invalid_and_controls (gconstpointer data)
g_free (msg1);
}
static void
test_g_list_stringjoin (gconstpointer data)
{
GList *test = NULL;
gchar *ret;
ret = gnc_g_list_stringjoin (NULL, NULL);
g_assert (ret == NULL);
ret = gnc_g_list_stringjoin (NULL, ":");
g_assert (ret == NULL);
test = g_list_prepend (test, "one");
ret = gnc_g_list_stringjoin (test, NULL);
g_assert_cmpstr (ret, ==, "one");
g_free (ret);
ret = gnc_g_list_stringjoin (test, "");
g_assert_cmpstr (ret, ==, "one");
g_free (ret);
ret = gnc_g_list_stringjoin (test, ":");
g_assert_cmpstr (ret, ==, "one");
g_free (ret);
test = g_list_prepend (test, "two");
ret = gnc_g_list_stringjoin (test, NULL);
g_assert_cmpstr (ret, ==, "twoone");
g_free (ret);
ret = gnc_g_list_stringjoin (test, "");
g_assert_cmpstr (ret, ==, "twoone");
g_free (ret);
ret = gnc_g_list_stringjoin (test, ":");
g_assert_cmpstr (ret, ==, "two:one");
g_free (ret);
test = g_list_prepend (test, "three");
ret = gnc_g_list_stringjoin (test, NULL);
g_assert_cmpstr (ret, ==, "threetwoone");
g_free (ret);
ret = gnc_g_list_stringjoin (test, "");
g_assert_cmpstr (ret, ==, "threetwoone");
g_free (ret);
ret = gnc_g_list_stringjoin (test, ":");
g_assert_cmpstr (ret, ==, "three:two:one");
g_free (ret);
g_list_free (test);
}
int
main (int argc, char *argv[])
@ -62,6 +118,7 @@ main (int argc, char *argv[])
g_test_init (&argc, &argv, NULL); // initialize test program
g_test_add_data_func ("/core-utils/gnc_utf8_strip_invalid_and_controls invalid utf8", (gconstpointer)invalid_utf8, test_gnc_utf8_strip_invalid_and_controls);
g_test_add_data_func ("/core-utils/gnc_utf8_strip_invalid_and_controls control chars", (gconstpointer)controls, test_gnc_utf8_strip_invalid_and_controls);
g_test_add_data_func ("/core-utils/gnc_g_list_stringjoin", NULL, test_g_list_stringjoin);
return g_test_run();
}

View File

@ -227,26 +227,12 @@ gnc_set_account_separator (const gchar *separator)
gchar *gnc_account_name_violations_errmsg (const gchar *separator, GList* invalid_account_names)
{
GList *node;
gchar *message = NULL;
gchar *account_list = NULL;
if ( !invalid_account_names )
return NULL;
for ( node = invalid_account_names; node; node = g_list_next(node))
{
if ( !account_list )
account_list = static_cast<gchar *>(node->data);
else
{
gchar *tmp_list = NULL;
tmp_list = g_strconcat (account_list, "\n", node->data, nullptr);
g_free ( account_list );
account_list = tmp_list;
}
}
auto account_list {gnc_g_list_stringjoin (invalid_account_names, "\n")};
/* Translators: The first %s will be the account separator character,
the second %s is a list of account names.
@ -262,34 +248,29 @@ gchar *gnc_account_name_violations_errmsg (const gchar *separator, GList* invali
return message;
}
struct ViolationData
{
GList *list;
const gchar *separator;
};
static void
check_acct_name (Account *acct, gpointer user_data)
{
auto cb {static_cast<ViolationData*>(user_data)};
auto name {xaccAccountGetName (acct)};
if (g_strstr_len (name, -1, cb->separator))
cb->list = g_list_prepend (cb->list, g_strdup (name));
}
GList *gnc_account_list_name_violations (QofBook *book, const gchar *separator)
{
Account *root_account = gnc_book_get_root_account(book);
GList *accounts, *node;
GList *invalid_list = NULL;
g_return_val_if_fail (separator != NULL, NULL);
if (root_account == NULL)
return NULL;
accounts = gnc_account_get_descendants (root_account);
for (node = accounts; node; node = g_list_next(node))
{
Account *acct = (Account*)node->data;
gchar *acct_name = g_strdup ( xaccAccountGetName ( acct ) );
if ( g_strstr_len ( acct_name, -1, separator ) )
invalid_list = g_list_prepend ( invalid_list, (gpointer) acct_name );
else
g_free ( acct_name );
}
if (accounts != NULL)
{
g_list_free(accounts);
}
return invalid_list;
g_return_val_if_fail (separator != NULL, nullptr);
if (!book) return nullptr;
ViolationData cb = { nullptr, separator };
gnc_account_foreach_descendant (gnc_book_get_root_account (book),
(AccountCb)check_acct_name, &cb);
return cb.list;
}
/********************************************************************\
@ -317,9 +298,9 @@ gnc_account_init(Account* acc)
priv->parent = NULL;
priv->children = NULL;
priv->accountName = static_cast<char*>(qof_string_cache_insert(""));
priv->accountCode = static_cast<char*>(qof_string_cache_insert(""));
priv->description = static_cast<char*>(qof_string_cache_insert(""));
priv->accountName = qof_string_cache_insert("");
priv->accountCode = qof_string_cache_insert("");
priv->description = qof_string_cache_insert("");
priv->type = ACCT_TYPE_NONE;
@ -1265,9 +1246,9 @@ xaccCloneAccount(const Account *from, QofBook *book)
* Also let caller issue the generate_event (EVENT_CREATE) */
priv->type = from_priv->type;
priv->accountName = static_cast<char*>(qof_string_cache_insert(from_priv->accountName));
priv->accountCode = static_cast<char*>(qof_string_cache_insert(from_priv->accountCode));
priv->description = static_cast<char*>(qof_string_cache_insert(from_priv->description));
priv->accountName = qof_string_cache_replace(priv->accountName, from_priv->accountName);
priv->accountCode = qof_string_cache_replace(priv->accountCode, from_priv->accountCode);
priv->description = qof_string_cache_replace(priv->description, from_priv->description);
qof_instance_copy_kvp (QOF_INSTANCE (ret), QOF_INSTANCE (from));
@ -2327,7 +2308,7 @@ int
xaccAccountOrder (const Account *aa, const Account *ab)
{
AccountPrivate *priv_aa, *priv_ab;
char *da, *db;
const char *da, *db;
char *endptr = NULL;
int ta, tb, result;
long la, lb;
@ -2691,6 +2672,35 @@ DxaccAccountSetCurrency (Account * acc, gnc_commodity * currency)
/********************************************************************\
\********************************************************************/
static void
account_foreach_descendant (const Account *acc, AccountCb thunk,
void* user_data, bool sort)
{
GList *children;
g_return_if_fail (GNC_IS_ACCOUNT(acc));
g_return_if_fail (thunk);
auto priv{GET_PRIVATE(acc)};
if (sort)
{
children = g_list_copy (priv->children);
children = g_list_sort (children, (GCompareFunc)xaccAccountOrder);
}
else
children = priv->children;
for (auto node = children; node; node = node->next)
{
auto child = static_cast<Account*>(node->data);
thunk (child, user_data);
account_foreach_descendant (child, thunk, user_data, sort);
}
if (sort)
g_list_free (children);
}
void
gnc_account_append_child (Account *new_parent, Account *child)
{
@ -2864,20 +2874,18 @@ gnc_account_nth_child (const Account *parent, gint num)
return static_cast<Account*>(g_list_nth_data(GET_PRIVATE(parent)->children, num));
}
static void
count_acct (Account *account, gpointer user_data)
{
auto count {static_cast<int*>(user_data)};
++*count;
}
gint
gnc_account_n_descendants (const Account *account)
{
AccountPrivate *priv;
GList *node;
gint count = 0;
g_return_val_if_fail(GNC_IS_ACCOUNT(account), 0);
priv = GET_PRIVATE(account);
for (node = priv->children; node; node = g_list_next(node))
{
count += gnc_account_n_descendants(static_cast<Account*>(node->data)) + 1;
}
int count {0};
account_foreach_descendant (account, count_acct, &count, FALSE);
return count;
}
@ -2921,118 +2929,53 @@ gnc_account_get_tree_depth (const Account *account)
return depth + 1;
}
static void
collect_acct (Account *account, gpointer user_data)
{
auto listptr{static_cast<GList**>(user_data)};
*listptr = g_list_prepend (*listptr, account);
}
GList *
gnc_account_get_descendants (const Account *account)
{
AccountPrivate *priv;
GList *child, *descendants;
g_return_val_if_fail(GNC_IS_ACCOUNT(account), NULL);
priv = GET_PRIVATE(account);
if (!priv->children)
return NULL;
descendants = NULL;
for (child = priv->children; child; child = g_list_next(child))
{
descendants = g_list_append(descendants, child->data);
descendants = g_list_concat(descendants,
gnc_account_get_descendants(static_cast<Account const *>(child->data)));
}
return descendants;
GList* list = nullptr;
account_foreach_descendant (account, collect_acct, &list, FALSE);
return g_list_reverse (list);
}
GList *
gnc_account_get_descendants_sorted (const Account *account)
{
AccountPrivate *priv;
GList *child, *children, *descendants;
GList* list = nullptr;
account_foreach_descendant (account, collect_acct, &list, TRUE);
return g_list_reverse (list);
}
/* errors */
g_return_val_if_fail(GNC_IS_ACCOUNT(account), NULL);
/* optimizations */
priv = GET_PRIVATE(account);
if (!priv->children)
return NULL;
descendants = NULL;
children = g_list_sort(g_list_copy(priv->children), (GCompareFunc)xaccAccountOrder);
for (child = children; child; child = g_list_next(child))
{
descendants = g_list_append(descendants, child->data);
descendants = g_list_concat(descendants,
gnc_account_get_descendants_sorted(static_cast<Account const *>(child->data)));
}
g_list_free(children);
return descendants;
static gpointer
is_acct_name (Account *account, gpointer user_data)
{
auto name {static_cast<gchar*>(user_data)};
return (g_strcmp0 (name, xaccAccountGetName (account)) ? nullptr : account);
}
Account *
gnc_account_lookup_by_name (const Account *parent, const char * name)
{
AccountPrivate *cpriv, *ppriv;
Account *child, *result;
GList *node;
return (Account*)gnc_account_foreach_descendant_until (parent, is_acct_name, (char*)name);
}
g_return_val_if_fail(GNC_IS_ACCOUNT(parent), NULL);
g_return_val_if_fail(name, NULL);
/* first, look for accounts hanging off the current node */
ppriv = GET_PRIVATE(parent);
for (node = ppriv->children; node; node = node->next)
{
child = static_cast<Account*>(node->data);
cpriv = GET_PRIVATE(child);
if (g_strcmp0(cpriv->accountName, name) == 0)
return child;
}
/* if we are still here, then we haven't found the account yet.
* Recursively search each of the child accounts next */
for (node = ppriv->children; node; node = node->next)
{
child = static_cast<Account*>(node->data);
result = gnc_account_lookup_by_name (child, name);
if (result)
return result;
}
return NULL;
static gpointer
is_acct_code (Account *account, gpointer user_data)
{
auto name {static_cast<gchar*>(user_data)};
return (g_strcmp0 (name, xaccAccountGetCode (account)) ? nullptr : account);
}
Account *
gnc_account_lookup_by_code (const Account *parent, const char * code)
{
AccountPrivate *cpriv, *ppriv;
Account *child, *result;
GList *node;
g_return_val_if_fail(GNC_IS_ACCOUNT(parent), NULL);
g_return_val_if_fail(code, NULL);
/* first, look for accounts hanging off the current node */
ppriv = GET_PRIVATE(parent);
for (node = ppriv->children; node; node = node->next)
{
child = static_cast<Account*>(node->data);
cpriv = GET_PRIVATE(child);
if (g_strcmp0(cpriv->accountCode, code) == 0)
return child;
}
/* if we are still here, then we haven't found the account yet.
* Recursively search each of the child accounts next */
for (node = ppriv->children; node; node = node->next)
{
child = static_cast<Account*>(node->data);
result = gnc_account_lookup_by_code (child, code);
if (result)
return result;
}
return NULL;
return (Account*)gnc_account_foreach_descendant_until (parent, is_acct_code, (char*)code);
}
static gpointer
@ -3183,20 +3126,7 @@ gnc_account_foreach_descendant (const Account *acc,
AccountCb thunk,
gpointer user_data)
{
const AccountPrivate *priv;
GList *node;
Account *child;
g_return_if_fail(GNC_IS_ACCOUNT(acc));
g_return_if_fail(thunk);
priv = GET_PRIVATE(acc);
for (node = priv->children; node; node = node->next)
{
child = static_cast<Account*>(node->data);
thunk(child, user_data);
gnc_account_foreach_descendant(child, thunk, user_data);
}
account_foreach_descendant (acc, thunk, user_data, FALSE);
}
gpointer
@ -3204,28 +3134,24 @@ gnc_account_foreach_descendant_until (const Account *acc,
AccountCb2 thunk,
gpointer user_data)
{
const AccountPrivate *priv;
GList *node;
Account *child;
gpointer result;
gpointer result {nullptr};
g_return_val_if_fail(GNC_IS_ACCOUNT(acc), NULL);
g_return_val_if_fail(thunk, NULL);
g_return_val_if_fail (GNC_IS_ACCOUNT(acc), nullptr);
g_return_val_if_fail (thunk, nullptr);
priv = GET_PRIVATE(acc);
for (node = priv->children; node; node = node->next)
auto priv{GET_PRIVATE(acc)};
for (auto node = priv->children; node; node = node->next)
{
child = static_cast<Account*>(node->data);
result = thunk(child, user_data);
if (result)
return(result);
auto child = static_cast<Account*>(node->data);
result = thunk (child, user_data);
if (result) break;
result = gnc_account_foreach_descendant_until(child, thunk, user_data);
if (result)
return(result);
result = gnc_account_foreach_descendant_until (child, thunk, user_data);
if (result) break;
}
return NULL;
return result;
}
@ -3264,7 +3190,7 @@ gnc_account_get_full_name(const Account *account)
AccountPrivate *priv;
const Account *a;
char *fullname;
gchar **names;
const gchar **names;
int level;
/* So much for hardening the API. Too many callers to this function don't
@ -3291,7 +3217,7 @@ gnc_account_get_full_name(const Account *account)
/* Get all the pointers in the right order. The root node "entry"
* becomes the terminating NULL pointer for the array of strings. */
names = (gchar **)g_malloc(level * sizeof(gchar *));
names = (const gchar **)g_malloc(level * sizeof(gchar *));
names[--level] = NULL;
for (a = account; level > 0; a = priv->parent)
{
@ -3300,7 +3226,7 @@ gnc_account_get_full_name(const Account *account)
}
/* Build the full name */
fullname = g_strjoinv(account_separator, names);
fullname = g_strjoinv(account_separator, (gchar **)names);
g_free(names);
return fullname;

View File

@ -283,8 +283,8 @@ gchar *gnc_account_name_violations_errmsg (const gchar *separator, GList* invali
* @param book Pointer to the book with accounts to verify
* @param separator The separator character to verify against
*
* @return A GList of invalid account names. Should be freed with g_list_free
* if no longer needed.
* @return A GList of invalid account names. Should be freed with
* g_list_free_full (value, g_free) when no longer needed.
*/
GList *gnc_account_list_name_violations (QofBook *book, const gchar *separator);

View File

@ -62,7 +62,7 @@ typedef struct AccountPrivate
* It is intended to a short, 5 to 30 character long string that
* is displayed by the GUI as the account mnemonic.
*/
char *accountName;
const char *accountName;
/* The accountCode is an arbitrary string assigned by the user.
* It is intended to be reporting code that is a synonym for the
@ -71,13 +71,13 @@ typedef struct AccountPrivate
* as 100, 200 or 600 for top-level accounts, and 101, 102.. etc.
* for detail accounts.
*/
char *accountCode;
const char *accountCode;
/* The description is an arbitrary string assigned by the user.
* It is intended to be a longer, 1-5 sentence description of what
* this account is all about.
*/
char *description;
const char *description;
/* The type field is the account type, picked from the enumerated
* list that includes ACCT_TYPE_BANK, ACCT_TYPE_STOCK,

View File

@ -590,6 +590,7 @@ gncScrubBusinessSplit (Split *split)
gchar *pdatestr = gnc_ctime (&pdate);
PINFO ("Destroying empty split %p from transaction %s (%s)", split, pdatestr, xaccTransGetDescription(txn));
xaccSplitDestroy (split);
g_free (pdatestr);
// Also delete the lot containing this split if it was the last split in that lot
if (lot && (gnc_lot_count_splits (lot) == 0))

View File

@ -564,8 +564,8 @@ xaccDupeSplit (const Split *s)
split->orig_acc = s->orig_acc;
split->lot = s->lot;
split->memo = CACHE_INSERT(s->memo);
split->action = CACHE_INSERT(s->action);
CACHE_REPLACE(split->memo, s->memo);
CACHE_REPLACE(split->action, s->action);
qof_instance_copy_kvp (QOF_INSTANCE (split), QOF_INSTANCE (s));
@ -1495,7 +1495,7 @@ xaccSplitOrder (const Split *sa, const Split *sb)
{
int retval;
int comp;
char *da, *db;
const char *da, *db;
gboolean action_for_num;
if (sa == sb) return 0;

View File

@ -83,7 +83,7 @@ struct split_s
* It is intended to hold a short (zero to forty character) string
* that is displayed by the GUI along with this split.
*/
char * memo;
const char *memo;
/* The action field is an arbitrary user-assigned value.
* It is meant to be a very short (one to ten character) string that
@ -91,10 +91,10 @@ struct split_s
* Withdraw, Deposit, ATM, Check, etc. The idea is that this field
* can be used to create custom reports or graphs of data.
*/
char * action; /* Buy, Sell, Div, etc. */
const char *action; /* Buy, Sell, Div, etc. */
time64 date_reconciled; /* date split was reconciled */
char reconciled; /* The reconciled field */
time64 date_reconciled; /* date split was reconciled */
char reconciled; /* The reconciled field */
/* gains is a flag used to track the relationship between
* capital-gains splits. Depending on its value, this flag indicates

View File

@ -602,8 +602,8 @@ dupe_trans (const Transaction *from)
to = g_object_new (GNC_TYPE_TRANSACTION, NULL);
to->num = CACHE_INSERT (from->num);
to->description = CACHE_INSERT (from->description);
CACHE_REPLACE (to->num, from->num);
CACHE_REPLACE (to->description, from->description);
to->splits = g_list_copy (from->splits);
for (node = to->splits; node; node = node->next)
@ -647,8 +647,8 @@ xaccTransCloneNoKvp (const Transaction *from)
to->date_entered = from->date_entered;
to->date_posted = from->date_posted;
to->num = CACHE_INSERT (from->num);
to->description = CACHE_INSERT (from->description);
CACHE_REPLACE (to->num, from->num);
CACHE_REPLACE (to->description, from->description);
to->common_currency = from->common_currency;
qof_instance_copy_version(to, from);
qof_instance_copy_version_check(to, from);
@ -1699,7 +1699,8 @@ xaccTransCommitEdit (Transaction *trans)
LEAVE ("(trans=%p)", trans);
}
#define SWAP(a, b) do { gpointer tmp = (a); (a) = (b); (b) = tmp; } while (0);
#define SWAP_STR(a, b) do { const char *tmp = (a); (a) = (b); (b) = tmp; } while (0);
#define SWAP(a, b) do { gpointer tmp = (a); (a) = (b); (b) = tmp; } while (0);
/* Ughhh. The Rollback function is terribly complex, and, what's worse,
* it only rolls back the basics. The TransCommit functions did a bunch
@ -1738,8 +1739,8 @@ xaccTransRollbackEdit (Transaction *trans)
/* copy the original values back in. */
orig = trans->orig;
SWAP(trans->num, orig->num);
SWAP(trans->description, orig->description);
SWAP_STR(trans->num, orig->num);
SWAP_STR(trans->description, orig->description);
trans->date_entered = orig->date_entered;
trans->date_posted = orig->date_posted;
SWAP(trans->common_currency, orig->common_currency);
@ -1766,8 +1767,8 @@ xaccTransRollbackEdit (Transaction *trans)
Split *so = onode->data;
xaccSplitRollbackEdit(s);
SWAP(s->action, so->action);
SWAP(s->memo, so->memo);
SWAP_STR(s->action, so->action);
SWAP_STR(s->memo, so->memo);
qof_instance_copy_kvp (QOF_INSTANCE (s), QOF_INSTANCE (so));
s->reconciled = so->reconciled;
s->amount = so->amount;
@ -1915,7 +1916,7 @@ int
xaccTransOrder_num_action (const Transaction *ta, const char *actna,
const Transaction *tb, const char *actnb)
{
char *da, *db;
const char *da, *db;
int retval;
int64_t na, nb;

View File

@ -82,12 +82,12 @@ struct transaction_s
* It is intended to store a short id number, typically the check number,
* deposit number, invoice number or other tracking number.
*/
char * num;
const char *num;
/* The description field is an arbitrary user-assigned value.
* It is meant to be a short descriptive phrase.
*/
char * description;
const char *description;
/* The common_currency field is the balancing common currency for
* all the splits in the transaction. Alternate, better(?) name:

View File

@ -61,10 +61,10 @@ typedef struct
typedef struct GncBudgetPrivate
{
/* The name is an arbitrary string assigned by the user. */
gchar* name;
const gchar *name;
/* The description is an arbitrary string assigned by the user. */
gchar* description;
const gchar *description;
/* Recurrence (period info) for the budget */
Recurrence recurrence;

View File

@ -70,23 +70,23 @@ typedef struct gnc_commodityPrivate
{
gnc_commodity_namespace *name_space;
char * fullname;
char * mnemonic;
char * printname;
char * cusip; /* CUSIP or other identifying code */
int fraction;
char * unique_name;
const char *fullname;
const char *mnemonic;
char *printname;
const char *cusip; /* CUSIP or other identifying code */
int fraction;
char *unique_name;
gboolean quote_flag; /* user wants price quotes */
gnc_quote_source * quote_source; /* current/old source of quotes */
char * quote_tz;
gboolean quote_flag; /* user wants price quotes */
gnc_quote_source *quote_source; /* current/old source of quotes */
const char *quote_tz;
/* the number of accounts using this commodity - this field is not
* persisted */
int usage_count;
int usage_count;
/* the default display_symbol, set in iso-4217-currencies at start-up */
const char * default_symbol;
const char *default_symbol;
} gnc_commodityPrivate;
#define GET_PRIVATE(o) \
@ -104,7 +104,7 @@ struct gnc_commodity_namespace_s
{
QofInstance inst;
gchar * name;
const gchar *name;
gboolean iso4217;
GHashTable * cm_table;
GList * cm_list;
@ -1997,7 +1997,7 @@ gnc_commodity_table_insert(gnc_commodity_table * table,
PINFO ("insert %p %s into nsp=%p %s", priv->mnemonic, priv->mnemonic,
nsp->cm_table, nsp->name);
g_hash_table_insert(nsp->cm_table,
CACHE_INSERT(priv->mnemonic),
(gpointer)CACHE_INSERT(priv->mnemonic),
(gpointer)comm);
nsp->cm_list = g_list_append(nsp->cm_list, comm);

View File

@ -40,7 +40,7 @@ struct gnc_price_s
gnc_commodity *currency;
time64 tmspec;
PriceSource source;
char *type;
const char *type;
gnc_numeric value;
/* 'private' object management fields */

View File

@ -558,12 +558,8 @@ gnc_price_set_typestr(GNCPrice *p, const char* type)
if (!p) return;
if (g_strcmp0(p->type, type) != 0)
{
gchar *tmp;
gnc_price_begin_edit (p);
tmp = CACHE_INSERT((gpointer) type);
if (p->type) CACHE_REMOVE(p->type);
p->type = tmp;
CACHE_REPLACE(p->type, type);
gnc_price_set_dirty(p);
gnc_price_commit_edit (p);
}

View File

@ -39,17 +39,17 @@ struct _gncAddress
{
QofInstance inst;
QofBook * book;
QofBook * book;
QofInstance * parent;
gboolean dirty;
char * name;
char * addr1;
char * addr2;
char * addr3;
char * addr4;
char * phone;
char * fax;
char * email;
gboolean dirty;
const char * name;
const char * addr1;
const char * addr2;
const char * addr3;
const char * addr4;
const char * phone;
const char * fax;
const char * email;
};
struct _gncAddressClass
@ -393,14 +393,10 @@ gncAddressFree (GncAddress *addr)
/* Set functions */
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (member == str) return; \
if (!g_strcmp0 (member, str)) return; \
gncAddressBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE(member, str); \
}
void gncAddressSetName (GncAddress *addr, const char *name)

View File

@ -39,8 +39,8 @@ struct _gncBillTerm
QofInstance inst;
/* 'visible' data fields directly manipulated by user */
char * name;
char * desc;
const char * name;
const char * desc;
GncBillTermType type;
gint due_days;
gint disc_days;
@ -72,13 +72,9 @@ static QofLogModule log_module = GNC_MOD_BUSINESS;
#define _GNC_MOD_NAME GNC_ID_BILLTERM
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncBillTermBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE(member, str); \
}
AS_STRING_DEC(GncBillTermType, ENUM_TERMS_TYPE)

View File

@ -53,9 +53,9 @@ struct _gncCustomer
QofInstance inst;
/* The following fields are identical to 'vendor' */
char * id;
char * name;
char * notes;
const char * id;
const char * name;
const char * notes;
GncBillTerm * terms;
GncAddress * addr;
gnc_commodity * currency;
@ -371,13 +371,9 @@ static void gncCustomerFree (GncCustomer *cust)
/* Set Functions */
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncCustomerBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE(member, str); \
}
void gncCustomerSetID (GncCustomer *cust, const char *id)

View File

@ -47,15 +47,15 @@ static void empl_handle_qof_events (QofInstance *entity, QofEventId event_type,
struct _gncEmployee
{
QofInstance inst;
char * id;
char * username;
const char * id;
const char * username;
GncAddress * addr;
gnc_commodity * currency;
gboolean active;
gnc_numeric * balance;
char * language;
char * acl;
const char * language;
const char * acl;
gnc_numeric workday;
gnc_numeric rate;
@ -481,13 +481,9 @@ static void gncEmployeeFree (GncEmployee *employee)
/* Set Functions */
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncEmployeeBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE (member, str); \
}
void gncEmployeeSetID (GncEmployee *employee, const char *id)

View File

@ -44,9 +44,9 @@ struct _gncEntry
time64 date;
time64 date_entered;
char * desc;
char * action;
char * notes;
const char * desc;
const char * action;
const char * notes;
gnc_numeric quantity;
/* customer invoice data */
@ -191,13 +191,9 @@ gboolean gncEntryPaymentStringToType (const char *str, GncEntryPaymentType *type
#define _GNC_MOD_NAME GNC_ID_ENTRY
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncEntryBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE (member, str); \
}
static inline void mark_entry (GncEntry *entry);

View File

@ -50,11 +50,11 @@ struct _gncInvoice
{
QofInstance inst;
char *id;
char *notes;
const char *id;
const char *notes;
gboolean active;
char *billing_id;
const char *billing_id;
char *printname;
GncBillTerm *terms;
GList *entries;
@ -87,13 +87,9 @@ static QofLogModule log_module = GNC_MOD_BUSINESS;
#define GNC_INVOICE_DOCLINK "assoc_uri" // this is the old name for the document link, kept for compatibility
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncInvoiceBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE (member, str); \
}
static void mark_invoice (GncInvoice *invoice);

View File

@ -41,9 +41,9 @@
struct _gncJob
{
QofInstance inst;
char * id;
char * name;
char * desc;
const char * id;
const char * name;
const char * desc;
GncOwner owner;
gboolean active;
};
@ -269,13 +269,9 @@ static void gncJobFree (GncJob *job)
/* Set Functions */
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncJobBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE (member, str); \
}
void gncJobSetID (GncJob *job, const char *id)

View File

@ -43,16 +43,16 @@ struct _gncOrder
{
QofInstance inst;
char * id;
char * notes;
gboolean active;
const char * id;
const char * notes;
gboolean active;
char * reference;
char * printname;
GncOwner owner;
GList * entries;
time64 opened;
time64 closed;
const char * reference;
char * printname;
GncOwner owner;
GList * entries;
time64 opened;
time64 closed;
};
struct _gncOrderClass
@ -65,13 +65,9 @@ static QofLogModule log_module = GNC_MOD_BUSINESS;
#define _GNC_MOD_NAME GNC_ID_ORDER
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncOrderBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE (member, str); \
}
static inline void mark_order (GncOrder *order);

View File

@ -37,7 +37,7 @@
struct _gncTaxTable
{
QofInstance inst;
char * name;
const char * name;
GncTaxTableEntryList* entries;
time64 modtime; /* internal date of last modtime */
@ -136,13 +136,9 @@ gncTaxIncludedStringToType (const char *str, GncTaxIncluded *type)
#define _GNC_MOD_NAME GNC_ID_TAXTABLE
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncTaxTableBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE (member, str); \
}
static inline void

View File

@ -52,9 +52,9 @@ struct _gncVendor
{
QofInstance inst;
char * id;
char * name;
char * notes;
const char * id;
const char * name;
const char * notes;
GncBillTerm * terms;
GncAddress * addr;
gnc_commodity * currency;
@ -512,13 +512,9 @@ static void gncVendorFree (GncVendor *vendor)
/* Set Functions */
#define SET_STR(obj, member, str) { \
char * tmp; \
\
if (!g_strcmp0 (member, str)) return; \
gncVendorBeginEdit (obj); \
tmp = CACHE_INSERT (str); \
CACHE_REMOVE (member); \
member = tmp; \
CACHE_REPLACE (member, str); \
}
void gncVendorSetID (GncVendor *vendor, const char *id)

View File

@ -50,7 +50,7 @@ KvpFrameImpl::KvpFrameImpl(const KvpFrameImpl & rhs) noexcept
std::for_each(rhs.m_valuemap.begin(), rhs.m_valuemap.end(),
[this](const map_type::value_type & a)
{
auto key = static_cast<char *>(qof_string_cache_insert(a.first));
auto key = qof_string_cache_insert(a.first);
auto val = new KvpValueImpl(*a.second);
this->m_valuemap.insert({key,val});
}

View File

@ -84,7 +84,7 @@ qof_string_cache_destroy (void)
void
qof_string_cache_remove(const char * key)
{
if (key)
if (key && key[0] != 0)
{
GHashTable* cache = qof_get_string_cache();
gpointer value;
@ -106,11 +106,16 @@ qof_string_cache_remove(const char * key)
/* If the key exists in the cache, increment the refcount. Otherwise,
* add it with a refcount of 1. */
char *
const char *
qof_string_cache_insert(const char * key)
{
if (key)
{
if (key[0] == 0)
{
return "";
}
GHashTable* cache = qof_get_string_cache();
gpointer value;
gpointer cache_key;
@ -132,10 +137,10 @@ qof_string_cache_insert(const char * key)
return NULL;
}
char *
const char *
qof_string_cache_replace(char const * dst, char const * src)
{
char * tmp {qof_string_cache_insert (src)};
const char * tmp {qof_string_cache_insert (src)};
qof_string_cache_remove (dst);
return tmp;
}

View File

@ -84,11 +84,11 @@ void qof_string_cache_remove(const char * key);
/** You can use this function with g_hash_table_insert(), for the key
(or value), as long as you use the destroy notifier above.
*/
char * qof_string_cache_insert(const char * key);
const char * qof_string_cache_insert(const char * key);
/** Same as CACHE_REPLACE below, but safe to call from C++.
*/
char * qof_string_cache_replace(const char * dst, const char * src);
const char * qof_string_cache_replace(const char * dst, const char * src);
#define CACHE_INSERT(str) qof_string_cache_insert((str))
#define CACHE_REMOVE(str) qof_string_cache_remove((str))
@ -101,7 +101,7 @@ char * qof_string_cache_replace(const char * dst, const char * src);
* It avoids unnecessary ejection by doing INSERT before REMOVE.
*/
#define CACHE_REPLACE(dst, src) do { \
gpointer tmp = CACHE_INSERT((src)); \
const char *tmp = CACHE_INSERT((src)); \
CACHE_REMOVE((dst)); \
(dst) = tmp; \
} while (0)

View File

@ -613,7 +613,7 @@ qof_book_get_collection (const QofBook *book, QofIdType entity_type)
col = qof_collection_new (entity_type);
g_hash_table_insert(
book->hash_of_collections,
qof_string_cache_insert(entity_type), col);
(gpointer)qof_string_cache_insert(entity_type), col);
}
return col;
}

View File

@ -319,9 +319,8 @@ qof_instance_dispose (GObject *instp)
QofInstance* inst = QOF_INSTANCE(instp);
priv = GET_PRIVATE(instp);
if (!priv->collection)
return;
qof_collection_remove_entity(inst);
if (priv->collection)
qof_collection_remove_entity(inst);
CACHE_REMOVE(inst->e_type);
inst->e_type = NULL;

View File

@ -55,10 +55,10 @@ test_qof_string_cache( void )
/* Strings added to the cache should always return the same string address
* as long as the refcount > 0. */
gchar str[100];
gchar* str1_1;
gchar* str1_2;
gchar* str1_3;
gchar* str1_4;
const gchar* str1_1;
const gchar* str1_2;
const gchar* str1_3;
const gchar* str1_4;
strncpy(str, "str1", sizeof(str));
str1_1 = qof_string_cache_insert(str); /* Refcount = 1 */

View File

@ -29,6 +29,7 @@ extern "C"
#include <gnc-event.h>
#include <gnc-date.h>
/* Add specific headers for this class */
#include "gnc-glib-utils.h"
#include "../Account.h"
#include "../AccountP.h"
#include "../Split.h"
@ -305,8 +306,8 @@ setup (Fixture *fixture, gconstpointer pData)
auto accts = g_hash_table_new (g_str_hash, g_str_equal);
guint ind;
auto root_str = static_cast<char*>(CACHE_INSERT("root"));
g_hash_table_insert (accts, root_str, root);
auto root_str = CACHE_INSERT("root");
g_hash_table_insert (accts, (gpointer)root_str, root);
fixture->func = _utest_account_fill_functions ();
if (parms == NULL)
{
@ -429,24 +430,12 @@ test_gnc_account_name_violations_errmsg ()
{
GList *badnames = NULL, *nonames = NULL, *node = NULL;
auto separator = ":";
char *account_list = NULL;
/* FUT wants to free the strings, so we alloc them */
badnames = g_list_prepend (badnames, g_strdup ("Foo:bar"));
badnames = g_list_prepend (badnames, g_strdup ("baz"));
badnames = g_list_prepend (badnames, g_strdup ("waldo:pepper"));
auto message = gnc_account_name_violations_errmsg (separator, nonames);
for (node = badnames; node; node = g_list_next (node))
{
if (!account_list)
account_list = g_strdup (static_cast<char*>(node->data));
else
{
auto tmp_list = g_strconcat ( account_list, "\n",
static_cast<char*>(node->data), NULL);
g_free (account_list);
account_list = tmp_list;
}
}
auto account_list = gnc_g_list_stringjoin (badnames, "\n");
message = gnc_account_name_violations_errmsg (separator, nonames);
g_assert (message == NULL);
auto validation_message = g_strdup_printf (
@ -455,6 +444,7 @@ test_gnc_account_name_violations_errmsg ()
"Either change the account names or choose another separator "
"character.\n\nBelow you will find the list of invalid account names:\n"
"%s", separator, account_list);
g_free (account_list);
message = gnc_account_name_violations_errmsg (separator, badnames);
g_assert_cmpstr ( message, == , validation_message);
g_free (validation_message);

View File

@ -79,8 +79,8 @@ setup (Fixture *fixture, gconstpointer pData)
xaccSplitSetParent (fixture->split, txn);
xaccTransCommitEdit (txn);
gnc_lot_set_account (lot, acc);
fixture->split->action = static_cast<char*>(CACHE_INSERT ("foo"));
fixture->split->memo = static_cast<char*>(CACHE_INSERT ("bar"));
fixture->split->action = CACHE_INSERT ("foo");
fixture->split->memo = CACHE_INSERT ("bar");
fixture->split->acc = acc;
fixture->split->lot = lot;
fixture->split->parent = txn;

View File

@ -137,16 +137,16 @@ setup (Fixture *fixture, gconstpointer pData)
xaccAccountSetCommodity (fixture->acc2, fixture->curr);
txn->date_posted = posted;
txn->date_entered = entered;
split1->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split1->action = static_cast<char*>(CACHE_INSERT ("bar"));
split1->memo = CACHE_INSERT ("foo");
split1->action = CACHE_INSERT ("bar");
split1->amount = gnc_numeric_create (100000, 1000);
split1->value = gnc_numeric_create (3200, 240);
split2->amount = gnc_numeric_create (-3200, 240);
split2->value = gnc_numeric_create (-3200, 240);
split1->acc = fixture->acc1;
split2->acc = fixture->acc2;
txn->num = static_cast<char*>(CACHE_INSERT ("123"));
txn->description = static_cast<char*>(CACHE_INSERT ("Waldo Pepper"));
txn->num = CACHE_INSERT ("123");
txn->description = CACHE_INSERT ("Waldo Pepper");
xaccTransBeginEdit (txn);
{
xaccTransSetCurrency (txn, fixture->curr);
@ -722,7 +722,7 @@ test_xaccFreeTransaction (Fixture *fixture, gconstpointer pData)
/* so the "free" doesn't, leaving the structure for us to test */
g_object_ref (txn);
g_object_ref (orig);
orig->num = static_cast<char*>(CACHE_INSERT (txn_num));
orig->num = CACHE_INSERT (txn_num);
txn->orig = orig;
fixture->func->xaccFreeTransaction (txn);
@ -849,17 +849,17 @@ test_xaccTransEqual (Fixture *fixture, gconstpointer pData)
g_assert (xaccTransEqual (txn1, clone, TRUE, FALSE, TRUE, TRUE));
g_assert_cmpint (check->hits, ==, 5);
txn1->num = g_strdup("321");
txn1->num = CACHE_INSERT("321");
g_free (check->msg);
check->msg = g_strdup ("[xaccTransEqual] num differs: 321 vs 123");
g_assert (!xaccTransEqual (txn1, txn0, TRUE, FALSE, TRUE, TRUE));
g_assert_cmpint (check->hits, ==, 6);
g_free(clone->num);
clone->num = static_cast<char*>(CACHE_INSERT("123"));
g_free(txn1->num);
g_free ((char*)clone->num);
clone->num = CACHE_INSERT("123");
CACHE_REMOVE(txn1->num);
txn1->num = g_strdup("123");
clone->description = g_strdup("salt pork");
clone->description = CACHE_INSERT("salt pork");
g_free (check->msg);
check->msg = g_strdup ("[xaccTransEqual] descriptions differ: salt pork vs Waldo Pepper");
g_assert (!xaccTransEqual (clone, txn0, TRUE, FALSE, TRUE, TRUE));
@ -871,8 +871,8 @@ test_xaccTransEqual (Fixture *fixture, gconstpointer pData)
xaccTransBeginEdit (clone);
cleanup->msg = g_strdup_printf (cleanup_fmt, clone->orig);
g_free(clone->description);
clone->description = static_cast<char*>(CACHE_INSERT ("Waldo Pepper"));
CACHE_REMOVE(clone->description);
clone->description = CACHE_INSERT ("Waldo Pepper");
auto frame = qof_instance_get_slots (QOF_INSTANCE (clone));
frame->set({"qux", "quux", "corge"}, new KvpValue(654.321));
xaccTransCommitEdit (clone);
@ -885,7 +885,7 @@ test_xaccTransEqual (Fixture *fixture, gconstpointer pData)
g_assert_cmpint (check->hits, ==, 9);
xaccTransBeginEdit (clone);
cleanup->msg = g_strdup_printf (cleanup_fmt, clone->orig);
clone->description = static_cast<char*>(CACHE_INSERT ("Waldo Pepper"));
clone->description = CACHE_INSERT ("Waldo Pepper");
frame->set({"qux", "quux", "corge"}, new KvpValue(123.456));
xaccTransCommitEdit (clone);
g_free (cleanup->msg);
@ -975,8 +975,8 @@ test_xaccTransGetImbalanceValue (Fixture *fixture, gconstpointer pData)
g_assert (gnc_numeric_equal (xaccTransGetImbalanceValue (fixture->txn),
gnc_numeric_zero ()));
split1->acc = fixture->acc1;
split1->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split1->action = static_cast<char*>(CACHE_INSERT ("bar"));
split1->memo = CACHE_INSERT ("foo");
split1->action = CACHE_INSERT ("bar");
split1->amount = gnc_numeric_create (100000, 1000);
split1->value = gnc_numeric_create (3200, 240);
xaccTransBeginEdit (fixture->txn);
@ -1001,8 +1001,8 @@ test_xaccTransGetImbalance (Fixture *fixture, gconstpointer pData)
g_assert_cmpint (g_list_length (mlist), ==, 0);
split1->acc = fixture->acc1;
split1->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split1->action = static_cast<char*>(CACHE_INSERT ("bar"));
split1->memo = CACHE_INSERT ("foo");
split1->action = CACHE_INSERT ("bar");
split1->amount = gnc_numeric_create (100000, 1000);
split1->value = gnc_numeric_create (3200, 240);
xaccTransBeginEdit (fixture->txn);
@ -1043,13 +1043,13 @@ test_xaccTransGetImbalance_trading (Fixture *fixture,
g_assert (!xaccTransIsBalanced (fixture->txn));
/* Make it look like a proper trading accounts transactionm */
split1->acc = acc1;
split1->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split1->action = static_cast<char*>(CACHE_INSERT ("bar"));
split1->memo = CACHE_INSERT ("foo");
split1->action = CACHE_INSERT ("bar");
split1->amount = gnc_numeric_create (-10000, 100);
split1->value = gnc_numeric_create (-3200, 240);
split2->acc = acc2;
split2->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split2->action = static_cast<char*>(CACHE_INSERT ("bar"));
split2->memo = CACHE_INSERT ("foo");
split2->action = CACHE_INSERT ("bar");
split2->amount = gnc_numeric_create (3000, 240);
split2->value = gnc_numeric_create (3200, 240);
xaccTransBeginEdit (fixture->txn);
@ -1091,8 +1091,8 @@ test_xaccTransIsBalanced (Fixture *fixture, gconstpointer pData)
g_assert (xaccTransIsBalanced (fixture->txn));
split1->acc = fixture->acc1;
split1->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split1->action = static_cast<char*>(CACHE_INSERT ("bar"));
split1->memo = CACHE_INSERT ("foo");
split1->action = CACHE_INSERT ("bar");
split1->amount = gnc_numeric_create (100000, 1000);
split1->value = gnc_numeric_create (3200, 240);
xaccTransBeginEdit (fixture->txn);
@ -1124,13 +1124,13 @@ test_xaccTransIsBalanced_trading (Fixture *fixture, gconstpointer pData)
/* The setup transaction is unbalanced in a trading-accounts environment. */
g_assert (!xaccTransIsBalanced (fixture->txn));
split1->acc = acc1;
split1->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split1->action = static_cast<char*>(CACHE_INSERT ("bar"));
split1->memo = CACHE_INSERT ("foo");
split1->action = CACHE_INSERT ("bar");
split1->amount = gnc_numeric_create (3200, 240);
split1->value = gnc_numeric_create (3200, 240);
split2->acc = acc2;
split2->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split2->action = static_cast<char*>(CACHE_INSERT ("bar"));
split2->memo = CACHE_INSERT ("foo");
split2->action = CACHE_INSERT ("bar");
split2->amount = gnc_numeric_create (-10000, 100);
split2->value = gnc_numeric_create (-3000, 240);
xaccTransBeginEdit (fixture->txn);
@ -1592,8 +1592,8 @@ test_xaccTransCommitEdit (void)
xaccAccountSetCommodity (acc1, comm);
xaccAccountSetCommodity (acc2, curr);
txn->date_posted = posted;
split1->memo = static_cast<char*>(CACHE_INSERT ("foo"));
split1->action = static_cast<char*>(CACHE_INSERT ("bar"));
split1->memo = CACHE_INSERT ("foo");
split1->action = CACHE_INSERT ("bar");
split1->amount = gnc_numeric_create (100000, 1000);
split1->value = gnc_numeric_create (3200, 240);
/* Note, deliberately imblanced to force xaccTransScrubImbalance
@ -1603,8 +1603,8 @@ test_xaccTransCommitEdit (void)
split2->value = gnc_numeric_create (-3000, 240);
split1->acc = acc1;
split2->acc = acc2;
txn->num = static_cast<char*>(CACHE_INSERT ("123"));
txn->description = static_cast<char*>(CACHE_INSERT ("Waldo Pepper"));
txn->num = CACHE_INSERT ("123");
txn->description = CACHE_INSERT ("Waldo Pepper");
xaccTransBeginEdit (txn);
{
xaccTransSetCurrency (txn, curr);
@ -1664,8 +1664,8 @@ test_xaccTransRollbackEdit (Fixture *fixture, gconstpointer pData)
orig = txn->orig;
base_frame = orig->inst.kvp_data; /* DupeTransaction copies the kvp_frame */
g_object_ref (orig); /* Keep rollback from actually freeing it */
txn->num = static_cast<char*>(CACHE_INSERT("321"));
txn->description = static_cast<char*>(CACHE_INSERT("salt peanuts"));
txn->num = CACHE_INSERT("321");
txn->description = CACHE_INSERT("salt peanuts");
txn->common_currency = NULL;
txn->inst.kvp_data = NULL;
txn->date_entered = new_entered;
@ -1757,19 +1757,19 @@ test_xaccTransOrder_num_action (Fixture *fixture, gconstpointer pData)
g_assert_cmpint (xaccTransOrder_num_action (NULL, NULL, NULL, NULL), ==, 0);
g_assert_cmpint (xaccTransOrder_num_action (txnA, NULL, txnB, NULL), ==,
qof_instance_guid_compare (txnA, txnB));
txnB->description = static_cast<char*>(CACHE_INSERT ("Salt Peanuts"));
txnB->description = CACHE_INSERT ("Salt Peanuts");
g_assert_cmpint (xaccTransOrder_num_action (txnA, NULL, txnB, NULL), >=, 1);
txnB->date_entered += 1;
g_assert_cmpint (xaccTransOrder_num_action (txnA, NULL, txnB, NULL), ==, -1);
txnB->num = static_cast<char*>(CACHE_INSERT ("101"));
txnB->num = CACHE_INSERT ("101");
g_assert_cmpint (xaccTransOrder_num_action (txnA, NULL, txnB, NULL), ==, 1);
txnA->num = static_cast<char*>(CACHE_INSERT ("12a"));
txnA->num = CACHE_INSERT ("12a");
g_assert_cmpint (xaccTransOrder_num_action (txnA, NULL, txnB, NULL), ==, -1);
txnB->num = static_cast<char*>(CACHE_INSERT ("12c"));
txnB->num = CACHE_INSERT ("12c");
g_assert_cmpint (xaccTransOrder_num_action (txnA, NULL, txnB, NULL), ==, -1);
txnB->num = static_cast<char*>(CACHE_INSERT ("12"));
txnB->num = CACHE_INSERT ("12");
g_assert_cmpint (xaccTransOrder_num_action (txnA, NULL, txnB, NULL), ==, 1);
txnB->num = static_cast<char*>(CACHE_INSERT ("one-oh-one"));
txnB->num = CACHE_INSERT ("one-oh-one");
g_assert_cmpint (xaccTransOrder_num_action (txnA, NULL, txnB, NULL), ==, -1);
g_assert_cmpint (xaccTransOrder_num_action (txnA, "24", txnB, "42"), ==, -1);
txnB->date_posted -= 1;

View File

@ -36,7 +36,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-06-30 07:34+0200\n"
"PO-Revision-Date: 2021-07-01 19:33+0000\n"
"PO-Revision-Date: 2021-08-10 17:35+0000\n"
"Last-Translator: Christian Wehling <christian.wehling@web.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/gnucash/gnucash/"
"de/>\n"
@ -11517,16 +11517,16 @@ msgid ""
"Set \"Review Created Transactions\" as the default for the \"since last run"
"\" dialog."
msgstr ""
"Legen Sie \"Erstellte Transaktionen überprüfen\" als Standard für den Dialog "
"\"seit dem letzten Aufruf\" fest."
"Legen Sie \"Erzeugte Buchungen durchsehen\" als Standard für den Dialog "
"\"seit letzten Aufruf\" fest."
#: gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in:28
msgid ""
"This setting controls whether as default the \"review created transactions\" "
"is set for the \"since last run\" dialog."
msgstr ""
"Diese Einstellung steuert, ob für den Dialog \"seit dem letzten Aufruf\" "
"standardmäßig die \"Überprüfung erstellter Transaktionen\" eingestellt ist."
"Diese Einstellung steuert, ob für den Dialog \"seit letzten Aufruf\" "
"standardmäßig die \"Überprüfung erzeugter Buchungen\" eingestellt ist."
#: gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in:35
msgid "Set the \"auto create\" flag by default"
@ -17361,17 +17361,13 @@ msgstr ""
#. Preferences->Online Banking:Generic
#: gnucash/gtkbuilder/dialog-preferences.glade:2291
#, fuzzy
#| msgid "Match _display threshold"
msgid "Likely match _day threshold"
msgstr "Entscheidungsschwelle für Anzeige in Zu_ordnung"
msgstr "Entscheidungsschwelle für _wahrscheinliche Datumsübereinstimmung"
#. Preferences->Online Banking:Generic
#: gnucash/gtkbuilder/dialog-preferences.glade:2304
#, fuzzy
#| msgid "Match _display threshold"
msgid "_Unlikely match day threshold"
msgstr "Entscheidungsschwelle für Anzeige in Zu_ordnung"
msgstr "Entscheidungsschwelle für u_nwahrscheinliche Datumsübereinstimmung"
#: gnucash/gtkbuilder/dialog-preferences.glade:2318
msgid ""
@ -18402,8 +18398,8 @@ msgid ""
"Set 'Review Created Transactions' as the default in the 'Since Last Run' "
"dialog."
msgstr ""
"Legen Sie \"Erstellte Transaktionen überprüfen\" als Standard im Dialogfeld "
"\"Seit letztem Lauf\" fest."
"Legen Sie \"Erzeugte Buchungen durchsehen\" als Standard im Dialogfeld \"Seit"
" letztem Lauf\" fest."
#: gnucash/gtkbuilder/dialog-sx.glade:765
msgid "Edit Scheduled Transaction"

View File

@ -3,7 +3,7 @@
# Copyright (C) 2008 - 2020 by the respective translator
# Avi Markovitz <avi.markovitz@gmail.com, 2019 - 2020
# Ori Hoch <ori@uumpa.com>, 2008 http://www.uumpa.com/gnucash-he/
# Yaron Shahrabani <sh.yaron@gmail.com>, 2020.
# Yaron Shahrabani <sh.yaron@gmail.com>, 2020, 2021.
# Avi Markovitz <avi.markovitz@gmail.com>, 2020, 2021.
msgid ""
msgstr ""
@ -11,7 +11,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-06-30 07:34+0200\n"
"PO-Revision-Date: 2021-07-28 15:33+0000\n"
"PO-Revision-Date: 2021-08-11 09:34+0000\n"
"Last-Translator: Avi Markovitz <avi.markovitz@gmail.com>\n"
"Language-Team: Hebrew <https://hosted.weblate.org/projects/gnucash/gnucash/"
"he/>\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Weblate 4.7.2-dev\n"
"X-Generator: Weblate 4.8-dev\n"
"X-Poedit-Basepath: .\n"
#: bindings/guile/commodity-table.scm:44
@ -3817,7 +3817,7 @@ msgstr "פתיחת דו־שיח חיפוש שובר הוצאות"
#: gnucash/gnome/gnc-plugin-business.c:278
msgid "Business Linked Documents"
msgstr "מסמכים מקושרים עסקית"
msgstr "מסמכים מקושרים עסקי"
#: gnucash/gnome/gnc-plugin-business.c:279
msgid "View all Linked Business Documents"
@ -4155,7 +4155,7 @@ msgstr "מחיקה"
#: gnucash/gnome/gnc-plugin-page-register.c:1962
#: gnucash/gnome/gnc-plugin-page-register.c:5076
msgid "'Check & Repair' is currently running, do you want to abort it?"
msgstr "‚בדיקה ותיקון’ רצים כרגע, לבטל?"
msgstr "'בדיקה ותיקון’ רצים כרגע, האם לנטוש?"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:520
#: gnucash/gnome/gnc-plugin-page-account-tree.c:526
@ -4466,7 +4466,7 @@ msgstr "העברת הרשומה הנוכחית שורה אחת מטה"
#: gnucash/gnome/gnc-plugin-page-invoice.c:238
msgid "_Company Report"
msgstr "_דוח ספק"
msgstr "_דוח ישות"
#: gnucash/gnome/gnc-plugin-page-invoice.c:247
msgid "_Standard"
@ -6354,8 +6354,8 @@ msgstr ""
"\n"
"%s\n"
"\n"
"נא להקיש על אוקיי לניקוי זמני של המסנן ולהמשיך.\n"
"אחרת התא פעיל האחרון יבחר."
"נא להקיש על 'בסדר' לניקוי זמני של המסנן ולהמשיך.\n"
"אחרת התא הפעיל האחרון יבחר."
#: gnucash/gnome/gnc-split-reg.c:2371
msgid "Sort By:"
@ -8745,7 +8745,8 @@ msgstr "חשבונאות לאנשים פרטיים ועסקים קטנים."
#: gnucash/gnome-utils/gnc-main-window.c:4736
msgid "translator-credits"
msgstr ""
"אבי מרקוביץ avi.markovitz@gmail.com 2022 2021, 2020, 2019\n"
"אבי מרקוביץ avi.markovitz@gmail.com ,2021, 2020, 2019\n"
"ירון שהרבני 2021\n"
"אורי הוך 2006"
#: gnucash/gnome-utils/gnc-main-window.c:4739
@ -10275,7 +10276,7 @@ msgid ""
"closed. The numbers are the X and Y coordinates of the top left corner of "
"the window followed by the width and height of the window."
msgstr ""
"הגדרה זו קובעת את מיקום החלון שנסגר לאחרונה. המספרים הם ערכי צירי ה X ו Y של "
"הגדרה זו קובעת את מיקום החלון שנסגר לאחרונה. המספרים הם ערכי צירי ה X ו־Y של "
"הפינה השמאלית של החלון ובהמשך רוחב וגובה החלון."
#: gnucash/gschemas/org.gnucash.dialogs.business.gschema.xml.in:24
@ -16283,7 +16284,7 @@ msgstr "_מקומי"
#: gnucash/gtkbuilder/dialog-preferences.glade:1018
#: libgnucash/app-utils/business-options.scm:76
msgid "Fancy Date Format"
msgstr "מבנה תאריך מהודרת"
msgstr "מבנה תאריך מהודר"
#: gnucash/gtkbuilder/dialog-preferences.glade:1058
msgid "<b>Time Format</b>"
@ -17434,7 +17435,7 @@ msgstr "חיפוש חדש"
#: gnucash/gtkbuilder/dialog-search.glade:348
msgid "Refine current search"
msgstr "סנן חיפוש נוכחי"
msgstr "עידון חיפוש נוכחי"
#: gnucash/gtkbuilder/dialog-search.glade:365
msgid "Add results to current search"
@ -17442,7 +17443,7 @@ msgstr "הוספת תוצאות לחיפוש הנוכחי"
#: gnucash/gtkbuilder/dialog-search.glade:382
msgid "Delete results from current search"
msgstr "מחק תוצאות מהחיפוש"
msgstr "מחיקת תוצאות מהחיפוש"
#: gnucash/gtkbuilder/dialog-search.glade:410
msgid "Search only active data"
@ -17467,7 +17468,7 @@ msgid ""
"now be corrected. Press OK to edit them."
msgstr ""
"התנועות המחזוריות הבאות מפנות לחשבונות שנמחקו ונדרש תיקון. לעריכה נא להקיש "
"על אוקיי."
"על 'בסדר'."
#: gnucash/gtkbuilder/dialog-sx.glade:126
#: gnucash/gtkbuilder/gnc-frequency.glade:171
@ -17808,7 +17809,7 @@ msgstr "UTC - זמן בינלאומי מתואם"
#: gnucash/gtkbuilder/gnc-date-format.glade:33
msgid "No Fancy Date Format"
msgstr "אין מבנה תאריך מהודרת"
msgstr "אין מבנה תאריך מהודר"
#: gnucash/gtkbuilder/gnc-date-format.glade:65
msgid "%Y-%m-%d"
@ -18419,7 +18420,7 @@ msgstr "פתיחת התקציב שנבחר"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:833
msgid "Delete the Selected Budget"
msgstr "מחק את התקציב המסומן"
msgstr "מחיקת התקציב המסומן"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:868
msgid "Budget Notes"
@ -26256,27 +26257,27 @@ msgstr "מודים לך על החסות!"
#: gnucash/report/reports/standard/invoice.scm:335
msgid "Row 1 Left"
msgstr "שורה 1 שמאל"
msgstr "שורה 1, ימין"
#: gnucash/report/reports/standard/invoice.scm:342
msgid "Row 1 Right"
msgstr "שורה 1 ימין"
msgstr "שורה 1, שמאל"
#: gnucash/report/reports/standard/invoice.scm:349
msgid "Row 2 Left"
msgstr "שורה 2 שמאל"
msgstr "שורה 2, ימין"
#: gnucash/report/reports/standard/invoice.scm:356
msgid "Row 2 Right"
msgstr "שורה 2 ימין"
msgstr "שורה 2, שמאל"
#: gnucash/report/reports/standard/invoice.scm:363
msgid "Row 3 Left"
msgstr "שורה 3 שמאל"
msgstr "שורה 3, ימין"
#: gnucash/report/reports/standard/invoice.scm:370
msgid "Row 3 Right"
msgstr "שורה 3 ימין"
msgstr "שורה 3, שמאל"
#: gnucash/report/reports/standard/invoice.scm:423
#: gnucash/report/reports/standard/job-report.scm:239
@ -28031,7 +28032,7 @@ msgstr "טבלה ליצוא"
#: gnucash/report/trep-engine.scm:109
msgid "Account Name Filter"
msgstr "מסנן שם החשבון"
msgstr "מסנן שם חשבון"
#: gnucash/report/trep-engine.scm:111
msgid "Use regular expressions for account name filter"
@ -28043,7 +28044,7 @@ msgstr "מסנן תנועות"
#: gnucash/report/trep-engine.scm:114
msgid "Use regular expressions for transaction filter"
msgstr "שימוש בביטוי רגיל עבור מסנן תנועות"
msgstr "שימוש בביטוי רגיל למסנן תנועות"
#: gnucash/report/trep-engine.scm:116
msgid "Transaction Filter excludes matched strings"
@ -28162,9 +28163,9 @@ msgid ""
"match Expenses:Travel:Holiday and Expenses:Business:Travel. It can be left "
"blank, which will disable the filter."
msgstr ""
"הצגת חשבונות ששמם המלא תואם למסנן זה בלבד, לדוגמה ':נסיעות' יתאים ל 'הוצאות:"
"נסיעות:נופש' וגם ל 'הוצאות:עסקים:נסיעות'.ניתן להשאיר את השדה ריק, דבר שישבית "
"את המסנן."
"הצגת חשבונות ששמם המלא תואם למסנן זה בלבד, לדוגמה ':נסיעות' יתאים ל "
"'הוצאות:נסיעות:נופש' וגם ל 'הוצאות:עסקים:נסיעות'. ניתן להשאיר את השדה ריק, "
"דבר שישבית את המסנן."
#: gnucash/report/trep-engine.scm:569
msgid ""
@ -28174,9 +28175,9 @@ msgid ""
"single character e.g. '20../.' will match 'Travel 2017/1 London'. "
msgstr ""
"כברירת מחדל, מסנן החשבון יחפש מחרוזת משנה בלבד. הגדרה כ־true תאפשר יכולות "
"מלאות לביטוי רגיל של POSIX. 'מכונית|טיסות' יאחזרו תוצאות גם ל 'ההוצאות: רכב' "
"ו 'הוצאות: טיסות'. להתאמה לתו בודד יש להשתמש בנקודה (.) לדוגמה ' 20.../. ' "
"יאחזר רשומה 'נסיעות לונדון2017/1 '. "
"ביטוי רגיל POSIX מלאות. 'מכונית|טיסות' יאחזרו תוצאות גם ל 'ההוצאות: רכב' ו "
"'הוצאות: טיסות'. להתאמה לתו בודד יש להשתמש בנקודה (.) לדוגמה ' 20.../. ' "
"יאחזר רשומה 'נסיעות לונדון 2017/1 '. "
#: gnucash/report/trep-engine.scm:578
msgid ""
@ -28186,8 +28187,8 @@ msgid ""
"memo. It can be left blank, which will disable the filter."
msgstr ""
"הצגת תנועות שבהן התיאור, ההערות או המיזכר תואמים למסנן זה.\n"
"לדוגמה ' #מתנה ' תמצא את כל התנועות עם #מתנה בתיאור, בהערות או במיזכר. ניתן "
"להשאיר את השדה ריק, דבר שיהפוך את המסנן ללא זמין."
"לדוגמה ' #מתנה ' תאחזר את כל התנועות הכוללות #מתנה בתיאור, בהערות או במיזכר. "
"ניתן להשאיר את השדה ריק, דבר שישבית את המסנן."
#: gnucash/report/trep-engine.scm:587
msgid ""
@ -28196,8 +28197,8 @@ msgid ""
"will match both tags within description, notes or memo. "
msgstr ""
"כברירת מחדל, מסנן התנועות יחפש מחרוזת משנה בלבד. הגדרה כ־true תאפשר יכולות "
"מלאות לביטוי רגיל של POSIX. '#עבודה|'#משפחה' יאחזרו תוצאות לשני התגים מתוך "
"שדה התיאור, ההערות או המזכר. "
"ביטוי רגיל POSIX מלאות. '#עבודה|'#משפחה' יאחזרו תוצאות לשני התגים מתוך שדה "
"התיאור, ההערות או המזכר. "
#: gnucash/report/trep-engine.scm:596
msgid "If this option is selected, transactions matching filter are excluded."
@ -28238,7 +28239,7 @@ msgstr "סינון חשבון."
#: gnucash/report/trep-engine.scm:750
msgid "Sort by this criterion first."
msgstr "מיון לפי קריטריון זה תחילה."
msgstr "מיון לפי תבחין זה תחילה."
#: gnucash/report/trep-engine.scm:761
msgid "Show the full account name for subtotals and subheadings?"
@ -28278,7 +28279,7 @@ msgstr "סדר מיון ראשי."
#: gnucash/report/trep-engine.scm:831
msgid "Sort by this criterion second."
msgstr "מיון משני לפי קריטריון זה."
msgstr "מיון משני לפי תבחין זה."
#: gnucash/report/trep-engine.scm:842
msgid "Subtotal according to the secondary key?"
@ -28310,7 +28311,7 @@ msgstr "הצגת קוד החשבון הנגדי?"
#: gnucash/report/trep-engine.scm:929
msgid "Display the transaction linked document"
msgstr "להציג את המסמך שמקושר לתנועה"
msgstr "הצגת המסמך שמקושר לתנועה"
#: gnucash/report/trep-engine.scm:932
msgid "Display a subtotal summary table."
@ -29443,7 +29444,7 @@ msgstr "התנועה בוטלה"
#: libgnucash/tax/us/txf.scm:122
msgid "No help available."
msgstr "אין עזרה זמניה."
msgstr "אין עזרה זמינה."
#~ msgid ""
#~ "You must enter a company name. If this customer is an individual (and not "

193
po/sv.po
View File

@ -16,7 +16,7 @@ msgstr ""
"Project-Id-Version: gnucash 4.6-pre1\n"
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug.cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-06-13 14:59-0700\n"
"PO-Revision-Date: 2021-07-17 08:57+0200\n"
"PO-Revision-Date: 2021-08-03 19:10+0200\n"
"Last-Translator: Arve Eriksson <031299870@telia.com>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
"Language: sv\n"
@ -456,7 +456,7 @@ msgstr "Sändlistor är den form av kommunikation som föredras av GnuCashs geme
#: doc/tip_of_the_day.list.c:9
msgid "The GnuCash developers are easy to contact. As well as several mailing lists, you can chat to them live on IRC! Join them on #gnucash at irc.gnome.org"
msgstr "Det är lätt att kontakta GnuCash-utvecklarna. Förutom ett flertal sändlistor kan du chatta med dem på IRC!. Du hittar dem på #gnucash på irc.gnome.org"
msgstr "Det är lätt att kontakta GnuCash-utvecklarna. Förutom ett flertal sändlistor kan du chatta med dem på IRC! Du hittar dem på #gnucash på irc.gnome.org"
#: doc/tip_of_the_day.list.c:13
msgid "You can easily import your existing financial data from Quicken, MS Money or other programs that export QIF files or OFX files. In the File menu, click on the sub-menu Import and click on QIF or OFX file, respectively. Then, follow the instructions provided."
@ -564,7 +564,7 @@ msgstr "Om du arbetar nattetid bör du stänga och öppna dina arbetsregister p
#: doc/tip_of_the_day.list.c:115
msgid "To search through all your transactions, start a search (Edit->Find...) from the main accounts hierarchy page. To limit your search to a single account, start the search from that account's register."
msgstr "För att söka bland alla dina transaktioner, starta en sökning (Redigera-> Sök...) från huvudsidan med kontohierarkin. För att begränsa din sökning till ett enstaka konto, starta sökningen från det kontots register."
msgstr "För att söka bland alla dina transaktioner, starta en sökning (Redigera->Sök...) från huvudsidan med kontohierarkin. För att begränsa din sökning till ett enstaka konto, starta sökningen från det kontots register."
#: doc/tip_of_the_day.list.c:119
msgid "To visually compare on screen the contents of 2 tabs, in one of the tabs, select Window->New Window with Page from the menu to duplicate that tab in a new window."
@ -1106,11 +1106,11 @@ msgstr "Denna vara har prisuppgifter. Är du säker på att du vill ta bort den
#: gnucash/gnome/dialog-commodities.c:204
msgid "Are you sure you want to delete the selected commodity?"
msgstr "Är du säker på att du vill ta bort varan?"
msgstr "Är du säker på att du vill ta bort produkten?"
#: gnucash/gnome/dialog-commodities.c:213
msgid "Delete commodity?"
msgstr "Ta bort varan?"
msgstr "Ta bort produkten?"
#: gnucash/gnome/dialog-commodities.c:217 gnucash/gnome/dialog-doclink.c:165
#: gnucash/gnome/dialog-price-edit-db.c:206
@ -1452,7 +1452,7 @@ msgstr "Välj dokument"
#: gnucash/import-export/customer-import/dialog-customer-import-gui.c:386
#: gnucash/import-export/customer-import/dialog-customer-import-gui.c:443
msgid "_OK"
msgstr "_Okej"
msgstr "_OK"
#: gnucash/gnome/dialog-doclink.c:238
msgid "Amend URL:"
@ -2491,9 +2491,9 @@ msgid "Gain/Loss"
msgstr "Vinst/förlust"
#: gnucash/gnome/dialog-lot-viewer.c:1048
#, fuzzy, c-format
#, c-format
msgid "Lots in Account %s"
msgstr "Aktieandelar i konto %s"
msgstr "Partier i konto %s"
#: gnucash/gnome/dialog-order.c:171
msgid "The Order must be given an ID."
@ -3162,7 +3162,7 @@ msgstr "Saldo"
#: gnucash/gnome/gnc-plugin-account-tree.c:59
msgid "New Accounts _Page"
msgstr "Ny konto_sida"
msgstr "_Ny kontosida"
#: gnucash/gnome/gnc-plugin-account-tree.c:60
msgid "Open a new Account Tree page"
@ -3197,7 +3197,7 @@ msgstr "Spara nuvarande fil"
#: gnucash/gnome/gnc-plugin-basic-commands.c:126
msgid "Save _As..."
msgstr "Spara s_om..."
msgstr "Spara so_m..."
#: gnucash/gnome/gnc-plugin-basic-commands.c:127
msgid "Save this file with a different name"
@ -3238,7 +3238,7 @@ msgstr "Hitta transaktioner med en sökning"
#: gnucash/gnome/gnc-plugin-page-register2.c:263
#: gnucash/gnome/gnc-plugin-page-register.c:372
msgid "Ta_x Report Options"
msgstr "Ska_tterapportinställningar"
msgstr "Skattera_pportinställningar"
#. Translators: currently implemented are
#. US: income tax and
@ -3444,7 +3444,7 @@ msgstr "Öppna dialogrutan för ny faktura"
#: gnucash/gnome/gnc-plugin-business.c:180
msgid "Find In_voice..."
msgstr "Sök _faktura..."
msgstr "Sök fa_ktura..."
#: gnucash/gnome/gnc-plugin-business.c:181
msgid "Open the Find Invoice dialog"
@ -3522,7 +3522,7 @@ msgstr "Öppna dialogrutan Ny räkning"
#: gnucash/gnome/gnc-plugin-business.c:223
msgid "Find Bi_ll..."
msgstr "Sök _räkning..."
msgstr "Sök r_äkning..."
#: gnucash/gnome/gnc-plugin-business.c:224
msgid "Open the Find Bill dialog"
@ -3586,7 +3586,7 @@ msgstr "Visa alla länkade dokument för verksamhet"
#: gnucash/gnome/gnc-plugin-business.c:283
#, fuzzy
msgid "Sales _Tax Table"
msgstr "Försäljningsskattetabell"
msgstr "Försäljningsska_ttetabell"
#: gnucash/gnome/gnc-plugin-business.c:284
#, fuzzy
@ -3603,7 +3603,7 @@ msgstr "Visa och redigera listan med betalningsvillkor"
#: gnucash/gnome/gnc-plugin-business.c:293
msgid "Bills _Due Reminder"
msgstr "Påminnelse om förfallande räkningar"
msgstr "Påminnelse om förfallan_de räkningar"
#: gnucash/gnome/gnc-plugin-business.c:294
msgid "Open the Bills Due Reminder dialog"
@ -3611,7 +3611,7 @@ msgstr "Öppna dialogrutan Påminnelse om förfallande räkningar"
#: gnucash/gnome/gnc-plugin-business.c:298
msgid "Invoices _Due Reminder"
msgstr "Påminnelse om förfallande fakturor"
msgstr "Påminnelse om förfallan_de fakturor"
#: gnucash/gnome/gnc-plugin-business.c:299
msgid "Open the Invoices Due Reminder dialog"
@ -3731,14 +3731,12 @@ msgid "Delete selected account"
msgstr "Ta bort det valda kontot"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:257
#, fuzzy
msgid "_Cascade Account Properties..."
msgstr "Egenskaps_kaskad för konto..."
msgstr "Egenskaper för _kaskadkonto..."
#: gnucash/gnome/gnc-plugin-page-account-tree.c:258
#, fuzzy
msgid "Cascade selected properties for account"
msgstr "Verkställ egenskaper i kaskad för konto"
msgstr "Verkställ valda egenskaper i kaskad för konto"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:262
#: gnucash/gnome/gnc-plugin-page-account-tree.c:267
@ -3798,7 +3796,7 @@ msgstr "Uppdatera detta fönster"
#: gnucash/gnome/gnc-plugin-page-register2.c:357
#: gnucash/gnome/gnc-plugin-page-register.c:475
msgid "_Reconcile..."
msgstr "_Stäm av..."
msgstr "St_äm av..."
#: gnucash/gnome/gnc-plugin-page-account-tree.c:302
#: gnucash/gnome/gnc-plugin-page-register2.c:358
@ -3836,7 +3834,7 @@ msgstr "Överför pengar från ett konto till ett annat"
#: gnucash/gnome/gnc-plugin-page-register2.c:367
#: gnucash/gnome/gnc-plugin-page-register.c:485
msgid "Stoc_k Split..."
msgstr "Aktie_split..."
msgstr "Akties_plit..."
#: gnucash/gnome/gnc-plugin-page-account-tree.c:317
#: gnucash/gnome/gnc-plugin-page-register2.c:368
@ -3847,16 +3845,14 @@ msgstr "Mata in en aktiesplit eller aktiesammanslagning"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:321
#: gnucash/gnome/gnc-plugin-page-register2.c:372
#: gnucash/gnome/gnc-plugin-page-register.c:490
#, fuzzy
msgid "View _Lots..."
msgstr "Visa aktieande_lar..."
msgstr "Visa parti_er..."
#: gnucash/gnome/gnc-plugin-page-account-tree.c:322
#: gnucash/gnome/gnc-plugin-page-register2.c:373
#: gnucash/gnome/gnc-plugin-page-register.c:491
#, fuzzy
msgid "Bring up the lot viewer/editor window"
msgstr "Öppna fönstret för att visa/redigera aktieandelar"
msgstr "Öppna fönstret för att visa/redigera partier"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:326
msgid "Check & Repair A_ccount"
@ -3887,7 +3883,7 @@ msgstr "Leta efter och reparera obalanserade transaktioner och föräldralösa d
#: gnucash/gnome/gnc-plugin-page-account-tree.c:342
#: gnucash/gnome/gnc-plugin-register2.c:64
msgid "_Register2"
msgstr "Öppna fönstret för att visa/redigera aktieandelar"
msgstr "_Register2"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:405
msgid "Open2"
@ -4066,7 +4062,7 @@ msgstr "Redigera alternativen för budgeten."
#: gnucash/gnome/gnc-plugin-page-budget.c:169
msgid "Esti_mate Budget..."
msgstr "Gör budgetuppskattning..."
msgstr "Gör b_udgetuppskattning..."
#: gnucash/gnome/gnc-plugin-page-budget.c:171
msgid "Estimate a budget value for the selected accounts from past transactions."
@ -4173,7 +4169,7 @@ msgstr "Klipp _ut"
#: gnucash/gnome/gnc-plugin-page-invoice.c:130
msgid "Copy"
msgstr "_Kopiera"
msgstr "Kopiera"
#: gnucash/gnome/gnc-plugin-page-invoice.c:135
#: gnucash/gnome/gnc-plugin-page-register2.c:240
@ -5757,7 +5753,7 @@ msgstr[1] "Är du säker på att du vill ta bort %d schemalagda transaktioner?"
#: gnucash/gnome/gnc-plugin-register2.c:57
#: gnucash/gnome/gnc-plugin-register.c:58
msgid "_General Journal"
msgstr "A_llmän journal"
msgstr "_Allmän journal"
#: gnucash/gnome/gnc-plugin-register2.c:58
msgid "Open a general journal window"
@ -5786,7 +5782,7 @@ msgstr "Öppna fönster för allmän journal"
#: gnucash/gnome/gnc-plugin-report-system.c:57
msgid "St_yle Sheets"
msgstr "_Stilmallar"
msgstr "Sti_lmallar"
#: gnucash/gnome/gnc-plugin-report-system.c:58
msgid "Edit report style sheets"
@ -6876,7 +6872,7 @@ msgstr "Vald kontotyp är inkompatibel med ett av de valda överliggande kontona
#: gnucash/gnome-utils/dialog-account.c:896
msgid "You must choose a commodity."
msgstr "Du måste välja en vara."
msgstr "Du måste välja en produkt."
#: gnucash/gnome-utils/dialog-account.c:952
msgid "You must enter a valid opening balance or leave it blank."
@ -7058,11 +7054,11 @@ msgstr "%s är en reserverad produkttyp. Använd något annat."
#: gnucash/gnome-utils/dialog-commodity.c:1294
msgid "That commodity already exists."
msgstr "Den varan finns redan."
msgstr "Den produkten finns redan."
#: gnucash/gnome-utils/dialog-commodity.c:1343
msgid "You must enter a non-empty \"Full name\", \"Symbol/abbreviation\", and \"Type\" for the commodity."
msgstr "Du måste ange ett \"Fullständigt namn\", en \"Symbol/förkortning\" och en \"Typ\" för varan."
msgstr "Du måste ange ett \"Fullständigt namn\", en \"Symbol/förkortning\" och en \"Typ\" för produkten."
#: gnucash/gnome-utils/dialog-doclink-utils.c:237
#, fuzzy
@ -7176,9 +7172,8 @@ msgid "Book currency"
msgstr "Bokens valuta"
#: gnucash/gnome-utils/dialog-options.c:1303
#, fuzzy
msgid "Default lot tracking policy"
msgstr "Förvald policy för aktieandelsspårning"
msgstr "Förvald policy för partispårning"
#: gnucash/gnome-utils/dialog-options.c:1326
msgid "Default gain/loss account"
@ -7622,7 +7617,7 @@ msgstr "Spara"
#: gnucash/gnome-utils/gnc-file.c:106
#: gnucash/gnome-utils/gnc-main-window.c:287
msgid "_Export"
msgstr "_Exportera"
msgstr "E_xportera"
#: gnucash/gnome-utils/gnc-file.c:147
msgid "All files"
@ -7947,7 +7942,7 @@ msgstr "Tra_nsaktion"
#: gnucash/gnome-utils/gnc-main-window.c:278
msgid "_Reports"
msgstr "_Rapporter"
msgstr "Ra_pporter"
#: gnucash/gnome-utils/gnc-main-window.c:279
msgid "_Tools"
@ -7971,7 +7966,7 @@ msgstr "Skriv ut den aktiva sidan"
#: gnucash/gnome-utils/gnc-main-window.c:296
msgid "Pa_ge Setup..."
msgstr "_Ställ in..."
msgstr "Sidinställnin_g..."
#: gnucash/gnome-utils/gnc-main-window.c:297
msgid "Specify the page size and orientation for printing"
@ -7995,7 +7990,7 @@ msgstr "Avsluta programmet"
#: gnucash/gnome-utils/gnc-main-window.c:334
msgid "Pr_eferences"
msgstr "In_ställningar"
msgstr "_Inställningar"
#: gnucash/gnome-utils/gnc-main-window.c:335
msgid "Edit the global preferences of GnuCash"
@ -8043,7 +8038,7 @@ msgstr "Flytta den aktuella sidan till ett nytt fönster."
#: gnucash/gnome-utils/gnc-main-window.c:385
msgid "Tutorial and Concepts _Guide"
msgstr "Guidad visning och koncept"
msgstr "_Guidad visning och koncept"
#: gnucash/gnome-utils/gnc-main-window.c:386
msgid "Open the GnuCash Tutorial"
@ -8083,7 +8078,7 @@ msgstr "Visa/göm sammanfattningsraden i detta fönster"
#: gnucash/gnome-utils/gnc-main-window.c:418
msgid "Stat_us Bar"
msgstr "_Statusrad"
msgstr "S_tatusrad"
#: gnucash/gnome-utils/gnc-main-window.c:419
msgid "Show/hide the status bar on this window"
@ -9976,9 +9971,8 @@ msgstr "Visa valutor i dialogrutan"
#: gnucash/gschemas/org.gnucash.dialogs.import.qif.gschema.xml.in:27
#: gnucash/import-export/aqb/gschemas/org.gnucash.dialogs.import.hbci.gschema.xml.in:55
#: gnucash/import-export/ofx/gschemas/org.gnucash.dialogs.import.ofx.gschema.xml.in:5
#, fuzzy
msgid "Last pathname used"
msgstr "Senaste sökväg som använts"
msgstr "Senast använda sökväg"
#: gnucash/gschemas/org.gnucash.dialogs.export.csv.gschema.xml.in:13
#: gnucash/gschemas/org.gnucash.dialogs.gschema.xml.in:143
@ -11509,7 +11503,7 @@ msgstr ""
"\n"
"Olika alternativ finns för att ange avdelaren såväl som ett alternativ för fast bredd. Med alternativet fast bredd, dubbelklicka på tabellen med rader som visas för att ange kolumnbredd, högerklicka sedan för att ändra vid behov.\n"
"\n"
"Exempel är \"FTSE\",\"RR.L\",\"21/11/2016,5.345,\"GBP\" och CURRENCY;SEK;- 2016-11-21;1.56;GBP\n"
"Exempel är \"FTSE\",\"RR.L\",\"21/11/2016,5.345,\"GBP\" och CURRENCY;SEK;2016-11-21;1.56;DKK\n"
"\n"
"Det finns ett alternativ för att specificera startrad, slutrad, och ett alternativ för att hoppa över alternerande rader från startraden vilket kan användas om du har rubriktext. Det finns också ett alternativ för att skriva över befintliga priser för den dagen vid behov.\n"
"\n"
@ -11939,7 +11933,7 @@ msgstr ""
"\n"
"Klicka på \"Bakåt\" för att granska dina val.\n"
"\n"
"Klicka på \"Avsluta\" för att stänga dialogrutan utan att skapa några nya konton."
"Klicka på \"Avbryt\" för att stänga dialogrutan utan att skapa några nya konton."
#: gnucash/gtkbuilder/assistant-hierarchy.glade:594
msgid "Finish Account Setup"
@ -12259,11 +12253,11 @@ msgstr "_Välj..."
#: gnucash/gtkbuilder/assistant-qif-import.glade:137
msgid "Select a QIF file to load"
msgstr "Välj en QIF-fil som ska läsas in"
msgstr "Välj en QIF-fil att läsa in"
#: gnucash/gtkbuilder/assistant-qif-import.glade:213
msgid "_Start"
msgstr "_Start:"
msgstr "_Start"
#: gnucash/gtkbuilder/assistant-qif-import.glade:283
msgid "Load QIF files"
@ -12780,27 +12774,22 @@ msgid "_Days in advance"
msgstr "_Dagar innan"
#: gnucash/gtkbuilder/dialog-account.glade:7
#, fuzzy
msgid "Cascade Account Values"
msgstr "Kaskadkontovärden"
#: gnucash/gtkbuilder/dialog-account.glade:69
#, fuzzy
msgid "Enable Cascading Account Color"
msgstr "Aktivera kaskadkontofärg"
msgstr "Aktivera färg för kaskadkonto"
#: gnucash/gtkbuilder/dialog-account.glade:104
#, fuzzy
msgid "Enable Cascading Account Placeholder"
msgstr "Aktivera kaskadkontoplatshållare"
msgstr "Aktivera platshållare för kaskadkonto"
#: gnucash/gtkbuilder/dialog-account.glade:129
#, fuzzy
msgid "Enable Cascading Account Hidden"
msgstr "Aktivera kaskadkonto dolt"
msgstr "Aktivera döljning av kaskadkonto"
#: gnucash/gtkbuilder/dialog-account.glade:151
#, fuzzy
msgid "Enable the sections to Cascade"
msgstr "Aktivera avsnitt för kaskad"
@ -14153,13 +14142,12 @@ msgstr "Jobb aktivt"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:7
#: gnucash/report/reports/standard/lot-viewer.scm:34
#, fuzzy
msgid "Lot Viewer"
msgstr "Andelsvisare"
msgstr "Partivisare"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:25
msgid "_New Lot"
msgstr "_Nya aktieandelar"
msgstr "_Nytt parti"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:40
msgid "Scrub _Account"
@ -14170,19 +14158,16 @@ msgid "_Scrub"
msgstr "_Städa upp"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:61
#, fuzzy
msgid "Scrub the highlighted lot"
msgstr "Städa upp de markerade aktieandelarna"
msgstr "Städa upp markerat parti"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:78
#, fuzzy
msgid "Delete the highlighted lot"
msgstr "Ta bort de markerade aktieandelarna"
msgstr "Ta bort markerat parti"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:135
#, fuzzy
msgid "Enter a name for the highlighted lot."
msgstr "Ange ett namn för de markerade aktieandelarna."
msgstr "Ange ett namn för markerat parti."
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:150
#: gnucash/gtkbuilder/dialog-print-check.glade:746
@ -14191,31 +14176,28 @@ msgid "_Notes"
msgstr "_Anteckningar"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:173
#, fuzzy
msgid "Enter any notes you want to make about this lot."
msgstr "Skriv in de anteckningar du vill använda om dessa aktieandelar."
msgstr "Skriv in de anteckningar du vill använda om detta parti."
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:192
msgid "<b>_Title</b>"
msgstr "<b>_Titel</b>"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:221
#, fuzzy
msgid "<b>_Lots in This Account</b>"
msgstr "<b>Aktieande_lar i detta konto</b>"
msgstr "<b>_Partier i detta konto</b>"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:259
msgid "Show only open lots"
msgstr "Visa endast öppna andelar"
msgstr "Visa endast öppna partier"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:302
msgid "<b>Splits _free</b>"
msgstr "<b>_Fria splitar</b>"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:357
#, fuzzy
msgid "<b>Splits _in lot</b>"
msgstr "<b>Splitar _i andelar</b>"
msgstr "<b>Splitar _i partier</b>"
#: gnucash/gtkbuilder/dialog-new-user.glade:25
msgid "_No"
@ -14705,7 +14687,7 @@ msgstr "Om det är aktivt visar GnuCash en bekräftelsefråga varje gång funkti
#: gnucash/gtkbuilder/dialog-preferences.glade:1751
#: gnucash/gtkbuilder/dialog-sx.glade:1234
msgid "For"
msgstr "För"
msgstr "Upp till"
#: gnucash/gtkbuilder/dialog-preferences.glade:1769
#: gnucash/gtkbuilder/dialog-sx.glade:1202
@ -14784,7 +14766,7 @@ msgstr "Auto-c_learingströskel"
#. Preferences->Online Banking:Generic
#: gnucash/gtkbuilder/dialog-preferences.glade:2226
msgid "Auto-_add threshold"
msgstr "Autotilläggströskel"
msgstr "_Autotilläggströskel"
#. Preferences->Online Banking:Generic
#: gnucash/gtkbuilder/dialog-preferences.glade:2240
@ -14866,7 +14848,7 @@ msgstr "_Autohöj listor"
#: gnucash/gtkbuilder/dialog-preferences.glade:2531
msgid "Automatically raise the list of accounts or actions during input."
msgstr "Automatiskt höja listor för konton eller händelser vid inmatning."
msgstr "Höj automatiskt listor för konton eller händelser vid inmatning."
#: gnucash/gtkbuilder/dialog-preferences.glade:2543
msgid "Tab order in_cludes Transfer on Memorised Transactions"
@ -15024,15 +15006,6 @@ msgstr "V_isa kalenderknapparna"
msgid "_Move the selection to the blank split on expand"
msgstr "Flytta _markering till den tomma delningen vid expandering"
# Anteckningar:
# Lägg till anteckning
#
# Extraherade kommentarer:
# Register2 feature
#
#
# Sökvägar:
# gnucash/gtkbuilder/dialog-preferences.glade:3068
#. Register2 feature
#: gnucash/gtkbuilder/dialog-preferences.glade:3068
msgid "_Show entered and reconciled dates on selection"
@ -15706,7 +15679,7 @@ msgstr "P_åminn i förväg"
#: gnucash/gtkbuilder/dialog-sx.glade:724
msgid "Set 'Re_view Created Transactions' as default"
msgstr "Sätt \"Granska skapade transaktioner\" som förval"
msgstr "Sätt \"G_ranska skapade transaktioner\" som förval"
#: gnucash/gtkbuilder/dialog-sx.glade:728
msgid "Set 'Review Created Transactions' as the default in the 'Since Last Run' dialog."
@ -15939,7 +15912,7 @@ msgstr "Europa (31.12.2001)"
#: gnucash/gtkbuilder/gnc-date-format.glade:21
msgid "ISO (2001-12-31)"
msgstr "ISO, Sverige (2001-12-31)"
msgstr "ISO (2001-12-31)"
#: gnucash/gtkbuilder/gnc-date-format.glade:27
msgid "UTC - Coordinated Universal Time"
@ -16709,7 +16682,7 @@ msgstr "Sortera efter beskrivning."
#: gnucash/gtkbuilder/gnc-plugin-page-register.glade:996
msgid "_Action"
msgstr "_Handling"
msgstr "_Åtgärd"
#: gnucash/gtkbuilder/gnc-plugin-page-register.glade:1000
msgid "Sort by action field."
@ -18139,7 +18112,7 @@ msgstr "Exportera transaktionerna till en CSV-fil"
#: gnucash/import-export/csv-exp/gnc-plugin-csv-export.c:64
msgid "Export A_ctive Register to CSV..."
msgstr "Exportera a_ktivt register till CSV..."
msgstr "Exportera _aktivt register till CSV..."
#: gnucash/import-export/csv-exp/gnc-plugin-csv-export.c:66
msgid "Export the Active Register to a CSV file"
@ -18708,7 +18681,7 @@ msgstr ""
#: gnucash/import-export/customer-import/gnc-plugin-customer-import.c:59
msgid "Import _Customers & Vendors..."
msgstr "Importera _kunder & leverantörer..."
msgstr "Importera k_under & leverantörer..."
#: gnucash/import-export/customer-import/gnc-plugin-customer-import.c:59
msgid "Import Customers and Vendors from a CSV text file."
@ -19469,7 +19442,6 @@ msgid "Description of an Entry"
msgstr "Beskrivning på en post"
#: gnucash/register/ledger-core/gncEntryLedgerLayout.c:92
#, fuzzy
msgctxt "sample"
msgid "Action"
msgstr "Åtgärd"
@ -20397,11 +20369,11 @@ msgstr "Fakturanummer"
#: gnucash/report/report-core.scm:211
msgid "One of your reports has a report-guid that is a duplicate. Please check the report system, especially your saved reports, for a report with this report-guid: "
msgstr "En av dina rapporter har en rapport-guid som är en dubblett. Kontrollera rapportsystemet, särskilt dina sparade rapporter, för att hitta en rapport med detta rapport-guid:"
msgstr "En av dina rapporter har en rapport-guid som är en dubblett. Kontrollera rapportsystemet, särskilt dina sparade rapporter, för att hitta en rapport med detta rapport-guid: "
#: gnucash/report/report-core.scm:212
msgid "Wrong report definition: "
msgstr "Fel rapportdefinition:"
msgstr "Fel rapportdefinition: "
#: gnucash/report/report-core.scm:213
msgid " Report is missing a GUID."
@ -21388,7 +21360,7 @@ msgstr "Närmast rapportdatum"
#: gnucash/report/reports/locale-specific/us/taxtxf.scm:3326
msgid "Tax Schedule Report & TXF Export"
msgstr "Skattschemarapport & TXF-export"
msgstr "Skattsc_hemarapport & TXF-export"
#: gnucash/report/reports/locale-specific/us/taxtxf.scm:3328
msgid "Taxable Income/Deductible Expenses with Transaction Detail/Export to .TXF file"
@ -21920,7 +21892,6 @@ msgid "Display the ticker symbols."
msgstr "Visa ticker-symbolerna."
#: gnucash/report/reports/standard/advanced-portfolio.scm:118
#, fuzzy
msgid "Display exchange listings."
msgstr "Visa börsnoteringar."
@ -24075,9 +24046,8 @@ msgid "Click on the \"Options\" button to select a company."
msgstr "Klicka på \"Alternativ\"-knappen för att välja ett företag."
#: gnucash/report/reports/standard/lot-viewer.scm:60
#, fuzzy
msgid "The account to search for lots."
msgstr "Kontot som ska sökas på efter aktieandelar."
msgstr "Kontot som ska sökas på efter partier."
#: gnucash/report/reports/standard/net-charts.scm:48
msgid "Show Net Profit"
@ -24646,9 +24616,8 @@ msgstr "Avstämningsrapport"
#: gnucash/report/reports/standard/register.scm:148
#: gnucash/report/reports/standard/register.scm:388
#: libgnucash/engine/gnc-lot.c:781
#, fuzzy
msgid "Lot"
msgstr "Andelar"
msgstr "Parti"
#: gnucash/report/reports/standard/register.scm:160
#, fuzzy
@ -24687,9 +24656,8 @@ msgid "Display the number of shares?"
msgstr "Visa antalet andelar?"
#: gnucash/report/reports/standard/register.scm:389
#, fuzzy
msgid "Display the name of lot the shares are in?"
msgstr "Visa namnet på aktieandelarna som aktierna tillhör?"
msgstr "Visa namnet på partierna som aktieandelarna tillhör?"
#: gnucash/report/reports/standard/register.scm:394
#: gnucash/report/trep-engine.scm:930
@ -24950,7 +24918,7 @@ msgstr "Belopp att betala (inkl MOMS)"
#: gnucash/report/reports/standard/taxinvoice.scm:314
msgid "Invoice #: "
msgstr "Faktura #:"
msgstr "Faktura #: "
#: gnucash/report/reports/standard/taxinvoice.scm:315
msgid "Reference: "
@ -25146,7 +25114,7 @@ msgstr "Den här rapporten är utformad endast för kundfakturor (försäljning)
#: gnucash/report/reports/support/taxinvoice.eguile.scm:193
msgid "Website"
msgstr "Webbadress"
msgstr "Webbplats"
#: gnucash/report/reports/support/taxinvoice.eguile.scm:229
msgid "Invoice Date"
@ -25769,7 +25737,7 @@ msgstr ""
#: gnucash/report/trep-engine.scm:587
#, fuzzy
msgid "By default the transaction filter will search substring only. Set this to true to enable full POSIX regular expressions capabilities. '#work|#family' will match both tags within description, notes or memo. "
msgstr "Som standard kommer transaktionsfiltret endast att söka på substrängar. Sätt detta till true för att aktivera fullständig funktionalitet för POSIX-regeluttryck. \"#arbete|#familj\" kommer att matcha båda taggar i beskrivning, anteckningar eller minnesanteckning."
msgstr "Som standard kommer transaktionsfiltret endast att söka på substrängar. Sätt detta till true för att aktivera fullständig funktionalitet för POSIX-regeluttryck. \"#arbete|#familj\" kommer att matcha båda taggar i beskrivning, anteckningar eller minnesanteckning. "
#: gnucash/report/trep-engine.scm:596
msgid "If this option is selected, transactions matching filter are excluded."
@ -26777,37 +26745,32 @@ msgid "Offset between documents: "
msgstr "Förskjutning mellan dokument:"
#: libgnucash/engine/gncOwner.c:1127
#, fuzzy
msgid "Lot Link"
msgstr "Länk till aktieandelar"
msgstr "Länk till parti"
#: libgnucash/engine/policy.c:52
msgid "First In, First Out"
msgstr "Först in, först ut"
#: libgnucash/engine/policy.c:53
#, fuzzy
msgid "Use oldest lots first."
msgstr "Använd äldsta andelar först."
msgstr "Använd äldsta partier först."
#: libgnucash/engine/policy.c:55
msgid "Last In, First Out"
msgstr "Sist in, först ut"
#: libgnucash/engine/policy.c:56
#, fuzzy
msgid "Use newest lots first."
msgstr "Använd nyaste andelar först."
msgstr "Använd nyaste partier först."
#: libgnucash/engine/policy.c:59
#, fuzzy
msgid "Average cost of open lots."
msgstr "Genomsnittlig kostnad för öppna andelar."
msgstr "Genomsnittlig kostnad för öppna partier."
#: libgnucash/engine/policy.c:62
#, fuzzy
msgid "Manually select lots."
msgstr "Välj samlingar manuellt."
msgstr "Välj partier manuellt."
#: libgnucash/engine/qofbookslots.h:66
msgid "Use Trading Accounts"
@ -26892,9 +26855,9 @@ msgid "Please delete this transaction. Explanation at https://wiki.gnucash.org/w
msgstr "Var god radera denna transaktion. Förklaring på https://wiki.gnucash.org/wiki/Business_Features_Issues#I_can.27t_delete_a_transaction_of_type_.22I.22_from_the_AR.2FAP_account"
#: libgnucash/engine/ScrubBusiness.c:616
#, fuzzy, c-format
#, c-format
msgid "Checking business lots in account %s: %u of %u"
msgstr "Kontrollerar företagets aktieandelar i konto %s: %u av %u"
msgstr "Kontrollerar företagets partier i konto %s: %u av %u"
#: libgnucash/engine/ScrubBusiness.c:670
#, c-format

View File

@ -23,7 +23,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-06-30 07:34+0200\n"
"PO-Revision-Date: 2021-07-26 13:34+0000\n"
"PO-Revision-Date: 2021-08-11 09:34+0000\n"
"Last-Translator: TianXing_Yi <ytx.cash@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://hosted.weblate.org/projects/"
"gnucash/gnucash/zh_Hans/>\n"
@ -32,7 +32,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.7.2-dev\n"
"X-Generator: Weblate 4.8-dev\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
#: bindings/guile/commodity-table.scm:44
@ -687,11 +687,10 @@ msgid ""
"\n"
"Douglas Adams, \"The Restaurant at the End of the Universe\""
msgstr ""
"一种理论认为,如果有人发现了宇宙是什么,为什么会出现在这里,那么它就会立刻消"
"失,取而代之的是更加诡异和莫名其妙的东西。\n"
"一种理论认为,如果有人发现了宇宙是什么,为什么会出现在这里,那么它就会立刻消失,取而代之的是更加诡异和莫名其妙的东西。\n"
"还有一种说法,这事情已经发生了。\n"
"\n"
"道格拉斯-亚当斯,“宇宙尽头的餐厅”"
"道格拉斯-亚当斯,《宇宙尽头的餐厅》"
#: gnucash/gnome/assistant-acct-period.c:188
msgid "The book was closed successfully."
@ -2501,7 +2500,7 @@ msgstr[0] "%d 份到期应付"
#: gnucash/gnome/dialog-invoice.c:3720
msgid "Due Bills Reminder"
msgstr "到期应付提醒"
msgstr "应付提醒"
#. Translators: %d is the number of invoices/credit notes due. This is a
#. ngettext(3) message.
@ -2513,7 +2512,7 @@ msgstr[0] "%d 份到期应收"
#: gnucash/gnome/dialog-invoice.c:3731
msgid "Due Invoices Reminder"
msgstr "到期应收提醒"
msgstr "应收提醒"
#: gnucash/gnome/dialog-job.c:139
msgid "The Job must be given a name."
@ -2561,13 +2560,13 @@ msgstr "等级"
#: gnucash/gnome/dialog-job.c:587 gnucash/gnome-utils/gnc-tree-view-owner.c:357
#: gnucash/gtkbuilder/dialog-job.glade:102
msgid "Job Number"
msgstr "项目编号"
msgstr "编号"
#: gnucash/gnome/dialog-job.c:589 gnucash/gnome/dialog-job.c:602
#: gnucash/gnome-utils/gnc-tree-view-owner.c:356
#: gnucash/gtkbuilder/dialog-job.glade:115
msgid "Job Name"
msgstr "项目名称"
msgstr "名称"
#: gnucash/gnome/dialog-job.c:653
msgid "Find Job"
@ -3142,7 +3141,7 @@ msgstr "提醒"
#: gnucash/gnome/dialog-sx-since-last-run.c:405
#: gnucash/gnome/gnc-plugin-budget.c:168
msgid "Created"
msgstr "创建"
msgstr "创建日期"
#: gnucash/gnome/dialog-sx-since-last-run.c:468
#: gnucash/gtkbuilder/dialog-preferences.glade:1733
@ -3422,7 +3421,7 @@ msgstr "计划交易(_S)"
#: gnucash/gnome/gnc-plugin-basic-commands.c:166
msgid "_Scheduled Transaction Editor"
msgstr "编辑(_S)"
msgstr "编辑(_S)"
#: gnucash/gnome/gnc-plugin-basic-commands.c:167
msgid "The list of Scheduled Transactions"
@ -3430,11 +3429,11 @@ msgstr "计划交易列表"
#: gnucash/gnome/gnc-plugin-basic-commands.c:171
msgid "Since _Last Run..."
msgstr "自上次运行后(_L)..."
msgstr "待处理计划交易(_L)..."
#: gnucash/gnome/gnc-plugin-basic-commands.c:172
msgid "Create Scheduled Transactions since the last time run"
msgstr "创建自上次运行后的计划交易"
msgstr "创建尚未执行的计划交易"
#: gnucash/gnome/gnc-plugin-basic-commands.c:176
msgid "_Mortgage & Loan Repayment..."
@ -3565,7 +3564,7 @@ msgstr "删除一个已有的预算。"
#: gnucash/gnome/gnc-plugin-budget.c:288
msgid "Select a Budget"
msgstr "选择一个预算"
msgstr "预算"
#: gnucash/gnome/gnc-plugin-business.c:155
#: gnucash/gnome/gnc-plugin-business.c:305 gnucash/report/report-core.scm:164
@ -3753,7 +3752,7 @@ msgstr "查看所有商业关联的凭证"
#: gnucash/gnome/gnc-plugin-business.c:283
msgid "Sales _Tax Table"
msgstr "税率(_T)"
msgstr "税率(_T)"
#: gnucash/gnome/gnc-plugin-business.c:284
msgid "View and edit the list of Sales Tax Tables (GST/VAT)"
@ -3761,7 +3760,7 @@ msgstr "查看并编辑税率表(消费税/增值税)"
#: gnucash/gnome/gnc-plugin-business.c:288
msgid "_Billing Terms Editor"
msgstr "账期编辑器(_B)"
msgstr "账期(_B)"
#: gnucash/gnome/gnc-plugin-business.c:289
msgid "View and edit the list of Billing Terms"
@ -3769,7 +3768,7 @@ msgstr "查看并编辑帐期"
#: gnucash/gnome/gnc-plugin-business.c:293
msgid "Bills _Due Reminder"
msgstr "到期应付提醒(_D)"
msgstr "应付提醒(_D)"
#: gnucash/gnome/gnc-plugin-business.c:294
msgid "Open the Bills Due Reminder dialog"
@ -3777,7 +3776,7 @@ msgstr "打开到期应付提醒对话框"
#: gnucash/gnome/gnc-plugin-business.c:298
msgid "Invoices _Due Reminder"
msgstr "到期应收提醒(_D)"
msgstr "应收提醒(_D)"
#: gnucash/gnome/gnc-plugin-business.c:299
msgid "Open the Invoices Due Reminder dialog"
@ -4226,7 +4225,7 @@ msgstr "预算选项(_O)..."
#: gnucash/gnome/gnc-plugin-page-budget.c:165
msgid "Edit this budget's options."
msgstr "编辑该预算选项。"
msgstr "编辑此预算。"
#: gnucash/gnome/gnc-plugin-page-budget.c:169
msgid "Esti_mate Budget..."
@ -4239,7 +4238,7 @@ msgstr "从过去的交易估计选定科目的预算。"
#: gnucash/gnome/gnc-plugin-page-budget.c:175
msgid "_All Periods..."
msgstr "所有会计期间(_A)..."
msgstr "期间预算(_A)..."
#: gnucash/gnome/gnc-plugin-page-budget.c:177
msgid "Edit budget for all periods for the selected accounts."
@ -4247,7 +4246,7 @@ msgstr "编辑选定科目所有会计期间的预算。"
#: gnucash/gnome/gnc-plugin-page-budget.c:181
msgid "Edit Note"
msgstr "信用凭证"
msgstr "预算说明"
#: gnucash/gnome/gnc-plugin-page-budget.c:183
msgid "Edit note for the selected account and period."
@ -4280,7 +4279,7 @@ msgstr "评估"
#: gnucash/gnome/gnc-plugin-page-budget.c:224
msgid "All Periods"
msgstr "会计期间"
msgstr "期间"
#: gnucash/gnome/gnc-plugin-page-budget.c:225
msgid "Note"
@ -4288,7 +4287,7 @@ msgstr "说明"
#: gnucash/gnome/gnc-plugin-page-budget.c:226
msgid "Run Report"
msgstr "科目报表"
msgstr "运行报表"
#: gnucash/gnome/gnc-plugin-page-budget.c:310
#: gnucash/gnome/gnc-plugin-page-budget.c:351
@ -4313,15 +4312,15 @@ msgstr "删除 %s"
#: gnucash/gnome/gnc-plugin-page-budget.c:1028
msgid "You must select at least one account to estimate."
msgstr "您必须至少选择一个科目来评估。"
msgstr "请选择需要评估的科目。"
#: gnucash/gnome/gnc-plugin-page-budget.c:1154
msgid "You must select at least one account to edit."
msgstr "您必须至少选择一个科目来评估。"
msgstr "请选择需要编辑的科目。"
#: gnucash/gnome/gnc-plugin-page-budget.c:1252
msgid "You must select one budget cell to edit."
msgstr "您必须至少选择一个科目来评估。"
msgstr "请选择需要编辑的预算单元。"
#: gnucash/gnome/gnc-plugin-page-invoice.c:109
msgid "Sort _Order"
@ -5257,7 +5256,7 @@ msgstr "本次交易(_T)"
#: gnucash/gnome/gnc-plugin-page-register2.c:408
#: gnucash/gnome/gnc-plugin-page-register.c:536
msgid "Account Report"
msgstr "科目报表"
msgstr "标签页报表"
#: gnucash/gnome/gnc-plugin-page-register2.c:409
#: gnucash/gnome/gnc-plugin-page-register.c:537
@ -5267,7 +5266,7 @@ msgstr "为本科目打开一个账簿报表"
#: gnucash/gnome/gnc-plugin-page-register2.c:413
#: gnucash/gnome/gnc-plugin-page-register.c:541
msgid "Account Report - Single Transaction"
msgstr "科目报表 - 单独交易事项"
msgstr "标签页报表 - 当前交易"
#: gnucash/gnome/gnc-plugin-page-register2.c:414
#: gnucash/gnome/gnc-plugin-page-register.c:542
@ -6383,7 +6382,7 @@ msgstr "财务管理"
#: gnucash/register/ledger-core/split-register-model.c:312
msgctxt "Column header for 'Reconciled'"
msgid "R"
msgstr "核实"
msgstr "R"
#: gnucash/gnome/report-menus.scm:57
#, scheme-format
@ -6393,7 +6392,7 @@ msgstr "显示 ~a 报表"
#: gnucash/gnome/report-menus.scm:90
#: gnucash/gtkbuilder/dialog-custom-report.glade:8
msgid "Saved Report Configurations"
msgstr "已保存的报表模板"
msgstr "已保存模板"
#: gnucash/gnome/report-menus.scm:92
msgid "Manage and run saved report configurations"
@ -6460,7 +6459,7 @@ msgstr "商业"
#: gnucash/gnome/window-autoclear.c:115
msgid "Cleared Transactions"
msgstr "已创建的交易事项"
msgstr "已核实交易"
#: gnucash/gnome/window-reconcile2.c:428 gnucash/gnome/window-reconcile.c:469
msgid "Interest Payment"
@ -6520,7 +6519,7 @@ msgstr "期初余额"
#: gnucash/gnome/window-reconcile2.c:1804 gnucash/gnome/window-reconcile.c:1997
msgid "Ending Balance"
msgstr "期末余额"
msgstr "余额"
#: gnucash/gnome/window-reconcile2.c:1814 gnucash/gnome/window-reconcile.c:2007
msgid "Reconciled Balance"
@ -7493,7 +7492,7 @@ msgstr "取消选择选中的和未选中的所有科目。"
#: gnucash/gnome-utils/dialog-options.c:1506
msgid "Select Children"
msgstr "选择所有子科目"
msgstr "所有子科目"
#: gnucash/gnome-utils/dialog-options.c:1508
msgid "Select all descendents of selected account."
@ -7502,7 +7501,7 @@ msgstr "选择选中科目的所有子科目。"
#: gnucash/gnome-utils/dialog-options.c:1514
#: gnucash/gnome-utils/dialog-options.c:1650
msgid "Select Default"
msgstr "选择默认值"
msgstr "默认值"
#: gnucash/gnome-utils/dialog-options.c:1516
msgid "Select the default account selection."
@ -7530,11 +7529,11 @@ msgstr "选择默认的选择。"
#: gnucash/gnome-utils/dialog-options.c:1846
msgid "Reset defaults"
msgstr "重置为默认值"
msgstr "默认值"
#: gnucash/gnome-utils/dialog-options.c:1848
msgid "Reset all values to their defaults."
msgstr "将所有数值重置为默认值。"
msgstr "所有设置恢复初始状态。"
#: gnucash/gnome-utils/dialog-options.c:2249
msgid "Page"
@ -8558,13 +8557,13 @@ msgstr "未保存的账簿"
#: gnucash/gnome-utils/gnc-main-window.c:1760
msgid "Last modified on %a, %b %d, %Y at %I:%M %p"
msgstr "%Y年%b%d日, %a, %p %I:%M 更新"
msgstr "%Y年%b%d日 %a, %p %I:%M 更新"
#. Translators: This message appears in the status bar after opening the file.
#: gnucash/gnome-utils/gnc-main-window.c:1763
#, c-format
msgid "File %s opened. %s"
msgstr "%s 已打开%s"
msgstr "%s %s"
#: gnucash/gnome-utils/gnc-main-window.c:2885
msgctxt "lower case key for short cut to 'Accounts'"
@ -9168,7 +9167,7 @@ msgstr "股票拆分"
#: gnucash/register/ledger-core/gncEntryLedgerModel.c:577
#: gnucash/register/ledger-core/split-register-model.c:1006
msgid "%A %d %B %Y"
msgstr "%A %d %B %Y"
msgstr "%Y年%b%d日 %a"
#: gnucash/gnome-utils/gnc-tree-util-split-reg.c:479
msgid ""
@ -9500,7 +9499,7 @@ msgstr "A"
#: gnucash/gnome-utils/gnc-tree-view-price.c:396
msgid "Security"
msgstr "证券"
msgstr "币种"
#: gnucash/gnome-utils/gnc-tree-view-split-reg.c:762
msgid "Status Bar"
@ -9624,7 +9623,7 @@ msgstr "资金支出"
#: gnucash/gnome-utils/gnc-tree-view-split-reg.c:3015
#: gnucash/register/ledger-core/split-register-model.c:505
msgid "Credit Formula"
msgstr "贷方公式"
msgstr "贷方"
#: gnucash/gnome-utils/gnc-tree-view-split-reg.c:3036
#: gnucash/import-export/csv-imp/gnc-imp-props-tx.cpp:71
@ -9658,7 +9657,7 @@ msgstr "资金收入"
#: gnucash/gnome-utils/gnc-tree-view-split-reg.c:3096
#: gnucash/register/ledger-core/split-register-model.c:498
msgid "Debit Formula"
msgstr "借方公式"
msgstr "借方"
#: gnucash/gnome-utils/gnc-tree-view-split-reg.c:3166
msgid "Enter Due Date"
@ -9753,12 +9752,12 @@ msgstr "输入有效股份价格"
#: gnucash/gnome-utils/gnc-tree-view-split-reg.c:3324
#: gnucash/register/ledger-core/split-register-model.c:2389
msgid "Enter credit formula for real transaction"
msgstr "输入实际交易事项的贷方公式"
msgstr "输入实际交易的贷方数值"
#: gnucash/gnome-utils/gnc-tree-view-split-reg.c:3334
#: gnucash/register/ledger-core/split-register-model.c:2355
msgid "Enter debit formula for real transaction"
msgstr "输入实际交易事项的借方公式"
msgstr "输入实际交易的借方数值"
#: gnucash/gnome-utils/gnc-tree-view-sx-list.c:140
#: gnucash/gtkbuilder/dialog-sx.glade:1064
@ -9971,7 +9970,7 @@ msgstr ""
#: gnucash/gnucash-core-app.cpp:344
msgid "Hidden Options"
msgstr "预算选项"
msgstr "隐藏选项"
#: gnucash/gnucash-core-app.cpp:347
msgid "[datafile]"
@ -10845,7 +10844,7 @@ msgstr ""
#: gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in:17
msgid "Run \"since last run\" dialog when a file is opened."
msgstr "文件打开时启动“自从上一次运行”对话框。"
msgstr "文件打开时启动“待处理计划交易”对话框。"
#: gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in:18
msgid ""
@ -10860,7 +10859,7 @@ msgstr ""
#: gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in:22
msgid "Show \"since last run\" notification dialog when a file is opened."
msgstr "文件打开时显示“自从上一次运行”通知对话框。"
msgstr "文件打开时显示“待处理计划交易”对话框。"
#: gnucash/gschemas/org.gnucash.dialogs.sxs.gschema.xml.in:23
msgid ""
@ -13002,7 +13001,7 @@ msgid ""
"Select language and region specific categories that correspond to the ways "
"that you foresee you will use GnuCash. Each category you select will cause "
"several accounts to be created."
msgstr "选择程序的区域和语言,这将创建一些相应的科目。"
msgstr "设置程序的区域和语种,还可选择一些内置的科目树模板。"
#: gnucash/gtkbuilder/assistant-hierarchy.glade:169
msgid "<b>Categories</b>"
@ -14819,7 +14818,7 @@ msgstr "含税"
#: gnucash/gtkbuilder/dialog-vendor.glade:546
#: gnucash/register/ledger-core/gncEntryLedgerModel.c:97
msgid "Tax Table"
msgstr "税率"
msgstr "税率"
#: gnucash/gtkbuilder/dialog-customer.glade:594
#: gnucash/gtkbuilder/dialog-vendor.glade:616
@ -14872,7 +14871,7 @@ msgid ""
"Currently you have no saved reports.\n"
msgstr ""
"\n"
"现在没有保留的形式。\n"
"目前尚无保存的模板。\n"
#: gnucash/gtkbuilder/dialog-custom-report.glade:113
msgid ""
@ -14882,8 +14881,8 @@ msgid ""
"Configuration\" from\n"
"the Reports menu or tool bar."
msgstr ""
"保存报表模板:首先打开一个报表,\n"
"调整报表选项,然后从报表菜单或工具栏中选择\n"
"保存模板:首先打开一个报表,\n"
"调整选项,然后从菜单或工具栏中执行\n"
"\"保存模板\"。"
#: gnucash/gtkbuilder/dialog-date-close.glade:7
@ -15191,7 +15190,7 @@ msgstr "何时支付 / 支付时"
#: gnucash/gtkbuilder/dialog-find-account.glade:25
#: gnucash/gtkbuilder/dialog-find-account.glade:96
msgid "Search the Account List"
msgstr "结果"
msgstr "列表"
#: gnucash/gtkbuilder/dialog-find-account.glade:38
msgid "Close _on Jump"
@ -16335,11 +16334,11 @@ msgstr "<b>对账</b>"
#: gnucash/gtkbuilder/dialog-preferences.glade:2584
msgid "Check cleared _transactions"
msgstr "检查已核实交易(_T)"
msgstr "标记已核实交易(_T)"
#: gnucash/gtkbuilder/dialog-preferences.glade:2590
msgid "Pre-check cleared transactions when creating a reconcile dialog."
msgstr "创建对账对话框时,预先检查已核实的交易。"
msgstr "对账时,预先标记已核实的交易。"
#: gnucash/gtkbuilder/dialog-preferences.glade:2602
msgid "Automatic credit card _payment"
@ -16768,7 +16767,7 @@ msgstr "日期之前(_D)"
#: gnucash/gtkbuilder/dialog-price.glade:795
#: gnucash/report/reports/standard/price-scatter.scm:82
msgid "Price Database"
msgstr "价格数据库"
msgstr "汇率数据库"
#: gnucash/gtkbuilder/dialog-price.glade:842
msgid "Add a new price."
@ -17144,7 +17143,7 @@ msgstr "循环次数"
#: gnucash/gtkbuilder/dialog-sx.glade:512
msgid "<b>Since Last Run</b>"
msgstr "<b>自上次运行</b>"
msgstr "<b>待处理计划交易</b>"
#: gnucash/gtkbuilder/dialog-sx.glade:535
msgid "<b>Transaction Editor Defaults</b>"
@ -17156,7 +17155,7 @@ msgstr "打开文件时运行(_R)"
#: gnucash/gtkbuilder/dialog-sx.glade:549
msgid "Run the \"since last run\" process when a file is opened."
msgstr "文件打开时,执行“自上次运行”进程。"
msgstr "文件打开时,执行“待处理计划交易”进程。"
#: gnucash/gtkbuilder/dialog-sx.glade:562
msgid "_Show notification window"
@ -17166,7 +17165,7 @@ msgstr "显示通知(_S)"
msgid ""
"Show the notification window for the \"since last run\" process when a file "
"is opened."
msgstr "文件打开时,显示“自上次运行”进程的通知。"
msgstr "文件打开时,显示“待处理计划交易”进程的通知。"
#: gnucash/gtkbuilder/dialog-sx.glade:579
msgid "_Auto-create new transactions"
@ -17268,11 +17267,11 @@ msgstr "模板"
#: gnucash/gtkbuilder/dialog-sx.glade:1454
msgid "Since Last Run..."
msgstr "自上次运行后..."
msgstr "待处理计划交易"
#: gnucash/gtkbuilder/dialog-sx.glade:1554
msgid "_Review created transactions"
msgstr "核已创建交易(_R)"
msgstr "核已创建交易(_R)"
#: gnucash/gtkbuilder/dialog-tax-info.glade:13
msgid "Income Tax Information"
@ -17329,7 +17328,7 @@ msgstr "<b>副本号</b>"
#: gnucash/gtkbuilder/dialog-tax-table.glade:7
#: gnucash/gtkbuilder/dialog-tax-table.glade:31
msgid "Tax Tables"
msgstr "税率"
msgstr "税率"
#: gnucash/gtkbuilder/dialog-tax-table.glade:143
msgid "<b>Tax Table Entries</b>"
@ -17946,21 +17945,21 @@ msgstr "在"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:15
msgid "Edit budget for all periods"
msgstr "预算期间"
msgstr "期间"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:116
msgid "Replace"
msgstr "替"
msgstr "替"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:120
msgid ""
"Replace the budget for all periods with new 'value'. Use empty value to "
"unset budget for the accounts."
msgstr "用新的“值”替换整个时期的预算。空值才能取消禁止此帐户的预算。"
msgstr "新值替换全部期间预算,空值取消此科目的预算。"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:133
msgid "Add"
msgstr "加"
msgstr "加"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:137
msgid "Add 'value' to current budget for each period"
@ -17968,16 +17967,16 @@ msgstr "为每个时期添加“值”到当前预算"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:151
msgid "Multiply"
msgstr "多行"
msgstr "相乘"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:155
msgid "Multiply current budget for each period by 'value'"
msgstr "每个时期的当前预算乘以 \"价值\""
msgstr "新值和期间预算的每一个值相乘"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:177
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:316
msgid "The number of leading digits to keep when rounding"
msgstr "当四舍五入的时候保留前几位"
msgstr "四舍五入的时候保留的小数位数"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:196
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:334
@ -17986,21 +17985,21 @@ msgstr "有效数字"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:208
msgid "Use a fixed value or apply transformation for all periods."
msgstr "对所有的时期使用一个固定的值,或者进行转换。"
msgstr "所有期间预算,使用定值替换或转换。"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:240
msgid "Estimate Budget Values"
msgstr "估计预算值"
msgstr "估"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:303
msgid "Use the average value over all actual periods for all projected periods"
msgstr "对所有预测期使用所有实际期的平均值"
msgstr "所有期间预算使用实际期间的平均值"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:372
msgid ""
"GnuCash will estimate budget values for the selected accounts from past "
"transactions."
msgstr "GnuCash 将从过去的交易事项中对选中的科目进行评估预算价格。"
msgstr "GnuCash 将从选中科目、过去的交易,估计预算。"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:389
msgid "Use Average"
@ -18009,11 +18008,11 @@ msgstr "均值"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:422
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:683
msgid "Budget Options"
msgstr "预算选项"
msgstr "选项"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:488
msgid "Budget Name"
msgstr "预算名称"
msgstr "名称"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:552
msgid "Number of Periods"
@ -18021,21 +18020,21 @@ msgstr "期数"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:582
msgid "Budget Period"
msgstr "预算期间"
msgstr "期间"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:634
#: gnucash/report/reports/standard/general-ledger.scm:126
#: gnucash/report/trep-engine.scm:83 gnucash/report/trep-engine.scm:1074
msgid "Show Account Code"
msgstr "显示科目编码"
msgstr "编码"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:658
msgid "Show Description"
msgstr "显示描述"
msgstr "描述"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:700
msgid "Note: Use View->'Filter By...' to control visible accounts."
msgstr "注意:使用“查看”->“筛选依据...”来控制可见帐户。"
msgstr "注意:使用\"查看 -> 筛选... -> 其他\"显示隐藏科目。"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:721
msgid "Budget List"
@ -18244,11 +18243,11 @@ msgstr "天"
#: gnucash/gtkbuilder/gnc-recurrence.glade:15
msgid "week(s)"
msgstr "周(次)"
msgstr "周"
#: gnucash/gtkbuilder/gnc-recurrence.glade:18
msgid "month(s)"
msgstr "月 "
msgstr "月"
#: gnucash/gtkbuilder/gnc-recurrence.glade:21
msgid "year(s)"
@ -18262,11 +18261,11 @@ msgstr "每 "
msgid ""
"Number of calendar units in the recurrence: E.g. Biweekly = every 2 weeks; "
"Quarterly = every 3 months"
msgstr "重复的日历单位的数量:如,每两周的 = 每 2 周;季度的 = 每 3 月"
msgstr "日历单位换算:例如,每两周 = 每 2 周;季度 = 每 3 月"
#: gnucash/gtkbuilder/gnc-recurrence.glade:109
msgid "beginning on"
msgstr "开始"
msgstr "开始"
#: gnucash/gtkbuilder/gnc-recurrence.glade:144
msgid "last of month"
@ -18278,13 +18277,13 @@ msgstr "总是使用月内最后一天(或星期的最后一天)"
#: gnucash/gtkbuilder/gnc-recurrence.glade:160
msgid "same week & day"
msgstr "相同的周和日子"
msgstr "同周同天"
#: gnucash/gtkbuilder/gnc-recurrence.glade:164
msgid ""
"Match the \"day of week\" and \"week of month\"? (for example, the \"second "
"Tuesday\" of every month)"
msgstr "匹配“星期几”和“月内第几周”(例如,每月的“星期二”)"
msgstr "匹配“星期几”和“月内第几周”(例如,每月的“星期二”)"
#: gnucash/gtkbuilder/gnc-tree-view-owner.glade:62
msgid "Only show _active owners"
@ -18296,29 +18295,25 @@ msgstr "显示零余额的所有者(_Z)"
#: gnucash/gtkbuilder/window-autoclear.glade:71
msgid "About Auto-Clear"
msgstr "关于自动核实"
msgstr "介绍"
#: gnucash/gtkbuilder/window-autoclear.glade:86
msgid ""
"Use this dialog if you want GnuCash to automatically find which transactions "
"are cleared, given an ending balance. For example, said ending balance can "
"be the current balance given by your bank online."
msgstr ""
"如果使用此对话框GNucash会自动查找在本财政年度结束时清除的交易。例如这里规"
"定的术语的余额可能是网上银行的当前余额。"
msgstr "如果希望 GnuCash 在给定余额的情况下自动核实交易,请使用此功能。例如,所述期末余额可以是网银的当前余额。"
#: gnucash/gtkbuilder/window-autoclear.glade:101
msgid "Caution!"
msgstr "警告!"
msgstr "注意!"
#: gnucash/gtkbuilder/window-autoclear.glade:116
msgid ""
"This tool might be slow or abort if the number of uncleared splits is more "
"than approximately 20. In that case please clear at least some of them "
"manually."
msgstr ""
"如果不清楚的分裂约为20或更多该工具可能会慢或停止。那时手动拍摄至少一部"
"分。"
msgstr "如果科目未核实的交易数量大于 20此功能可能会变慢或中止这种情况下请先手动核实一部分。"
#: gnucash/gtkbuilder/window-autoclear.glade:138
#: gnucash/gtkbuilder/window-reconcile.glade:117
@ -18327,11 +18322,11 @@ msgstr "期末余额(_E)"
#: gnucash/gtkbuilder/window-autoclear.glade:177
msgid "_Review cleared splits"
msgstr "复查已核实分录(_R)"
msgstr "复查已核实交易(_R)"
#: gnucash/gtkbuilder/window-autoclear.glade:181
msgid "Select this option to open a register tab with newly cleared splits."
msgstr "选择此选项可打开新清除的拆分录制输出选项卡。"
msgstr "新标签页显示已核实交易。"
#: gnucash/gtkbuilder/window-reconcile.glade:71
msgid "<b>Reconcile Information</b>"
@ -21561,7 +21556,7 @@ msgstr "交易的描述"
#: gnucash/report/trep-engine.scm:1237 gnucash/report/trep-engine.scm:1238
msgctxt "Column header for 'Document Link'"
msgid "L"
msgstr "中继"
msgstr "L"
#: gnucash/register/ledger-core/split-register-layout.c:711
#: gnucash/register/ledger-core/split-register-layout.c:751
@ -21655,7 +21650,7 @@ msgstr "%s 已对账"
#: gnucash/register/ledger-core/split-register-model.c:1017
msgid "Scheduled"
msgstr "交易计划"
msgstr "计划"
#: gnucash/register/ledger-core/split-register-model.c:1066
msgid ""
@ -22211,7 +22206,7 @@ msgstr "排序"
#: gnucash/report/reports/standard/customer-summary.scm:77
#: gnucash/report/reports/standard/new-aging.scm:41
msgid "Sort Order"
msgstr "顺序"
msgstr "方式"
#: gnucash/report/reports/aging.scm:40
#: gnucash/report/reports/example/average-balance.scm:43
@ -22272,14 +22267,14 @@ msgstr "显示多种货币合计"
#: gnucash/report/reports/aging.scm:43
#: gnucash/report/reports/standard/new-aging.scm:42
msgid "Show zero balance items"
msgstr "显示零余额条目"
msgstr "显示余额为零的科目"
#: gnucash/report/reports/aging.scm:44
#: gnucash/report/reports/standard/new-aging.scm:43
#: gnucash/report/reports/standard/new-owner-report.scm:46
#: gnucash/report/reports/standard/owner-report.scm:41
msgid "Due or Post Date"
msgstr "入账日期"
msgstr "日期"
#: gnucash/report/reports/aging.scm:47
#: gnucash/report/reports/standard/new-aging.scm:46
@ -22623,7 +22618,7 @@ msgstr "显示以星期几区分的支出合计饼图"
#: gnucash/report/reports/standard/income-statement.scm:64
#: gnucash/report/reports/standard/trial-balance.scm:79
msgid "Levels of Subaccounts"
msgstr "子科目层数"
msgstr "深度"
#: gnucash/report/reports/example/daily-reports.scm:61
#: gnucash/report/reports/standard/account-piecharts.scm:74
@ -23473,7 +23468,7 @@ msgstr "父科目小计"
#: gnucash/report/reports/standard/income-statement.scm:74
#: gnucash/report/reports/standard/trial-balance.scm:121
msgid "Include accounts with zero total balances"
msgstr "包含余额科目"
msgstr "包含余额为零科目"
#: gnucash/report/reports/standard/account-summary.scm:105
#: gnucash/report/reports/standard/balance-sheet.scm:101
@ -23492,7 +23487,7 @@ msgstr "此报表包含合计余额为零(递归)的科目。"
#: gnucash/report/reports/standard/budget-income-statement.scm:90
#: gnucash/report/reports/standard/income-statement.scm:77
msgid "Omit zero balance figures"
msgstr "排除零余额科目"
msgstr "余额为零科目不显示零"
#: gnucash/report/reports/standard/account-summary.scm:108
#: gnucash/report/reports/standard/balance-sheet.scm:104
@ -23501,7 +23496,7 @@ msgstr "排除零余额科目"
#: gnucash/report/reports/standard/budget-income-statement.scm:92
#: gnucash/report/reports/standard/income-statement.scm:79
msgid "Show blank space in place of any zero balances which would be shown."
msgstr "显示空白的地方,以代替任何将显示的零余额。"
msgstr "若余额为零则显示空白。"
#: gnucash/report/reports/standard/account-summary.scm:110
#: gnucash/report/reports/standard/balance-sheet.scm:106
@ -24472,7 +24467,7 @@ msgstr "费用类型"
#: gnucash/report/reports/standard/budget-income-statement.scm:66
#: gnucash/report/reports/standard/budget.scm:70
msgid "Range start"
msgstr "范围开始"
msgstr "开始"
#: gnucash/report/reports/standard/budget-barchart.scm:52
#: gnucash/report/reports/standard/budget.scm:72
@ -24482,7 +24477,7 @@ msgstr "悬在报表范围结束时的预算期间。"
#: gnucash/report/reports/standard/budget-barchart.scm:53
#: gnucash/report/reports/standard/budget.scm:73
msgid "Exact start period"
msgstr "确切的开始时间"
msgstr "确切的始期"
#: gnucash/report/reports/standard/budget-barchart.scm:55
#: gnucash/report/reports/standard/budget.scm:75
@ -24493,7 +24488,7 @@ msgstr "悬在报表范围结束时的预算期间。"
#: gnucash/report/reports/standard/budget-income-statement.scm:70
#: gnucash/report/reports/standard/budget.scm:77
msgid "Range end"
msgstr "范围结束"
msgstr "结束"
#: gnucash/report/reports/standard/budget-barchart.scm:59
#: gnucash/report/reports/standard/budget.scm:79
@ -24503,7 +24498,7 @@ msgstr "悬在报表范围结束时的预算期间。"
#: gnucash/report/reports/standard/budget-barchart.scm:60
#: gnucash/report/reports/standard/budget.scm:80
msgid "Exact end period"
msgstr "付款期间"
msgstr "确切的止期"
#: gnucash/report/reports/standard/budget-barchart.scm:62
#: gnucash/report/reports/standard/budget.scm:82
@ -24513,32 +24508,32 @@ msgstr "悬在报表范围结束时的预算期间。"
#: gnucash/report/reports/standard/budget-barchart.scm:65
#: gnucash/report/reports/standard/budget.scm:111
msgid "First budget period"
msgstr "首个预算周期"
msgstr "第一个预算期间"
#: gnucash/report/reports/standard/budget-barchart.scm:66
#: gnucash/report/reports/standard/budget.scm:112
msgid "Previous budget period"
msgstr "上个预算周期"
msgstr "前一个预算期间"
#: gnucash/report/reports/standard/budget-barchart.scm:67
#: gnucash/report/reports/standard/budget.scm:113
msgid "Current budget period"
msgstr "当前预算期"
msgstr "当前预算期"
#: gnucash/report/reports/standard/budget-barchart.scm:68
#: gnucash/report/reports/standard/budget.scm:114
msgid "Next budget period"
msgstr "下个预算期"
msgstr "下个预算期"
#: gnucash/report/reports/standard/budget-barchart.scm:69
#: gnucash/report/reports/standard/budget.scm:115
msgid "Last budget period"
msgstr "预算期间"
msgstr "最后一个预算期间"
#: gnucash/report/reports/standard/budget-barchart.scm:70
#: gnucash/report/reports/standard/budget.scm:116
msgid "Manual period selection"
msgstr "手动选择周期"
msgstr "自定义"
#: gnucash/report/reports/standard/budget-barchart.scm:136
msgid "Calculate as running sum?"
@ -24585,7 +24580,7 @@ msgstr "~a:~a - ~a"
#: gnucash/report/reports/standard/budget-income-statement.scm:62
#: gnucash/report/reports/standard/budget.scm:66
msgid "Report for range of budget periods"
msgstr "一个预算期间的范围的报表"
msgstr "自定义预算期间"
#: gnucash/report/reports/standard/budget-income-statement.scm:64
#: gnucash/report/reports/standard/budget.scm:68
@ -24719,7 +24714,7 @@ msgstr "损益"
#: gnucash/report/reports/standard/budget.scm:45
#: gnucash/report/reports/standard/cash-flow.scm:45
msgid "Account Display Depth"
msgstr "科目显示深度"
msgstr "深度"
#: gnucash/report/reports/standard/budget.scm:46
#: gnucash/report/reports/standard/cash-flow.scm:46
@ -24728,7 +24723,7 @@ msgstr "始终显示子科目"
#: gnucash/report/reports/standard/budget.scm:49
msgid "Show Budget"
msgstr "显示预算"
msgstr "预算"
#: gnucash/report/reports/standard/budget.scm:50
msgid "Display a column for the budget values."
@ -24736,7 +24731,7 @@ msgstr "显示一列预算值。"
#: gnucash/report/reports/standard/budget.scm:51
msgid "Show Budget Notes"
msgstr "显示预算"
msgstr "预算说明"
#: gnucash/report/reports/standard/budget.scm:52
msgid "Display a column for the budget notes."
@ -24744,7 +24739,7 @@ msgstr "显示一个预算说明的栏目。"
#: gnucash/report/reports/standard/budget.scm:53
msgid "Show Actual"
msgstr "显示实际"
msgstr "实际"
#: gnucash/report/reports/standard/budget.scm:54
msgid "Display a column for the actual values."
@ -24752,7 +24747,7 @@ msgstr "显示一列实际值。"
#: gnucash/report/reports/standard/budget.scm:55
msgid "Show Difference"
msgstr "显示差额"
msgstr "差额"
#: gnucash/report/reports/standard/budget.scm:56
msgid "Display the difference as budget - actual."
@ -24760,15 +24755,15 @@ msgstr "将差额显示为预算-实际。"
#: gnucash/report/reports/standard/budget.scm:57
msgid "Use accumulated amounts"
msgstr "使用累计金额"
msgstr "累计数值"
#: gnucash/report/reports/standard/budget.scm:58
msgid "Values are accumulated across periods."
msgstr "数值是跨期累积的。"
msgstr "跨期累计数值。"
#: gnucash/report/reports/standard/budget.scm:59
msgid "Show Column with Totals"
msgstr "显示带合计列"
msgstr "合计列"
#: gnucash/report/reports/standard/budget.scm:60
msgid "Display a column with the row totals."
@ -24776,13 +24771,13 @@ msgstr "显示一列行的总数。"
#: gnucash/report/reports/standard/budget.scm:61
msgid "Include accounts with zero total balances and budget values"
msgstr "包括余额合计和预算为零的科目"
msgstr "余额和预算为零的科目"
#: gnucash/report/reports/standard/budget.scm:62
msgid ""
"Include accounts with zero total (recursive) balances and budget values in "
"this report."
msgstr "在此报告中包括总余额(递归)为零的账户和预算值。"
msgstr "此报表包含余额和预算为零的科目。"
#: gnucash/report/reports/standard/budget.scm:84
msgid "Include collapsed periods before selected."
@ -24818,7 +24813,7 @@ msgstr "实际"
#. Translators: Abbreviation for "Difference" amount
#: gnucash/report/reports/standard/budget.scm:534
msgid "Diff"
msgstr "比较"
msgstr "差额"
#. Translators: using accumulated amounts mean
#. budget will report on budgeted and actual
@ -26101,7 +26096,7 @@ msgstr "联络"
#: gnucash/report/reports/standard/new-aging.scm:405
#: gnucash/report/reports/standard/receivables.scm:69
msgid "Shipping address"
msgstr "送货地址"
msgstr "仓库"
#: gnucash/report/reports/standard/new-aging.scm:419
msgid "Payable Aging"
@ -26109,7 +26104,7 @@ msgstr "应付账龄"
#: gnucash/report/reports/standard/new-aging.scm:428
msgid "Receivable Aging"
msgstr "应收账龄"
msgstr "选项"
#: gnucash/report/reports/standard/new-owner-report.scm:54
#: gnucash/report/reports/standard/owner-report.scm:55
@ -28478,7 +28473,7 @@ msgstr "科目已经自动核实余额。"
#: libgnucash/app-utils/gnc-ui-balances.c:455
msgid "Too many uncleared splits"
msgstr "太多未清理的分录"
msgstr "太多未核实的交易"
#: libgnucash/app-utils/gnc-ui-balances.c:471
msgid "The selected amount cannot be cleared."