Merge branch 'maint'

This commit is contained in:
Christopher Lam 2021-03-29 17:29:19 +08:00
commit d28ff20ff7
83 changed files with 8841 additions and 2655 deletions

View File

@ -652,6 +652,7 @@ set(gnucash_DOCS
ChangeLog.2017
ChangeLog.2018
ChangeLog.2019
ChangeLog.2020
DOCUMENTERS
HACKING
LICENSE
@ -788,6 +789,7 @@ configure_file (${CMAKE_CURRENT_SOURCE_DIR}/common/config.h.cmake.in ${CONFIG_H}
add_subdirectory (borrowed)
add_subdirectory (data)
add_subdirectory (doc)
# Note: po should be processed before gnucash - it provides LINGUAS, used to generate desktop and appdata files
add_subdirectory (po)
add_subdirectory (common)
add_subdirectory (libgnucash)
@ -806,7 +808,7 @@ add_subdirectory(cmake)
if (BUILDING_FROM_VCS)
add_custom_target(ChangeLog ALL
COMMAND ${GIT_EXECUTABLE} log --format=\"%ad %aN %n%n%x09* %s%d%n\" --date=short --since=2020-01-01 > ${CMAKE_BINARY_DIR}/ChangeLog
COMMAND ${GIT_EXECUTABLE} log --format=\"%ad %aN %n%n%x09* %s%d%n\" --date=short --since=2021-01-01 > ${CMAKE_BINARY_DIR}/ChangeLog
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
install(FILES ${CMAKE_BINARY_DIR}/ChangeLog DESTINATION ${CMAKE_INSTALL_DOCDIR})

6464
ChangeLog.2020 Normal file

File diff suppressed because it is too large Load Diff

197
NEWS
View File

@ -1,5 +1,200 @@
Version history:
------- -------
4.5 - 28 March 2021
The sixth release of the 4.x stable series.
Between 4.4 and 4.5, the following bugfixes were accomplished:
Bug 783283 - Multi-Currency payments use wrong date
Also properly handles the user clicking the cancel button on the
transfer dialog. It will now just return to the payment window,
waiting for further user input.
Bug 797621 - GnuCash freezes temporarily and sometimes crashes when
selecting Sales Tax Table in Invoices
Bug 797630 - Check for missing dependencies of 'Get Quotes' to avoid
Gnucash crash.
Bug 797906 - GnuCash data file is locked after a "save-as" to mysql
database.
It's more general, any save-as to a different backend type, i.e.
xml->sql or sql->xml, left the previous book locked.
Bug 797924 - Crash when searching for customer to process payment.
Bug 797997 - File gnucash could note be found
On Microsoft Windows when run from a CMD shell and passing a path
that contains non-ASCII characters.
Bug 798019 - Currency rates in OFX file are ignored
Use currency_rate information from OFX file if available. Requires
LibOFX v 0.10.0 or later.
Bug 798044 - Adding splits to a lot is extremely slow
Bug 798060 - Invoices are missing on Customer report after upgrade
Bug 798070 - Opening balance does not update when creating account from
Account Hierarchy
Bug 798078 - Report 'Income Chart' prints stacktrace when end date before
start date
Bug 798085 - Incorrect transactions import of entires with large number
amount
Quicken 2005 introduces U amount which sometimes differs from T amount.
U amount has larger range, and must override T amount whenever they're
not equal.
Bug 798093 - Changing the symbol/abbreviation of a security after the
trading account was created breaks GnuCash.
Makes it possible for the user to rename trading accounts or securities
independent of each other.
Bug 798096 - can't duplicate TX previous to red line threshold
Bug 798098 - Crash popup show when have 3 Windows in OSX
Bug 798100 - Equity totals calculating incorrectly
Prevents creation of non-currency opening balance accounts.
Bug 798101 - Do not #undef __STRICT_ANSI__
Remove defines and undefines for Windows, they were needed with
MinGW classic but are not with MinGW-w64.
Bug 798104 - Menu item for "Import Account" is wrong in danish
Bug 798112 - An error occurred while processing mysql ...
A "Feature" of MYSQL is that it allows C-style backslash escapes in
string constants and replaces them with the actual character (e.g. \n
is converted to 0x0a). This causes round trip problems if the escape
is one of the allowed ones and a MYSQL error if it isn't. Disable the
feature so that MYSQL follows the SQL standard.
Bug 798132 - Invoice Importing crashes when importing low quantity values.
Bug 798135 - GtkEntry text with search list: shows selected entry again
for no reason
Bug 798147 - Notes entry crashes program
Bug 798149 - CSV transaction Import setting loses account name if it is
changed after setting is memorized
Account guid is saved as well as the full account name and when
recalled the account is looked up first by guid, if this fails the
full account name is checked which if successful immediately updates
the saved base account setting with the account guid for future use.
If unsuccessful the account combo is blank with a error message as
before. When save CSV settings button is used, both the Guid and full
paths are saved so previous versions can still use the full path as
before.
Bug 798150 - Error on report over time
Caused by incorrect handling of Daylight Savings beginning at midnight.
Bug 798154 - Tooltips wrong when multiple charts in one report
The following fixes and improvements were not associated with bug reports:
Fix building based on unix makefiles
Make the chart on the report page icon larger to align better with the
account page icon.
Allow the context menu when GncCellRendererTextView is in edit mode.
Restructure early locale initialization
* Move macOS specific bits to its own source file. As this is
objective-c use .mm extension
* Use common function signature for macOS and Windows init function
and include via common header file
Fix GncDateTime::format_zulu to emit the UTC timezone instead of the
GncDateTime's timezone with the UTC timestamp.
Fix the implementations of gnc_foo_get_day_neutral. As implemented these
returned 10:59 AM local on the day but neutral time is 10:59 UTC.
gnc_invoice_window_print_invoice return NULL if invoice is NULL.
[dialog-invoice] invoice editor reuses invoice report tab.
Allow for Header Bar use in CSV transaction Assistant
There are a couple of action buttons that are added to the CSV
transaction assistant with added alignment based on the action area
being a GtkBox which causes errors if the header bar is used so test
for the action area type and use appropriate specific functions.
Drop default locale currency special case for euro
The condition mentioned in the comment no longer applies. All European
locales on Windows (MingW64) properly present EUR as currency these
days.
Fix fencepost error in calculating the week_num for POSIX timezone rules.
Include the contents of PROJECT_DESCRIPTION in the PACKAGE_PREFIX.
If it's defined. PACKAGE_PREFIX is used to name tarballs and set their
base directory. The translation project has requested that we name
freeze-string tarballs with a pre1 suffix; this makes that possible.
Update python/gnucash_business.py to reflect rename of gncOwnerApplyPayment.
I18N: don't mark "<<", ">>" translatable
They get properly reversed for RTL writing
From Budget editor, add toolbar and Edit menu to run budget report
This parallels the invoice editor "Print Invoice" functionality.
Runs the budget report using current budget.
[gnc-plugin-page-budget] change note icon to a note page
Allow the find account dialog position to be saved when using 'X'
Update price database for imported transactions.
Replace g_memdup by memcpy
GLib is deprecating g_memdup and will immediately remove it in the
next micro-release because of a CVE.
[html-fonts] Prevent sup/sub from affecting baseline
Source: https://css-tricks.com/snippets/css/prevent-superscripts-and-subscripts-from-affecting-line-height/
Previously <sup> and <sub> would cause the baseline to move vertically.
Replace stat calls with GFile to retrieve last modified info
Avoids code-page problems with non-ASCII characters on Microsoft
Windows.
[gnc-tree-model-split-reg.c] use xaccSplitListGetUniqueTransactionsReversed
which is then reversed if required. this removes the need for double
reversal.
[Split.c]New function xaccSplitListGetUniqueTransactionsReversed
Same as xaccSplitListGetUniqueTransactions but doesn't reverse the
list prior to returning. To be used by gnc-tree-model-split-reg.c
Several optimizations
* doesn't call g_list_find and g_list_append for every iteration
* uses g_hash_table to cache list of txns already added instead of
g_list_find
* does not reverse the result, thereby returning a reversed list.
[gnc-recurrence.c] avoid O(N^2) children traversal
Ensure that any GncMainWindows containing no tabs are destroyed at shutdown.
I18N: drop translatable flag from "xxx" dummies and remove trailing spaces
from translatable strings
Update Form/Schedule line references for 2020 for the US Income Tax Report.
Fix build with glib2 2.67.x.
glib headers should not be included with 'extern "C"'.
[balsheet-pnl] Use last day of the month prices instead of first day of
next month.
[options.scm API] Remove canonically-tabbed parent-subtotal-mode
This mode had been marked experimental for 17 years and was never
improved. Any saved reports with this option will be switched to
parent-subtotal-mode enabled.
Accommodate Gwenhywfar 5.5.0 signature change for some GUI callbacks.
This is a breaking change that matters only in Win32. No ifdeffing
because Win32 builds and dependencies are well synchronized.
L10N: Move translation authority for Turkish from the GNU Translation
Project to Weblate.
Make prototypes static for autoclear unit test, fixes build on Debian
Buster.
[income-gst-statement] trep-engine currency section moved
From "General" to "Currency". Missed out in 854c11782 commit
[test-scm-utilities] test-end properly so that test failures set the exit
code correctly
Create opening balance accounts only when there are opening balances.
[qif-file.scm] Don't use match as an identifier
It is a (ice-9 match) keyword.
Change the CSV export account tree header line
Change the headings of the CSV account export header line to be more
friendly which uses existing translations.
[new-owner-report] Don't create empty rows on report when splits have no
entry in the memo field.
[gnc-report] dump backtrace to console when report crashes
Because gnc:backtrace-if-exception, not used anymore, would dump
guile backtrace to console. restore this behaviour.
[report-core] remove 2.6/2.4 compatibility code
[gnucash-commands.cpp] display report errors to stderr
New API:
[report-core.scm] create and expose gnc:render-report
similar to gnc:report-run but *always* returns a 2-element list
containing data OR captured_error
[report-core.scm] create and expose gnc:render-report
similar to gnc:report-run but *always* returns a 2-element list
containing data OR captured_error
[gnc-plugin-page-report] add gnc_plugin_page_report_reload
refreshes the report
Deprecations:
[c-interface.scm] deprecate gnc:last-captured-error
[report-core] deprecate gnc:restore-report-by-guid
gnc:get-three-months-ago
gnc:get-six-months-ago
gnc:get-one-year-ago
gnc:get-three-months-ahead
gnc:get-six-months-ahead
gnc:get-one-year-ahead
traverse-list->vec
traverse-vec->list
New and Updated Translations: Bodo, Croatian, Danish, Dutch,
English (United Kingdom), Finnish, French, German, Greek, Hebrew, Hindi,
Indonesian, Italian, Japanese, Lithuanian, Norwegian Bokmål, Polish,
Portuguese, Portuguese (Brazil), Russian, Spanish, Turkish, Ukrainian,
Urdu, Vietnamese
4.4 - 28 December 2020
The fifth release of the 4.x stable series, a snap release to fix bug 798063.
@ -5150,7 +5345,7 @@ Concurrent with the release of Gnucash 2.6.4 we're pleased to also release a new
source repository and put it into the downloads directory of
your gnucash build area.
* Updated AqBanking on Win32.</li>
* Updated AqBanking on Win32.
2.3.0 - 14 May 2009
o Welcome to GnuCash 2.3.0 the first of several unstable releases of

View File

@ -18,12 +18,12 @@
* *
\********************************************************************/
#include <config.h>
#include <libguile.h>
#include <glib.h>
extern "C"
{
#include <config.h>
#include <glib.h>
#include "gnc-engine-guile.h"
#include "test-engine-stuff.h"

View File

@ -109,8 +109,6 @@
PyDateTime_IMPORT;
struct tm t;
gnc_localtime_r(&$1, &t);
printf("\nConverting %d hours and %d minutes in zone %ld %s to python local time\n",
t.tm_hour, t.tm_min, t.tm_gmtoff/3600, t.tm_isdst ? "DST" : "STD");
$result = PyDateTime_FromDateAndTime(t.tm_year + 1900, t.tm_mon + 1,
t.tm_mday, t.tm_hour, t.tm_min,
t.tm_sec, 0);

View File

@ -203,6 +203,9 @@ function(gnc_add_scheme_targets _TARGET)
set(_GUILE_LOAD_COMPILED_PATH "${current_bindir}")
# VERSION_GREATER_EQUAL introduced in CMake 3.7.
if(MINGW64 AND (${GUILE_EFFECTIVE_VERSION} VERSION_GREATER_EQUAL 2.2))
if (NOT (DEFINED ENV{GUILE_LOAD_PATH} AND DEFINED ENV{GUILE_LOAD_COMPILED_PATH}))
message(FATAL_ERROR "$GUILE_LOAD_PATH and $GUILE_LOAD_COMPILED_PATH must be defined in the environment to configure GnuCash on Microsoft Windows.")
endif()
file(TO_CMAKE_PATH $ENV{GUILE_LOAD_PATH} guile_load_path)
file(TO_CMAKE_PATH $ENV{GUILE_LOAD_COMPILED_PATH} guile_load_compiled_path)
list(APPEND _GUILE_LOAD_PATH ${guile_load_path})

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 B

After

Width:  |  Height:  |  Size: 333 B

View File

@ -38,7 +38,7 @@ install(FILES ${DATADIR_BUILD}/gnucash/tip_of_the_day.list DESTINATION ${CMAKE_I
foreach (manpage gnucash gnucash-cli)
add_custom_command(OUTPUT ${DATADIR_BUILD}/gnucash/${manpage}.1
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.1.in ${VCS_INFO_FILE}
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.1.in gnc-vcs-info
COMMAND ${CMAKE_COMMAND}
-D SRC=${CMAKE_CURRENT_SOURCE_DIR}/${manpage}.1.in
-D DST=${manpage}.1

View File

@ -60,7 +60,7 @@ the remainder of the transaction as it was last entered.")
Transfer register column, and GnuCash will complete the name from \
your list of accounts. For subaccounts, type the first letter(s) \
of the parent account, followed by ':' and the first letter(s) of \
the subaccount (e.g. A:C for Assets:Cash.)")
the subaccount (e.g. A:C for Assets:Cash).")
N_( "Want to see all your subaccount transactions in one register? \
From the Accounts tab in the main window, highlight the parent account \

View File

@ -34,6 +34,7 @@ endif()
set(gnucash_noinst_HEADERS
gnucash-commands.hpp
gnucash-core-app.hpp
gnucash-locale-platform.h
)
set (gnucash_SOURCES
@ -45,7 +46,9 @@ set (gnucash_SOURCES
)
if (MINGW)
list(APPEND gnucash_SOURCES "gnucash-windows-locale.c")
list(APPEND gnucash_SOURCES "gnucash-locale-windows.c")
elseif (MAC_INTEGRATION)
list(APPEND gnucash_SOURCES "gnucash-locale-macos.mm")
endif()
add_executable (gnucash
@ -71,7 +74,9 @@ set(gnucash_cli_SOURCES
)
if (MINGW)
list(APPEND gnucash_cli_SOURCES "gnucash-windows-locale.c")
list(APPEND gnucash_cli_SOURCES "gnucash-locale-windows.c")
elseif (MAC_INTEGRATION)
list(APPEND gnucash_cli_SOURCES "gnucash-locale-macos.mm")
endif()
add_executable (gnucash-cli
@ -266,7 +271,7 @@ gnc_add_scheme_targets(price-quotes
set_local_dist(gnucash_DIST_local CMakeLists.txt environment.in generate-gnc-script
gnucash.cpp gnucash-commands.cpp gnucash-cli.cpp gnucash-core-app.cpp
gnucash-windows-locale.c gnucash.rc.in gnucash-valgrind.in
gnucash-locale-macos.mm gnucash-locale-windows.c gnucash.rc.in gnucash-valgrind.in
gnucash-gresources.xml ${gresource_files} price-quotes.scm
${gnucash_noinst_HEADERS} ${gnucash_EXTRA_DIST})

View File

@ -145,7 +145,7 @@ gnc_dup_trans_dialog_create (GtkWidget * parent, DupTransDialog *dt_dialog,
{
GtkWidget *dialog;
GtkBuilder *builder;
const gchar *tt = _("Use +- keys to increment/decrement number");
const gchar *tt = _("Use +- keys to increment/decrement number.");
builder = gtk_builder_new ();
gnc_builder_add_from_file (builder, "gnc-plugin-page-register.glade", "num_adjustment");

View File

@ -71,13 +71,20 @@ gcrtv_editing_done (GtkCellEditable *editable,
gchar *path;
const gchar *new_text;
if (GNC_CELL_VIEW (editable)->focus_out_id > 0)
if (GNC_CELL_VIEW(editable)->focus_out_id > 0)
{
g_signal_handler_disconnect (GNC_CELL_VIEW(editable)->text_view,
GNC_CELL_VIEW(editable)->focus_out_id);
GNC_CELL_VIEW(editable)->focus_out_id = 0;
}
if (GNC_CELL_VIEW(editable)->populate_popup_id > 0)
{
g_signal_handler_disconnect (GNC_CELL_VIEW(editable)->text_view,
GNC_CELL_VIEW(editable)->populate_popup_id);
GNC_CELL_VIEW(editable)->populate_popup_id = 0;
}
if (GNC_CELL_VIEW(editable)->editing_canceled)
{
gtk_cell_renderer_stop_editing (GTK_CELL_RENDERER(cell_tv), TRUE);
@ -89,6 +96,8 @@ gcrtv_editing_done (GtkCellEditable *editable,
new_text = gnc_cell_view_get_text (GNC_CELL_VIEW(editable));
gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE(editable));
g_signal_emit_by_name (cell_tv, "edited", path, new_text);
}
@ -118,9 +127,8 @@ gcrtv_start_editing (GtkCellRenderer *cell,
g_object_get (G_OBJECT(cell_tv), "editable", &iseditable, NULL);
/* If the cell isn't editable we return NULL. */
if (iseditable == FALSE) {
if (iseditable == FALSE)
return NULL;
}
editable = g_object_new (GNC_TYPE_CELL_VIEW, NULL);

View File

@ -53,9 +53,14 @@ G_DEFINE_TYPE_WITH_CODE (GncCellView, gnc_cell_view, GTK_TYPE_EVENT_BOX,
gnc_cell_view_editable_init))
static void
gnc_cell_view_finalize (GObject *gobject)
gnc_cell_view_dispose (GObject *gobject)
{
G_OBJECT_CLASS (gnc_cell_view_parent_class)->finalize (gobject);
if (GNC_CELL_VIEW(gobject)->tooltip_id > 0)
{
g_source_remove (GNC_CELL_VIEW(gobject)->tooltip_id);
GNC_CELL_VIEW(gobject)->tooltip_id = 0;
}
G_OBJECT_CLASS (gnc_cell_view_parent_class)->dispose (gobject);
}
static void
@ -75,6 +80,10 @@ gnc_cell_view_init (GncCellView *cv)
gtk_container_add (GTK_CONTAINER(cv), GTK_WIDGET(cv->text_view));
gtk_widget_show (cv->text_view);
cv->focus_out_id = 0;
cv->populate_popup_id = 0;
cv->tooltip_id = 0;
gtk_widget_set_can_focus (GTK_WIDGET(cv->text_view), TRUE);
gtk_widget_add_events (GTK_WIDGET(cv), GDK_KEY_PRESS_MASK);
gtk_widget_add_events (GTK_WIDGET(cv), GDK_KEY_RELEASE_MASK);
@ -86,7 +95,7 @@ gnc_cell_view_class_init (GncCellViewClass *klass)
GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
gobject_class->finalize = gnc_cell_view_finalize;
gobject_class->dispose = gnc_cell_view_dispose;
gobject_class->set_property = gnc_cell_view_set_property;
gobject_class->get_property = gnc_cell_view_get_property;
@ -144,11 +153,9 @@ gtk_cell_editable_key_press_event (GtkTextView *text_view,
if (key_event->keyval == GDK_KEY_Escape)
{
cv->editing_canceled = TRUE;
gtk_cell_editable_editing_done (GTK_CELL_EDITABLE(cv));
if (GTK_IS_CELL_EDITABLE(cv))
gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE(cv));
gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE(cv));
return TRUE;
}
@ -156,18 +163,33 @@ gtk_cell_editable_key_press_event (GtkTextView *text_view,
&& (key_event->state & GDK_SHIFT_MASK))
{
gtk_cell_editable_editing_done (GTK_CELL_EDITABLE(cv));
if (GTK_IS_CELL_EDITABLE(cv))
gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE(cv));
return TRUE;
}
return FALSE;
}
static void
gcv_popup_unmap (GtkMenu *menu, GncCellView *cv)
{
cv->in_popup_menu = FALSE;
}
static void
gcv_populate_popup (GtkTextView *text_view,
GtkWidget *popup,
GncCellView *cv)
{
cv->in_popup_menu = TRUE;
g_signal_connect (popup, "unmap",
G_CALLBACK (gcv_popup_unmap), cv);
}
static gboolean
gcv_focus_out_event (GtkWidget *widget, GdkEvent *event, GncCellView *cv)
{
if (cv->in_popup_menu)
return FALSE;
cv->editing_canceled = TRUE;
if (cv->focus_out_id > 0)
@ -175,6 +197,11 @@ gcv_focus_out_event (GtkWidget *widget, GdkEvent *event, GncCellView *cv)
g_signal_handler_disconnect (cv->text_view, cv->focus_out_id);
cv->focus_out_id = 0;
}
if (cv->populate_popup_id > 0)
{
g_signal_handler_disconnect (cv->text_view, cv->populate_popup_id);
cv->populate_popup_id = 0;
}
gtk_cell_editable_editing_done (GTK_CELL_EDITABLE(cv));
gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE(cv));
@ -184,8 +211,11 @@ gcv_focus_out_event (GtkWidget *widget, GdkEvent *event, GncCellView *cv)
static gboolean
gcv_remove_tooltip (GncCellView *cv)
{
if (GTK_IS_WIDGET(cv->text_view))
if (cv->tooltip_id > 0)
{
gtk_widget_set_tooltip_text (GTK_WIDGET(cv->text_view), NULL);
cv->tooltip_id = 0;
}
return FALSE;
}
@ -196,8 +226,8 @@ gcv_start_editing (GtkCellEditable *cell_editable,
GncCellView *cv = GNC_CELL_VIEW(cell_editable);
GtkTextIter siter, eiter;
// Remove the text_view tooltip after 5secs
g_timeout_add (5000, (GSourceFunc) gcv_remove_tooltip, cv);
// Remove the text_view tooltip after 5secs to stop it recuring
cv->tooltip_id = g_timeout_add (5000, (GSourceFunc) gcv_remove_tooltip, cv);
gtk_text_buffer_get_bounds (cv->buffer, &siter, &eiter);
gtk_text_buffer_select_range (cv->buffer, &eiter, &siter);
@ -212,6 +242,11 @@ gcv_start_editing (GtkCellEditable *cell_editable,
cv->focus_out_id = g_signal_connect (G_OBJECT(cv->text_view),
"focus-out-event",
G_CALLBACK(gcv_focus_out_event), cv);
cv->populate_popup_id = g_signal_connect (G_OBJECT(cv->text_view),
"populate-popup",
G_CALLBACK(gcv_populate_popup),
cv);
}
static void

View File

@ -43,6 +43,9 @@ struct _GncCellView
GtkTextBuffer *buffer;
gulong focus_out_id;
gulong populate_popup_id;
guint tooltip_id;
gboolean in_popup_menu;
gboolean editing_canceled;
};

View File

@ -4363,62 +4363,61 @@ gnc_main_window_cmd_file_quit (GtkAction *action, GncMainWindow *window)
static void
gnc_main_window_cmd_edit_cut (GtkAction *action, GncMainWindow *window)
{
GtkWidget *widget = gtk_window_get_focus (GTK_WINDOW (window));
GtkTextBuffer *text_buffer;
GtkClipboard *clipboard;
gboolean editable;
GtkWidget *widget = gtk_window_get_focus (GTK_WINDOW(window));
if (GTK_IS_EDITABLE (widget))
if (GTK_IS_EDITABLE(widget))
{
gtk_editable_cut_clipboard (GTK_EDITABLE (widget));
gtk_editable_cut_clipboard (GTK_EDITABLE(widget));
}
else if (GTK_IS_TEXT_VIEW (widget))
else if (GTK_IS_TEXT_VIEW(widget))
{
text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget));
clipboard = gtk_widget_get_clipboard (GTK_WIDGET(text_buffer),
GDK_SELECTION_CLIPBOARD);
editable = gtk_text_view_get_editable (GTK_TEXT_VIEW (widget));
gtk_text_buffer_cut_clipboard (text_buffer, clipboard, editable);
GtkTextBuffer *text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget));
GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET(widget),
GDK_SELECTION_CLIPBOARD);
gboolean editable = gtk_text_view_get_editable (GTK_TEXT_VIEW(widget));
if (clipboard)
gtk_text_buffer_cut_clipboard (text_buffer, clipboard, editable);
}
}
static void
gnc_main_window_cmd_edit_copy (GtkAction *action, GncMainWindow *window)
{
GtkWidget *widget = gtk_window_get_focus (GTK_WINDOW (window));
GtkTextBuffer *text_buffer;
GtkClipboard *clipboard;
GtkWidget *widget = gtk_window_get_focus (GTK_WINDOW(window));
if (GTK_IS_EDITABLE (widget))
if (GTK_IS_EDITABLE(widget))
{
gtk_editable_copy_clipboard (GTK_EDITABLE (widget));
gtk_editable_copy_clipboard (GTK_EDITABLE(widget));
}
else if (GTK_IS_TEXT_VIEW (widget))
else if (GTK_IS_TEXT_VIEW(widget))
{
text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget));
clipboard = gtk_widget_get_clipboard (GTK_WIDGET(text_buffer),
GDK_SELECTION_CLIPBOARD);
gtk_text_buffer_copy_clipboard (text_buffer, clipboard);
GtkTextBuffer *text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget));
GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET(widget),
GDK_SELECTION_CLIPBOARD);
if (clipboard)
gtk_text_buffer_copy_clipboard (text_buffer, clipboard);
}
}
static void
gnc_main_window_cmd_edit_paste (GtkAction *action, GncMainWindow *window)
{
GtkWidget *widget = gtk_window_get_focus (GTK_WINDOW (window));
GtkTextBuffer *text_buffer;
GtkClipboard *clipboard;
GtkWidget *widget = gtk_window_get_focus (GTK_WINDOW(window));
if (GTK_IS_EDITABLE (widget))
if (GTK_IS_EDITABLE(widget))
{
gtk_editable_paste_clipboard (GTK_EDITABLE (widget));
gtk_editable_paste_clipboard (GTK_EDITABLE(widget));
}
else if (GTK_IS_TEXT_VIEW (widget))
else if (GTK_IS_TEXT_VIEW(widget))
{
text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget));
clipboard = gtk_widget_get_clipboard (GTK_WIDGET(text_buffer),
GDK_SELECTION_CLIPBOARD);
gtk_text_buffer_paste_clipboard (text_buffer, clipboard, NULL, FALSE);
GtkTextBuffer *text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW(widget));
GtkClipboard *clipboard = gtk_widget_get_clipboard (GTK_WIDGET(widget),
GDK_SELECTION_CLIPBOARD);
gboolean editable = gtk_text_view_get_editable (GTK_TEXT_VIEW(widget));
if (clipboard)
gtk_text_buffer_paste_clipboard (text_buffer, clipboard, NULL, editable);
}
}

View File

@ -196,7 +196,7 @@ endif()
add_custom_command(
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/gnucash.appdata.xml
DEPENDS ${GNC_APPDATA_IN} ${VCS_INFO_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/gnucash.releases.xml
DEPENDS ${GNC_APPDATA_IN} gnc-vcs-info ${CMAKE_CURRENT_SOURCE_DIR}/gnucash.releases.xml
COMMAND ${CMAKE_COMMAND} -D SRC=${GNC_APPDATA_IN}
-D DST=${CMAKE_CURRENT_BINARY_DIR}/gnucash.appdata.xml
-D VCS_INFO_FILE=${VCS_INFO_FILE}
@ -223,7 +223,7 @@ add_custom_command (
add_custom_command (
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/gnucash.desktop
DEPENDS ${GNC_DESKTOP_IN} ${VCS_INFO_FILE}
DEPENDS ${GNC_DESKTOP_IN} gnc-vcs-info
COMMAND ${CMAKE_COMMAND} -D SRC=${GNC_DESKTOP_IN}
-D DST=${CMAKE_CURRENT_BINARY_DIR}/gnucash.desktop
-D VCS_INFO_FILE=${VCS_INFO_FILE}

View File

@ -70,6 +70,7 @@
#include "gnc-plugin-business.h"
#include "gnc-plugin-page-invoice.h"
#include "gnc-plugin-page-report.h"
#include "gnc-main-window.h"
#include "gnc-state.h"
@ -211,6 +212,11 @@ struct _invoice_window
GncOwner proj_cust;
GncOwner proj_job;
/* the cached reportPage for this invoice. note this is not saved
into .gcm file therefore the invoice editor->report link is lost
upon restart. */
GncPluginPage *reportPage;
/* for Unposting */
gboolean reset_tax_tables;
};
@ -781,20 +787,21 @@ gnc_invoice_window_blankCB (GtkWidget *widget, gpointer data)
}
}
static void
static GncPluginPage *
gnc_invoice_window_print_invoice(GtkWindow *parent, GncInvoice *invoice)
{
SCM func, arg, arg2;
SCM args = SCM_EOL;
int report_id;
const char *reportname = gnc_plugin_business_get_invoice_printreport();
GncPluginPage *reportPage = NULL;
g_return_if_fail (invoice);
g_return_val_if_fail (invoice, NULL);
if (!reportname)
reportname = "5123a759ceb9483abf2182d01c140e8d"; // fallback if the option lookup failed
func = scm_c_eval_string ("gnc:invoice-report-create");
g_return_if_fail (scm_is_procedure (func));
g_return_val_if_fail (scm_is_procedure (func), NULL);
arg = SWIG_NewPointerObj(invoice, SWIG_TypeQuery("_p__gncInvoice"), 0);
arg2 = scm_from_utf8_string(reportname);
@ -803,18 +810,37 @@ gnc_invoice_window_print_invoice(GtkWindow *parent, GncInvoice *invoice)
/* scm_gc_protect_object(func); */
arg = scm_apply (func, args, SCM_EOL);
g_return_if_fail (scm_is_exact (arg));
g_return_val_if_fail (scm_is_exact (arg), NULL);
report_id = scm_to_int (arg);
/* scm_gc_unprotect_object(func); */
if (report_id >= 0)
reportWindow (report_id, parent);
{
reportPage = gnc_plugin_page_report_new (report_id);
gnc_main_window_open_page (GNC_MAIN_WINDOW (parent), reportPage);
}
return reportPage;
}
/* From the invoice editor, open the invoice report. This will reuse the
invoice report if generated from the current invoice editor. Note the
link is lost when GnuCash is restarted. This link may be restored
by: scan the current session tabs, identify reports, checking
whereby report's report-type matches an invoice report, and the
report's invoice option value matches the current invoice. */
void
gnc_invoice_window_printCB (GtkWindow* parent, gpointer data)
{
InvoiceWindow *iw = data;
gnc_invoice_window_print_invoice (parent, iw_get_invoice (iw));
if (iw->reportPage && GNC_IS_PLUGIN_PAGE (iw->reportPage))
gnc_plugin_page_report_reload (GNC_PLUGIN_PAGE_REPORT (iw->reportPage));
else
iw->reportPage = gnc_invoice_window_print_invoice
(parent, iw_get_invoice (iw));
gnc_main_window_open_page (GNC_MAIN_WINDOW (iw->dialog), iw->reportPage);
}
static gboolean
@ -2895,6 +2921,7 @@ gnc_invoice_window_new_invoice (GtkWindow *parent, InvoiceDialogType dialog_type
iw);
/* Setup initial values */
iw->reportPage = NULL;
iw->invoice_guid = *gncInvoiceGetGUID (invoice);
iw->is_credit_note = gncInvoiceGetIsCreditNote (invoice);

View File

@ -378,7 +378,7 @@ static action_toolbar_labels invoice_action_tooltips[] = {
{"BusinessNewInvoiceAction", N_("Create a new invoice for the same owner as the current one")},
{"BlankEntryAction", N_("Move to the blank entry at the bottom of the invoice")},
{"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this invoice") },
{"ReportsCompanyReportAction", N_("Open a company report window for the owner of this invoice") },
{"ReportsCompanyReportAction", N_("Open a customer report window for the owner of this invoice") },
{"BusinessLinkAction", N_("Manage Document Link")},
{"BusinessLinkOpenAction", N_("Open Linked Document")},
{NULL, NULL},
@ -399,7 +399,7 @@ static action_toolbar_labels bill_action_tooltips[] = {
{"BusinessNewInvoiceAction", N_("Create a new bill for the same owner as the current one")},
{"BlankEntryAction", N_("Move to the blank entry at the bottom of the bill")},
{"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this bill") },
{"ReportsCompanyReportAction", N_("Open a company report window for the owner of this bill") },
{"ReportsCompanyReportAction", N_("Open a vendor report window for the owner of this bill") },
{"BusinessLinkAction", N_("Manage Document Link")},
{"BusinessLinkOpenAction", N_("Open Linked Document")},
{NULL, NULL},
@ -420,7 +420,7 @@ static action_toolbar_labels voucher_action_tooltips[] = {
{"BusinessNewInvoiceAction", N_("Create a new voucher for the same owner as the current one")},
{"BlankEntryAction", N_("Move to the blank entry at the bottom of the voucher")},
{"ToolsProcessPaymentAction", N_("Enter a payment for the owner of this voucher") },
{"ReportsCompanyReportAction", N_("Open a company report window for the owner of this voucher") },
{"ReportsCompanyReportAction", N_("Open a employee report window for the owner of this voucher") },
{"BusinessLinkAction", N_("Manage Document Link")},
{"BusinessLinkOpenAction", N_("Open Linked Document")},
{NULL, NULL},

View File

@ -1194,10 +1194,10 @@ gnc_plugin_page_report_constr_init(GncPluginPageReport *plugin_page, gint report
gchar *saved_reports_path = gnc_build_userdata_path (SAVED_REPORTS_FILE);
gchar *report_save_str = g_strdup_printf (
_("Update the current report's saved configuration. "
"The report configuration will be saved in the file %s. "), saved_reports_path);
"The report configuration will be saved in the file %s."), saved_reports_path);
gchar *report_saveas_str = g_strdup_printf (
_("Add the current report's configuration to the `Reports->Saved Report Configurations' menu. "
"The report configuration will be saved in the file %s. "), saved_reports_path);
_("Add the current report's configuration to the 'Reports->Saved Report Configurations' menu. "
"The report configuration will be saved in the file %s."), saved_reports_path);
GtkActionEntry report_actions[] =
{

View File

@ -25,7 +25,6 @@
#include <libguile.h>
#include <guile-mappings.h>
#ifdef __MINGW32__
extern "C" void set_win32_thread_locale(char**);
#include <Windows.h>
#include <fcntl.h>
#endif
@ -46,6 +45,7 @@ extern "C" {
#include <gnc-report.h>
#include <gnc-splash.h>
#include <gnc-version.h>
#include "gnucash-locale-platform.h"
}
#include <boost/algorithm/string.hpp>
@ -63,10 +63,6 @@ static QofLogModule log_module = GNC_MOD_GUI;
#include <locale.h>
#include <gnc-locale-utils.hpp>
#ifdef MAC_INTEGRATION
# include <Foundation/Foundation.h>
#endif
/* GNC_VCS is defined whenever we're building from an svn/svk/git/bzr tree */
#ifdef GNC_VCS
static int is_development_version = TRUE;
@ -90,187 +86,6 @@ gnc_print_unstable_message(void)
<< bl::format (bl::translate ("To find the last stable version, please refer to {1}")) % PACKAGE_URL << "\n";
}
#ifdef MAC_INTEGRATION
static void
mac_set_currency_locale(NSLocale *locale, NSString *locale_str)
{
/* If the currency doesn't match the base locale, we need to find a locale that does match, because setlocale won't know what to do with just a currency identifier. */
NSLocale *cur_locale = [ [NSLocale alloc] initWithLocaleIdentifier: locale_str];
if (![ [locale objectForKey: NSLocaleCurrencyCode] isEqualToString:
[cur_locale objectForKey: NSLocaleCurrencyCode] ])
{
NSArray *all_locales = [NSLocale availableLocaleIdentifiers];
NSEnumerator *locale_iter = [all_locales objectEnumerator];
NSString *this_locale;
NSString *currency = [locale objectForKey: NSLocaleCurrencyCode];
NSString *money_locale = nil;
while ((this_locale = (NSString*)[locale_iter nextObject]))
{
NSLocale *templocale = [ [NSLocale alloc]
initWithLocaleIdentifier: this_locale];
if ([ [templocale objectForKey: NSLocaleCurrencyCode]
isEqualToString: currency])
{
money_locale = this_locale;
[templocale release];
break;
}
[templocale release];
}
if (money_locale)
setlocale(LC_MONETARY, [money_locale UTF8String]);
}
[cur_locale release];
}
/* The locale that we got from AppKit isn't a supported POSIX one, so we need to
* find something close. First see if we can find another locale for the
* country; failing that, try the language. Ultimately fall back on en_US.
*/
static NSString*
mac_find_close_country(NSString *locale_str, NSString *country_str,
NSString *lang_str)
{
NSArray *all_locales = [NSLocale availableLocaleIdentifiers];
NSEnumerator *locale_iter = [all_locales objectEnumerator];
NSString *this_locale, *new_locale = nil;
PWARN("Apple Locale is set to a value %s not supported"
" by the C runtime", [locale_str UTF8String]);
while ((this_locale = [(NSString*)[locale_iter nextObject] stringByAppendingString: @".UTF-8"]))
if ([ [ [NSLocale componentsFromLocaleIdentifier: this_locale]
objectForKey: NSLocaleCountryCode]
isEqualToString: country_str] &&
setlocale (LC_ALL, [this_locale UTF8String]))
{
new_locale = this_locale;
break;
}
if (!new_locale)
while ((this_locale = (NSString*)[locale_iter nextObject]))
if ([ [ [NSLocale componentsFromLocaleIdentifier: this_locale]
objectForKey: NSLocaleLanguageCode]
isEqualToString: lang_str] &&
setlocale (LC_ALL, [this_locale UTF8String]))
{
new_locale = this_locale;
break;
}
if (new_locale)
locale_str = new_locale;
else
{
locale_str = @"en_US.UTF-8";
setlocale(LC_ALL, [locale_str UTF8String]);
}
PWARN("Using %s instead.", [locale_str UTF8String]);
return locale_str;
}
/* Language subgroups (e.g., US English) are reported in the form "ll-SS"
* (e.g. again, "en-US"), not what gettext wants. We convert those to
* old-style locales, which is easy for most cases. There are two where it
* isn't, though: Simplified Chinese (zh-Hans) and traditional Chinese
* (zh-Hant), which are normally assigned the locales zh_CN and zh_TW,
* respectively. Those are handled specially.
*/
static NSString*
mac_convert_complex_language(NSString* this_lang)
{
NSArray *elements = [this_lang componentsSeparatedByString: @"-"];
if ([elements count] == 1)
return this_lang;
if ([ [elements objectAtIndex: 0] isEqualToString: @"zh"]) {
if ([ [elements objectAtIndex: 1] isEqualToString: @"Hans"])
this_lang = @"zh_CN";
else
this_lang = @"zh_TW";
}
else
this_lang = [elements componentsJoinedByString: @"_"];
return this_lang;
}
static void
mac_set_languages(NSArray* languages, NSString *lang_str)
{
/* Process the language list. */
const gchar *langs = NULL;
NSEnumerator *lang_iter = [languages objectEnumerator];
NSArray *new_languages = [NSArray array];
NSString *this_lang = NULL;
NSRange not_found = {NSNotFound, 0};
while ((this_lang = [lang_iter nextObject])) {
this_lang = [this_lang stringByTrimmingCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString: @"\""] ];
this_lang = mac_convert_complex_language(this_lang);
new_languages = [new_languages arrayByAddingObject: this_lang];
/* If it's an English language, add the "C" locale after it so that
* any messages can default to it */
if (!NSEqualRanges([this_lang rangeOfString: @"en"], not_found))
new_languages = [new_languages arrayByAddingObject: @"C"];
if (![new_languages containsObject: lang_str]) {
NSArray *temp_array = [NSArray arrayWithObject: lang_str];
new_languages = [temp_array arrayByAddingObjectsFromArray: new_languages];
}
langs = [ [new_languages componentsJoinedByString:@":"] UTF8String];
}
if (langs && strlen(langs) > 0)
{
PWARN("Language list: %s", langs);
g_setenv("LANGUAGE", langs, TRUE);
}
}
static void
set_mac_locale()
{
NSAutoreleasePool *pool = [ [NSAutoreleasePool alloc] init];
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSLocale *locale = [NSLocale currentLocale];
NSString *lang_str, *country_str, *locale_str;
NSArray *languages = [ [defs arrayForKey: @"AppleLanguages"] retain];
@try
{
lang_str = [locale objectForKey: NSLocaleLanguageCode];
country_str = [locale objectForKey: NSLocaleCountryCode];
locale_str = [ [ [lang_str stringByAppendingString: @"_"]
stringByAppendingString: country_str]
stringByAppendingString: @".UTF-8"];
}
@catch (NSException *err)
{
PWARN("Locale detection raised error %s: %s. "
"Check that your locale settings in "
"System Preferences>Languages & Text are set correctly.",
[ [err name] UTF8String], [ [err reason] UTF8String]);
locale_str = @"_";
}
/* If we didn't get a valid current locale, the string will be just "_" */
if ([locale_str isEqualToString: @"_"])
locale_str = @"en_US.UTF-8";
lang_str = mac_convert_complex_language(lang_str);
if (!setlocale(LC_ALL, [locale_str UTF8String]))
locale_str = mac_find_close_country(locale_str, country_str, lang_str);
if (g_getenv("LANG") == NULL)
g_setenv("LANG", [locale_str UTF8String], TRUE);
mac_set_currency_locale(locale, locale_str);
/* Now call gnc_localeconv() to force creation of the app locale
* before another call to setlocale messes it up. */
gnc_localeconv ();
/* Process the languages, including the one from the Apple locale. */
if (g_getenv("LANGUAGE") == NULL)
{
if ([languages count] > 0)
mac_set_languages(languages, lang_str);
else
g_setenv("LANGUAGE", [lang_str UTF8String], TRUE);
}
[languages release];
[pool drain];
}
#endif /* MAC_INTEGRATION */
static gboolean
try_load_config_array(const gchar *fns[])
{
@ -415,10 +230,8 @@ Gnucash::CoreApp::CoreApp ()
* The user may have configured a different language via
* the environment file.
*/
#ifdef MAC_INTEGRATION
set_mac_locale();
#elif defined __MINGW32__
set_win32_thread_locale(&sys_locale);
#if defined MAC_INTEGRATION || defined __MINGW32__
sys_locale = set_platform_locale();
#endif
gnc_environment_setup();
#if ! defined MAC_INTEGRATION && ! defined __MINGW32__/* setlocale already done */

View File

@ -0,0 +1,222 @@
/*
* gnucash-mac-locale.mm -- Macos specific locale handling
*
* Copyright (C) 2020 John Ralls <jralls@ceridwen.us>
* Copyright (C) 2021 Geert Janssens <geert@kobaltwit.be>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, contact:
*
* Free Software Foundation Voice: +1-617-542-5942
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
* Boston, MA 02110-1301, USA gnu@gnu.org
*/
#include <config.h>
#include <Foundation/Foundation.h>
#include <glib.h>
#include <qoflog.h>
#include <gnc-engine.h>
extern "C" {
#include <gnc-locale-utils.h>
#include "gnucash-locale-platform.h"
}
/* This static indicates the debugging module that this .o belongs to. */
static QofLogModule log_module = GNC_MOD_GUI;
static void
mac_set_currency_locale(NSLocale *locale, NSString *locale_str)
{
/* If the currency doesn't match the base locale, we need to find a locale that does match, because setlocale won't know what to do with just a currency identifier. */
NSLocale *cur_locale = [ [NSLocale alloc] initWithLocaleIdentifier: locale_str];
if (![ [locale objectForKey: NSLocaleCurrencyCode] isEqualToString:
[cur_locale objectForKey: NSLocaleCurrencyCode] ])
{
NSArray *all_locales = [NSLocale availableLocaleIdentifiers];
NSEnumerator *locale_iter = [all_locales objectEnumerator];
NSString *this_locale;
NSString *currency = [locale objectForKey: NSLocaleCurrencyCode];
NSString *money_locale = nil;
while ((this_locale = (NSString*)[locale_iter nextObject]))
{
NSLocale *templocale = [ [NSLocale alloc]
initWithLocaleIdentifier: this_locale];
if ([ [templocale objectForKey: NSLocaleCurrencyCode]
isEqualToString: currency])
{
money_locale = this_locale;
[templocale release];
break;
}
[templocale release];
}
if (money_locale)
setlocale(LC_MONETARY, [money_locale UTF8String]);
}
[cur_locale release];
}
/* The locale that we got from AppKit isn't a supported POSIX one, so we need to
* find something close. First see if we can find another locale for the
* country; failing that, try the language. Ultimately fall back on en_US.
*/
static NSString*
mac_find_close_country(NSString *locale_str, NSString *country_str,
NSString *lang_str)
{
NSArray *all_locales = [NSLocale availableLocaleIdentifiers];
NSEnumerator *locale_iter = [all_locales objectEnumerator];
NSString *this_locale, *new_locale = nil;
PWARN("Apple Locale is set to a value %s not supported"
" by the C runtime", [locale_str UTF8String]);
while ((this_locale = [(NSString*)[locale_iter nextObject] stringByAppendingString: @".UTF-8"]))
if ([ [ [NSLocale componentsFromLocaleIdentifier: this_locale]
objectForKey: NSLocaleCountryCode]
isEqualToString: country_str] &&
setlocale (LC_ALL, [this_locale UTF8String]))
{
new_locale = this_locale;
break;
}
if (!new_locale)
while ((this_locale = (NSString*)[locale_iter nextObject]))
if ([ [ [NSLocale componentsFromLocaleIdentifier: this_locale]
objectForKey: NSLocaleLanguageCode]
isEqualToString: lang_str] &&
setlocale (LC_ALL, [this_locale UTF8String]))
{
new_locale = this_locale;
break;
}
if (new_locale)
locale_str = new_locale;
else
{
locale_str = @"en_US.UTF-8";
setlocale(LC_ALL, [locale_str UTF8String]);
}
PWARN("Using %s instead.", [locale_str UTF8String]);
return locale_str;
}
/* Language subgroups (e.g., US English) are reported in the form "ll-SS"
* (e.g. again, "en-US"), not what gettext wants. We convert those to
* old-style locales, which is easy for most cases. There are two where it
* isn't, though: Simplified Chinese (zh-Hans) and traditional Chinese
* (zh-Hant), which are normally assigned the locales zh_CN and zh_TW,
* respectively. Those are handled specially.
*/
static NSString*
mac_convert_complex_language(NSString* this_lang)
{
NSArray *elements = [this_lang componentsSeparatedByString: @"-"];
if ([elements count] == 1)
return this_lang;
if ([ [elements objectAtIndex: 0] isEqualToString: @"zh"]) {
if ([ [elements objectAtIndex: 1] isEqualToString: @"Hans"])
this_lang = @"zh_CN";
else
this_lang = @"zh_TW";
}
else
this_lang = [elements componentsJoinedByString: @"_"];
return this_lang;
}
static void
mac_set_languages(NSArray* languages, NSString *lang_str)
{
/* Process the language list. */
const char *langs = NULL;
NSEnumerator *lang_iter = [languages objectEnumerator];
NSArray *new_languages = [NSArray array];
NSString *this_lang = NULL;
NSRange not_found = {NSNotFound, 0};
while ((this_lang = [lang_iter nextObject])) {
this_lang = [this_lang stringByTrimmingCharactersInSet:
[NSCharacterSet characterSetWithCharactersInString: @"\""] ];
this_lang = mac_convert_complex_language(this_lang);
new_languages = [new_languages arrayByAddingObject: this_lang];
/* If it's an English language, add the "C" locale after it so that
* any messages can default to it */
if (!NSEqualRanges([this_lang rangeOfString: @"en"], not_found))
new_languages = [new_languages arrayByAddingObject: @"C"];
if (![new_languages containsObject: lang_str]) {
NSArray *temp_array = [NSArray arrayWithObject: lang_str];
new_languages = [temp_array arrayByAddingObjectsFromArray: new_languages];
}
langs = [ [new_languages componentsJoinedByString:@":"] UTF8String];
}
if (langs && strlen(langs) > 0)
{
PWARN("Language list: %s", langs);
g_setenv("LANGUAGE", langs, TRUE);
}
}
char *
set_platform_locale()
{
NSAutoreleasePool *pool = [ [NSAutoreleasePool alloc] init];
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
NSLocale *locale = [NSLocale currentLocale];
NSString *lang_str, *country_str, *locale_str;
NSArray *languages = [ [defs arrayForKey: @"AppleLanguages"] retain];
char *gnc_locale = NULL;
@try
{
lang_str = [locale objectForKey: NSLocaleLanguageCode];
country_str = [locale objectForKey: NSLocaleCountryCode];
locale_str = [ [ [lang_str stringByAppendingString: @"_"]
stringByAppendingString: country_str]
stringByAppendingString: @".UTF-8"];
}
@catch (NSException *err)
{
PWARN("Locale detection raised error %s: %s. "
"Check that your locale settings in "
"System Preferences>Languages & Text are set correctly.",
[ [err name] UTF8String], [ [err reason] UTF8String]);
locale_str = @"_";
}
/* If we didn't get a valid current locale, the string will be just "_" */
if ([locale_str isEqualToString: @"_"])
locale_str = @"en_US.UTF-8";
lang_str = mac_convert_complex_language(lang_str);
if (!setlocale(LC_ALL, [locale_str UTF8String]))
locale_str = mac_find_close_country(locale_str, country_str, lang_str);
/* Cache the final locale string to be returned to the calling program */
gnc_locale = g_strdup ([locale_str UTF8String]);
if (g_getenv("LANG") == NULL)
g_setenv("LANG", [locale_str UTF8String], TRUE);
mac_set_currency_locale(locale, locale_str);
/* Now call gnc_localeconv() to force creation of the app locale
* before another call to setlocale messes it up. */
gnc_localeconv ();
/* Process the languages, including the one from the Apple locale. */
if (g_getenv("LANGUAGE") == NULL)
{
if ([languages count] > 0)
mac_set_languages(languages, lang_str);
else
g_setenv("LANGUAGE", [lang_str UTF8String], TRUE);
}
[languages release];
[pool drain];
return gnc_locale;
}

View File

@ -0,0 +1,30 @@
/*
* gnucash-locale-platform.h -- Common header for platform specific locale handling
*
* Copyright (C) 2021 Geert Janssens <geert@kobaltwit.be>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, contact:
*
* Free Software Foundation Voice: +1-617-542-5942
* 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652
* Boston, MA 02110-1301, USA gnu@gnu.org
*/
#ifndef GNUCASH_LOCALE_PLATFORM_H
#define GNUCASH_LOCALE_PLATFORM_H
char *set_platform_locale(void);
#endif

View File

@ -1,7 +1,8 @@
/*
* gnucash-core-app.cpp -- Basic application object for gnucash binaries
* gnucash-locale-windows.c -- Windows specific locale handling
*
* Copyright (C) 2020 John Ralls <jralls@ceridwen.us>
* Copyright (C) 2021 Geert Janssens <geert@kobaltwit.be>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@ -24,17 +25,15 @@
#include <Windows.h>
#include <fcntl.h>
#include <glib/gi18n.h>
//sacrificial prototype
void set_win32_thread_locale(char **sys_locale);
#include "gnucash-locale-platform.h"
/* If one of the Unix locale variables LC_ALL, LC_MESSAGES, or LANG is
* set in the environment check to see if it's a valid locale and if
* it is set both the Windows and POSIX locales to that. If not
* retrieve the Windows locale and set POSIX to match.
*/
void
set_win32_thread_locale(char **sys_locale)
char *
set_platform_locale(void)
{
WCHAR lpLocaleName[LOCALE_NAME_MAX_LENGTH];
char *locale = NULL;
@ -43,31 +42,31 @@ set_win32_thread_locale(char **sys_locale)
((locale = getenv ("LC_MESSAGES")) != NULL && locale[0] != '\0') ||
((locale = getenv ("LANG")) != NULL && locale[0] != '\0'))
{
gunichar2* wlocale = NULL;
int len = 0;
len = strchr(locale, '.') - locale;
locale[2] = '-';
wlocale = g_utf8_to_utf16 (locale, len, NULL, NULL, NULL);
if (IsValidLocaleName(wlocale))
{
LCID lcid = LocaleNameToLCID(wlocale, LOCALE_ALLOW_NEUTRAL_NAMES);
SetThreadLocale(lcid);
locale[2] = '_';
setlocale (LC_ALL, locale);
*sys_locale = g_strdup (locale);
g_free(wlocale);
return;
}
g_free(locale);
g_free(wlocale);
gunichar2* wlocale = NULL;
int len = 0;
len = strchr(locale, '.') - locale;
locale[2] = '-';
wlocale = g_utf8_to_utf16 (locale, len, NULL, NULL, NULL);
if (IsValidLocaleName(wlocale))
{
LCID lcid = LocaleNameToLCID(wlocale, LOCALE_ALLOW_NEUTRAL_NAMES);
SetThreadLocale(lcid);
locale[2] = '_';
setlocale (LC_ALL, locale);
g_free(wlocale);
return g_strdup (locale);
}
g_free(locale);
g_free(wlocale);
}
if (GetUserDefaultLocaleName(lpLocaleName, LOCALE_NAME_MAX_LENGTH))
{
*sys_locale = g_utf16_to_utf8((gunichar2*)lpLocaleName,
LOCALE_NAME_MAX_LENGTH,
NULL, NULL, NULL);
(*sys_locale)[2] = '_';
setlocale (LC_ALL, *sys_locale);
return;
locale = g_utf16_to_utf8((gunichar2*)lpLocaleName,
LOCALE_NAME_MAX_LENGTH,
NULL, NULL, NULL);
(locale)[2] = '_';
setlocale (LC_ALL, locale);
return locale;
}
return g_strdup("C");
}

View File

@ -399,7 +399,7 @@ main(int argc, char ** argv)
std::cerr << bl::format (bl::translate ("Run '{1} --help' to see a full list of available command line options.")) % *argv[0]
<< "\n"
<< bl::translate ("Error: could not initialize graphical user interface and option add-price-quotes was not set.\n"
" Perhaps you need to set the $DISPLAY environment variable?");
"Perhaps you need to set the $DISPLAY environment variable?");
return 1;
}

View File

@ -277,12 +277,12 @@
</key>
<key name="default-style-ledger" type="b">
<default>true</default>
<summary>Show all transactions on one line. (Two in double line mode.)</summary>
<summary>Show all transactions on one line or in double line mode on two.</summary>
<description>This field specifies the default view style when opening a new register window. Possible values are "ledger", "auto-ledger" and "journal". The "ledger" setting says to show each transaction on one or two lines. The "auto-ledger" setting does the same, but also expands only the current transaction to show all splits. The "journal" setting shows all transactions in expanded form.</description>
</key>
<key name="default-style-autoledger" type="b">
<default>false</default>
<summary>Automatically expand the current transaction to show all splits. All other transactions are shown on one line. (Two in double line mode.)</summary>
<summary>Automatically expand the current transaction to show all splits. All other transactions are shown on one line or in double line mode on two.</summary>
<description>This field specifies the default view style when opening a new register window. Possible values are "ledger", "auto-ledger" and "journal". The "ledger" setting says to show each transaction on one or two lines. The "auto-ledger" setting does the same, but also expands only the current transaction to show all splits. The "journal" setting shows all transactions in expanded form.</description>
</key>
<key name="default-style-journal" type="b">
@ -366,7 +366,7 @@ For example setting this to 2.0 will display reports at twice their typical size
<key name="filename-format" type="s">
<default>'%1$s-%2$s-%3$s'</default>
<summary>PDF export file name format</summary>
<description>This setting chooses the file name for PDF export. This is a sprintf(3) string with three arguments: "%1$s" is the report name such as "Invoice". "%2$s" is the number of the report, which for an invoice report is the invoice number. "%3$s" is the date of the report, formatted according to the filename-date-format setting. (Note: Any characters that are not allowed in filenames, such as '/', will be replaced with underscores '_' in the resulting file name.)</description>
<description>This setting chooses the file name for PDF export. This is a sprintf(3) string with three arguments: "%1$s" is the report name such as "Invoice". "%2$s" is the number of the report, which for an invoice report is the invoice number. "%3$s" is the date of the report, formatted according to the filename-date-format setting. Note: Any characters that are not allowed in filenames, such as '/', will be replaced with underscores '_' in the resulting file name.</description>
</key>
<key name="filename-date-format" type="s">
<default>'locale'</default>

View File

@ -72,7 +72,7 @@ Examples are "FTSE","RR.L","21/11/2016",5.345,"GBP" and CURRENCY;USD;2016-11-21;
There is an option for specifying the start row, end row and an option to skip alternate rows beginning from the start row which can be used if you have some header text. Also there is an option to over write existing prices for that day if required.
Lastly, for repeated imports the preview page has buttons to Load and Save the settings. To save the settings, tweak the settings to your preferences (optionally starting from an existing preset), then (optionally change the settings name and press the Save Settings button. Note you can't save to built-in presets.
Lastly, for repeated imports the preview page has buttons to Load and Save the settings. To save the settings, tweak the settings to your preferences (optionally) starting from an existing preset), then (optionally change the settings name and press the Save Settings button. Note you can't save to built-in presets.
This operation is not reversible, so make sure you have a working backup.
@ -1023,8 +1023,8 @@ For example
<object class="GtkLabel" id="finish_label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label" translatable="yes">&lt;b&gt;Press Apply to add the Prices.
Cancel to abort.&lt;/b&gt;</property>
<property name="label" translatable="yes">&lt;b&gt;Press "Apply" to add the Prices.
"Cancel" to abort.&lt;/b&gt;</property>
<property name="use_markup">True</property>
<property name="justify">center</property>
<property name="wrap">True</property>

View File

@ -66,7 +66,7 @@ Apart from a choice of delimiter, there are several options to tweak the importe
The importer can handle files where transactions are split over multiple lines, with each line representing one split.
Lastly, for repeated imports the preview page has buttons to Load and Save the settings. To save the settings, tweak the settings to your preferences (optionally starting from an existing preset), then (optionally change the settings name and press the Save Settings button. Note you can't save to built-in presets.</property>
Lastly, for repeated imports the preview page has buttons to Load and Save the settings. To save the settings, tweak the settings to your preferences (optionally starting from an existing preset), then (optionally) change the settings name and press the Save Settings button. Note you can't save to built-in presets.</property>
<property name="wrap">True</property>
</object>
<packing>

View File

@ -1856,7 +1856,7 @@ many months before the current month</property>
<object class="GtkBox" id="pref/general/assoc-head">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_markup" translatable="yes">Path head for Linked File Relative Paths</property>
<property name="tooltip_markup" translatable="yes">Path head for Linked Files Relative Paths</property>
<child>
<placeholder/>
</child>
@ -2754,8 +2754,8 @@ many months before the current month</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_markup">Show all transactions on one line. (Two in double line mode.)</property>
<property name="tooltip_text" translatable="yes">Show all transactions on one line. (Two in double line mode.)</property>
<property name="tooltip_markup">Show all transactions on one line or in double line mode on two.</property>
<property name="tooltip_text" translatable="yes">Show all transactions on one line or in double line mode on two.</property>
<property name="halign">start</property>
<property name="use_underline">True</property>
<property name="active">True</property>
@ -2773,8 +2773,8 @@ many months before the current month</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_markup">Automatically expand the current transaction to show all splits. All other transactions are shown on one line. (Two in double line mode.)</property>
<property name="tooltip_text" translatable="yes">Automatically expand the current transaction to show all splits. All other transactions are shown on one line. (Two in double line mode.)</property>
<property name="tooltip_markup">Automatically expand the current transaction to show all splits. All other transactions are shown on one line or in double line mode on two.</property>
<property name="tooltip_text" translatable="yes">Automatically expand the current transaction to show all splits. All other transactions are shown on one line or in double line mode on two.</property>
<property name="halign">start</property>
<property name="use_underline">True</property>
<property name="draw_indicator">True</property>

View File

@ -51,17 +51,15 @@ You first need to apply for Online Banking access at your bank. If your bank dec
* The Internet address of your bank's Online Banking server
* For HBCI Online Banking, information about the cryptographic public key of your bank ("Ini-Letter").
This information will be needed in the following. Press "Next" now.
This information will be needed in the following.
NOTE: NO WARRANTIES FOR ANYTHING. Some banks run a poorly implemented Online Banking server. You should not rely on time-critical transfers through Online Banking, because sometimes the bank does not give you correct feedback when a transfer is rejected.
Press "Cancel" if you do not wish to setup any Online Banking connection now.
Lastly, for repeated imports the preview page has buttons to Load and Save the settings. To save the settings, tweak the settings to your preferences (optionally starting from an existing preset), then (optionally change the settings name and press the Save Settings button. Note you can't save to built-in presets.
Lastly, for repeated imports the preview page has buttons to Load and Save the settings. To save the settings, tweak the settings to your preferences (optionally starting from an existing preset), then (optionally) change the settings name and press the Save Settings button. Note you can't save to built-in presets.
This operation is not reversible, so make sure you have a working backup.
Click on "Next" to proceed or "Cancel" to Abort Import.</property>
Click on "Next" to proceed or "Cancel" if you don not wish to setup any online banking connection now.</property>
<property name="wrap">True</property>
</object>
<packing>

View File

@ -94,36 +94,31 @@ static const gchar *finish_trans_search_gl_string = N_(
"You can also verify your selections by clicking on \"Back\" or \"Cancel\" to abort the export.\n");
static const gchar *start_tree_string = N_(
"This assistant will help you export the Account Tree to a file\n"
"This assistant will help you export the Account Tree to a file"
"with the separator specified below.\n\n"
"Select the settings you require for the file and then click \"Next\" "
"to proceed or \"Cancel\" to abort the export.\n");
static const gchar *start_trans_string = N_(
"This assistant will help you export the Transactions to a file\n"
static const gchar *start_trans_common_string = N_(
"This assistant will help you export the Transactions to a file "
"with the separator specified below.\n\n"
"There will be multiple rows for each transaction and may "
"require further manipulation to get them in a format you can use.\n\n"
"Each Transaction will appear once in the export and will be listed in "
"the order the accounts were processed\n\n"
"%s\n\n"
"While a transaction may have splits in several of the selected accounts "
"it will only be exported once. It will appear under the first processed "
"account it has a split in.\n\n"
"Price/Rate output format is controlled by the Preference setting,\n"
"General->Force Prices to display as decimals\n\n"
"Numbers, Date, Time->Force Prices to display as decimals\n\n"
"Select the settings you require for the file and then click \"Next\" "
"to proceed or \"Cancel\" to abort the export.\n");
static const gchar *start_trans__multi_string = N_(
"There will be multiple rows for each transaction with each row "
"representing one split.\n\n");
static const gchar *start_trans_simple_string = N_(
"This assistant will help you export the Transactions to a file\n"
"with the separator specified below.\n\n"
"There will be multiple rows for each transaction and may require further "
"manipulation to get them in a format you can use. Each Transaction will "
"appear once in the export and will be listed in the order the accounts "
"were processed\n\n"
"Price/Rate output format is controlled by the Preference setting,\n"
"General->Force Prices to display as decimals\n\n"
"By selecting the simple layout, the output will be equivalent to a single "
"row register view and as such some of the transfer detail could be lost.\n\n"
"Select the settings you require for the file and then click \"Next\" "
"to proceed or \"Cancel\" to abort the export.\n");
"There will be one row for each transaction, equivalent to a single row "
"in a register in 'Basic Ledger' mode. As such some transfer detail "
"could be lost.\n\n");
/**************************************************
@ -668,16 +663,22 @@ csv_export_assistant_start_page_prepare (GtkAssistant *assistant,
{
CsvExportInfo *info = user_data;
/* Set Start page text */
if (info->export_type == XML_EXPORT_TREE)
gtk_label_set_text (GTK_LABEL(info->start_label), gettext (start_tree_string));
else
{
gchar *label_string = NULL;
/* General Journal and search registers are always multi-line exported */
if ((info->export_type == XML_EXPORT_REGISTER) && (info->account == NULL))
gtk_label_set_text (GTK_LABEL(info->start_label), gettext (start_trans_string));
label_string = g_strdup_printf (_(start_trans_common_string), _(start_trans__multi_string));
else
gtk_label_set_text (GTK_LABEL(info->start_label), gettext (start_trans_simple_string));
label_string = g_strdup_printf (_(start_trans_common_string), _(start_trans_simple_string));
gtk_label_set_text (GTK_LABEL(info->start_label), label_string);
g_free (label_string);
}
/* Enable the Assistant Buttons */

View File

@ -2028,6 +2028,14 @@ CsvImpTransAssist::assist_doc_page_prepare ()
/* Add the Cancel button for the matcher */
cancel_button = gtk_button_new_with_mnemonic (_("_Cancel"));
gtk_assistant_add_action_widget (csv_imp_asst, cancel_button);
auto button_area = gtk_widget_get_parent (cancel_button);
if (GTK_IS_HEADER_BAR(button_area))
gtk_container_child_set (GTK_CONTAINER(button_area),
cancel_button,
"pack-type", GTK_PACK_START,
nullptr);
g_signal_connect (cancel_button, "clicked",
G_CALLBACK(csv_tximp_assist_close_cb), this);
gtk_widget_show (GTK_WIDGET(cancel_button));
@ -2064,14 +2072,26 @@ CsvImpTransAssist::assist_match_page_prepare ()
/* Add the help button for the matcher */
help_button = gtk_button_new_with_mnemonic (_("_Help"));
gtk_assistant_add_action_widget (csv_imp_asst, help_button);
auto button_area = gtk_widget_get_parent (help_button);
if (GTK_IS_HEADER_BAR(button_area))
{
gtk_container_child_set (GTK_CONTAINER(button_area),
help_button,
"pack-type", GTK_PACK_START,
nullptr);
}
else
{
// align the help button on the left side
gtk_widget_set_halign (GTK_WIDGET(button_area), GTK_ALIGN_FILL);
gtk_widget_set_hexpand (GTK_WIDGET(button_area), TRUE);
gtk_box_set_child_packing (GTK_BOX(button_area), help_button,
FALSE, FALSE, 0, GTK_PACK_START);
}
g_signal_connect (help_button, "clicked",
G_CALLBACK(on_matcher_help_clicked), gnc_csv_importer_gui);
// align the help button on the left side
auto action_box = gtk_widget_get_parent (help_button);
gtk_widget_set_halign (GTK_WIDGET(action_box), GTK_ALIGN_FILL);
gtk_widget_set_hexpand (GTK_WIDGET(action_box), TRUE);
gtk_box_set_child_packing (GTK_BOX(action_box), help_button, FALSE, FALSE, 0, GTK_PACK_START);
gtk_widget_show (GTK_WIDGET(help_button));
/* Copy all of the transactions to the importer GUI. */

View File

@ -37,10 +37,14 @@ extern "C" {
#include <exception>
#include <map>
#include <string>
#include <boost/locale.hpp>
#include <boost/regex.hpp>
#include <boost/regex/icu.hpp>
#include <gnc-locale-utils.hpp>
#include "gnc-imp-props-price.hpp"
namespace bl = boost::locale;
G_GNUC_UNUSED static QofLogModule log_module = GNC_MOD_IMPORT;
/* This map contains a set of strings representing the different column types. */
@ -231,17 +235,17 @@ void GncImportPrice::set (GncPricePropType prop_type, const std::string& value,
}
catch (const std::invalid_argument& e)
{
auto err_str = std::string(_(gnc_price_col_type_strs[prop_type])) +
std::string(_(" could not be understood.\n")) +
e.what();
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
bl::translate (gnc_price_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
e.what();
m_errors.emplace(prop_type, err_str);
throw std::invalid_argument (err_str);
}
catch (const std::out_of_range& e)
{
auto err_str = std::string(_(gnc_price_col_type_strs[prop_type])) +
std::string(_(" could not be understood.\n")) +
e.what();
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
bl::translate (gnc_price_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
e.what();
m_errors.emplace(prop_type, err_str);
throw std::invalid_argument (err_str);
}

View File

@ -46,10 +46,14 @@ extern "C" {
#include <string>
#include <vector>
#include <boost/locale.hpp>
#include <boost/regex.hpp>
#include <boost/regex/icu.hpp>
#include <gnc-locale-utils.hpp>
#include "gnc-imp-props-tx.hpp"
namespace bl = boost::locale;
G_GNUC_UNUSED static QofLogModule log_module = GNC_MOD_IMPORT;
/* This map contains a set of strings representing the different column types. */
@ -286,17 +290,17 @@ void GncPreTrans::set (GncTransPropType prop_type, const std::string& value)
}
catch (const std::invalid_argument& e)
{
auto err_str = std::string(_(gnc_csv_col_type_strs[prop_type])) +
std::string(_(" could not be understood.\n")) +
e.what();
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
e.what();
m_errors.emplace(prop_type, err_str);
throw std::invalid_argument (err_str);
}
catch (const std::out_of_range& e)
{
auto err_str = std::string(_(gnc_csv_col_type_strs[prop_type])) +
std::string(_(" could not be understood.\n")) +
e.what();
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
e.what();
m_errors.emplace(prop_type, err_str);
throw std::invalid_argument (err_str);
}
@ -505,17 +509,17 @@ void GncPreSplit::set (GncTransPropType prop_type, const std::string& value)
}
catch (const std::invalid_argument& e)
{
auto err_str = std::string(_(gnc_csv_col_type_strs[prop_type])) +
std::string(_(" could not be understood.\n")) +
e.what();
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
e.what();
m_errors.emplace(prop_type, err_str);
throw std::invalid_argument (err_str);
}
catch (const std::out_of_range& e)
{
auto err_str = std::string(_(gnc_csv_col_type_strs[prop_type])) +
std::string(_(" could not be understood.\n")) +
e.what();
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
e.what();
m_errors.emplace(prop_type, err_str);
throw std::invalid_argument (err_str);
}
@ -568,17 +572,17 @@ void GncPreSplit::add (GncTransPropType prop_type, const std::string& value)
}
catch (const std::invalid_argument& e)
{
auto err_str = std::string(_(gnc_csv_col_type_strs[prop_type])) +
std::string(_(" could not be understood.\n")) +
e.what();
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
e.what();
m_errors.emplace(prop_type, err_str);
throw std::invalid_argument (err_str);
}
catch (const std::out_of_range& e)
{
auto err_str = std::string(_(gnc_csv_col_type_strs[prop_type])) +
std::string(_(" could not be understood.\n")) +
e.what();
auto err_str = (bl::format (bl::translate ("Column '{1}' could not be understood.\n")) %
bl::translate (gnc_csv_col_type_strs[prop_type])).str(gnc_get_boost_locale()) +
e.what();
m_errors.emplace(prop_type, err_str);
throw std::invalid_argument (err_str);
}

View File

@ -51,6 +51,7 @@ constexpr auto group_prefix = "Import csv,transaction - ";
#define CSV_COL_TYPES "ColumnTypes"
#define CSV_ACCOUNT "BaseAccount"
#define CSV_ACCOUNT_GUID "BaseAccountGuid"
#define CSV_MULTI_SPLIT "MultiSplit"
G_GNUC_UNUSED static QofLogModule log_module = GNC_MOD_IMPORT;
@ -170,9 +171,42 @@ CsvTransImpSettings::load (void)
m_multi_split = g_key_file_get_boolean (keyfile, group.c_str(), CSV_MULTI_SPLIT, &key_error);
m_load_error |= handle_load_error (&key_error, group);
gchar *key_char = g_key_file_get_string (keyfile, group.c_str(), CSV_ACCOUNT, &key_error);
gchar *key_char = g_key_file_get_string (keyfile, group.c_str(), CSV_ACCOUNT_GUID, &key_error);
if (key_char && *key_char != '\0')
m_base_account = gnc_account_lookup_by_full_name (gnc_get_current_root_account(), key_char);
{
QofBook* book = gnc_get_current_book ();
GncGUID guid;
if (string_to_guid (key_char, &guid)) // find account by guid first
m_base_account = xaccAccountLookup (&guid, book);
}
m_load_error |= handle_load_error (&key_error, group);
if (key_char)
g_free (key_char);
key_char = g_key_file_get_string (keyfile, group.c_str(), CSV_ACCOUNT, &key_error);
if (key_char && *key_char != '\0')
{
if (m_base_account == nullptr)
{
m_base_account = gnc_account_lookup_by_full_name (gnc_get_current_root_account(), key_char);
if (m_base_account) // save the account as guid, introduced in version 4.5
{
gchar acct_guid[GUID_ENCODING_LENGTH + 1];
guid_to_string_buff (xaccAccountGetGUID (m_base_account), acct_guid);
g_key_file_set_string (keyfile, group.c_str(), CSV_ACCOUNT_GUID, acct_guid);
}
}
else // check to see if saved full name is the same and save if not
{
gchar *full_name = gnc_account_get_full_name (m_base_account);
if (g_strcmp0 (key_char, full_name) != 0)
g_key_file_set_string (keyfile, group.c_str(), CSV_ACCOUNT, full_name);
g_free (full_name);
}
}
m_load_error |= handle_load_error (&key_error, group);
if (key_char)
g_free (key_char);
@ -240,8 +274,16 @@ CsvTransImpSettings::save (void)
g_key_file_set_boolean (keyfile, group.c_str(), CSV_MULTI_SPLIT, m_multi_split);
if (m_base_account)
g_key_file_set_string (keyfile, group.c_str(), CSV_ACCOUNT, gnc_account_get_full_name(m_base_account));
if (m_base_account) // also save account guid introduced in version 4.5
{
gchar acct_guid[GUID_ENCODING_LENGTH + 1];
guid_to_string_buff (xaccAccountGetGUID (m_base_account), acct_guid);
g_key_file_set_string (keyfile, group.c_str(), CSV_ACCOUNT_GUID, acct_guid);
gchar *full_name = gnc_account_get_full_name (m_base_account);
g_key_file_set_string (keyfile, group.c_str(), CSV_ACCOUNT, full_name);
g_free (full_name);
}
std::vector<const char*> col_types_str;
for (auto col_type : m_column_types)

View File

@ -668,7 +668,7 @@ void GncTxImport::create_transaction (std::vector<parse_line_t>::iterator& parse
{
// Oops - the user didn't select an Account column *and* we didn't get a default value either!
// Note if you get here this suggests a bug in the code!
error_message = _("No account column selected and no default account specified either.\n"
error_message = _("No account column selected and no base account specified either.\n"
"This should never happen. Please report this as a bug.");
PINFO("User warning: %s", error_message.c_str());
throw std::invalid_argument(error_message);

View File

@ -393,7 +393,6 @@ static void
resolve_conflicts (GNCImportMainMatcher *info)
{
GtkTreeModel* model = gtk_tree_view_get_model (info->view);
GtkListStore* store = GTK_LIST_STORE(model);
GtkTreeIter import_iter, best_import;
gint best_match = 0;

View File

@ -916,7 +916,9 @@ popup_get_height (G_GNUC_UNUSED GtkWidget* widget,
{
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin),
GTK_POLICY_AUTOMATIC, GTK_POLICY_NEVER);
return height;
// if the list is empty height would be 0 so return 1 instead to
// satisfy the check_popup_height_is_true function
return height ? height : 1;
}
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrollwin),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
@ -973,6 +975,7 @@ gnc_combo_cell_enter (BasicCell* bcell,
{
ComboCell* cell = (ComboCell*) bcell;
PopBox* box = bcell->gui_private;
PopupToggle popup_toggle;
GList* find = NULL;
if (bcell->value)
@ -999,6 +1002,12 @@ gnc_combo_cell_enter (BasicCell* bcell,
gnc_item_list_select (box->item_list, bcell->value);
unblock_list_signals (cell);
popup_toggle = box->item_edit->popup_toggle;
// if the list is empty disable the toggle button
gtk_widget_set_sensitive (GTK_WIDGET(popup_toggle.tbutton),
gnc_item_list_num_entries (box->item_list));
combo_connect_signals (cell);
*cursor_position = -1;

View File

@ -120,15 +120,6 @@
;; accounts displayed. this is merely a convenience. the
;; default initial-indent is 0.
;;
;; account-less-p: binary_predicate #t #f
;;
;; used for sorting accounts, below each parent account, into
;; the order in which they will be displayed. the function
;; must take two Account arguments and represent a total
;; ordering on Account-space. #t means to use the default
;; sorting function. #f means to perform no sorting. the
;; default sorting function is gnc:account-code-less-p.
;;
;; start-date: time64
;;
;; the starting date of the reporting period over which to
@ -189,17 +180,6 @@
;; count on meaningful report-comm-{account|recursive}-bal
;; values (they'll also be #f).]
;;
;; column-header: html-table-header-cell #f #t
;;
;; the table column header cell (TH tag) with which to head
;; the columns containing the account tree. if supplied, the
;; header cell may contain style information. if #f, no
;; column header cell will be used. if #t, a default header
;; cell (reading "Account") will be used. the colspan of any
;; header cell will be automatically set appropriately. this
;; is for convenience only; gnc:html-acct-table does not use
;; this data.
;;
;; account-label-mode: 'name 'anchor
;;
;; tells whether to render account labels as hyperlinks or
@ -278,12 +258,6 @@
;; the name of the account is "Assets:Current Assets:Cash",
;; the value will be "Assets:Current Assets:Cash".
;;
;; account-name: string
;;
;; the "basename" of the account in the current row. i.e., if
;; the name of the account is "Assets:Current Assets:Cash",
;; the value will be "Cash".
;;
;; account-code: string
;;
;; the account of the account in the current row, as returned
@ -310,14 +284,6 @@
;; unlike in gnc:html-build-acct-table, the first level of
;; accounts is level 0.
;;
;; logical-depth: integer
;;
;; the depth at which the account in the current row resides
;; in the effective account tree. this is the depth the
;; account tree when ignoring unselected parent accounts.
;; note that this may differ from account-depth when a
;; selected account has an unselected ancestor.
;;
;; display-depth: integer
;;
;; the depth at which the account in the current row resides
@ -339,13 +305,6 @@
;;
;; the number of columns in which account labels were placed.
;;
;; label-cols: integer
;;
;; the number of columns in the group of account columns to
;; which a row was assigned. also one more than the maximum
;; column depth at which rows were positioned in the
;; table.
;;
;; account-cols: integer
;;
;; the number of columns in the group of account columns. if
@ -547,9 +506,11 @@
;; some useful predicates to export
(define (gnc:account-code-less-p a b)
(issue-deprecation-warning "gnc:account-code-less-p is unused.")
(gnc:string-locale<? (xaccAccountGetCode a)
(xaccAccountGetCode b)))
(define (gnc:account-name-less-p a b)
(issue-deprecation-warning "gnc:account-name-less-p is unused.")
(gnc:string-locale<? (xaccAccountGetName a)
(xaccAccountGetName b)))
(define (gnc:account-path-less-p a b)
@ -588,8 +549,6 @@
(and (number? lim) lim)))
(limit-behavior (or (get-val env 'depth-limit-behavior) 'summarize))
(indent (or (get-val env 'initial-indent) 0))
(less-p (let ((pred (get-val env 'account-less-p)))
(if (eq? pred #t) gnc:account-code-less-p pred)))
(start-date (get-val env 'start-date))
(end-date (or (get-val env 'end-date)
(gnc:get-today)))
@ -599,13 +558,8 @@
;; someone was thinking price-source?
(exchange-fn (get-val env 'exchange-fn))
(get-balance-fn (get-val env 'get-balance-fn))
(column-header (let ((cell (get-val env 'column-header)))
(if (eq? cell #t)
(gnc:make-html-table-cell "Account name")
cell)))
(subtotal-mode (get-val env 'parent-account-subtotal-mode))
(zero-mode (let ((mode (get-val env 'zero-balance-mode)))
(if (boolean? mode) 'show-leaf-acct mode)))
(zero-mode (get-val env 'zero-balance-mode))
(label-mode (or (get-val env 'account-label-mode) 'anchor))
(balance-mode (or (get-val env 'balance-mode) 'post-closing))
(closing-pattern (or (get-val env 'closing-pattern)
@ -697,7 +651,7 @@
(gnc:accounts-and-all-descendants (list account)))
this-collector))
(let lp ((accounts (if less-p (sort accts less-p) accts))
(let lp ((accounts accts)
(row-added? #f)
(disp-depth (if (integer? depth-limit)
(min (1- depth-limit) logi-depth)
@ -727,7 +681,6 @@
(cons*
(list 'initial-indent indent)
(list 'account acct)
(list 'account-name (xaccAccountGetName acct))
(list 'account-code (xaccAccountGetCode acct))
(list 'account-type (xaccAccountGetType acct))
(list 'account-type-string (xaccAccountGetTypeStr
@ -995,13 +948,10 @@
(acct (get-val env 'account))
(children (get-val env 'account-children))
(label (get-val env 'account-label))
(acct-name (get-val env 'account-name)) ;; for diagnostics...
(report-commodity (get-val env 'report-commodity))
(exchange-fn (get-val env 'exchange-fn))
(account-cols (get-val env 'account-cols))
(logical-cols (get-val env 'logical-cols))
(label-cols (get-val env 'label-cols))
(logical-depth (get-val env 'logical-depth))
(display-depth (get-val env 'display-depth))
(display-tree-depth (get-val env 'display-tree-depth))
(subtotal-mode (get-val env 'subtotal-mode))
@ -1029,10 +979,7 @@
((not (null? children)) parent-acct-bal-mode)
(else 'immediate-bal)))
(zero-mode (let ((mode (get-val env 'zero-balance-display-mode)))
(if (boolean? mode)
'show-balance
mode)))
(zero-mode (get-val env 'zero-balance-display-mode))
(amt (and-let* ((bal-syms '((immediate-bal . account-bal)
(recursive-bal . recursive-bal)

View File

@ -357,7 +357,7 @@ function tooltipLabel(tooltipItem,data) {
}
function tooltipTitle(array,data) {
return chartjsoptions.data.labels[array[0].index]; }
return data.labels[array[0].index]; }
// draw the background color
Chart.pluginService.register({

View File

@ -32,6 +32,7 @@
(use-modules (ice-9 match))
(use-modules (srfi srfi-1))
(use-modules (srfi srfi-9))
(use-modules (srfi srfi-26))
(use-modules (gnucash report report-register-hooks))
(use-modules (gnucash report html-style-sheet))
(use-modules (gnucash report html-document))
@ -781,6 +782,17 @@ not found.")))
;; gnucash-cli helper and exported functions
;;
(define (show-selected-reports pred? port)
(for-each
(lambda (template)
(format port "* ~a ~a\n"
(if (gnc:report-template-parent-type template) "C" " ")
(gnc:report-template-name template)))
(sort (hash-fold (lambda (k v p) (if (pred? v) (cons v p) p)) '()
*gnc:_report-templates_*)
(lambda (a b) (gnc:string-locale<? (gnc:report-template-name a)
(gnc:report-template-name b))))))
(define (stderr-log tmpl . args)
(apply format (current-error-port) tmpl args)
#f)
@ -795,7 +807,11 @@ not found.")))
(export-types (gnc:report-template-export-types template)))
(cond
((not export-thunk) (stderr-log "Report ~s has no export code\n" report))
((not export-thunk)
(stderr-log "Only the following reports have export code:\n")
(show-selected-reports (cut gnc:report-template-export-thunk <>)
(current-error-port))
(stderr-log "Use -R show to describe report\n"))
((not export-types) (stderr-log "Report ~s has no export-types\n" report))
((not (assoc export-type export-types))
(stderr-log "Export-type disallowed: ~a. Allowed types: ~a\n"
@ -816,17 +832,7 @@ not found.")))
'() *gnc:_report-templates_*)))
(define-public (gnc:cmdline-report-list port)
(for-each
(lambda (template)
(format port "* ~a ~a\n"
(if (gnc:report-template-parent-type template) "C" " ")
(gnc:report-template-name template)))
(sort (hash-fold
(lambda (k v p) (if (gnc:report-template-in-menu? v) (cons v p) p))
'() *gnc:_report-templates_*)
(lambda (a b)
(gnc:string-locale<? (gnc:report-template-name a)
(gnc:report-template-name b))))))
(show-selected-reports gnc:report-template-in-menu? port))
(define-public (gnc:cmdline-report-show report port)
(let ((templates (reportname->templates report)))

View File

@ -456,8 +456,7 @@
(define (generate-tax-or-txf report-name
report-description
report-obj
tax-mode?
file-name)
tax-mode?)
(define (get-option pagename optname)
(gnc:option-value
@ -861,14 +860,12 @@ Gehen Sie zu Bearbeiten -> Optionen Steuerbericht, um Konten entsprechend einzur
(G_ "This report shows your Taxable Income and \
Deductible Expenses.")
report-obj
#t
#f))
#t))
'export-types (list (cons (G_ "XML") 'txf))
'export-thunk (lambda (report-obj choice file-name)
'export-thunk (lambda (report-obj choice)
(generate-tax-or-txf
(G_ "Taxable Income / Deductible Expenses")
(G_ "This page shows your Taxable Income and \
Deductible Expenses.")
report-obj
#f
file-name)))
#f)))

View File

@ -1663,8 +1663,7 @@
(define (generate-tax-schedule report-name
report-description
report-obj
tax-mode?
file-name)
tax-mode?)
(define (get-option pagename optname)
(gnc:option-value
@ -3342,14 +3341,12 @@
(G_ "This report shows transaction detail for your accounts \
related to Income Taxes.")
report-obj
#t
#f))
#t))
'export-types (list (cons "TXF" 'txf))
'export-thunk (lambda (report-obj choice file-name)
'export-thunk (lambda* (report-obj choice)
(generate-tax-schedule
(G_ "Taxable Income/Deductible Expenses")
(G_ "This page shows transaction detail for relevant \
Income Tax accounts.")
report-obj
#f
file-name)))
#f)))

View File

@ -692,7 +692,7 @@ developing over time"))
'menu-tip menutip
'options-generator (lambda () (options-generator account-types inc-exp?))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type filename)
'export-thunk (lambda (report-obj export-type)
(category-barchart-renderer
report-obj reportname uuid account-types inc-exp? reverse-bal?
export-type))

View File

@ -154,7 +154,7 @@ for taxes paid on expenses, and type LIABILITY for taxes collected on sales.")
(gnc:register-option
options
(gnc:make-multichoice-callback-option
pagename-format (N_ "Report format")
pagename-format (N_ "Report Format")
"a" (G_ "Report Format") 'default
(list (vector 'default
(G_ "Default Format")

View File

@ -487,7 +487,7 @@
'options-generator (lambda () (options-generator #f #f))
'renderer (lambda (report-obj) (net-renderer report-obj #f #f #f))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type filename)
'export-thunk (lambda (report-obj export-type)
(net-renderer report-obj #f #f export-type)))
(gnc:define-report
@ -499,7 +499,7 @@
'options-generator (lambda () (options-generator #t #f))
'renderer (lambda (report-obj) (net-renderer report-obj #t #f #f))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type filename)
'export-thunk (lambda (report-obj export-type)
(net-renderer report-obj #t #f export-type)))
(gnc:define-report
@ -510,7 +510,7 @@
'options-generator (lambda () (options-generator #f #t))
'renderer (lambda (report-obj) (net-renderer report-obj #f #t #f))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type filename)
'export-thunk (lambda (report-obj export-type)
(net-renderer report-obj #f #t export-type)))
;; Not sure if a line chart makes sense for Income & Expense
@ -524,5 +524,5 @@
'options-generator (lambda () (options-generator #t #t))
'renderer (lambda (report-obj) (net-renderer report-obj #t #t #f))
'export-types '(("CSV" . csv))
'export-thunk (lambda (report-obj export-type filename)
'export-thunk (lambda (report-obj export-type)
(net-renderer report-obj #t #t export-type)))

View File

@ -860,14 +860,4 @@ HTML Document Title</title></head><body></body>\n\
"Income" "Income-GBP" "Expenses" "Equity")
(sxml->table-row-col sxml 1 #f 1))))
(let* ((table (gnc:make-html-table))
(acct-table (gnc:make-html-acct-table/env/accts
'((balance-mode pre-adjusting)
(display-tree-depth 9))
accounts)))
(gnc:html-table-add-account-balances table acct-table '())
(let ((sxml (table->sxml table "basic - combo 3")))
(test-equal "gnc:make-html-acct-table/env/accts combo 3"
'("Root" "Asset" "Bank" "GBP Bank" "Wallet" "Liabilities"
"Income" "Income-GBP" "Expenses" "Equity")
(sxml->table-row-col sxml 1 #f 1))))))
))

View File

@ -155,7 +155,7 @@
'report-guid test-uuid
'options-generator gnc:new-options
'export-types (list (cons "text" 'txt))
'export-thunk (lambda (report-obj export-type file-name)
'export-thunk (lambda (report-obj export-type)
"exported-string")
'renderer (lambda (obj)
(let ((options (gnc:report-options obj)))
@ -172,7 +172,7 @@
(gnc:report-export-types report))
(test-equal "gnc:report-export-thunk"
"exported-string"
((gnc:report-export-thunk report) report 'csv "/tmp/file.txt"))
((gnc:report-export-thunk report) report 'csv))
(test-equal "gnc:report-menu-name"
"basic report"
(gnc:report-menu-name report))

View File

@ -116,7 +116,7 @@
(N_ "Transaction Filter excludes matched strings"))
(define optname-transaction-matcher-caseinsensitive
(N_ "Transaction Filter is case insensitive"))
(define optname-reconcile-status (N_ "Reconcile Status"))
(define optname-reconcile-status (N_ "Reconciled Status"))
(define optname-void-transactions (N_ "Void Transactions"))
(define optname-closing-transactions (N_ "Closing transactions"))

View File

@ -1824,6 +1824,7 @@ the option '~a'."))
("Common Currency" "Currency" "Common Currency")
("Show original currency amount" "Currency" "Show original currency amount")
("Report's currency" "Currency" "Report's currency")
("Reconcile Status" #f "Reconciled Status")
;; new-owner-report.scm, renamed Oct 2020 to differentiate with
;; Document Links:
("Links" #f "Transaction Links")
@ -1831,6 +1832,7 @@ the option '~a'."))
("Individual Taxes" #f "Use Detailed Tax Summary")
;; income-gst-statement.scm
("default format" #f "Default Format")
("Report format" #f "Report Format")
))
(define (lookup-option section name)

View File

@ -23,10 +23,11 @@
********************************************************************/
#include <kvp-frame.hpp>
#include <gmp.h>
extern "C"
{
#include <config.h>
#include <glib.h>
extern "C"
{
#include <unittest-support.h>
#include <qofbookslots.h>
#include "test-engine-stuff.h"

View File

@ -18,6 +18,9 @@
* *
\********************************************************************/
#include <glib.h>
#include <glib/gprintf.h>
extern "C"
{
#include <config.h>
@ -30,9 +33,6 @@ extern "C"
#include <unittest-support.h>
}
#include <glib.h>
#include <glib/gprintf.h>
static void
test_num_print_info (gnc_numeric n, GNCPrintAmountInfo print_info, int line)
{

View File

@ -18,13 +18,13 @@
* *
\********************************************************************/
#include <config.h>
#include <glib.h>
#include <libguile.h>
#include "guile-mappings.h"
extern "C"
{
#include <config.h>
#include <glib.h>
#include "guile-mappings.h"
#include "gnc-engine-guile.h"
#include "test-engine-stuff.h"

View File

@ -18,14 +18,13 @@
* *
\********************************************************************/
#include <config.h>
#include <glib.h>
#include "guile-mappings.h"
#include <libguile.h>
extern "C"
{
#include <config.h>
#include <glib.h>
#include "guile-mappings.h"
#include "gnc-engine-guile.h"
#include "gnc-guile-utils.h"
#include "test-engine-stuff.h"

View File

@ -18,11 +18,12 @@
* *
\********************************************************************/
#include <config.h>
#include <glib.h>
extern "C"
{
#include <config.h>
#include <stdlib.h>
#include <glib.h>
#include "SX-book.h"
#include "gnc-date.h"
#include "gnc-sx-instance-model.h"

View File

@ -88,6 +88,11 @@ GncSqlBackend::GncSqlBackend(GncSqlConnection *conn, QofBook* book) :
connect (conn);
}
GncSqlBackend::~GncSqlBackend()
{
connect(nullptr);
}
void
GncSqlBackend::connect(GncSqlConnection *conn) noexcept
{

View File

@ -66,7 +66,7 @@ class GncSqlBackend : public QofBackend
{
public:
GncSqlBackend(GncSqlConnection *conn, QofBook* book);
virtual ~GncSqlBackend() = default;
virtual ~GncSqlBackend();
/**
* Load the contents of an SQL database into a book.
*

View File

@ -275,7 +275,7 @@ test_gnc_sql_commit_edit (void)
{
QofInstance* inst;
guint dirty_called = 0;
GncMockSqlConnection conn;
auto conn{new GncMockSqlConnection};
const char* msg1 =
"[GncSqlBackend::commit()] Unknown object type 'null'\n";
GLogLevelFlags loglevel = static_cast<decltype (loglevel)>
@ -293,8 +293,7 @@ test_gnc_sql_commit_edit (void)
qof_object_initialize ();
auto book = qof_book_new();
auto sql_be = new GncMockSqlBackend
(&conn, book);
auto sql_be = new GncMockSqlBackend{conn, book};
inst = static_cast<decltype (inst)> (g_object_new (QOF_TYPE_INSTANCE, NULL));
qof_instance_init_data (inst, QOF_ID_NULL, book);
qof_book_set_dirty_cb (book, test_dirty_cb, &dirty_called);

View File

@ -49,6 +49,11 @@ extern "C"
#define FILE_URI_PREFIX "file://"
static QofLogModule log_module = GNC_MOD_BACKEND;
GncXmlBackend::~GncXmlBackend()
{
session_end();
};
bool
GncXmlBackend::check_path (const char* fullpath, bool create)
{

View File

@ -34,7 +34,7 @@ public:
GncXmlBackend operator=(const GncXmlBackend&) = delete;
GncXmlBackend(const GncXmlBackend&&) = delete;
GncXmlBackend operator=(const GncXmlBackend&&) = delete;
~GncXmlBackend() = default;
~GncXmlBackend();
void session_begin(QofSession* session, const char* new_uri,
SessionOpenMode mode) override;
void session_end() override;

View File

@ -22,10 +22,9 @@ extern "C"
#include <config.h>
#include <stdlib.h>
#include <string.h>
#include "test-engine-stuff.h"
}
#include "test-engine-stuff.h"
#include "io-gncxml-v2.h"
#include "test-file-stuff.h"
#include "test-stuff.h"

View File

@ -1269,6 +1269,14 @@ gnc_tm_get_day_start (struct tm *tm, time64 time_val)
gnc_tm_set_day_start(tm);
}
void
gnc_tm_set_day_neutral (struct tm *tm)
{
auto time_val{gnc_dmy2time64_internal(tm->tm_mday, tm->tm_mon + 1,
tm->tm_year + 1900, DayPart::neutral)};
gnc_localtime_r(&time_val, tm);
}
static void
gnc_tm_get_day_neutral (struct tm *tm, time64 time_val)
{
@ -1302,11 +1310,9 @@ time64
gnc_time64_get_day_neutral (time64 time_val)
{
struct tm tm;
time64 new_time;
gnc_tm_get_day_neutral(&tm, time_val);
new_time = gnc_mktime(&tm);
return new_time;
gnc_localtime_r(&time_val, &tm);
return gnc_dmy2time64_internal(tm.tm_mday, tm.tm_mon + 1, tm.tm_year + 1900,
DayPart::neutral);
}
time64

View File

@ -539,18 +539,9 @@ void gnc_tm_set_day_start (struct tm *tm)
}
/** The gnc_tm_set_day_neutral() inline routine will set the appropriate
* fields in the struct tm to indicate 10:59am of that day. This
* routine assumes that the contents of the data structure is already
* in normalized form.*/
static inline
void gnc_tm_set_day_neutral (struct tm *tm)
{
/* First second of the day */
g_return_if_fail (tm != NULL);
tm->tm_hour = 10;
tm->tm_min = 59;
tm->tm_sec = 0;
}
* fields in the struct tm to indicate 10:59am of that day.
*/
void gnc_tm_set_day_neutral (struct tm *tm);
/** The gnc_tm_set_day_middle() inline routine will set the appropriate
* fields in the struct tm to indicate noon of that day. This
@ -584,7 +575,7 @@ void gnc_tm_set_day_end (struct tm *tm)
* seconds and adjust it to the first second of that day. */
time64 gnc_time64_get_day_start(time64 time_val);
/** The gnc_time64_get_day_netural() routine will take the given time in
/** The gnc_time64_get_day_neutral() routine will take the given time in
* seconds and adjust it to 10:59am of that day. */
time64 gnc_time64_get_day_neutral(time64 time_val);

View File

@ -52,6 +52,7 @@ static const char* log_module = "gnc.engine";
#define N_(string) string //So that xgettext will find it
using PTZ = boost::local_time::posix_time_zone;
using Date = boost::gregorian::date;
using Month = boost::gregorian::greg_month;
using PTime = boost::posix_time::ptime;
@ -169,49 +170,97 @@ LDT_from_unix_local(const time64 time)
throw(std::invalid_argument("Time value is outside the supported year range."));
}
}
/* If a date-time falls in a DST transition the LDT constructor will
* fail because either the date-time doesn't exist (when starting DST
* because the transition skips an hour) or is ambiguous (when ending
* because the transition hour is repeated). We try again an hour
* later to be outside the DST transition. When starting DST that's
* now the correct time but at the end of DST we need to set the
* returned time back an hour.
*/
static LDT
LDT_with_pushup(const Date& tdate, const Duration& tdur, const TZ_Ptr tz,
bool putback)
{
static const boost::posix_time::hours pushup{1};
LDT ldt{tdate, tdur + pushup, tz, LDTBase::NOT_DATE_TIME_ON_ERROR};
if (ldt.is_special())
{
std::string error{"Couldn't create a valid datetime at "};
error += to_simple_string(tdate) + " ";
error += to_simple_string(tdur) + " TZ ";
error += tz->std_zone_abbrev();
throw(std::invalid_argument{error});
}
if (putback)
ldt -= pushup;
return ldt;
}
static LDT
LDT_from_struct_tm(const struct tm tm)
LDT_from_date_time(const Date& tdate, const Duration& tdur, const TZ_Ptr tz)
{
Date tdate;
Duration tdur;
TZ_Ptr tz;
try
{
tdate = boost::gregorian::date_from_tm(tm);
tdur = boost::posix_time::time_duration(tm.tm_hour, tm.tm_min,
tm.tm_sec, 0);
tz = tzp->get(tdate.year());
LDT ldt(tdate, tdur, tz, LDTBase::EXCEPTION_ON_ERROR);
return ldt;
}
catch (const boost::local_time::time_label_invalid& err)
{
return LDT_with_pushup(tdate, tdur, tz, false);
}
catch (const boost::local_time::ambiguous_result& err)
{
return LDT_with_pushup(tdate, tdur, tz, true);
}
catch(boost::gregorian::bad_year&)
{
throw(std::invalid_argument("Time value is outside the supported year range."));
}
catch(boost::local_time::time_label_invalid&)
}
static LDT
LDT_from_date_daypart(const Date& date, DayPart part, const TZ_Ptr tz)
{
using hours = boost::posix_time::hours;
static const Duration day_begin{0, 0, 0};
static const Duration day_neutral{10, 59, 0};
static const Duration day_end{23, 59, 59};
switch (part)
{
throw(std::invalid_argument("Struct tm does not resolve to a valid time."));
}
catch(boost::local_time::ambiguous_result&)
{
/* We plunked down in the middle of a DST change. Try constructing the
* LDT three hours later to get a valid result then back up those three
* hours to have the time we want.
*/
using boost::posix_time::hours;
auto hour = tm.tm_hour;
tdur += hours(3);
LDT ldt(tdate, tdur, tz, LDTBase::NOT_DATE_TIME_ON_ERROR);
if (ldt.is_special())
throw(std::invalid_argument("Couldn't create a valid datetime."));
ldt -= hours(3);
return ldt;
case DayPart::start:
return LDT_from_date_time(date, day_begin, tz);
case DayPart::end:
return LDT_from_date_time(date, day_end, tz);
default: // To stop gcc from emitting a control reaches end of non-void function.
case DayPart::neutral:
PTime pt{date, day_neutral};
LDT lt{pt, tz};
auto offset = lt.local_time() - lt.utc_time();
if (offset < hours(-10))
lt -= hours(offset.hours() + 10);
if (offset > hours(13))
lt += hours(13 - offset.hours());
return lt;
}
}
using TD = boost::posix_time::time_duration;
static LDT
LDT_from_struct_tm(const struct tm tm)
{
Date tdate{boost::gregorian::date_from_tm(tm)};
Duration tdur{boost::posix_time::time_duration(tm.tm_hour, tm.tm_min,
tm.tm_sec, 0)};
TZ_Ptr tz{tzp->get(tdate.year())};
return LDT_from_date_time(tdate, tdur, tz);
}
void
_set_tzp(TimeZoneProvider& new_tzp)
@ -248,10 +297,8 @@ public:
static std::string timestamp();
private:
LDT m_time;
static const TD time_of_day[3];
};
const TD GncDateTimeImpl::time_of_day[3] = {TD(0, 0, 0), TD(10, 59, 0), TD(23, 59, 59)};
/** Private implementation of GncDate. See the documentation for that class.
*/
class GncDateImpl
@ -281,50 +328,16 @@ private:
friend bool operator!=(const GncDateImpl&, const GncDateImpl&);
};
/* Needs to be separately defined so that the friend decl can grant
* access to date.m_greg.
*/
GncDateTimeImpl::GncDateTimeImpl(const GncDateImpl& date, DayPart part) :
m_time{LDT_from_date_daypart(date.m_greg, part,
tzp->get(date.m_greg.year()))} {}
/* Member function definitions for GncDateTimeImpl.
*/
GncDateTimeImpl::GncDateTimeImpl(const GncDateImpl& date, DayPart part) :
m_time(date.m_greg, time_of_day[part], tzp->get(date.m_greg.year()),
LDT::NOT_DATE_TIME_ON_ERROR)
{
using boost::posix_time::hours;
if (m_time.is_not_a_date_time())
{
try
{
auto t_o_d = time_of_day[part] + hours(3);
LDT time(date.m_greg, t_o_d, tzp->get(date.m_greg.year()),
LDT::EXCEPTION_ON_ERROR);
m_time = time - hours(3);
}
catch(boost::gregorian::bad_year&)
{
throw(std::invalid_argument("Time value is outside the supported year range."));
}
}
if (part == DayPart::neutral)
{
try
{
auto offset = m_time.local_time() - m_time.utc_time();
m_time = LDT(date.m_greg, time_of_day[part], utc_zone,
LDT::EXCEPTION_ON_ERROR);
if (offset < hours(-10))
m_time -= hours(offset.hours() + 10);
if (offset > hours(13))
m_time += hours(13 - offset.hours());
}
catch(boost::gregorian::bad_year&)
{
throw(std::invalid_argument("Time value is outside the supported year range."));
}
}
}
using PTZ = boost::local_time::posix_time_zone;
static TZ_Ptr
tz_from_string(std::string str)
{
@ -368,8 +381,7 @@ GncDateTimeImpl::GncDateTimeImpl(std::string str) :
if (sm[2].matched)
tzstr += sm[2];
tzptr = tz_from_string(tzstr);
m_time = LDT(pdt.date(), pdt.time_of_day(), tzptr,
LDTBase::NOT_DATE_TIME_ON_ERROR);
m_time = LDT_from_date_time(pdt.date(), pdt.time_of_day(), tzptr);
}
catch(boost::gregorian::bad_year&)
{
@ -517,8 +529,7 @@ GncDateTimeImpl::format_zulu(const char* format) const
return win_date_format(sformat, utc_tm());
#else
using Facet = boost::local_time::local_time_facet;
auto offset = m_time.local_time() - m_time.utc_time();
auto zulu_time = m_time - offset;
auto zulu_time = LDT{m_time.utc_time(), utc_zone};
auto output_facet(new Facet(normalize_format(format).c_str()));
std::stringstream ss;
ss.imbue(std::locale(gnc_get_locale(), output_facet));

View File

@ -37,10 +37,10 @@ typedef struct
int day; //1-31
} ymd;
enum DayPart : int {
start, // 00:00
neutral, // 10:59
end, // 23:59
enum class DayPart {
start, // 00:00 local
neutral, // 10:59 UTC
end, // 23:59 local
};
class GncDateTimeImpl;

View File

@ -418,7 +418,7 @@ namespace IANAParser
auto isgmt_count = *(endian_swap(reinterpret_cast<uint32_t*>(tzh.ttisgmtcnt)));
auto isstd_count = *(endian_swap(reinterpret_cast<uint32_t*>(tzh.ttisstdcnt)));
auto leap_count = *(endian_swap(reinterpret_cast<uint32_t*>(tzh.leapcnt)));
if ((tzh.version == '2' || tzh.version == '3') && sizeof(time_t) == sizeof(int64_t))
if ((tzh.version == '2' || tzh.version == '3'))
{
fb_index = (sizeof(tzh) +
(sizeof(uint32_t) + sizeof(uint8_t)) * time_count +

View File

@ -24,11 +24,11 @@
#ifndef TEST_ENGINE_STUFF_H
#define TEST_ENGINE_STUFF_H
#include <glib.h>
#ifdef __cplusplus
extern "C"
{
#endif
#include <glib.h>
#include <stdlib.h>
#include <stdint.h>

View File

@ -432,8 +432,60 @@ TEST(gnc_datetime_constructors, test_DST_end_transition_time)
_reset_tzp();
}
TEST(gnc_datetime_constructors, test_create_in_transition)
{
#ifdef __MINGW32__
TimeZoneProvider tzp_br{"E. South America Standard Time"};
#else
TimeZoneProvider tzp_br("America/Sao_Paulo");
#endif
_set_tzp(tzp_br);
/* Test Daylight Savings start: When Sao Paolo had daylight
* savings time it ended at 23:59:59 and the next second was
* 01:00:00 so that's when the day starts.
*/
GncDate date0{"2018-11-03", "y-m-d"};
GncDateTime gncdt0{date0, DayPart::end};
EXPECT_EQ(gncdt0.format_zulu("%Y-%m-%d %H:%M:%S %Z"), "2018-11-04 02:59:59 UTC");
EXPECT_EQ(gncdt0.format("%Y-%m-%d %H:%M:%S %Z"), "2018-11-03 23:59:59 -03");
GncDate date1{"2018-11-04", "y-m-d"};
GncDateTime gncdt1{date1, DayPart::start};
EXPECT_EQ(gncdt1.format_zulu("%Y-%m-%d %H:%M:%S %Z"), "2018-11-04 03:00:00 UTC");
EXPECT_EQ(gncdt1.format("%Y-%m-%d %H:%M:%S %Z"), "2018-11-04 01:00:00 -02");
/* End of day, end of DST. We want one second before midnight in
* std time, i.e. -03. Unfortunately sometimes boost::date_time
* decides that it's still DST and returns the first one.
*/
GncDate date2{"2018-02-17", "y-m-d"};
GncDateTime gncdt2{date2, DayPart::end};
if (gncdt2.offset() == -7200)
{
EXPECT_EQ(gncdt2.format_zulu("%Y-%m-%d %H:%M:%S %Z"), "2018-02-18 01:59:59 UTC");
EXPECT_EQ(gncdt2.format("%Y-%m-%d %H:%M:%S %Z"), "2018-02-17 23:59:59 -02");
}
else
{
EXPECT_EQ(gncdt2.format_zulu("%Y-%m-%d %H:%M:%S %Z"), "2018-02-18 02:59:59 UTC");
EXPECT_EQ(gncdt2.format("%Y-%m-%d %H:%M:%S %Z"), "2018-02-17 23:59:59 -03");
}
/* After February 2019 Sao Paulo discontinued Daylight
* Savings. This test checks to ensure that GncTimeZone doesn't
* try to project 2018's rule forward.
*/
GncDate date3{"2019-11-01", "y-m-d"};
GncDateTime gncdt3{date3, DayPart::start};
EXPECT_EQ(gncdt3.format_zulu("%Y-%m-%d %H:%M:%S %Z"), "2019-11-01 03:00:00 UTC");
EXPECT_EQ(gncdt3.format("%Y-%m-%d %H:%M:%S %Z"), "2019-11-01 00:00:00 -03");
}
TEST(gnc_datetime_constructors, test_gncdate_neutral_constructor)
{
#ifdef __MINGW32__
TimeZoneProvider tzp_la{"Pacific Standard Time"};
#else
TimeZoneProvider tzp_la("America/Los_Angeles");
#endif
_set_tzp(tzp_la);
const ymd aymd = { 2017, 04, 20 };
GncDateTime atime(GncDate(aymd.year, aymd.month, aymd.day), DayPart::neutral);
time64 date{1492685940};
@ -448,8 +500,8 @@ TEST(gnc_datetime_constructors, test_gncdate_neutral_constructor)
if (gncdt.offset() >= max_western_offset &&
gncdt.offset() <= max_eastern_offset)
{
EXPECT_EQ(atime.format("%d-%m-%Y %H:%M:%S %Z"), "20-04-2017 10:59:00 UTC");
// EXPECT_EQ(atime, gncdt);
EXPECT_EQ(atime.format_zulu("%d-%m-%Y %H:%M:%S %Z"),
"20-04-2017 10:59:00 UTC");
EXPECT_EQ(date, static_cast<time64>(gncdt));
EXPECT_EQ(date, static_cast<time64>(atime));
}

View File

@ -61,6 +61,11 @@ TEST(gnc_timezone_constructors, test_pacific_time_constructor)
EXPECT_EQ(3, tz->dst_local_start_time (2017).date().month());
EXPECT_EQ(5, tz->dst_local_end_time (2017).date().day());
EXPECT_EQ(11, tz->dst_local_end_time (2017).date().month());
//Check some post-2038 dates to make sure that it works even on macOS.
EXPECT_EQ(10, tz->dst_local_start_time (2052).date().day());
EXPECT_EQ(3, tz->dst_local_start_time (2052).date().month());
EXPECT_EQ(3, tz->dst_local_end_time (2052).date().day());
EXPECT_EQ(11, tz->dst_local_end_time (2052).date().month());
}
#if !PLATFORM(WINDOWS)

View File

@ -10,53 +10,38 @@ set (GC_LINGUAS ar as az bg brx de doi el en_GB es es_NI et fi fr gu he hi hr hu
set (NEW_LINGUAS)
set (ALL_LINGUAS ${TP_LINGUAS} ${GC_LINGUAS} ${NEW_LINGUAS})
file (WRITE LINGUAS "${ALL_LINGUAS}")
# LINGUAS is used to create localized destkop and appdata files
string(REPLACE ";" " " LINGUAS "${ALL_LINGUAS}")
file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/LINGUAS "${LINGUAS}")
set (CATALOGS "")
set (BUILD_CATALOGS "")
set (po_SOURCES "")
set(po_SOURCES "")
file (WRITE LINGUAS "")
foreach(lingua ${ALL_LINGUAS})
list(APPEND po_SOURCES ${lingua}.po)
file (APPEND LINGUAS "${lingua} ")
endforeach()
foreach (lingua ${ALL_LINGUAS})
list (APPEND po_SOURCES ${lingua}.po)
set (_LOCALE_DIR ${DATADIR_BUILD}/locale/${lingua}/LC_MESSAGES)
file (MAKE_DIRECTORY "${_LOCALE_DIR}") # Unix Makefiles won't do this automatically, ninja does
set (_MO_FILE ${_LOCALE_DIR}/gnucash.mo)
list (APPEND CATALOGS ${_MO_FILE})
add_custom_command(
OUTPUT ${_MO_FILE}
COMMAND ${CMAKE_COMMAND} -E env
${GETTEXT_MSGFMT_EXECUTABLE}
-o ${_MO_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${lingua}.po
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${lingua}.po
)
install (FILES ${_MO_FILE} DESTINATION ${CMAKE_INSTALL_DATADIR}/locale/${lingua}/LC_MESSAGES)
endforeach (lingua)
add_custom_target(po-gmo ALL DEPENDS ${CATALOGS})
set_local_dist(po_DIST_local ${po_SOURCES} CMakeLists.txt Makevars
POTFILES.in POTFILES.skip README gnucash-pot.cmake)
set(po_DIST ${po_DIST_local} ${po_glossary_DIST} PARENT_SCOPE)
foreach(lingua ${ALL_LINGUAS})
set(_OUTPUT_FILE ${lingua}.mo)
list(APPEND CATALOGS ${_OUTPUT_FILE})
add_custom_command(
OUTPUT ${_OUTPUT_FILE}
COMMAND ${CMAKE_COMMAND} -E env
${GETTEXT_MSGFMT_EXECUTABLE}
-o ${_OUTPUT_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${lingua}.po
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${lingua}.po
)
set(_BUILD_FILE_DIR ${DATADIR_BUILD}/locale/${lingua}/LC_MESSAGES)
make_directory(${_BUILD_FILE_DIR})
set(_BUILD_FILE ${_BUILD_FILE_DIR}/gnucash.mo)
list(APPEND BUILD_CATALOGS ${_BUILD_FILE})
add_custom_command(
OUTPUT ${_BUILD_FILE}
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/${lingua}.mo ${_BUILD_FILE}
DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${_OUTPUT_FILE}
#APPEND
)
endforeach(lingua)
add_custom_target(po-gmo ALL DEPENDS ${CATALOGS})
add_custom_target(po-gmo-build ALL DEPENDS ${BUILD_CATALOGS})
foreach(lingua ${ALL_LINGUAS})
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${lingua}.mo RENAME gnucash.mo DESTINATION ${CMAKE_INSTALL_DATADIR}/locale/${lingua}/LC_MESSAGES)
endforeach(lingua)
function(read_file_removing_comments OUTPUT PATH)
set(RESULT "")
file(STRINGS "${PATH}" LINES_IN)

View File

@ -216,7 +216,7 @@ gnucash/gnucash-cli.cpp
gnucash/gnucash-commands.cpp
gnucash/gnucash-core-app.cpp
gnucash/gnucash.cpp
gnucash/gnucash-windows-locale.c
gnucash/gnucash-locale-windows.c
gnucash/gschemas/org.gnucash.dialogs.business.gschema.xml.in
gnucash/gschemas/org.gnucash.dialogs.checkprinting.gschema.xml.in
gnucash/gschemas/org.gnucash.dialogs.commodities.gschema.xml.in

433
po/de.po
View File

@ -12,7 +12,7 @@
# quazgar <quazgar@posteo.de> 2017.
# Rolf Leggewie, 2008.
# Herbert Thoma <tma@iis.fhg.de>, 2001.
# Christian Meyer <chrisime@gnome.org>, 2000, 2001.
# Christian Meyer <chrisime@gnome.org>, 2000-2001.
# Jan-Uwe Finck <Jan-Uwe.Finck@bigfoot.de>, 1999.
# Manuel Bichler <felseninsel@hotmail.com>, 2020.
# K. Herbert <herbert.ka@mailo.com>, 2020.
@ -32,7 +32,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug.cgi?"
"product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-03-14 22:08+0100\n"
"PO-Revision-Date: 2021-03-11 06:06+0100\n"
"PO-Revision-Date: 2021-03-21 22:25+0100\n"
"Last-Translator: Christian Stimming <christian@cstimming.de>\n"
"Language-Team: German <https://hosted.weblate.org/projects/gnucash/gnucash/"
"de/>\n"
@ -1740,17 +1740,15 @@ msgid "Description"
msgstr "Beschreibung"
#: gnucash/gnome/dialog-doclink.c:1024
#, fuzzy
msgid ""
"Double click on the entry in the Id column to jump to the Business Item.\n"
"Double click on the entry in the Link column to open the Linked Document.\n"
"Double click on the entry in the Available column to modify the document "
"link."
msgstr ""
"Um zur Rechnung zu springen, machen Sie einen Doppelklick auf den Eintrag in "
"der Spalte\n"
"»Beschreibung«. Zum Öffnen der Verknüpfung einen Doppelklick auf die Spalte "
"»Verknüpfung«."
"Doppelklick auf die »Nr.«-Spalte springt zur Rechnung.\n"
"Doppelklick auf die »Verknüpftes Dokument«-Spalte springt zum verknüpften Dokument.\n"
"Doppelklick auf die »Verfügbar«-Spalte, um die Verknüpfung zu bearbeiten."
#: gnucash/gnome/dialog-doclink.c:1033
msgid "Business Document Links"
@ -3639,7 +3637,6 @@ msgid "_Import Map Editor"
msgstr "_Import-Zuordnungen Editor"
#: gnucash/gnome/gnc-plugin-basic-commands.c:212
#, fuzzy
#| msgid "View and Delete Bayesian and Non Bayesian information"
msgid "View and Delete Bayesian and non-Bayesian information"
msgstr ""
@ -4135,12 +4132,11 @@ msgstr "Ausgewähltes Konto löschen"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:257
msgid "_Cascade Account Properties..."
msgstr "Konto_eigenschaften übernehmen..."
msgstr "Konto_eigenschaften vererben..."
#: gnucash/gnome/gnc-plugin-page-account-tree.c:258
msgid "Cascade selected properties for account"
msgstr ""
"Die gewählten Kontoeigenschaften in die untergeordneten Konten übernehmen"
msgstr "Die gewählten Kontoeigenschaften in die untergeordneten Konten vererben"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:262
#: gnucash/gnome/gnc-plugin-page-account-tree.c:267
@ -4502,7 +4498,6 @@ msgid "Edit Note"
msgstr "Bemerkung bearbeiten"
#: gnucash/gnome/gnc-plugin-page-budget.c:183
#, fuzzy
#| msgid "Edit note for the selected account and period"
msgid "Edit note for the selected account and period."
msgstr "Die Bemerkung für das gewählte Konto und Periode bearbeiten"
@ -4513,7 +4508,6 @@ msgid "Budget Report"
msgstr "Budget-Bericht"
#: gnucash/gnome/gnc-plugin-page-budget.c:189
#, fuzzy
#| msgid "Print the current report"
msgid "Run the budget report."
msgstr "Aktuellen Bericht drucken"
@ -4544,10 +4538,9 @@ msgstr "Bemerkung"
# Fixme: Source Accelerator missing
#: gnucash/gnome/gnc-plugin-page-budget.c:226
#, fuzzy
#| msgid "Account Report"
msgid "Run Report"
msgstr "Kontenbericht"
msgstr "Budgetbericht"
#: gnucash/gnome/gnc-plugin-page-budget.c:310
#: gnucash/gnome/gnc-plugin-page-budget.c:351
@ -6638,18 +6631,15 @@ msgstr ""
"»Platzhalter-Konto«."
#: gnucash/gnome/gnc-split-reg.c:2531
#, fuzzy
msgid ""
"The transactions in one of the selected sub-accounts may not be edited.\n"
"If you want to edit transactions in this register, please open the sub-"
"account options and turn off the placeholder checkbox.\n"
"You may also open an individual account instead of a set of accounts."
msgstr ""
"Die Buchungen in einem der Unterkonten können nicht bearbeitet werden.\n"
"Wenn Sie Buchungen in diesem Konto bearbeiten möchten, öffnen Sie bitte das "
"Dialogfenster »Konto Eigenschaften« des Unterkontos und deaktivieren Sie die "
"Option »Platzhalter-Konto«.\n"
"Stattdessen können Sie auch ein Kontofenster eines einzelnen Kontos öffnen."
"Die Buchungen in einem der gewählten Unterkonten können nicht bearbeitet werden.\n"
"Wenn Sie Buchungen in diesem Kontofenster bearbeiten möchten, öffnen Sie bitte das Dialogfenster »Konto Eigenschaften« des Unterkontos und deaktivieren Sie die Option »Platzhalter-Konto«.\n"
"Alternativ können Sie auch ein Kontofenster eines einzelnen Kontos öffnen."
#: gnucash/gnome/gnucash.appdata.xml.in.in:5
#: gnucash/gnome/gnucash.desktop.in.in:6
@ -7605,24 +7595,19 @@ msgstr ""
msgid ""
"Set the account color for account '%s' including all sub-accounts to the "
"selected color"
msgstr ""
"Die Kontenfarbe für das Konto '%s' inklusive aller Unterkonten einrichten"
msgstr "Kontofarbe für Konto »%s« und in allen Unterkonten festlegen"
#: gnucash/gnome-utils/dialog-account.c:2312
#, c-format
msgid ""
"Set the account placeholder value for account '%s' including all sub-accounts"
msgstr ""
"Die Platzhalter-Eigenschaft für das Konto »%s« inklusive aller Unterkonten "
"einrichten"
msgstr "Platzhalter-Einstellung für Konto »%s« und in allen Unterkonten festlegen"
#: gnucash/gnome-utils/dialog-account.c:2326
#, c-format
msgid ""
"Set the account hidden value for account '%s' including all sub-accounts"
msgstr ""
"Die Versteckt-Eigenschaft für das Konto »%s« inklusive aller Unterkonten "
"einrichten"
msgstr "Versteckt-Eigenschaft für Konto »%s« und in allen Unterkonten festlegen"
#: gnucash/gnome-utils/dialog-book-close.c:294
msgid "Please select an Equity account to hold the total Period Income."
@ -8214,23 +8199,15 @@ msgid_plural ""
"\n"
"Should your file be saved automatically?"
msgstr[0] ""
"Ihre Datei muss auf der Festplatte gespeichert werden, um Ihre Änderungen zu "
"sichern. GnuCash kann das Speichern automatisch jede Minute auslösen, so als "
"ob Sie jedes Mal den Knopf »Speichern« klicken würden.\n"
"Ihre Datei muss auf der Festplatte gespeichert werden, um Ihre Änderungen zu sichern. GnuCash kann das Speichern automatisch jede Minute auslösen, so als ob Sie jedes Mal den Knopf »Speichern« klicken würden.\n"
"\n"
"Wenn Sie das Zeitintervall ändern möchten, können Sie dies tun unter "
"Bearbeiten->Einstellungen->Allgemein->Zeitintervall automatisch Speichern, "
"oder diese Automatik dort auch abschalten.\n"
"Wenn Sie das Zeitintervall ändern möchten, können Sie dies tun unter Bearbeiten->Einstellungen->Allgemein->Zeitintervall Automatisches Speichern, oder diese Automatik dort auch abschalten.\n"
"\n"
"Soll Ihre Datei automatisch gespeichert werden?"
msgstr[1] ""
"Ihre Datei muss auf der Festplatte gespeichert werden, um Ihre Änderungen zu "
"sichern. GnuCash kann das Speichern automatisch alle %d Minuten auslösen, so "
"als ob Sie jedes Mal den Knopf »Speichern« klicken würden.\n"
"Ihre Datei muss auf der Festplatte gespeichert werden, um Ihre Änderungen zu sichern. GnuCash kann das Speichern automatisch alle %d Minuten auslösen, so als ob Sie jedes Mal den Knopf »Speichern« klicken würden.\n"
"\n"
"Wenn Sie das Zeitintervall ändern möchten, können Sie dies tun unter "
"Bearbeiten->Einstellungen->Allgemein->Zeitintervall automatisch Speichern, "
"oder diese Automatik dort auch abschalten.\n"
"Wenn Sie das Zeitintervall ändern möchten, können Sie dies tun unter Bearbeiten->Einstellungen->Allgemein->Zeitintervall Automatisches Speichern, oder diese Automatik dort auch abschalten.\n"
"\n"
"Soll Ihre Datei automatisch gespeichert werden?"
@ -9126,8 +9103,14 @@ msgstr "Finanzverwaltung für Privatanwender und Kleinbetriebe."
#: gnucash/gnome-utils/gnc-main-window.c:4733
msgid "translator-credits"
msgstr ""
"Christian Stimming, 2001-2020\n"
"Frank H. Ellenberger, 2007, 2009-2020\n"
"Christian Stimming, 2001-2021\n"
"Frank H. Ellenberger, 2007, 2009-2021\n"
"Christian Wehling, 2020-2021\n"
"Alois Spitzbart, 2020-2021\n"
"Marco Zietzling, 2020\n"
"Milo Ivir, 2020\n"
"K. Herbert, 2020\n"
"Manuel Bichler, 2020\n"
"Andreas Hentze, 2019\n"
"Joachim Wetzig, 2019\n"
"Dmitriy Mangul, 2017-2018\n"
@ -9871,10 +9854,9 @@ msgid "H"
msgstr "V"
#: gnucash/gnome-utils/gnc-tree-view-account.c:997
#, fuzzy
msgctxt "Column header for 'Opening Balance'"
msgid "O"
msgstr "O"
msgstr "A"
#. Translators: %s is a currency mnemonic.
#: gnucash/gnome-utils/gnc-tree-view-account.c:1819
@ -11639,7 +11621,7 @@ msgstr "Dateikompression beim Schreiben der Datei einschalten."
#: gnucash/gschemas/org.gnucash.gschema.xml.in:35
msgid "Show auto-save explanation"
msgstr "Erklärung anzeigen bei automatisch Speichern"
msgstr "Erklärung anzeigen bei »Automatisches Speichern«"
#: gnucash/gschemas/org.gnucash.gschema.xml.in:36
msgid ""
@ -11652,7 +11634,7 @@ msgstr ""
#: gnucash/gschemas/org.gnucash.gschema.xml.in:40
msgid "Auto-save time interval"
msgstr "Zeitintervall automatisch Speichern"
msgstr "Zeitintervall Automatisches Speichern"
#: gnucash/gschemas/org.gnucash.gschema.xml.in:41
#: gnucash/gtkbuilder/dialog-preferences.glade:1656
@ -13857,7 +13839,7 @@ msgstr "<b>Kategorie-Beschreibung</b>"
#. %s is an account template
#: gnucash/gtkbuilder/assistant-hierarchy.glade:384
#, fuzzy, c-format
#, c-format
#| msgid "Accounts in '%s'"
msgid "Accounts in %s"
msgstr "Konten in »%s«"
@ -13923,9 +13905,10 @@ msgstr ""
"<b>Anmerkung:</b> Alle Konten außer Eigenkapital und Platzhaltern können "
"Anfangsbestände enthalten.\n"
# FE: Todo: better "fine tune"
#: gnucash/gtkbuilder/assistant-hierarchy.glade:575
msgid "Setup selected accounts"
msgstr "Ausgewähltes Konto einrichten"
msgstr "Ausgewählte Konten feinabstimmen"
#: gnucash/gtkbuilder/assistant-hierarchy.glade:585
msgid ""
@ -14247,7 +14230,6 @@ msgstr "QIF-Import-Assistent"
#. Run the assistant in your language to see GTK's translation of the button labels.
#: gnucash/gtkbuilder/assistant-qif-import.glade:54
#, fuzzy
#| msgid ""
#| "GnuCash can import financial data from QIF (Quicken Interchange Format) "
#| "files written by Quicken/QuickBooks, MS Money, Moneydance, and many other "
@ -14269,15 +14251,11 @@ msgid ""
"Click \"Next\" to start loading your QIF data, or \"Cancel\" to abort the "
"process."
msgstr ""
"GnuCash kann Finanzdaten von QIF-Dateien (Quicken Interchange Format) "
"importieren, die von Programmen wie Quicken/Quickbooks, MS Money oder "
"Moneydance geschrieben wurden.\n"
"GnuCash kann Finanzdaten aus QIF-Dateien (Quicken Interchange Format) importieren, die von Programmen wie Quicken/Quickbooks, MS Money oder Moneydance geschrieben wurden.\n"
"\n"
"Der Importprozess hat mehrere Stufen. Ihre GnuCash Konten werden erst dann "
"verändert, wenn Sie am Ende »Anwenden« anklicken.\n"
"Der Importprozess hat mehrere Schritte. Ihre GnuCash Konten werden erst dann verändert, wenn Sie im letzten Schritt »Anwenden« anklicken.\n"
"\n"
"Klicken Sie jetzt »Weiter«, um mit dem Laden Ihrer QIF Daten zu beginnen. "
"Sie können den Import jederzeit mit »Abbrechen« ohne Änderungen beenden."
"Klicken Sie jetzt »Weiter«, um mit dem Laden Ihrer QIF-Dateien zu beginnen. Sie können den Import jederzeit mit »Abbrechen« ohne Änderungen beenden."
#: gnucash/gtkbuilder/assistant-qif-import.glade:63
msgid "Import QIF files"
@ -14374,7 +14352,6 @@ msgstr "Den Namen des Standard QIF-Kontos setzen"
#. Run the assistant in your language to see GTK's translation of the button labels.
#: gnucash/gtkbuilder/assistant-qif-import.glade:468
#, fuzzy
#| msgid ""
#| "Click \"Load another file\" if you have more data to import at this time. "
#| "Do this if you have saved your accounts to separate QIF files.\n"
@ -14388,12 +14365,9 @@ msgid ""
"Click \"Next\" to finish loading files and move to the next step of the QIF "
"import process."
msgstr ""
"Wenn Sie noch mehr Dateien importieren möchten, klicken Sie bitte auf »Eine "
"weitere Datei öffnen«. Das ist insbesondere sinnvoll, wenn Sie Ihre Daten in "
"mehreren separaten QIF-Dateien gespeichert haben.\n"
"Wenn Sie noch mehr Dateien importieren möchten, klicken Sie bitte auf »Eine weitere Datei öffnen«. Das ist insbesondere sinnvoll, wenn Sie Ihre Daten in mehreren separaten QIF-Dateien gespeichert haben.\n"
"\n"
"Klicken Sie auf »Weiter«, um das Laden von Dateien zu beenden und zum "
"nächsten Schritt des QIF-Importprozesses zu gehen."
"Klicken Sie auf »Weiter«, um das Laden von Dateien zu beenden und zum nächsten Schritt des QIF-Importprozesses zu gehen."
#: gnucash/gtkbuilder/assistant-qif-import.glade:487
msgid "_Unload selected file"
@ -14494,7 +14468,6 @@ msgid "Match QIF categories with GnuCash accounts"
msgstr "Verknüpfe QIF-Kategorien mit GnuCash Konten"
#: gnucash/gtkbuilder/assistant-qif-import.glade:802
#, fuzzy
#| msgid ""
#| "QIF files downloaded from banks and other financial institutions may not "
#| "have information about Accounts and Categories which would allow them to "
@ -14515,16 +14488,9 @@ msgid ""
"these transactions are assigned to the 'Unspecified' account in GnuCash. If "
"you select a different account, it will be remembered for future QIF files."
msgstr ""
"QIF Dateien, die Sie von einer Bank oder einem Finanzinstitut "
"heruntergeladen haben, bieten oftmals nicht genügend Informationen über "
"Kontengliederungen und Kategorien, um sie automatisch den richtigen GnuCash-"
"Konten zuzuordnen.\n"
"QIF-Dateien, die Sie von einer Bank oder einem Finanzinstitut heruntergeladen haben, bieten oftmals nicht genügend Informationen über Kontengliederungen und Kategorien, um sie automatisch den richtigen GnuCash-Konten zuzuordnen.\n"
"\n"
"Auf der folgenden Seite werden der Zahlungsempfänger und Buchungstext von "
"Buchungssätzen ohne Konten oder Kategorien aus der QIF Datei angezeigt. Als "
"Voreinstellung werden solche Buchungssätze dem Konto »Nicht spezifiziert« "
"zugeordnet. Wenn Sie nun die Buchungssätze einem anderen Konto zuweisen, "
"wird diese Auswahl für zukünftige Importvorgänge gespeichert."
"Auf der folgenden Seite werden der Zahlungsempfänger und Buchungstext von Buchungssätzen ohne Konten oder Kategorien aus der QIF Datei angezeigt. Als Voreinstellung werden solche Buchungssätze dem Konto »Nicht spezifiziert« zugeordnet. Wenn Sie nun die Buchungssätze einem anderen Konto zuweisen, wird diese Auswahl für zukünftige Importvorgänge gespeichert."
#: gnucash/gtkbuilder/assistant-qif-import.glade:815
msgid "Payees and memos"
@ -15030,23 +14996,23 @@ msgstr "_Tage im Voraus"
#: gnucash/gtkbuilder/dialog-account.glade:7
msgid "Cascade Account Values"
msgstr ""
msgstr "Kontoeigenschaften vererben"
#: gnucash/gtkbuilder/dialog-account.glade:69
msgid "Enable Cascading Account Color"
msgstr ""
msgstr "Kontofarbe in Unterkonten vererben"
#: gnucash/gtkbuilder/dialog-account.glade:104
msgid "Enable Cascading Account Placeholder"
msgstr ""
msgstr "Platzhalter-Einstellung in Unterkonten vererben"
#: gnucash/gtkbuilder/dialog-account.glade:129
msgid "Enable Cascading Account Hidden"
msgstr ""
msgstr "Versteckt-Eigenschaft in Unterkonten vererben"
#: gnucash/gtkbuilder/dialog-account.glade:151
msgid "Enable the sections to Cascade"
msgstr ""
msgstr "Wählen Sie die Eigenschaften, die vom Hauptkonto in die Unterkonten vererbt werden sollen."
#: gnucash/gtkbuilder/dialog-account.glade:199
#: gnucash/gtkbuilder/dialog-account.glade:1330
@ -15059,9 +15025,7 @@ msgstr "Voreinstellung"
msgid ""
"If any account has an existing color it will not be replaced unless the "
"following is ticked."
msgstr ""
"Wenn ein Konto eine vorhandene Farbe hat, wird es die Farbe nur ersetzt, "
"wenn das folgende Kontrollkästchen aktiviert ist."
msgstr "Vorhandene Kontofarben werden nur neu festgelegt, wenn das folgende Kontrollkästchen aktiviert ist."
#: gnucash/gtkbuilder/dialog-account.glade:232
msgid "Replace any existing account colors"
@ -15171,7 +15135,7 @@ msgstr "Konten nicht anzeigen, die Kontostand Null haben."
#: gnucash/gtkbuilder/dialog-account.glade:1065
msgid "Use Commodity Value"
msgstr "Nutze gewöhnlichen Wert "
msgstr "Aus Wertpapier/Währung übernehmen"
#: gnucash/gtkbuilder/dialog-account.glade:1196
#: gnucash/gtkbuilder/dialog-customer.glade:213
@ -15271,7 +15235,7 @@ msgstr "Anfangsbestand"
msgid ""
"This account holds opening balance transactions. Only one account per "
"commodity can hold opening balance transactions."
msgstr ""
msgstr "Dieses Konto enthält die Anfangsbestand-Buchungen. Pro Währung/Aktie kann nur ein Konto die Anfangsbestand-Buchungen enthalten."
#: gnucash/gtkbuilder/dialog-account.glade:1564
msgid "<b>Acco_unt Type</b>"
@ -15907,7 +15871,7 @@ msgstr "Dateipfad-Anfang für Dokument-Verknüpfungen bearbeiten"
msgid ""
"Existing relative file path links will be converted to absolute ones by "
"combining them with the existing path head unless box unticked."
msgstr ""
msgstr "Vorhandene Verknüpfungen mit relativen Pfaden werden zu absoluten Pfaden umgewandelt, indem der Pfad-Anfang vorangestellt wird, außer das folgende Kästchen ist aktiviert."
#: gnucash/gtkbuilder/dialog-doclink.glade:140
msgid ""
@ -15958,7 +15922,7 @@ msgstr "Alle verknüpften Dokumente"
#: gnucash/gtkbuilder/dialog-doclink.glade:626
msgid "Id"
msgstr "Id"
msgstr "Nr."
#: gnucash/gtkbuilder/dialog-doclink.glade:654
msgid "Linked Document"
@ -16843,15 +16807,13 @@ msgid "<b>Separator Character</b>"
msgstr "<b>Trennzeichen</b>"
#: gnucash/gtkbuilder/dialog-preferences.glade:204
#, fuzzy
msgid ""
"Press 'Reset' to use the original account separator and close the preference "
"window\n"
"Press 'Close' to return to the preference window\n"
msgstr ""
"Drücken Sie \"Zurücksetzen\", um das ursprüngliche Kontentrennzeichen zu "
"verwenden und das Einstellungsfenster zu schließen\n"
"Drücken Sie \"Schließen\", um zum Einstellungsfenster zurückzukehren\n"
"Drücken Sie »Zurücksetzen«, um das ursprüngliche Kontentrennzeichen zu verwenden und das Einstellungsfenster zu schließen.\n"
"Drücken Sie »Schließen«, um zum Einstellungsfenster zurückzukehren.\n"
#: gnucash/gtkbuilder/dialog-preferences.glade:240
msgid "GnuCash Preferences"
@ -17174,7 +17136,7 @@ msgstr "Begrüßungsbild (Splash screen) beim Programmstart anzeigen."
#: gnucash/gtkbuilder/dialog-preferences.glade:1636
msgid "Auto-save time _interval"
msgstr "Zeit_intervall automatisch Speichern"
msgstr "Zeit_intervall Automatisches Speichern"
#: gnucash/gtkbuilder/dialog-preferences.glade:1675
msgid "minutes"
@ -17182,7 +17144,7 @@ msgstr "Minuten"
#: gnucash/gtkbuilder/dialog-preferences.glade:1691
msgid "Show auto-save confirmation _question"
msgstr "Erklärung für automatisch Speichern an_zeigen"
msgstr "Erklärung für Automatisches Speichern an_zeigen"
#: gnucash/gtkbuilder/dialog-preferences.glade:1697
msgid ""
@ -20988,7 +20950,6 @@ msgstr ""
# Fixme Source: 1. "\n" widerspricht I18N Regeln, letztes überflüssig? [FE]
#: gnucash/import-export/csv-exp/assistant-csv-export.c:115
#, fuzzy
msgid ""
"This assistant will help you export the Transactions to a file\n"
"with the separator specified below.\n"
@ -21007,20 +20968,15 @@ msgid ""
"Select the settings you require for the file and then click \"Next\" to "
"proceed or \"Cancel\" to abort the export.\n"
msgstr ""
"Dieser Assistent exportiert Buchungen in eine Datei mit dem unten zu "
"wählenden Trennzeichen.\n"
"Dieser Assistent exportiert Buchungen in eine Datei mit dem unten zu wählenden Trennzeichen.\n"
"\n"
"Jede Buchung wird mehrere Zeilen ergeben und Sie werden möglicherweise "
"nacharbeiten müssen, um den Export in ein für Sie nützliches Format zu "
"bringen. Jede Buchung taucht nur ein Mal im Export auf und zwar in der "
"Reihenfolge, in der die Konten verarbeitet werden.\n"
"Jede Buchung wird mehrere Zeilen ergeben und Sie werden möglicherweise nacharbeiten müssen, um den Export in ein für Sie nützliches Format zu bringen. Jede Buchung taucht nur ein Mal im Export auf und zwar in der Reihenfolge, in der die Konten verarbeitet werden.\n"
"\n"
"Wenn Sie das einfache Layout auswählen, entspricht die Ausgabe der "
"einzeiligen Konto-Ansicht. Dabei werden die nicht angezeigten Buchungsfelder "
"allerdings nicht exportiert.\n"
"Das Format für Preis/Wechselkurs wird in den allgemeinen Einstellungen festgelegt, Allgemein -> Preise als Dezimalzahlen festlegen.\n"
"\n"
"Wählen Sie jetzt die Einstellungen und klicken Sie dann »Weiter« für den "
"Export oder »Abbrechen« zum Abbrechen des Exports.\n"
"Wenn Sie das einfache Layout auswählen, entspricht die Ausgabe der einzeiligen Konto-Ansicht. Dabei werden die nicht angezeigten Buchungsfelder allerdings nicht exportiert.\n"
"\n"
"Wählen Sie jetzt die Einstellungen und klicken Sie dann »Weiter« für den Export oder »Abbrechen« zum Abbrechen des Exports.\n"
#: gnucash/import-export/csv-exp/assistant-csv-export.c:762
msgid ""
@ -26046,7 +26002,7 @@ msgstr "Dauer zwischen Zeitperioden"
#: gnucash/report/reports/standard/balsheet-pnl.scm:65
#: gnucash/report/reports/standard/balsheet-pnl.scm:66
msgid "Period order is most recent first"
msgstr ""
msgstr "Perioden-Reihenfolge ist: Neueste zuerst"
#: gnucash/report/reports/standard/balsheet-pnl.scm:68
msgid "Enable dual columns"
@ -26898,14 +26854,13 @@ msgid "Maximum number of stacks in the chart."
msgstr "Die maximale Anzahl gestapelte Balken im Diagramm."
#: gnucash/report/reports/standard/category-barchart.scm:290
#, fuzzy
#| msgid "Invalid Transactions"
msgid "Invalid dates"
msgstr "Ungültige Buchungen"
msgstr "Ungültige Datumsangaben"
#: gnucash/report/reports/standard/category-barchart.scm:291
msgid "Start date must be earlier than End date"
msgstr ""
msgstr "Anfangsdatum muss vor Enddatum liegen"
#: gnucash/report/reports/standard/category-barchart.scm:329
msgid "Daily Average"
@ -27306,7 +27261,6 @@ msgstr "Filter"
# Todo: I18N: wrong use of\n
#: gnucash/report/reports/standard/income-gst-statement.scm:48
#, fuzzy
msgid ""
"This report is useful to calculate periodic business tax payable/receivable "
"from authorities. From 'Edit report options', choose your business sales and "
@ -27314,14 +27268,13 @@ msgid ""
"liability, A/Payable or A/Receivable accounts, a split to a tax account, e."
"g. Income:Sales -$1000, A/Receivable $1100, Liability:GST on Sales -$100."
msgstr ""
"Dieser Bericht ist unterstützt die Berechnung wiederkehrender geschäftlicher "
"Steuerzahlungen und -erstattungen.\n"
"Wählen Sie unter »Berichtsoptionen« Ihre Geschäftskonten für Einnahmen und "
"Ausgaben.\n"
"Ihre Buchungen können zusätzlich zu den Teilbuchungen nach Konten für offene "
"Forderungen oder Verbindlichkeiten und Bankkonten, Teilbuchungen nach "
"Steuerkonten enthalten, z. Bsp. 'Erträge:Verkäufe -1.000; Verbindlichkeiten:"
"Steuer -190; Aktiva:Bank 1.190"
"Dieser Bericht unterstützt die Berechnung regelmäßiger geschäftlicher\n"
"Steuerzahlungen und -erstattungen. Wählen Sie unter\n"
"»Berichtsoptionen« Ihre Geschäftskonten für Einnahmen und Ausgaben.\n"
"Ihre Buchungen können zusätzlich zu den Teilbuchungen nach Konten für\n"
"offene Forderungen oder Verbindlichkeiten und Bankkonten,\n"
"Teilbuchungen nach Steuerkonten enthalten, z. Bsp. 'Erträge:Verkäufe\n"
"-1.000; Verbindlichkeiten:Steuer -190; Aktiva:Bank 1.190"
#: gnucash/report/reports/standard/income-gst-statement.scm:56
msgid ""
@ -27354,7 +27307,7 @@ msgid ""
"Note the UK variant may specify EU VAT accounts may be tagged with *EUVAT* "
"in the VAT account description. EU Goods sales and purchase accounts may be "
"tagged with *EUGOODS* in the account description."
msgstr ""
msgstr "Hinweis zur UK-Variante: EU VAT Konten können mit *EUVAT* in der VAT-Kontobeschreibung vermerkt sein. EU Waren Einkauf und Lieferungen können mit *EUGOODS* in der Kontobeschreibung vermerkt sein."
#: gnucash/report/reports/standard/income-gst-statement.scm:71
msgid "This message will be removed when tax accounts are specified."
@ -27454,7 +27407,6 @@ msgid "Default Format"
msgstr "Voreingestelltes Format"
#: gnucash/report/reports/standard/income-gst-statement.scm:167
#, fuzzy
msgid "Australia BAS"
msgstr "Australien BAS"
@ -27475,7 +27427,7 @@ msgid ""
"UK VAT Return. Specify sales, purchase and tax accounts. EU rules may be "
"used. Denote EU VAT accounts *EUVAT* in account description, and denote EU "
"goods sales and purchases accounts with *EUGOODS* in the account description."
msgstr ""
msgstr "UK Steuererklärung (VAT). Gibt Umsatz, Aufwendungen und Steuerkonten an. EU Regeln können angewendet werden. EU VAT Konten können mit *EUVAT* in der Kontobeschreibung vermerkt werden, und EU Waren und Aufwandskonten mit *EUGOODS*."
#. Translators: "Gross Sales" refer to Net Sales + GST/VAT on Sales
#: gnucash/report/reports/standard/income-gst-statement.scm:313
@ -30825,7 +30777,7 @@ msgstr "Kein Umtauschkurs verfügbar in SX [%s] für %s -> %s, Wert ist Null."
#: libgnucash/app-utils/gnc-ui-balances.c:409
msgid "Account is already at Auto-Clear Balance."
msgstr ""
msgstr "Kontosaldo entspricht bereits dem Auto-Abgleich Saldo."
#: libgnucash/app-utils/gnc-ui-balances.c:455
msgid "Too many uncleared splits"
@ -31338,244 +31290,3 @@ msgstr "Buchung ungültig gemacht"
#: libgnucash/tax/us/txf.scm:122
msgid "No help available."
msgstr "Keine Hilfe verfügbar."
#~ msgid ">>"
#~ msgstr ">>"
#~ msgid "<<"
#~ msgstr "<<"
#~ msgid "<b>Accounts</b>"
#~ msgstr "<b>Konten</b>"
#~ msgid "<b>Dates</b>"
#~ msgstr "<b>Datumsbereich</b>"
#~ msgid "Sho_w All"
#~ msgstr "_Alle anzeigen"
#~ msgid "•"
#~ msgstr "~"
#~ msgid "<b>Currency To</b>"
#~ msgstr "<b>Zu Währung</b>"
#~ msgid "<b>Notes</b>"
#~ msgstr "<b>Beschreibung</b>"
#~ msgid "<b>Book Options</b>"
#~ msgstr "<b>Buch-Optionen</b>"
#~ msgid "<b>General</b>"
#~ msgstr "<b>Allgemein</b>"
#~ msgid "<b>Transactions</b>"
#~ msgstr "<b>Buchungen</b>"
#~ msgid "<b>Identification</b>"
#~ msgstr "<b>Identifizierung</b>"
#~ msgid "<b>_Parent Account</b>"
#~ msgstr "<b>Ha_uptkonto</b>"
#~ msgid "<b>QIF Import</b>"
#~ msgstr "<b>QIF Import</b>"
#~ msgid "<b>Terms</b>"
#~ msgstr "<b>Zahlungsbedingungen</b>"
#~ msgid "<b>Securities</b>"
#~ msgstr "<b>Wertpapiere</b>"
#~ msgid "<b>Security Information</b>"
#~ msgstr "<b>Wertpapierinformationen</b>"
#~ msgid "<b>1. Choose the file to import</b>"
#~ msgstr "<b>1. Wählen Sie die zu importierende Datei</b>"
#~ msgid "<b>3. Select import options</b>"
#~ msgstr "<b>3. Bestimmen Sie die Importoptionen</b>"
#~ msgid "<b>4. Preview</b>"
#~ msgstr "<b>4. Vorschau</b>"
#~ msgid "<b>Period</b>"
#~ msgstr "<b>Periode</b>"
#~ msgid "<b>Colors</b>"
#~ msgstr "<b>Farben</b>"
#~ msgid "<b>_Notes</b>"
#~ msgstr "<b>Be_schreibung</b>"
#~ msgid "<b>Amount</b>"
#~ msgstr "<b>Betrag</b>"
#~ msgid "<b>Start Date</b>"
#~ msgstr "<b>Anfangsdatum</b>"
#~ msgid "<b>End Date</b>"
#~ msgstr "<b>Enddatum</b>"
#~ msgid "<b>Account Color</b>"
#~ msgstr "<b>Kontofarbe</b>"
#~ msgid "<b>Fancy Date Format</b>"
#~ msgstr "<b>Ausführliches Datumsformat</b>"
#~ msgid "<b>Date Format</b>"
#~ msgstr "<b>Datum</b>"
#~ msgid "<b>Layout</b>"
#~ msgstr "<b>Layout</b>"
#~ msgid "<b>Default zoom level</b>"
#~ msgstr "<b>Voreingestellte Vergrößerung</b>"
#~ msgid "<b>Online Quotes</b>"
#~ msgstr "<b>Online Kurse</b>"
#~ msgid "<b>Name</b>"
#~ msgstr "<b>Name</b>"
#~ msgid "<b>Options</b>"
#~ msgstr "<b>Optionen</b>"
#~ msgid "<b>Income Tax Identity</b>"
#~ msgstr "<b>Art der Steuererklärung</b>"
#~ msgid "<b>Tax Tables</b>"
#~ msgstr "<b>Steuertabellen</b>"
#~ msgid "<b>Tax Table</b>"
#~ msgstr "<b>Steuertabelle</b>"
#~ msgid "<b>Transfer From</b>"
#~ msgstr "<b>Herkunftskonto</b>"
#~ msgid "<b>Transfer To</b>"
#~ msgstr "<b>Buchen nach</b>"
#~ msgid "<b>New Transaction Information</b>"
#~ msgstr "<b>Neue Buchung</b>"
#~ msgid "<b>Progress</b>"
#~ msgstr "<b>Verlauf</b>"
#~ msgid "<b>From</b>"
#~ msgstr "<b>Von</b>"
#~ msgid "<b>To</b>"
#~ msgstr "<b>Bis</b>"
#~ msgid "<b>Online Banking</b>"
#~ msgstr "<b>Onlinebanking</b>"
#~ msgid "Search from "
#~ msgstr "Suche von "
#~ msgid "Search from Root"
#~ msgstr "Suchen von Hauptkonten"
#~ msgid "Search from Sub Account"
#~ msgstr "Suchen von Unterkonten"
#~ msgid "_Search"
#~ msgstr "_Suchen"
#~ msgid "xxx"
#~ msgstr "xxx"
#~ msgid "Text book style (experimental)"
#~ msgstr "Rechnungswesen-Stil (experimentell)"
#~ msgid ""
#~ "Show parent account subtotals, indented per accounting text book practice "
#~ "(experimental)."
#~ msgstr ""
#~ "Zeige Zwischensummen für übergeordnete Konten gemäß Rechnungswesen-Stil "
#~ "eingerückt an. (experimentell)."
#~ msgid "Company Name "
#~ msgstr "Firmenname "
#~ msgid "Increasing"
#~ msgstr "Aufsteigend"
#~ msgid "Decreasing"
#~ msgstr "Absteigend"
#~ msgid "type"
#~ msgstr "Typ"
#~ msgid "full_name"
#~ msgstr "Vollständige_Bezeichnung"
#~ msgid "name"
#~ msgstr "Name"
#~ msgid "code"
#~ msgstr "Kontonummer"
#~ msgid "description"
#~ msgstr "Beschreibung"
#~ msgid "color"
#~ msgstr "Farbe"
#~ msgid "notes"
#~ msgstr "Bemerkung"
#~ msgid "commoditym"
#~ msgstr "Devise/Wertpapier M"
#~ msgid "commodityn"
#~ msgstr "Devise/Wertpapier N"
#~ msgid "hidden"
#~ msgstr "Versteckt"
#~ msgid "tax"
#~ msgstr "Steuerrelevant"
#~ msgid "placeholder"
#~ msgstr "Platzhalter"
#~ msgid "_Open Read-Only"
#~ msgstr "_Schreibgeschützt öffnen"
#~ msgid "0"
#~ msgstr "0"
#~ msgid "1 /"
#~ msgstr "1 /"
#~ msgid "07/31/2013"
#~ msgstr "07/31/2013"
#~ msgid "31/07/2013"
#~ msgstr "31/07/2013"
#~ msgid "31.07.2013"
#~ msgstr "31.07.2013"
#~ msgid "2013-07-31"
#~ msgstr "2013-07-31"
#~ msgid "2"
#~ msgstr "2"
#~ msgid "2,00"
#~ msgstr "2,00"
#~ msgid "30"
#~ msgstr "30"
#~ msgid "1234567890123456789012345678901234567890"
#~ msgstr "1234567890123456789012345678901234567890"
#~ msgid "Searching for splits to clear ..."
#~ msgstr "Buchungsteile zum Abgleichen werden gesucht..."
#~ msgid "<b>Auto-Clear Information</b>"
#~ msgstr "<b>Information zum automatischen Kontenabgleich</b>"

View File

@ -39,7 +39,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-03-14 22:08+0100\n"
"PO-Revision-Date: 2021-03-17 15:18+0000\n"
"PO-Revision-Date: 2021-03-18 22:18+0000\n"
"Last-Translator: Katerina <katerina.gakou@hotmail.com>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/gnucash/gnucash/el/"
">\n"
@ -2925,7 +2925,7 @@ msgstr "χρήστης"
#: gnucash/gtkbuilder/dialog-print-check.glade:293
#: gnucash/gtkbuilder/gnc-date-format.glade:30
msgid "Custom"
msgstr "Προσαρμοσμένο"
msgstr "Εξατομικευμένος"
#: gnucash/gnome/dialog-print-check.c:2602
#: gnucash/gtkbuilder/dialog-preferences.glade:3449
@ -30600,7 +30600,7 @@ msgstr ""
#: libgnucash/engine/Account.cpp:4390
msgid "Credit Card"
msgstr "Πιστωτική κάρτα"
msgstr "Πιστωτική Κάρτα"
#: libgnucash/engine/Account.cpp:4392
msgid "Stock"

162
po/es.po
View File

@ -7,15 +7,15 @@
# Francisco Javier Serrador <fserrador@gmail.com>, 2018.
# Carlos Manrique Enguita <UO258425@uniovi.es>, 2021.
# Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net>, 2021.
# Guille <willelopz+weblate@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: gnucash 2.7.8\n"
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug.cgi?"
"product=GnuCash&component=Translations\n"
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-03-14 22:08+0100\n"
"PO-Revision-Date: 2021-03-14 17:02+0000\n"
"Last-Translator: Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail."
"net>\n"
"PO-Revision-Date: 2021-03-28 22:29+0000\n"
"Last-Translator: Guille <willelopz+weblate@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/gnucash/gnucash/"
"es/>\n"
"Language: es\n"
@ -23,11 +23,11 @@ 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.5.2-dev\n"
"X-Generator: Weblate 4.6-dev\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Poedit-SourceCharset: UTF-8\n"
"X-Poedit-KeywordsList: <b>;</b>;<span weight=\"bold\" size=\"larger\">;</"
"span>;<span size=\"larger\" weight=\"bold\">\n"
"X-Poedit-KeywordsList: <b>;</b>;<span weight=\"bold\" size=\"larger\""
">;</span>;<span size=\"larger\" weight=\"bold\">\n"
#: bindings/guile/commodity-table.scm:44
msgid "ALL NON-CURRENCY"
@ -517,6 +517,10 @@ msgid ""
"community. For announcements of new releases, user groups etc. see the table "
"at https://wiki.gnucash.org/wiki/Mailing_Lists"
msgstr ""
"Las listas de correo son el método de comunicación preferido por la "
"comunidad de GnuCash. Para los anuncios de nuevas versiones, grupos de "
"usuarios etc, consulta la tabla en https://wiki.gnucash.org/wiki/"
"Mailing_Lists"
#: doc/tip_of_the_day.list.c:9
msgid ""
@ -1667,7 +1671,7 @@ msgstr "Corregir URL:"
#: gnucash/gnome/dialog-doclink.c:190
msgid "Enter URL like http://www.gnucash.org:"
msgstr ""
msgstr "Introducir URL tipo http://www.gnucash.org:"
#: gnucash/gnome/dialog-doclink.c:205
#, fuzzy
@ -1707,7 +1711,7 @@ msgstr "El fichero de entrada no puede abrirse."
#: gnucash/gnome/gnc-plugin-page-invoice.c:1361
#: gnucash/gnome/gnc-plugin-page-register.c:631
msgid "Manage Document Link"
msgstr ""
msgstr "Gestionar enlace de documento"
#: gnucash/gnome/dialog-doclink.c:690
#, fuzzy
@ -2183,7 +2187,7 @@ msgstr[1] "La distribución impositiva %s no existe. ¿Quiere crearla?"
#: gnucash/gnome/dialog-imap-editor.c:367
#, c-format
msgid "To see the invalid mappings, use a filter of '%s'"
msgstr ""
msgstr "Para ver las asociaciones inválidas, use un filtro de '%s'"
#: gnucash/gnome/dialog-imap-editor.c:367
#: gnucash/gnome/dialog-imap-editor.c:604
@ -4013,7 +4017,7 @@ msgstr "Abre “Encontrar Comprobante de Gasto” como diálogo"
#: gnucash/gnome/gnc-plugin-business.c:278
msgid "Business Linked Documents"
msgstr ""
msgstr "Documentos enlazados con negocios"
#: gnucash/gnome/gnc-plugin-business.c:279
#, fuzzy
@ -4366,6 +4370,8 @@ msgstr "Borrar"
#: gnucash/gnome/gnc-plugin-page-register.c:5065
msgid "'Check & Repair' is currently running, do you want to abort it?"
msgstr ""
"'Comprobar y reparar' está siendo ejecutado en este momento, ¿Desea abortar "
"la operación?"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:520
#: gnucash/gnome/gnc-plugin-page-account-tree.c:526
@ -4404,22 +4410,23 @@ msgid "Accounts"
msgstr "Cuentas"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1429
#, fuzzy, c-format
#, c-format
msgid ""
"Account %s does not have the same currency as the one you're moving "
"transactions from.\n"
"Are you sure you want to do this?"
msgstr ""
"Va a sobrescribir una transacción existente. ¿Seguro que quiere hacer esto?"
"La cuenta %s no usa la misma moneda que la cuenta desde la que está moviendo "
"la transacción.\n"
"¿Seguro que quiere hacer esto?"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1437
#, fuzzy
msgid "_Pick another account"
msgstr "_Seleccionar cuenta de transferencia"
msgstr "_Seleccionar otra cuenta"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1438
msgid "_Do it anyway"
msgstr ""
msgstr "_Hacerlo de todos modos"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1521
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1657
@ -4486,9 +4493,8 @@ msgid "Are you sure you want to do this?"
msgstr "¿Seguro que quiere hacer esto?"
#: gnucash/gnome/gnc-plugin-page-budget.c:147
#, fuzzy
msgid "Open the selected account."
msgstr "Abre la cuenta seleccionada"
msgstr "Abrir la cuenta seleccionada."
#: gnucash/gnome/gnc-plugin-page-budget.c:152
msgid "Open _Subaccounts"
@ -4506,7 +4512,7 @@ msgstr "_Borrar presupuesto"
#: gnucash/gnome/gnc-plugin-page-budget.c:160
msgid "Select this or another budget and delete it."
msgstr ""
msgstr "Seleccionar éste u otro presupuesto y eliminarlo."
#: gnucash/gnome/gnc-plugin-page-budget.c:164
#, fuzzy
@ -4802,7 +4808,7 @@ msgstr "_Liquidar factura"
#: gnucash/gnome/gnc-plugin-page-invoice.c:366
#: gnucash/gnome/gnc-plugin-page-register.c:300
msgid "_Manage Document Link..."
msgstr ""
msgstr "_Gestionar enlace de documento..."
#. Translators: This is a menu item that opens an external file or URI that may
#. be linked to the current bill, invoice, transaction, or voucher using
@ -4819,11 +4825,11 @@ msgstr "Cuenta No Enlazada"
#: gnucash/gnome/gnc-plugin-page-invoice.c:310
msgid "_Use as Default Layout for Customer Documents"
msgstr ""
msgstr "_Usar como diseño por defecto para documentos de cliente"
#: gnucash/gnome/gnc-plugin-page-invoice.c:311
msgid "_Reset Default Layout for Customer Documents"
msgstr ""
msgstr "_Reestablecer diseño por defecto para documentos de cliente"
#: gnucash/gnome/gnc-plugin-page-invoice.c:317
#, fuzzy
@ -4862,11 +4868,11 @@ msgstr "Liquidar Recibo"
#: gnucash/gnome/gnc-plugin-page-invoice.c:331
msgid "_Use as Default Layout for Vendor Documents"
msgstr ""
msgstr "_Usar como diseño por defecto para documentos de proveedor"
#: gnucash/gnome/gnc-plugin-page-invoice.c:332
msgid "_Reset Default Layout for Vendor Documents"
msgstr ""
msgstr "_Reestablecer diseño por defecto para documentos de proveedor"
#: gnucash/gnome/gnc-plugin-page-invoice.c:338
#, fuzzy
@ -4905,11 +4911,11 @@ msgstr "Comprobante"
#: gnucash/gnome/gnc-plugin-page-invoice.c:352
msgid "_Use as Default Layout for Employee Documents"
msgstr ""
msgstr "_Usar como diseño por defecto para documentos de empleado"
#: gnucash/gnome/gnc-plugin-page-invoice.c:353
msgid "_Reset Default Layout for Employee Documents"
msgstr ""
msgstr "_Reestablecer diseño por defecto para documentos de empleado"
#: gnucash/gnome/gnc-plugin-page-invoice.c:359
#, fuzzy
@ -5001,6 +5007,8 @@ msgstr "Cuenta No Enlazada"
msgid ""
"Use the current layout as default for all customer invoices and credit notes"
msgstr ""
"Usar el diseño actual como predeterminado para todas las facturas de cliente "
"y notas de crédito"
#: gnucash/gnome/gnc-plugin-page-invoice.c:389
msgid ""
@ -5056,6 +5064,8 @@ msgstr "Abre un boletín de sociedad para el titular de esta Factura"
#: gnucash/gnome/gnc-plugin-page-invoice.c:409
msgid "Use the current layout as default for all vendor bills and credit notes"
msgstr ""
"Usar el diseño actual como predeterminado para todas las facturas de "
"proveedor y notas de crédito"
#: gnucash/gnome/gnc-plugin-page-invoice.c:410
msgid ""
@ -5166,7 +5176,7 @@ msgstr "Abre un boletín de sociedad para el titular de esta Factura"
#: gnucash/gnome/gnc-plugin-page-invoice.c:445
msgid "Manage Document Link..."
msgstr ""
msgstr "Gestionar enlace de documento..."
#: gnucash/gnome/gnc-plugin-page-invoice.c:452
#: gnucash/gnome/gnc-plugin-page-register2.c:498
@ -6075,7 +6085,7 @@ msgstr "Ordenar %s por…"
#: gnucash/gnome/gnc-plugin-page-register.c:4751
#, c-format
msgid "%s %s from %s, posted %s, amount %s"
msgstr ""
msgstr "%s %s de %s, contabilizado el %s, monto %s"
#: gnucash/gnome/gnc-plugin-page-register.c:4760
#, fuzzy
@ -6086,6 +6096,8 @@ msgstr "Seleccionar Cuenta"
#: gnucash/gnome/gnc-plugin-page-register.c:4761
msgid "Several documents are linked with this transaction. Please choose one:"
msgstr ""
"Varios documentos están conectados con esta transacción. Por favor, escoja "
"uno:"
#: gnucash/gnome/gnc-plugin-page-register.c:4762
#: gnucash/gnome-search/dialog-search.c:323
@ -6838,7 +6850,7 @@ msgstr "Guión"
#: gnucash/gnome/report-menus.scm:118
msgid "A basic dashboard for your accounting data"
msgstr ""
msgstr "Un tablero básico para sus datos de contabilidad"
#: gnucash/gnome/search-owner.c:136
msgid "You have not selected an owner"
@ -7183,6 +7195,8 @@ msgid ""
"This may cause issues for future reconciliation actions on this account. "
"Please double-check this is the date you intended."
msgstr ""
"Esto puede causar problemas con acciones de reconciliación futuras en esta "
"cuenta. Por favor, compruebe que ésta sea la fecha deseada."
#: gnucash/gnome/window-reconcile.c:1852
msgid ""
@ -7682,7 +7696,7 @@ msgstr ""
#: gnucash/gnome-utils/dialog-account.c:1328
msgid ""
"An account with opening balance already exists for the desired currency."
msgstr ""
msgstr "Ya existe una cuenta con saldos iniciales para la moneda deseada."
#: gnucash/gnome-utils/dialog-account.c:1329
#, fuzzy
@ -7906,7 +7920,7 @@ msgstr "Emplear Existente"
#: gnucash/gnome-utils/dialog-dup-trans.c:148
msgid "Use +- keys to increment/decrement number"
msgstr ""
msgstr "Use las teclas +- para incrementar /reducir el número"
#: gnucash/gnome-utils/dialog-dup-trans.c:297
msgid "Action/Number"
@ -8159,7 +8173,7 @@ msgstr "nombre"
#: gnucash/gnome-utils/dialog-tax-table.c:634
msgid "Please enter new name"
msgstr ""
msgstr "Introduzca un nuevo nombre, por favor"
#: gnucash/gnome-utils/dialog-tax-table.c:635
#: gnucash/gtkbuilder/dialog-tax-table.glade:74
@ -9144,7 +9158,7 @@ msgstr "Cerrar _sin guardar"
#: gnucash/gnome-utils/gnc-main-window.c:1452
msgid "This window is closing and will not be restored."
msgstr ""
msgstr "Esta ventana se cerrará y no será restaurada."
#: gnucash/gnome-utils/gnc-main-window.c:1458
#, fuzzy
@ -10503,7 +10517,7 @@ msgstr ""
#: gnucash/gnucash-cli.cpp:185
msgid "Unknown report command '{1}'"
msgstr ""
msgstr "Comando de informe desconocido '{1}'"
#: gnucash/gnucash-cli.cpp:191
#, fuzzy
@ -10562,7 +10576,7 @@ msgstr "Opciones del Libro"
#: gnucash/gnucash-core-app.cpp:517
msgid "Show this help message"
msgstr ""
msgstr "Mostrar este mensaje de ayuda"
#: gnucash/gnucash-core-app.cpp:519
msgid "Show GnuCash version"
@ -12709,7 +12723,7 @@ msgstr ""
#: gnucash/gschemas/org.gnucash.warnings.gschema.xml.in:14
#: gnucash/gschemas/org.gnucash.warnings.gschema.xml.in:117
msgid "Confirm Window Close"
msgstr ""
msgstr "Confirme el cierre de la ventana"
#: gnucash/gschemas/org.gnucash.warnings.gschema.xml.in:15
#: gnucash/gschemas/org.gnucash.warnings.gschema.xml.in:118
@ -13980,6 +13994,9 @@ msgid ""
"If not satisfied with the available templates, please read the wiki page "
"linked below and share your new or improved template."
msgstr ""
"En caso de no estar satisfecho con las plantillas disponibles, lea por favor "
"la página de la wiki enlazada debajo y comparta sus plantillas nuevas o "
"mejoradas."
#: gnucash/gtkbuilder/assistant-hierarchy.glade:490
#, fuzzy
@ -15387,6 +15404,8 @@ msgid ""
"This account holds opening balance transactions. Only one account per "
"commodity can hold opening balance transactions."
msgstr ""
"Esta cuenta contiene las transacciones de los saldo de apertura. Únicamente "
"una cuenta por cada valor puede contener transacciones de saldo de apertura."
#: gnucash/gtkbuilder/dialog-account.glade:1564
msgid "<b>Acco_unt Type</b>"
@ -16039,6 +16058,8 @@ msgstr ""
#: gnucash/gtkbuilder/dialog-doclink.glade:178
msgid "Note: Only Document Links that are not read-only will be changed."
msgstr ""
"Nota: Únicamente los enlaces a documentos que no son de solo lectura serán "
"modificados."
#: gnucash/gtkbuilder/dialog-doclink.glade:279
#, fuzzy
@ -16053,7 +16074,7 @@ msgstr "Dibujo Ubicativo"
#: gnucash/gtkbuilder/dialog-doclink.glade:380
msgid "Enter URL like http://www.gnucash.org"
msgstr ""
msgstr "Introduzca URL como http://www.gnucash.org"
#: gnucash/gtkbuilder/dialog-doclink.glade:425
#, fuzzy
@ -16981,6 +17002,9 @@ msgid ""
"window\n"
"Press 'Close' to return to the preference window\n"
msgstr ""
"Pulse 'Reset' para usar el separador de cuentas original y cerrar la ventana "
"de preferencias\n"
"Pulse 'Cerrar' para regresar a la ventana de preferencias\n"
#: gnucash/gtkbuilder/dialog-preferences.glade:240
msgid "GnuCash Preferences"
@ -17238,7 +17262,7 @@ msgstr "Cuantos dígitos decimales automáticos se rellenarán."
#: gnucash/gtkbuilder/dialog-preferences.glade:1372
msgid "Numbers, Date, Time"
msgstr ""
msgstr "Números, Fecha, Hora"
#: gnucash/gtkbuilder/dialog-preferences.glade:1403
msgid "Perform account list _setup on new file"
@ -19216,7 +19240,7 @@ msgstr "Periodo del presupuesto último"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:116
msgid "Replace"
msgstr ""
msgstr "Reemplazar"
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:120
msgid ""
@ -20884,12 +20908,13 @@ msgstr ""
#: gnucash/import-export/bi-import/dialog-bi-import.c:534
#, c-format
msgid "Error(s) in invoice %s, all rows of this invoice ignored.\n"
msgstr ""
msgstr "Error(es) en factura %s, ignoradas todas las filas de esta factura.\n"
#: gnucash/import-export/bi-import/dialog-bi-import.c:540
#, c-format
msgid "Error(s) in invoice without id, all rows of this invoice ignored.\n"
msgstr ""
"Error(es) en factura sin id, ignoradas todas las filas de esta factura.\n"
#: gnucash/import-export/bi-import/dialog-bi-import.c:648
#, fuzzy, c-format
@ -22376,7 +22401,7 @@ msgstr "¿Coteja?"
#: gnucash/import-export/qif-imp/assistant-qif-import.c:3886
msgid "QIF import requires guile with regex support."
msgstr ""
msgstr "Importación QIF requiere guile con soporte para regex."
#: gnucash/import-export/qif-imp/dialog-account-picker.c:235
msgid "Enter a name for the account"
@ -22627,6 +22652,8 @@ msgstr ""
#, scheme-format
msgid "ERROR: ALPHAVANTAGE_API_KEY must be set for currency and quotes; see ~A"
msgstr ""
"ERROR: ALPHAVANTAGE_API_KEY tiene que ser establecida para monedas y "
"cotizaciones; ver ~A"
#: gnucash/price-quotes.scm:460
msgid "There was a system error while retrieving the price quotes."
@ -22657,7 +22684,7 @@ msgstr "¿Añado cotizaciones óptimas restantes?"
#: gnucash/price-quotes.scm:535
#, scheme-format
msgid "Found Finance::Quote version ~A."
msgstr ""
msgstr "Encontrado Finance::Quote versión ~A."
#: gnucash/python/init.py:18
#: gnucash/report/reports/example/welcome-to-gnucash.scm:49
@ -24817,19 +24844,19 @@ msgstr "Muestra"
#: gnucash/report/reports/example/sample-graphs.scm:142
msgid "Pie:"
msgstr ""
msgstr "Circular:"
#: gnucash/report/reports/example/sample-graphs.scm:147
msgid "Bar, normal:"
msgstr ""
msgstr "Barras, normal:"
#: gnucash/report/reports/example/sample-graphs.scm:152
msgid "Bar, stacked:"
msgstr ""
msgstr "Barras, superpuestas:"
#: gnucash/report/reports/example/sample-graphs.scm:157
msgid "Scatter:"
msgstr ""
msgstr "Dispersión:"
#: gnucash/report/reports/example/welcome-to-gnucash.scm:41
#, scheme-format
@ -25863,7 +25890,7 @@ msgstr "Cantidad remitida"
#: gnucash/report/reports/standard/balance-forecast.scm:56
msgid "The reserve amount is set to a minimum balance desired"
msgstr ""
msgstr "La cantidad de reserva se fija al balance mínimo deseado"
#: gnucash/report/reports/standard/balance-forecast.scm:59
#: gnucash/report/reports/standard/balance-forecast.scm:60
@ -25873,13 +25900,15 @@ msgstr "Mostrar distribución"
#: gnucash/report/reports/standard/balance-forecast.scm:62
msgid "Target amount above reserve"
msgstr ""
msgstr "Cantidad objetivo sobre la reserva"
#: gnucash/report/reports/standard/balance-forecast.scm:63
msgid ""
"The target is used to plan for a future large purchase, which will be added "
"as a line above the reserve amount."
msgstr ""
"El objetivo se usa para planificar una gran compra en el futuro, y será "
"añadido como una línea sobre la cantidad de reserva."
#: gnucash/report/reports/standard/balance-forecast.scm:67
#, fuzzy
@ -25899,7 +25928,7 @@ msgstr "Cargo"
#: gnucash/report/reports/standard/balance-forecast.scm:266
msgid "Reserve"
msgstr ""
msgstr "Reserva"
#: gnucash/report/reports/standard/balance-sheet.scm:71
#: gnucash/report/reports/standard/trial-balance.scm:574
@ -26248,7 +26277,7 @@ msgstr ""
#: gnucash/report/reports/standard/balsheet-pnl.scm:65
#: gnucash/report/reports/standard/balsheet-pnl.scm:66
msgid "Period order is most recent first"
msgstr ""
msgstr "El orden de los perîodos es el más reciente primero"
#: gnucash/report/reports/standard/balsheet-pnl.scm:68
#, fuzzy
@ -26257,17 +26286,19 @@ msgstr "Columnas de ventas individuales"
#: gnucash/report/reports/standard/balsheet-pnl.scm:69
msgid "Selecting this option will enable double-column reporting."
msgstr ""
msgstr "Seleccionar esta opción habilita el reportar en doble columna."
#: gnucash/report/reports/standard/balsheet-pnl.scm:72
msgid "Disable amount indenting"
msgstr ""
msgstr "Deshabilitar indentación de cantidades"
#: gnucash/report/reports/standard/balsheet-pnl.scm:73
msgid ""
"Selecting this option will disable amount indenting, and condense amounts "
"into a single column."
msgstr ""
"Seleccionar esta opción deshabilitará la indentación de cantidades, y "
"condensará las cantidades en una única columna."
#: gnucash/report/reports/standard/balsheet-pnl.scm:75
#: gnucash/report/trep-engine.scm:98
@ -26281,13 +26312,15 @@ msgstr "Añadir resumen de opciones."
#: gnucash/report/reports/standard/balsheet-pnl.scm:78
msgid "Account full name instead of indenting"
msgstr ""
msgstr "Nombre completo de cuenta en lugar de indentación"
#: gnucash/report/reports/standard/balsheet-pnl.scm:79
msgid ""
"Selecting this option enables full account name instead, and disables "
"indenting account names."
msgstr ""
"Seleccionar esta opción habilita el nombre de cuenta completo y deshabilita "
"los nombres de cuentas indentados."
#: gnucash/report/reports/standard/balsheet-pnl.scm:87
#, fuzzy
@ -26373,6 +26406,8 @@ msgid ""
"If several profit & loss period columns are shown, also show overall period "
"profit & loss."
msgstr ""
"En caso de que se muestren varias columnas de períodos de ganancias y "
"pérdidas, mostrar también las ganancias y pérdidas globales."
#: gnucash/report/reports/standard/balsheet-pnl.scm:248
#: gnucash/report/trep-engine.scm:600
@ -26867,11 +26902,11 @@ msgstr "Enseñar la diferencia como presupuesto - efectiva."
#: gnucash/report/reports/standard/budget.scm:58
msgid "Use accumulated amounts"
msgstr ""
msgstr "Usar cantidades acumuladas"
#: gnucash/report/reports/standard/budget.scm:59
msgid "Values are accumulated across periods."
msgstr ""
msgstr "Los valores son acumulados a través de los períodos."
#: gnucash/report/reports/standard/budget.scm:60
msgid "Show Column with Totals"
@ -27128,7 +27163,7 @@ msgstr "Transacciones Inválidas"
#: gnucash/report/reports/standard/category-barchart.scm:291
msgid "Start date must be earlier than End date"
msgstr ""
msgstr "La fecha de inicio debe ser anterior a la fecha de fin"
#: gnucash/report/reports/standard/category-barchart.scm:329
msgid "Daily Average"
@ -27588,6 +27623,7 @@ msgstr ""
#: gnucash/report/reports/standard/income-gst-statement.scm:71
msgid "This message will be removed when tax accounts are specified."
msgstr ""
"Este mensaje desaparecerá cuando las cuentas impositivas sean especificadas."
#: gnucash/report/reports/standard/income-gst-statement.scm:110
msgid "Individual sales columns"
@ -27854,7 +27890,7 @@ msgstr "Dibujo Ubicativo"
#: gnucash/report/reports/standard/invoice.scm:207
msgid "Location for Picture"
msgstr ""
msgstr "Ubicación para Imagen"
#: gnucash/report/reports/standard/invoice.scm:213
#: gnucash/report/reports/standard/register.scm:354
@ -29509,10 +29545,12 @@ msgstr "Hasta"
#: gnucash/report/stylesheets/css.scm:119
msgid "CSS code. This field specifies the CSS code for styling reports."
msgstr ""
"Código CSS. Este campo especifica el código CSS para dar estilo a los "
"reportes."
#: gnucash/report/stylesheets/css.scm:209
msgid "&lt;/style is disallowed in CSS. Using default CSS."
msgstr ""
msgstr "&lt;/style no está permitido en CSS. Usando CSS predeterminado."
#: gnucash/report/stylesheets/css.scm:228
#, fuzzy
@ -29970,7 +30008,7 @@ msgstr "Emplear expresión regular para filtrar transacción"
#: gnucash/report/trep-engine.scm:116
msgid "Transaction Filter excludes matched strings"
msgstr ""
msgstr "El filtro de transacciones excluye las cadenas de texto coincidentes"
#: gnucash/report/trep-engine.scm:118
#, fuzzy
@ -31066,7 +31104,7 @@ msgstr ""
#: libgnucash/app-utils/gnc-ui-balances.c:455
msgid "Too many uncleared splits"
msgstr ""
msgstr "Demasiadas divisiones no compensadas"
#: libgnucash/app-utils/gnc-ui-balances.c:471
msgid "The selected amount cannot be cleared."
@ -31200,6 +31238,8 @@ msgid ""
"This report was saved using a later version of GnuCash. One of the newer ~a "
"options '~a' is not available, fallback to the option '~a'."
msgstr ""
"Este informe fue guardado usando una versión más reciente de GnuCash. Una de "
"las nuevas ~a opciones '~a' no está disponible, revertir a la opción '~a'."
#: libgnucash/app-utils/option-util.c:1663
#, c-format

View File

@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-01-10 08:00+0100\n"
"PO-Revision-Date: 2021-03-17 15:18+0000\n"
"PO-Revision-Date: 2021-03-20 14:18+0000\n"
"Last-Translator: Katerina <katerina.gakou@hotmail.com>\n"
"Language-Team: Greek <https://hosted.weblate.org/projects/gnucash/glossary/"
"el/>\n"
@ -177,9 +177,8 @@ msgid "action: POS"
msgstr "ενέργεια: POS"
#. "-"
#, fuzzy
msgid "action: rebate"
msgstr "Aλλαγή τμήματος"
msgstr "ενέργεια: έκπτωση"
#. "-"
msgid "action: sell"
@ -194,41 +193,36 @@ msgid "action: transfer"
msgstr "ενέργεια: μεταφορά"
#. "-"
#, fuzzy
msgid "action: wire"
msgstr "Ώρα δημιουργίας"
msgstr "ενέργεια: τραπεζικό έμβασμα"
#. "-"
msgid "action: withdraw"
msgstr ""
msgstr "ενέργεια: ανάληψη"
#. "As in: payable aging, or: receivable aging. The aging report categorizes payables or receivables based on time buckets. This gives an overview of which bills or invoices are overdue at which time in the future. "
msgid "aging"
msgstr ""
msgstr "χρονολογική κατάσταση"
#. "A sum of money"
#, fuzzy
msgid "amount"
msgstr "μήνας"
msgstr "ποσό"
#. "The result of adding several amounts together and then dividing this total by the number of amounts"
#, fuzzy
msgid "average"
msgstr "Μέσος"
msgstr "μέσος όρος"
#. "The amount of money that is in one's account"
msgid "balance (noun)"
msgstr ""
msgstr "υπόλοιπο λογαριασμού"
#. "Balance brought forward - usually the first entry of an account statement containing the 'balance c/f' of the previous billing period or page"
#, fuzzy
msgid "balance b/f"
msgstr "Ισορροπία"
msgstr "υπόλοιπο εκ μεταφοράς"
#. "Balance carried forward - usually the last entry of an account statement to be used as 'balance b/f' on the next billing period or page"
#, fuzzy
msgid "balance c/f"
msgstr "Ισορροπία"
msgstr "υπόλοιπο σε μεταφορά"
#. "A written record of money received and paid out, showing the difference between the two total amounts"
msgid "balance sheet"
@ -248,7 +242,7 @@ msgstr "απόδειξη"
#. "see invoice owner"
msgid "bill owner"
msgstr ""
msgstr "εκδότης τιμολογίου"
#. "Conditions on paying a bill. Both an invoice and a bill have billing terms. For example, you can have 'terms' of 'Net-30', where the bill is due in full in 30 days."
msgid "billing terms"
@ -304,9 +298,8 @@ msgstr "Κλείσιμο καταγραφών"
#
#. "An article that is bought and sold. The most general term of what an account keeps track of, e.g. a currency or a stock."
#, fuzzy
msgid "commodity"
msgstr "Διάπραξη"
msgstr "προϊόν"
#. "e.g. NASDAQ"
msgid "commodity listing"
@ -345,14 +338,13 @@ msgid "credit note"
msgstr "Ο χρήστης διέκοψε την μεταφορά"
#. "The system of money used in a country"
#, fuzzy
msgid "currency"
msgstr "_Νόμισμα"
msgstr "νόμισμα"
# Translation of "custom" sucks! ("kata paraggelia"??? nah!)
#. "Custom print format (i.e. according to the user's wishes) as opposed to a template choice."
msgid "Custom"
msgstr "Προσαρμοσμένο"
msgstr "Εξατομικευμένος"
#. "Compact, well-structured presentation of informations. See https://en.wikipedia.org/wiki/Dashboard_(business)"
msgid "dashboard"
@ -365,35 +357,31 @@ msgstr "βάση δεδομένων"
#
#. "A specific numbered day of the month"
msgid "Date"
msgstr "Ημ/νία"
msgstr "Ημερομηνία"
#. "DD/MM/YY or MM/DD/YY or something else"
#, fuzzy
msgid "date format"
msgstr "Μορφή Ημ/νίας"
msgstr "μορφή ημερομηνίας"
#. "A range in time that is delimited by two distinct dates."
#, fuzzy
msgid "date range"
msgstr "ημερομηνία αλλαγής"
msgstr "εύρος ημερομηνιών"
#. "(a) A written note in an account of a sum owed or paid out. (b) A sum withdrawn from an account."
msgid "Debit (column in register)"
msgstr ""
#. "Each option has a default setting that it is shipped with, until the user changes the setting."
#, fuzzy
msgid "default"
msgstr "Εξ' ορισμού"
msgstr "προεπιλογή"
#. "see credit"
msgid "deposit (in the reconcile dialog)"
msgstr ""
#. "The process of something becoming less valuable"
#, fuzzy
msgid "depreciation"
msgstr "Έντονη ατμοσφαιρική κατακρήμνιση"
msgstr "μείωση της αξίας"
#. "1. One textfield per transaction. The text in it should describe what the transaction was about. A short descriptive phrase (up to 40 chars) 2. One textfield per account. It is intended to be a longer, 1-5 sentence description of what this account is all about."
#, fuzzy
@ -401,36 +389,32 @@ msgid "Description (column in register)"
msgstr "Η περιγραφή περιέχει"
#. "Reductions to a basic price of goods or services. Your language might distinguish between discounts dealing with payments (billing terms) and others (invoice)."
#, fuzzy
msgid "discount"
msgstr "λογαριασμός"
msgstr "έκπτωση"
#. "Important Buzzword :)"
#, fuzzy
msgid "double entry"
msgstr "διπλό"
msgstr "διπλή καταχώρηση"
#. "Transactions or bills/invoices can contain a document link which links either to some file on the local disk or to some arbitrary URL."
msgid "document link"
msgstr ""
msgstr "σύνδεσμος προς το αρχείο"
#. "Electronic mail. Some languages allow different writings, but each team should use only one. https://en.wikipedia.org/wiki/Email"
msgid "email"
msgstr ""
#. "a person who works for somebody or a company in return for wages"
#, fuzzy
msgid "employee"
msgstr "Πρότυπο"
msgstr "υπάλληλος"
#. "1. The money value of a property after all charges on it have been paid. Equity isn't debt, it's a representation of long-term capital (So combining it with liability isn't really very meaningful, except in the balance sheet. 2. (a) The value of the shares issued by a company. (b) Ordinary stocks and shares that carry no fixed interest."
#, fuzzy
msgid "equity"
msgstr "Ασφάλεια"
msgstr "ίδια κεφάλαια"
#. "Report that ... FIXME: Add description."
msgid "equity statement"
msgstr ""
msgstr "κατάσταση μεταβολών ιδίων κεφαλαίων"
#. "A trusted third party that holds a payment or deposit until a transaction is completed. In the US, many mortgage companies set up an escrow account when you get a mortgage. You pay into the account every month and they disburse amounts out of the escrow to pay for hazard insurance and property taxes. So they are holding funds 'in escrow' to complete the transactions (paying insurance and taxes)."
#, fuzzy
@ -438,23 +422,20 @@ msgid "escrow (account)"
msgstr "προσωρινά"
#. "The relation in value between the money used in different countries"
#, fuzzy
msgid "exchange rate"
msgstr "Εναλλαγή Κεφαλαία-Μικρά"
msgstr "τιμή συναλλάγματος"
#. "in the account creation dialog??"
#, fuzzy
msgid "field"
msgstr "Πεδίο"
msgstr "πεδίο"
#. "Any piece of information (text, graphics, executable) put together and given a name. All the information you have on the hard drive is arranged as a collection of files."
msgid "file"
msgstr "αρχείο"
#. "-"
#, fuzzy
msgid "file type"
msgstr "Τύπος αρχείου:"
msgstr "τύπος αρχείου"
#. "-"
msgid "financial calculator: interest rate"
@ -471,12 +452,11 @@ msgstr "Ο_νόματα Συναρτήσεων"
#. "Free software is a matter of liberty, not price … see https://en.wikipedia.org/wiki/Free_software"
msgid "free software"
msgstr ""
msgstr "ελεύθερο λογισμικό"
#. "An increase in wealth; profit; advantage (See also: capital gains)"
#, fuzzy
msgid "gain"
msgstr "Βροχή"
msgstr "κέρδος"
#. "Name of an automatically created account to get imbalanced transactions back in balance"
#, fuzzy
@ -499,9 +479,8 @@ msgid "interest"
msgstr "Δίκτυο"
#. "A list of goods sold or services provided together with the prices charged; see also: a bill. In Gnucash, an 'invoice' is a statement that we sent out (to a customer), whereas a 'bill' is one that we received (from a vendor)."
#, fuzzy
msgid "invoice"
msgstr "αρχάριος"
msgstr "τιμολόγιο"
#. "In business accounting: Jobs are a mechanism by which you can group multiple invoices or bills that belong to the same customer or vendor. The job describes a (larger) piece of work or a task undertaken on order, for which one or many invoices or bills will be issued."
msgid "job"
@ -518,20 +497,17 @@ msgid "liabilities/equity"
msgstr ""
#. "A sum of money that is lent (by a bank), see also: financial calculator, Mortgage"
#, fuzzy
msgid "loan"
msgstr "Κορεάτικα"
msgstr "δάνειο"
#. "Annual Percentage Rate, includes in contrast to the Nominal Rate some of the various costs to obtain a loan."
#, fuzzy
msgid "loan: APR"
msgstr "Κορεάτικα"
msgstr "δάνειο: ΣΕΠΕ"
#
#. "The money lost in business activity"
#, fuzzy
msgid "loss"
msgstr "Κλείσιμο"
msgstr "χασούρα"
#. "name of an automatically created account"
#, fuzzy

View File

@ -7,15 +7,15 @@
# Gabriel Ortiz Severino <gabrielortizseverino@gmail.com>, 2021.
# Pablo <ppicapietra@gmail.com>, 2021.
# Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net>, 2021.
# Guille <willelopz+weblate@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: gnucash-glossary 1.8.9\n"
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-01-10 08:00+0100\n"
"PO-Revision-Date: 2021-03-14 17:02+0000\n"
"Last-Translator: Jaime Marquínez Ferrándiz <weblate@jregistros.fastmail.net>"
"\n"
"PO-Revision-Date: 2021-03-20 22:04+0000\n"
"Last-Translator: Guille <willelopz+weblate@gmail.com>\n"
"Language-Team: Spanish <https://hosted.weblate.org/projects/gnucash/glossary/"
"es/>\n"
"Language: es\n"
@ -198,7 +198,7 @@ msgstr "acción: transferencia"
#. "-"
msgid "action: wire"
msgstr ""
msgstr "acción: transferir"
#. "-"
msgid "action: withdraw"
@ -371,7 +371,7 @@ msgstr "Debe (columna en el libro), Cargo"
#. "Each option has a default setting that it is shipped with, until the user changes the setting."
msgid "default"
msgstr "defecto"
msgstr "predeterminado/a"
#. "see credit"
msgid "deposit (in the reconcile dialog)"
@ -465,7 +465,7 @@ msgstr "importar"
#. "Report that ... FIXME: add description. This report used to be called the 'Profit & Loss', but it was renamed on 2004-07-13."
msgid "income statement"
msgstr ""
msgstr "declaración de ingresos"
#. "Money charged for borrowing money, or paid to somebody who invests money"
msgid "interest"
@ -506,9 +506,8 @@ msgid "Lost Accounts"
msgstr "Cuentas perdidas"
#. "A particular collection of items that were bought in one transaction. A lot is typically formed when the item is bought, and is closed when the item is sold out. Needed e.g. for U.S. tax purposes."
#, fuzzy
msgid "Lot"
msgstr "Tot."
msgstr "Lote"
#. "Combine two books into one (see book)."
#, fuzzy
@ -566,7 +565,7 @@ msgstr "beneficio neta"
#. "Your net worth is your assets minus your liabilities. If your accounts are balanced, your net worth should equal your equity plus your net profit."
msgid "net worth"
msgstr ""
msgstr "patrimonio neto"
#. "One textfield per transaction that can hold explanatory text about the transaction."
msgid "notes (register)"

View File

@ -10,7 +10,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-01-10 08:00+0100\n"
"PO-Revision-Date: 2021-02-03 11:41+0000\n"
"PO-Revision-Date: 2021-03-21 13:29+0000\n"
"Last-Translator: Avi Markovitz <avi.markovitz@gmail.com>\n"
"Language-Team: Hebrew <https://hosted.weblate.org/projects/gnucash/glossary/"
"he/>\n"
@ -20,7 +20,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
"n % 10 == 0) ? 2 : 3));\n"
"X-Generator: Weblate 4.5-dev\n"
"X-Generator: Weblate 4.5.2\n"
#. "English Definition (Dear translator: This file will never be visible to the user! It should only serve as a tool for you, the translator. Nothing more.)"
msgid "Term (Dear translator: This file will never be visible to the user!)"

View File

@ -1,7 +1,7 @@
# Dutch translation of GNUCash glossary.
# Copyright (C) 2006 Free Software Foundation, Inc.
# Bernard Meens <meensb@xs4all.nl>, 2006.
# Geert Janssens <geert@kobaltwit.be>, 2020
# Geert Janssens <geert@kobaltwit.be>, 2020, 2021.
# eol <joshua.de.clercq@gmail.com>, 2021.
msgid ""
msgstr ""
@ -9,8 +9,8 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-01-10 08:00+0100\n"
"PO-Revision-Date: 2021-01-24 21:32+0000\n"
"Last-Translator: eol <joshua.de.clercq@gmail.com>\n"
"PO-Revision-Date: 2021-03-27 11:29+0000\n"
"Last-Translator: Geert Janssens <geert@kobaltwit.be>\n"
"Language-Team: Dutch <https://hosted.weblate.org/projects/gnucash/glossary/"
"nl/>\n"
"Language: nl\n"
@ -18,7 +18,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.5-dev\n"
"X-Generator: Weblate 4.6-dev\n"
#. "English Definition (Dear translator: This file will never be visible to the user! It should only serve as a tool for you, the translator. Nothing more.)"
msgid "Term (Dear translator: This file will never be visible to the user!)"
@ -314,7 +314,7 @@ msgstr "Credit"
#. "-"
msgid "Credit Card"
msgstr "Credit Card"
msgstr "Creditcard"
#. "A transfer of money direct from one bank account to another, without using a cheque"
msgid "credit transfer"
@ -454,7 +454,7 @@ msgstr "inkomensverklaring"
#. "Money charged for borrowing money, or paid to somebody who invests money"
msgid "interest"
msgstr "interest"
msgstr "intrest"
#. "A list of goods sold or services provided together with the prices charged; see also: a bill. In Gnucash, an 'invoice' is a statement that we sent out (to a customer), whereas a 'bill' is one that we received (from a vendor)."
msgid "invoice"
@ -598,7 +598,7 @@ msgstr "betaling"
#. "An account where no transactions may be posted to; transactions can only be posted to subaccounts of this account, so this account serves as a placeholder in the hierarchy"
msgid "placeholder"
msgstr "verzamelboek"
msgstr "aggregatie"
#. "A set of investments owned by a person"
msgid "portfolio"
@ -638,7 +638,7 @@ msgstr "winst"
#. "OBSOLETE. This report was renamed to 'income statement' on 2004-07-13. Old definition: A list that shows the amount of money spent compared with the amount earned by a business in a particular period"
msgid "Profit & Loss"
msgstr "Winst & Verlies"
msgstr "Winst- en verliesrekening"
#. "-"
msgid "quick-fill"
@ -698,7 +698,7 @@ msgstr "rapport vorm: vertikaal"
#. "name of an equity account (?); to be distinguished from the opening balance."
msgid "Retained Earnings"
msgstr "Winst reserves"
msgstr "Ingehouden winst"
#. "Create a new transaction that is the inverse of the old one. When you add the two together they completely cancel out. Accounts use this instead of voiding transactions, usually because the prior month has been closed and can no longer be changed, or the entire accounting system is 'write only'."
msgid "reverse transaction, to (Action in the register)"
@ -738,7 +738,7 @@ msgstr "bron"
#. "One of the two or several parts a transaction is divided into"
msgid "split"
msgstr "deel"
msgstr "boekregel"
#. "This sets the particular design or shape of a report."
msgid "style sheet"

View File

@ -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-03-14 22:08+0100\n"
"PO-Revision-Date: 2021-03-17 08:18+0000\n"
"PO-Revision-Date: 2021-03-28 11:29+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.5.2-dev\n"
"X-Generator: Weblate 4.6-dev\n"
"X-Poedit-Basepath: .\n"
#: bindings/guile/commodity-table.scm:44
@ -1459,7 +1459,7 @@ msgstr "הצגת/עריכת לקוח"
#: gnucash/gnome/dialog-customer.c:911
msgid "Customer's Jobs"
msgstr "מטלות של הלקוח"
msgstr "ריכוזי לקוח"
#: gnucash/gnome/dialog-customer.c:913
msgid "Customer's Invoices"
@ -1575,7 +1575,7 @@ msgstr "נא להזין פורטן כגון http://www.gnucash.org:"
#: gnucash/gnome/dialog-doclink.c:205
msgid "Existing Document Link is"
msgstr "קישור המסמך הקיים הוא"
msgstr "הקישור למסמך הוא"
#: gnucash/gnome/dialog-doclink.c:461 gnucash/gnome/dialog-doclink.c:506
msgid "File Found"
@ -1608,7 +1608,7 @@ msgstr "לא ניתן לערוך פריט עיסקי."
#: gnucash/gnome/gnc-plugin-page-invoice.c:1361
#: gnucash/gnome/gnc-plugin-page-register.c:631
msgid "Manage Document Link"
msgstr "ניהול קישור מסמכים"
msgstr "ניהול קישור מסמך"
#: gnucash/gnome/dialog-doclink.c:690
msgid "Transaction can not be modified."
@ -1674,13 +1674,13 @@ msgid ""
"Double click on the entry in the Available column to modify the document "
"link."
msgstr ""
"יש ללחוץ לחיצה כפולה על עמודת המזהה כדי לעבור אל הפריט העסקי.\n"
"יש ללחוץ לחיצה כפולה על עמודת הקישור כדי לפתוח את המסמך המקושר.\n"
"יש ללחוץ לחיצה כפולה על עמודת זמינות כדי לשנות את קישור המסמך."
"הקשה כפולה על עמודת המזהה כדי לעבור אל הפריט העסקי.\n"
"הקשה כפולה על עמודת הקישור כדי לפתוח את המסמך המקושר.\n"
"הקשה כפולה על עמודת זמינות כדי לשנות את קישור המסמך."
#: gnucash/gnome/dialog-doclink.c:1033
msgid "Business Document Links"
msgstr "קישורים עסקיים"
msgstr "קישורי מסמכים עסקיים"
#: gnucash/gnome/dialog-employee.c:199
msgid "You must enter a username."
@ -2370,7 +2370,7 @@ msgstr "הערות לחשבונית"
#: gnucash/gtkbuilder/dialog-job.glade:217
#: gnucash/report/reports/standard/invoice.scm:317
msgid "Billing ID"
msgstr "מזהה חשבונית ספק"
msgstr "מזהה אמצעי תשלום לספק"
#: gnucash/gnome/dialog-invoice.c:3342 gnucash/gnome/dialog-invoice.c:3376
#: gnucash/gnome/dialog-invoice.c:3410
@ -3263,7 +3263,7 @@ msgstr "הצגת/עריכת ספק"
#: gnucash/gnome/dialog-vendor.c:716
msgid "Vendor's Jobs"
msgstr "מטלות של הספק"
msgstr "ריכוזי ספק"
#: gnucash/gnome/dialog-vendor.c:718
msgid "Vendor's Bills"
@ -4377,7 +4377,7 @@ msgstr "אפשרויות"
#: gnucash/gnome/gnc-plugin-page-budget.c:223
msgid "Estimate"
msgstr "הערך"
msgstr "הערכה"
#: gnucash/gnome/gnc-plugin-page-budget.c:224
msgid "All Periods"
@ -4414,7 +4414,7 @@ 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."
@ -4595,7 +4595,7 @@ msgstr "_תשלום חשבון"
#: gnucash/gnome/gnc-plugin-page-invoice.c:366
#: gnucash/gnome/gnc-plugin-page-register.c:300
msgid "_Manage Document Link..."
msgstr "_ניהול קישורי מסמך…"
msgstr "_ניהול קישור מסמך…"
#. Translators: This is a menu item that opens an external file or URI that may
#. be linked to the current bill, invoice, transaction, or voucher using
@ -5064,7 +5064,7 @@ msgstr "לקוחות"
#: gnucash/gnome/gnc-plugin-page-owner-tree.c:631
msgid "Jobs"
msgstr "מטלות"
msgstr "ריכוזים"
#: gnucash/gnome/gnc-plugin-page-owner-tree.c:636
msgid "Vendors"
@ -6321,7 +6321,7 @@ msgstr "_הסרת פיצולים"
#: gnucash/gnome/gnc-split-reg.c:1299
msgid "Change a Transaction Linked Document"
msgstr "שינוי קישור מסמך תנועה"
msgstr "שינוי קישור למסמך המקושר לתנועה"
#: gnucash/gnome/gnc-split-reg.c:1440
#: gnucash/gnome-utils/gnc-tree-control-split-reg.c:963
@ -7599,7 +7599,7 @@ msgstr "מטבע ספרים"
#: gnucash/gnome-utils/dialog-options.c:1320
msgid "Default lot tracking policy"
msgstr "מדיניות מעקב דבוקה ברירת מחדל"
msgstr "מדיניות מעקב דבוקת ברירת מחדל"
#: gnucash/gnome-utils/dialog-options.c:1343
msgid "Default gain/loss account"
@ -14069,9 +14069,9 @@ msgid ""
"for the share distribution. You can also enter a description of the "
"transaction, or accept the default one."
msgstr ""
"הזנת התאריך ומספר המניות שנוספו או נגרעו מתוצאת מפיצול או מיזוג מניות. "
"נא להזין תאריך ומספר המניות שנוספו או נגרעו כתוצאה מפיצול או מיזוג מניות. "
"למיזוג מניות (פיצולים שליליים) נא להשתמש בערך שלילי בהתפלגות המניה. ניתן גם "
"להזין תיאור תנועה או לקבל את את ברירת המחדל."
"להזין תיאור תנועה או לקבל את תאור ברירת המחדל."
#: gnucash/gtkbuilder/assistant-stock-split.glade:151
msgid "Desc_ription"
@ -15185,7 +15185,7 @@ msgid ""
"Existing relative file path links will be converted to absolute ones by "
"combining them with the existing path head unless box unticked."
msgstr ""
"נתיב יחסי לקישורי קובצים יומרו לנתיב מוחלט על ידי שילובם עם הנתיב הראשי "
"נתיב יחסי לקישורי קבצים יומרו לנתיב מוחלט על ידי שילובם עם הנתיב הראשי "
"הקיים, אלה אם הוסר הסימון בתיבת הסימון."
#: gnucash/gtkbuilder/dialog-doclink.glade:140
@ -15256,9 +15256,9 @@ msgid ""
"Double click on the entry in the Available column to modify the document "
"link."
msgstr ""
"יש ללחוץ לחיצה כפולה על עמודת התיאור כדי לקפוץ אל העסקה.\n"
"יש ללחוץ לחיצה כפולה על עמודת הקישור כדי לפתוח את המסמך המקושר.\n"
"יש ללחוץ לחיצה כפולה על עמודת הזמינות כדי לשנות את קישור המסמך."
"הקשה כפולה על עמודת התיאור כדי לדילוג אל העסקה.\n"
"הקשה כפולה על עמודת הקישור כדי לפתוח את המסמך המקושר.\n"
"הקשה כפולה על עמודת הזמינות כדי לשנות את קישור המסמך."
#: gnucash/gtkbuilder/dialog-employee.glade:166
msgid ""
@ -15846,7 +15846,7 @@ msgstr "_ניקוי"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:61
msgid "Scrub the highlighted lot"
msgstr "סגירת הדבוקה המודגשת"
msgstr "ניקוי הדבוקה המודגשת"
#: gnucash/gtkbuilder/dialog-lot-viewer.glade:78
msgid "Delete the highlighted lot"
@ -18272,7 +18272,7 @@ 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
@ -18295,7 +18295,7 @@ msgstr "שימוש בערך ממוצע מכל התקופות 'בפועל', עב
msgid ""
"GnuCash will estimate budget values for the selected accounts from past "
"transactions."
msgstr "גנוקאש יעריך את ערכי תקציב לחשבונות שנבחרו לפי תנועות העבר."
msgstr "גנוקאש תבצעה אמדן ערכי תקציב לחשבונות שנבחרו על פי תנועות העבר."
#: gnucash/gtkbuilder/gnc-plugin-page-budget.glade:389
msgid "Use Average"
@ -19874,7 +19874,7 @@ msgstr "מזהה נמען"
#: gnucash/import-export/bi-import/dialog-bi-import-gui.c:145
msgid "Billing-ID"
msgstr "מזהה חשבונית ספק"
msgstr "מזהה אמצעי תשלום לספק"
#: gnucash/import-export/bi-import/dialog-bi-import-gui.c:152
#: gnucash/register/ledger-core/gncEntryLedgerModel.c:92
@ -24188,7 +24188,7 @@ msgstr "שימוש בקווים מתחת לעמודות מספרים מסוכמ
#: gnucash/report/reports/standard/income-statement.scm:85
#: gnucash/report/reports/standard/trial-balance.scm:125
msgid "Display accounts as hyperlinks"
msgstr "הצגת חשבונות כהיפר קישורים"
msgstr "הצגת חשבונות כהיפר-קישורים"
#: gnucash/report/reports/standard/account-summary.scm:111
#: gnucash/report/reports/standard/balance-sheet.scm:111
@ -24992,7 +24992,7 @@ msgstr ""
#: gnucash/report/reports/standard/balsheet-pnl.scm:102
msgid "Display amounts as hyperlinks"
msgstr "הצגת סכומים כהיפר קישורים"
msgstr "הצגת סכומים כהיפר-קישורים"
#: gnucash/report/reports/standard/balsheet-pnl.scm:103
msgid "Shows each amounts in the table as a hyperlink to a register or report."
@ -25551,9 +25551,7 @@ msgstr "הכללת תקופות מכווצות לפני הבחירה."
msgid ""
"Include in report previous periods as single collapsed column (one for all "
"periods before starting)"
msgstr ""
"הכללת תקופות קודמות בדוח כעמודה מכווצת אחת (אחת לכל התקופות הקודמות כעמודה "
"ראשונה)"
msgstr "הכללת תקופות קודמות בדוח בעמודה בודדת (עמודה אחת לכל התקופות הקודמות)"
#: gnucash/report/reports/standard/budget.scm:87
msgid "Include collapsed periods after selected."
@ -25564,7 +25562,7 @@ msgid ""
"Include in report further periods as single collapsed column (one for all "
"periods after ending and to the end of budget range)"
msgstr ""
"הכללת תקופות עתידיות בדוח כעמודה מכווצת אחת (אחת לכל התקופות העתידיות בסוף "
"הכללת תקופות עתידיות בדוח בעמודה בודדת (עמודה אחת לכל התקופות העתידיות בסוף "
"הדוח ולאחר טווח התקציב)"
#. Translators: Abbreviation for "Budget" amount
@ -26418,7 +26416,8 @@ msgstr "פרטי חשבונית"
#: gnucash/report/reports/standard/invoice.scm:121
msgid "Invoice date, due date, billing ID, terms, job details"
msgstr ""
"תאריך חשבונית, תאריך פרעון, מזהה חשבונית ספק, תנאי תשלום, פרטי מרכז חיובים"
"תאריך חשבונית, תאריך פרעון, מזהה אמצעי תשלום לספק, תנאי תשלום, פרטי מרכז "
"חיובים"
#: gnucash/report/reports/standard/invoice.scm:123
#: gnucash/report/reports/standard/invoice.scm:124
@ -27255,7 +27254,7 @@ msgid ""
"with one straight line. Unfortunately, the plotting tool can't handle that."
msgstr ""
"כל המחירים שנמצאו הם מאותו תאריך. מה שיוביל לתרשים עם קו ישר אחד. למרבה "
"הצער, הכלי התרשים לא יכול להתמודד עם זה."
"הצער, כלי התרשים לא יכול להתמודד עם זה."
#: gnucash/report/reports/standard/price-scatter.scm:330
msgid "Price Scatterplot"
@ -28096,7 +28095,7 @@ msgstr "אפשור קישורים"
#: gnucash/report/stylesheets/head-or-tail.scm:96
#: gnucash/report/stylesheets/plain.scm:58
msgid "Enable hyperlinks in reports."
msgstr "אפשור היפרקישורים בדוחות."
msgstr "אפשור היפר-קישורים בדוחות."
#: gnucash/report/stylesheets/footer.scm:83
#: gnucash/report/stylesheets/footer.scm:431
@ -28807,9 +28806,9 @@ msgid ""
"expense accounts to equity, and must usually be excluded from periodic "
"reporting."
msgstr ""
"כברירת מחדל, לרוב לא נדרש לכלול תנועות סגירה בדוח תנועות. תנועות סגירה הן "
"יתרות שעברו מחשבונות הכנסות והוצאות לחשבון הון העצמי, בדרך כלל יש להחריג "
"תנועות סגירה מדיווח תקופתי."
"על פי רוב לא נדרש לכלול תנועות סגירה בדוח תנועות. תנועות סגירה הן יתרות "
"שעברו מחשבונות הכנסות והוצאות לחשבון הון העצמי, בדרך כלל יש להחריג תנועות "
"סגירה מדיווח תקופתי."
#: gnucash/report/trep-engine.scm:700
msgid "Filter on these accounts."
@ -28937,7 +28936,7 @@ msgstr "לא מוצג סכום."
#: gnucash/report/trep-engine.scm:1057
msgid "Enable hyperlinks in amounts."
msgstr "אפשור היפרקישורים בסכומים."
msgstr "אפשור היפר-קישורים בסכומים."
#: gnucash/report/trep-engine.scm:1062
msgid "Reverse amount display for certain account types."
@ -29906,7 +29905,7 @@ msgstr "עלות ממוצעת של דבוקות פתוחות."
#: libgnucash/engine/policy.c:62
msgid "Manually select lots."
msgstr "בחירת דבוקות ידנית."
msgstr "בחירת דבוקות באופן ידני."
#: libgnucash/engine/qofbookslots.h:66
msgid "Use Trading Accounts"
@ -29998,7 +29997,7 @@ msgstr ""
#: libgnucash/engine/ScrubBusiness.c:616
#, c-format
msgid "Checking business lots in account %s: %u of %u"
msgstr "בדיקת דבוקות עסקיות בחשבון %s: %u מ %u"
msgstr "בדיקת דבוקות עסקיות בחשבון %s: %u מ- %u"
#: libgnucash/engine/ScrubBusiness.c:670
#, c-format

View File

@ -5,10 +5,10 @@
msgid ""
msgstr ""
"Project-Id-Version: GnuCash 4.2\n"
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug.cgi?"
"product=GnuCash&component=Translations\n"
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-03-14 22:08+0100\n"
"PO-Revision-Date: 2021-03-02 22:38+0000\n"
"PO-Revision-Date: 2021-03-25 12:29+0000\n"
"Last-Translator: Milo Ivir <mail@milotype.de>\n"
"Language-Team: Croatian <https://hosted.weblate.org/projects/gnucash/gnucash/"
"hr/>\n"
@ -18,7 +18,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.5\n"
"X-Generator: Weblate 4.5.2-dev\n"
#: bindings/guile/commodity-table.scm:44
msgid "ALL NON-CURRENCY"
@ -1844,10 +1844,9 @@ msgstr "Odnosi se na porez"
#. Translators: %s is a full account name.
#. This is a label in Search Account from context menu.
#: gnucash/gnome/dialog-find-account.c:474
#, fuzzy, c-format
#| msgid "Accounts in '%s'"
#, c-format
msgid "Su_b-accounts of '%s'"
msgstr "Konti u „%s“"
msgstr "Po_dkonta od „%s”"
#: gnucash/gnome/dialog-find-transactions2.c:107
#: gnucash/gnome/dialog-find-transactions.c:105
@ -4336,8 +4335,8 @@ msgid ""
"of another account"
msgstr ""
"Popis prikazuje objekte, koji koriste konto koji želiš izbrisati.\n"
"Prije brisanja, objekte moraš obrisati ili promijeniti, tako da koriste "
"jedan drugi konto"
"Prije brisanja, objekte moraš izbrisati ili promijeniti, tako da\n"
"koriste jedan drugi konto"
#: gnucash/gnome/gnc-plugin-page-account-tree.c:1728
#, c-format
@ -4429,10 +4428,8 @@ msgid "Edit Note"
msgstr "Uredi zabilješku"
#: gnucash/gnome/gnc-plugin-page-budget.c:183
#, fuzzy
#| msgid "Edit note for the selected account and period"
msgid "Edit note for the selected account and period."
msgstr "Uredi zabilješku za odabrani račun i razdoblje"
msgstr "Uredi zabilješku za odabrani konto i razdoblje."
#: gnucash/gnome/gnc-plugin-page-budget.c:187
#: gnucash/report/reports/standard/budget.scm:39
@ -4440,10 +4437,8 @@ msgid "Budget Report"
msgstr "Proračunski izvještaj"
#: gnucash/gnome/gnc-plugin-page-budget.c:189
#, fuzzy
#| msgid "Print the current report"
msgid "Run the budget report."
msgstr "Ispiši trenutačni izvještaj"
msgstr "Pokreni proračunski izvještaj."
#: gnucash/gnome/gnc-plugin-page-budget.c:199
msgid "Refresh this window."
@ -4470,10 +4465,8 @@ msgid "Note"
msgstr "Napomena"
#: gnucash/gnome/gnc-plugin-page-budget.c:226
#, fuzzy
#| msgid "Account Report"
msgid "Run Report"
msgstr "Izvještaj o kontu"
msgstr "Pokreni izvještaj"
#: gnucash/gnome/gnc-plugin-page-budget.c:310
#: gnucash/gnome/gnc-plugin-page-budget.c:351
@ -13587,10 +13580,9 @@ msgstr "<b>Opis kategorije</b>"
#. %s is an account template
#: gnucash/gtkbuilder/assistant-hierarchy.glade:384
#, fuzzy, c-format
#| msgid "Accounts in '%s'"
#, c-format
msgid "Accounts in %s"
msgstr "Konti u „%s“"
msgstr "Konta u %s"
#: gnucash/gtkbuilder/assistant-hierarchy.glade:477
msgid ""
@ -15866,26 +15858,20 @@ msgid "Search the Account List"
msgstr "Pretraži popis konta"
#: gnucash/gtkbuilder/dialog-find-account.glade:38
#, fuzzy
#| msgid "Close on Jump"
msgid "Close _on Jump"
msgstr "Zatvori prilikom prelaska"
msgstr "_Zatvori prilikom prelaska"
#: gnucash/gtkbuilder/dialog-find-account.glade:55
msgid "_Jump To"
msgstr "_Prijeđi na"
#: gnucash/gtkbuilder/dialog-find-account.glade:127
#, fuzzy
#| msgid "All accounts"
msgid "All _accounts"
msgstr "Svi konti"
msgstr "_Sva konta"
#: gnucash/gtkbuilder/dialog-find-account.glade:165
#, fuzzy
#| msgid " Search "
msgid "Search scope"
msgstr " Traži "
msgstr "Opseg pretraživanja"
#: gnucash/gtkbuilder/dialog-find-account.glade:191
msgid "Account Full Name"
@ -15899,7 +15885,7 @@ msgstr ""
#: gnucash/gtkbuilder/dialog-find-account.glade:258
msgid "Sea_rch"
msgstr ""
msgstr "Tr_aži"
#: gnucash/gtkbuilder/dialog-find-account.glade:294
msgid ""
@ -15908,7 +15894,7 @@ msgid ""
"if account should not be shown, this will be temporarily overridden."
msgstr ""
"Odaberi redak i klikni „Prijeđi na”, za prijelaz na konto u kontnom planu.\n"
"Ukoliko se konto ne prikaže, ovo će biti privremeno prepisano."
"Ukoliko se konto ne prikaže, ovo će se privremeno prepisati."
#: gnucash/gtkbuilder/dialog-imap-editor.glade:35
msgid "Import Map Editor"
@ -21961,7 +21947,7 @@ msgstr "Neprepoznata radnja „~a”."
#: gnucash/import-export/qif-imp/qif-parse.scm:254
#, scheme-format
msgid "Unrecognized status '~a'. Defaulting to uncleared."
msgstr "Neprepoznati status „~s”. Upotrijebit će se „nepotvrđeno”."
msgstr "Neprepoznato stanje „~a”. Koristit će se „nepotvrđeno”."
#: gnucash/import-export/qif-imp/qif-to-gnc.scm:213
msgid "QIF import: Name conflict with another account."

View File

@ -5,14 +5,15 @@
# Triyan W. Nugroho <triyan.wn@gmail.com>, 2020.
# Ferdinand Tampubolon <dnandz@gmail.com>, 2021.
# Reza Almanda <rezaalmanda27@gmail.com>, 2021.
# Syahmin Sukhairi <syahmin@gmail.com>, 2021.
msgid ""
msgstr ""
"Project-Id-Version: GnuCash 4.4\n"
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug.cgi?"
"product=GnuCash&component=Translations\n"
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-03-14 22:08+0100\n"
"PO-Revision-Date: 2021-02-20 04:50+0000\n"
"Last-Translator: Reza Almanda <rezaalmanda27@gmail.com>\n"
"PO-Revision-Date: 2021-03-21 17:29+0000\n"
"Last-Translator: Syahmin Sukhairi <syahmin@gmail.com>\n"
"Language-Team: Indonesian <https://hosted.weblate.org/projects/gnucash/"
"gnucash/id/>\n"
"Language: id\n"
@ -20,7 +21,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.5\n"
"X-Generator: Weblate 4.5.2-dev\n"
#: bindings/guile/commodity-table.scm:44
msgid "ALL NON-CURRENCY"
@ -15989,7 +15990,7 @@ msgstr "Pencarian abaikan huruf besar/kecil tersedia pada 'Nama Lengkap Akun'."
#: gnucash/gtkbuilder/dialog-find-account.glade:258
msgid "Sea_rch"
msgstr ""
msgstr "Ca_ri"
#: gnucash/gtkbuilder/dialog-find-account.glade:294
msgid ""

2427
po/nl.po

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@ msgstr ""
"Report-Msgid-Bugs-To: https://bugs.gnucash.org/enter_bug."
"cgi?product=GnuCash&component=Translations\n"
"POT-Creation-Date: 2021-03-14 22:08+0100\n"
"PO-Revision-Date: 2021-03-15 01:02+0000\n"
"PO-Revision-Date: 2021-03-25 21:29+0000\n"
"Last-Translator: Wellington Terumi Uemura <wellingtonuemura@gmail.com>\n"
"Language-Team: Portuguese (Brazil) <https://hosted.weblate.org/projects/"
"gnucash/gnucash/pt_BR/>\n"

View File

@ -1,11 +1,13 @@
#!/usr/bin/env perl
use 5.012;
use warnings;
use strict;
use Encode;
use Git;
use Cwd qq(getcwd);
use Text::Wrap;
binmode(STDOUT, ":utf8");
sub print_notes {
my $notes = shift;
@ -72,11 +74,11 @@ my $repo = Git->repository(Directory => getcwd);
$repo->command('describe') =~ m/(^[.\d]+)/;
my $tag = $1 or die "Unable to determine tag";
my (@bugs, @improves);
my (@bugs, @improves, %l10n);
my ($revs, $c) = $repo->command_output_pipe('log', '--topo-order', '--format=%s<|>%b<|>%N<{}>', "$tag..HEAD");
my $item = "";
while(<$revs>) {
my $rev = $_;
my $rev = decode('UTF-8', $_);
chomp($rev);
$item .= ' ' if $item;
$item .= $rev;
@ -85,12 +87,20 @@ while(<$revs>) {
if ($item =~ m/^[\s\[]*[Bb]ug[\]\s:\-\#]*[0-9]+/) {
$item =~ s/^[\s\[]*[Bb]ug[\]\s:\-\#]*([0-9]+)[ -]*/Bug $1 - /;
push @bugs, $item;
} elsif ($item =~ m/^[Ll]10[Nn]:([a-z]{2}(?:[-_][A-Z]{2})?)/) {
$l10n{$1}++ unless ($item =~ /glossary/i);
}elsif ($item =~ m/^Translation/) {
map { $l10n{$_}++ } $item =~ m/GnuCash\/Program \(([[:alpha:][:punct:][:space:]]+)\)/g;
} elsif ($item =~ m/^(?:Merge|[Ll]1[08][Nn]|[Ii]1[08][Nn])/) {
my ($sum, $desc, $notes) = split('\<\|\>', $item);
push @improves, $item if ($desc || $notes);
} else {
push @improves, $item;
}
$item = '';
}
}
$repo->command_close_pipe($revs, $c);
print "\nThe following bugs have been fixed:\n";
@ -103,6 +113,8 @@ foreach my $other (@improves) {
text_format($other, ' ', ' ');
}
print "\nNew and Updated Translations: ", join(", ", keys(%l10n)), "\n\n";
print "*****HTML OUTPUT*****\n\n";
print "<h6>Between $tag and XXX, the following bugfixes were accomplished:</h6>\n<ul>\n";
foreach my $bug (sort @bugs) {
@ -113,3 +125,4 @@ foreach my $other (@improves) {
html_format_other($other);
}
print "</ul>\n";
print "<p>New and Updated Translations: ", join(", ", sort(keys(%l10n))), "</p>\n";