Vadim Zeitlin pushed to branch master at wxWidgets / wxWidgets
Commits:
59a96853 by Vadim Zeitlin at 2025-05-25T17:47:00+02:00
Soft wrap a paragraph in the release notes
No real changes, just improve the text appearance on GitHub.
- - - - -
d4d5de4c by Vadim Zeitlin at 2025-05-25T19:52:44+02:00
Fix agreement of verbs with nouns in "For Debugging" text
They got out of sync after the mentions of the other compiler versions
were removed.
- - - - -
ce7273b3 by Miguel Gimenez at 2025-05-26T17:54:07+02:00
Improve wxPropertyGrid::SetSortFunction() documentation
Information about the returned value was incomplete, list all the
possibilities.
Closes #25452.
- - - - -
cd07eabd by Blake-Madden at 2025-05-26T17:54:07+02:00
Add support for "Do not show this again" checkbox to wxInfoBar
Closes #25394.
- - - - -
3d15cc39 by MPHAM at 2025-05-26T17:54:07+02:00
Fix wxDisplay invalidation on connected displays change
Pointers stored in wxDisplay became dangling when display cache was
invalidated due to a change in the monitors connected to the system,
resulting in fatal crashes when using them.
Fix this by using shared pointers internally to ensure that any existing
wxDisplay objects remain valid, in C++ sense, after display cache
invalidation, even if they switch to a special "disconnected" state
indicating that they don't represent a valid display any longer.
Closes #25396.
Closes #25407.
- - - - -
82622843 by 0tkl at 2025-05-26T18:04:50+02:00
Update Simplified Chinese translations
Closes #25450.
- - - - -
19 changed files:
- docs/changes.txt
- docs/doxygen/overviews/xrc_format.h
- docs/release.md
- include/wx/display.h
- include/wx/generic/infobar.h
- include/wx/gtk/infobar.h
- include/wx/private/display.h
- interface/wx/display.h
- interface/wx/infobar.h
- interface/wx/propgrid/propgrid.h
- locale/zh_CN.po
- misc/schema/xrc_schema.rnc
- samples/dialogs/dialogs.cpp
- src/common/dpycmn.cpp
- src/generic/infobar.cpp
- src/gtk/infobar.cpp
- src/msw/display.cpp
- src/msw/window.cpp
- src/xrc/xh_infobar.cpp
Changes:
=====================================
docs/changes.txt
=====================================
@@ -291,8 +291,9 @@ All:
- Support constructing wxString from std::string_view (Ian McInerney, #23711).
- Update 3rd party libraries to latest versions (Maarten Bent, #25112, #25325).
- Update translations for Corsican (Patriccollu, #25420), Czech (PB, #25412),
- French (#25400), German (tstkr), Romanian (Cătălin Răceanu, #25403), Turkish
- (Kerim Demirkaynak, #25267) and Ukrainian (Yuri Chornoivan, #25410).
+ French (#25400), German (tstkr), Romanian (Cătălin Răceanu, #25403),
+ Simplified Chinese (0tkl, #25450), Turkish (Kerim Demirkaynak, #25267) and
+ Ukrainian (Yuri Chornoivan, #25410).
- Update language database (Ulrich Telle, #23437).
- Use UTF-8 for environment variables (#25101).
- Use variadic templates for vararg functions (#22981).
@@ -314,6 +315,7 @@ All (GUI):
- Add wxApp::SetAppearance() to explicitly set dark or light mode (#24461).
- Add wxAuiManager::{Save,Load}Layout() (#24235).
- Add wxGrid::CopySelection() (Blake Madden, #24124).
+- Add wxInfoBar::ShowCheckBox() (Blake Madden, #25394).
- Add wxRadioButton group support to wxGenericValidator (Bill Su, #24264).
- Add wxRibbonBar::GetPageById() (Blake Madden, #24211).
- Add wxStatusBar::AddFieldControl() (AliKet, #24092).
@@ -419,6 +421,7 @@ wxMSW:
- Fix saving geometry of Aero-snapped windows (Randalphwa).
- Fix security issue when running on secure desktop (Sean Budd).
- Fix using strings with Unicode characters outside of BMP (#25128).
+- Fix wxDisplay invalidation on connected display change (Marcel Pham, #25396).
- Fix wxOverlay and wxScrolled auto-scrolling in RTL layout (AliKet, #25413).
- Fix wxPropertyGrid expander buttons appearance in high DPI (#24304).
- Implement support for wxBG_STYLE_TRANSPARENT (Maarten Bent, #23412).
=====================================
docs/doxygen/overviews/xrc_format.h
=====================================
@@ -1394,11 +1394,21 @@ page.
this property is of class "button" has name (can be one of standard
button ID) and has optional label property. If no buttons are added
to the info bar, the default "Close" button will be shown.}
+@row3col{checkboxlabel, @ref overview_xrcformat_type_text,
+ Shows a checkbox at the bottom of the infobar with the specified label.
+ Note that specifying this attribute automatically turns on @c
+ wxINFOBAR_CHECKBOX style (optional). @since 3.3.0.}
+@row3col{checked, @ref overview_xrcformat_type_bool,
+ If showing the checkbox, indicates whether it should be checked by
+ default (optional). @since 3.3.0.}
@endTable
Example:
@code
<object class="wxInfoBar">
+ <style>wxINFOBAR_CHECKBOX</style>
+ <checkboxlabel>Do not show this again</checkboxlabel>
+ <checked>1</checked>
<effectduration>1000</effectduration>
<showeffect>wxSHOW_EFFECT_EXPAND</showeffect>
<hideeffect>wxSHOW_EFFECT_SLIDE_TO_RIGHT</hideeffect>
=====================================
docs/release.md
=====================================
@@ -41,11 +41,7 @@ For developing applications with wxWidgets you need to download the compiler-ind
Unpack both files into the same directory so that `include` and `lib` directories are at the same level after unpacking. You should be able to compile and link applications using wxWidgets in both debug and release modes but the debug symbols are provided only for debug libraries in this archive, see below for the release build debug symbols.
-Note that if you're setting up a new project using these binaries, the simplest
-way to do it is to use the provided `wxwidgets.props` file: for this, open the
-`View|Property Manager` menu item in the IDE, select "Add Existing Property
-Sheet..." from the project context menu and browse to this file in the file
-open dialog.
+Note that if you're setting up a new project using these binaries, the simplest way to do it is to use the provided `wxwidgets.props` file: for this, open the `View|Property Manager` menu item in the IDE, select "Add Existing Property Sheet..." from the project context menu and browse to this file in the file open dialog.
Please see the [instructions in the manual](
https://docs.wxwidgets.org/3.3.0/plat_msw_binaries.html) for more details.
@@ -55,8 +51,8 @@ End users may download one of `wxMSW-3.3.0_vc14x_x64_ReleaseDLL.7z` or `wxMSW-3.
### For Debugging
-* Microsoft Visual C++ users: Files `wxMSW-3.3.0_vc14x_x64_ReleasePDB.7z` contain the debug symbols for the release build of the DLLs. Download them if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines.
-* gcc users: Currently the debug symbols are not available for the release build of the DLLs (only the debug versions of the DLLs contains the debug symbols).
+* Microsoft Visual C++ users: File `wxMSW-3.3.0_vc14x_x64_ReleasePDB.7z` contains the debug symbols for the release build of the DLLs. Download it if you want to debug your own applications in release build or if you want to get meaningful information from mini-dumps retrieved from your users machines.
+* gcc users: Currently the debug symbols are not available for the release build of the DLLs (only the debug versions of the DLLs contain the debug symbols).
### Binary File Download Verification
=====================================
include/wx/display.h
=====================================
@@ -57,7 +57,7 @@ public:
// dtor is not virtual as this is a concrete class not meant to be derived
// from
-
+ ~wxDisplay();
// return the number of available displays, valid parameters to
// wxDisplay ctor are from 0 up to this number
@@ -79,6 +79,9 @@ public:
// return true if the object was initialized successfully
bool IsOk() const { return m_impl != nullptr; }
+ // return true if the display has not been unplugged yet
+ bool IsConnected() const;
+
// get the full display size
wxRect GetGeometry() const;
@@ -159,7 +162,7 @@ private:
// the real implementation
- wxDisplayImpl *m_impl;
+ wxObjectDataPtr<wxDisplayImpl> m_impl;
wxDECLARE_NO_COPY_CLASS(wxDisplay);
=====================================
include/wx/generic/infobar.h
=====================================
@@ -13,11 +13,17 @@
class WXDLLIMPEXP_FWD_CORE wxBitmapButton;
class WXDLLIMPEXP_FWD_CORE wxStaticBitmap;
class WXDLLIMPEXP_FWD_CORE wxStaticText;
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
// ----------------------------------------------------------------------------
// wxInfoBar
// ----------------------------------------------------------------------------
+enum
+{
+ wxINFOBAR_CHECKBOX = 0x0010
+};
+
class WXDLLIMPEXP_CORE wxInfoBarGeneric : public wxInfoBarBase
{
public:
@@ -25,13 +31,13 @@ public:
// hidden
wxInfoBarGeneric() { Init(); }
- wxInfoBarGeneric(wxWindow *parent, wxWindowID winid = wxID_ANY)
+ wxInfoBarGeneric(wxWindow *parent, wxWindowID winid = wxID_ANY, long style = 0)
{
Init();
- Create(parent, winid);
+ Create(parent, winid, style);
}
- bool Create(wxWindow *parent, wxWindowID winid = wxID_ANY);
+ bool Create(wxWindow *parent, wxWindowID winid = wxID_ANY, long style = 0);
// implement base class methods
@@ -75,6 +81,14 @@ public:
// get the currently used effect animation duration
int GetEffectDuration() const { return m_effectDuration; }
+ // Whether the checkbox was checked at the time of the window
+ // being closed.
+ // This should be called in a client's handler for the
+ // wxID_CLOSE button being clicked.
+ bool IsCheckBoxChecked() const { return m_checked; }
+
+ // Sets whether the checkbox should be shown.
+ void ShowCheckBox(const wxString& checkBoxText, bool checked);
// overridden base class methods
// -----------------------------
@@ -100,6 +114,8 @@ private:
// common part of all ctors
void Init();
+ virtual bool UseNative() const { return false; }
+
// handler for the close button
void OnButton(wxCommandEvent& event);
@@ -120,9 +136,10 @@ private:
// different controls making up the bar
- wxStaticBitmap *m_icon;
- wxStaticText *m_text;
- wxBitmapButton *m_button;
+ wxStaticBitmap *m_icon = nullptr;
+ wxStaticText *m_text = nullptr;
+ wxBitmapButton *m_button = nullptr;
+ wxCheckBox *m_checkbox = nullptr;
// the effects to use when showing/hiding and duration for them: by default
// the effect is determined by the info bar automatically depending on its
@@ -131,6 +148,8 @@ private:
m_hideEffect;
int m_effectDuration;
+ bool m_checked = false;
+
wxDECLARE_EVENT_TABLE();
wxDECLARE_NO_COPY_CLASS(wxInfoBarGeneric);
};
=====================================
include/wx/gtk/infobar.h
=====================================
@@ -16,21 +16,21 @@
// wxInfoBar for GTK+
// ----------------------------------------------------------------------------
-// notice that the native GTK+ implementation is only available since
-// (relatively recent) 2.18 so we inherit from the generic one to be able to
+// notice that the native GTK+ implementation is only available since 2.18,
+// so we inherit from the generic one to be able to
// fall back to it if GTK+ version is determined to be too old during run-time
class WXDLLIMPEXP_CORE wxInfoBar : public wxInfoBarGeneric
{
public:
wxInfoBar() { Init(); }
- wxInfoBar(wxWindow *parent, wxWindowID winid = wxID_ANY)
+ wxInfoBar(wxWindow *parent, wxWindowID winid = wxID_ANY, long style = 0)
{
Init();
- Create(parent, winid);
+ Create(parent, winid, style);
}
- bool Create(wxWindow *parent, wxWindowID winid = wxID_ANY);
+ bool Create(wxWindow *parent, wxWindowID winid = wxID_ANY, long style = 0);
virtual ~wxInfoBar();
@@ -62,6 +62,8 @@ protected:
private:
void Init() { m_impl = nullptr; }
+ virtual bool UseNative() const override;
+
// add a button with the given id/label and return its widget
GtkWidget *GTKAddButton(wxWindowID btnid,
const wxString& label = wxString());
=====================================
include/wx/private/display.h
=====================================
@@ -26,41 +26,10 @@ public:
// Create the display if necessary using CreateDisplay(), otherwise just
// get it from cache.
- wxDisplayImpl* GetDisplay(unsigned n)
- {
- // Normally, m_impls should be cleared if the number of displays in the
- // system changes because InvalidateCache() must be called. However in
- // some ports (e.g. Mac right now, see #18318), cache invalidation never
- // happens, so we can end up with m_impls size being out of sync with
- // the actual number of monitors. Compensate for this here by checking
- // if the index is invalid and invalidating the cache at least in this
- // case.
- //
- // Note that this is still incorrect because we continue using outdated
- // information if the first monitor is disconnected, for example. The
- // only real solution is to ensure that InvalidateCache() is called,
- // but for now this at least avoids crashes when a new display is
- // connected.
- if ( n >= m_impls.size() )
- {
- // This strange two-step resize is done to clear all the existing
- // elements: they may not be valid any longer if the number of
- // displays has changed.
- m_impls.resize(0);
- m_impls.resize(GetCount());
- }
- else if ( m_impls[n] )
- {
- // Just return the existing display if we have it.
- return m_impls[n];
- }
-
- m_impls[n] = CreateDisplay(n);
- return m_impls[n];
- }
+ wxObjectDataPtr<wxDisplayImpl> GetDisplay(unsigned n);
// Return the primary display object, creating it if necessary.
- wxDisplayImpl* GetPrimaryDisplay();
+ wxObjectDataPtr<wxDisplayImpl> GetPrimaryDisplay();
// get the total number of displays
virtual unsigned GetCount() = 0;
@@ -78,7 +47,7 @@ public:
virtual int GetFromWindow(const wxWindow *window);
// Trigger recreation of wxDisplayImpl when they're needed the next time.
- virtual void InvalidateCache() { ClearImpls(); }
+ virtual void UpdateOnDisplayChange();
protected:
// create a new display object
@@ -86,12 +55,22 @@ protected:
// it can return a null pointer if the display creation failed
virtual wxDisplayImpl *CreateDisplay(unsigned n) = 0;
+ // check if the given display is still connected and update its properties
+ // if this is the case (notably its index)
+ //
+ // mark display as disconnected and return false otherwise
+ //
+ // default implementation considers all displays as being not connected any
+ // longer, port-specific implementations should override it to keep the
+ // objects corresponding to the still connected displays valid
+ virtual bool RefreshOnDisplayChange(wxDisplayImpl& impl) const;
+
private:
// Delete all the elements of m_impls vector and clear it.
void ClearImpls();
// On-demand populated vector of wxDisplayImpl objects.
- wxVector<wxDisplayImpl*> m_impls;
+ wxVector<wxObjectDataPtr<wxDisplayImpl>> m_impls;
wxDECLARE_NO_COPY_CLASS(wxDisplayFactory);
};
@@ -100,7 +79,7 @@ private:
// wxDisplayImpl: base class for all wxDisplay implementations
// ----------------------------------------------------------------------------
-class wxDisplayImpl
+class wxDisplayImpl : public wxObjectRefData
{
public:
// virtual dtor for this base class
@@ -144,14 +123,22 @@ public:
virtual bool ChangeMode(const wxVideoMode& mode) = 0;
#endif // wxUSE_DISPLAY
+ // return true, if this display is still connected physically to system
+ bool IsConnected() const { return m_isConnected; }
+
+ // indicate that this display is not connected to system anymore
+ void Disconnect() { m_isConnected = false; }
+
protected:
// create the object providing access to the display with the given index
wxDisplayImpl(unsigned n) : m_index(n) { }
// the index of this display (0 is always the primary one)
- const unsigned m_index;
+ unsigned m_index;
+ // true, if this display is still connected physically to system
+ bool m_isConnected = true;
friend class wxDisplayFactory;
=====================================
interface/wx/display.h
=====================================
@@ -207,6 +207,26 @@ public:
*/
static wxSize GetStdPPI();
+ /**
+ Returns @true if the display has not been unplugged yet.
+
+ This function can return @false if the display configuration has
+ changed since this wxDisplay object has been created and either this
+ display is known not to be connected to the system any more (support
+ for detecting this is currently only implemented in wxMSW) or the
+ display status is now unknown (which happens in all the other ports
+ detecting the display configuration changes, e.g. wxOSX).
+
+ A disconnected object is still usable, but all accessor functions
+ return invalid fallback values (e.g. 0 for the width and height) and so
+ such objects are not really useful any more. It is recommended to
+ recreate them when the display configuration changes, which can be done
+ in wxEVT_DISPLAY_CHANGED handler of any top-level window.
+
+ @since 3.3.0
+ */
+ bool IsConnected() const;
+
/**
Returns @true if the display is the primary display. The primary
display is the one whose index is 0.
=====================================
interface/wx/infobar.h
=====================================
@@ -6,6 +6,18 @@
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+/**
+ Styles to pass to the constructor or Create().
+
+ @since 3.3.0
+ */
+enum
+{
+ /// Include support for showing a customizable checkbox()
+ /// at the bottom of a wxInfoBar.
+ wxINFOBAR_CHECKBOX = 0x0080
+};
+
/**
An info bar is a transient window shown at top or bottom of its parent
window to display non-critical information to the user.
@@ -86,7 +98,7 @@ public:
@see Create()
*/
- wxInfoBar(wxWindow *parent, wxWindowID winid = wxID_ANY);
+ wxInfoBar(wxWindow *parent, wxWindowID winid = wxID_ANY, long style = 0);
/**
Create the info bar window.
@@ -106,8 +118,10 @@ public:
@param winid
The id of the info bar window, usually unused as currently no
events are generated by this class.
+ @param style
+ Optional styles to apply to the control.
*/
- bool Create(wxWindow *parent, wxWindowID winid = wxID_ANY);
+ bool Create(wxWindow *parent, wxWindowID winid = wxID_ANY, long style = 0);
/**
Add a button to be shown in the info bar.
@@ -272,6 +286,33 @@ public:
/// Return the effect animation duration currently used.
int GetEffectDuration() const;
+ /**
+ Return whether the checkbox was checked at the time of the window being
+ closed.
+
+ This function is typically used in the button handler for the @c
+ wxEVT_BUTTON message for @c wxID_CLOSE, which would typically call
+ Dismiss() to hide the info bar and then call this function to see if
+ the checkbox was checked and save its value to reuse it the next time
+ (e.g. to avoid showing the same message again in a common use case).
+
+ See the dialogs sample for an example.
+
+ @since 3.3.0
+ */
+ bool IsCheckBoxChecked() const;
+
+ /**
+ Sets whether the checkbox should be shown, its label, and whether it is
+ checked by default.
+
+ @note The wxINFOBAR_CHECKBOX style must be used for this control
+ if calling this function.
+
+ @since 3.3.0
+ */
+ void ShowCheckBox(const wxString& checkBoxText, bool checked);
+
/**
Overridden base class methods changes the font of the text message.
=====================================
interface/wx/propgrid/propgrid.h
=====================================
@@ -434,7 +434,8 @@ enum class wxPGKeyboardAction
Call wxPropertyGrid::SetSortFunction() to set it.
Sort function should return a value greater than 0 if position of @a p1 is
- after @a p2. So, for instance, when comparing property names, you can use
+ after @a p2, negative if position of @a p1 is before @a p2 and 0 if they are
+ equivalent. So, for instance, when comparing property names, you can use the
following implementation:
@code
=====================================
locale/zh_CN.po
=====================================
@@ -10,15 +10,15 @@ msgstr ""
"Project-Id-Version: wxWidgets 3.3\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-05-14 20:23+0200\n"
-"PO-Revision-Date: 2022-07-11 10:47+0800\n"
-"Last-Translator: James Pan <
boja...@mail.ru>\n"
-"Language-Team: wxWidgets tranlators <
wx-tran...@wxwidgets.org>\n"
+"PO-Revision-Date: 2025-05-26 22:50+0800\n"
+"Last-Translator: 0tkl <
tkl.zh...@gmail.com>\n"
+"Language-Team: wxWidgets translators <
wx-tran...@wxwidgets.org>\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.1.1\n"
+"X-Generator: Poedit 3.6\n"
#: ../include/wx/defs.h:2582
msgid "All files (*.*)|*.*"
@@ -102,11 +102,11 @@ msgstr "无法将句柄与 I/O 完成端口相关联"
#: ../include/wx/msw/private/fswatcher.h:148
msgid "Unexpectedly new I/O completion port was created"
-msgstr "异常地创建了新的 I/O 完成端口"
+msgstr "意外创建了新的 I/O 完成端口"
#: ../include/wx/msw/private/fswatcher.h:213
msgid "Unable to post completion status"
-msgstr "无法贴上完成状态"
+msgstr "无法提交完成状态"
#: ../include/wx/msw/private/fswatcher.h:262
msgid "Unable to dequeue completion packet"
@@ -172,19 +172,19 @@ msgstr "无法关闭 '%s' 路径"
#: ../include/wx/xtiprop.h:175
msgid "SetProperty called w/o valid setter"
-msgstr "调用 SetProperty 时未带有效的 setter"
+msgstr "调用 SetProperty 时未提供有效的 setter"
#: ../include/wx/xtiprop.h:184
msgid "GetProperty called w/o valid getter"
-msgstr "调用 GetProperty 时未带有效的 getter"
+msgstr "调用 GetProperty 时未提供有效的 getter"
#: ../include/wx/xtiprop.h:193
msgid "AddToPropertyCollection called w/o valid adder"
-msgstr "调用 AddToPropertyCollection 时未带有效的 adder"
+msgstr "调用 AddToPropertyCollection 时未提供有效的 adder"
#: ../include/wx/xtiprop.h:202
msgid "GetPropertyCollection called w/o valid collection getter"
-msgstr "调用 GetPropertyCollection 时未带有效的 collection getter"
+msgstr "调用 GetPropertyCollection 时未提供有效的 collection getter"
#: ../include/wx/xtiprop.h:255
msgid "AddToPropertyCollection called on a generic accessor"
@@ -720,7 +720,6 @@ msgid "SPECIAL"
msgstr "特殊键"
#: ../src/common/accelcmn.cpp:373
-#, fuzzy
msgid "Ctrl"
msgstr "控制键"
@@ -753,7 +752,7 @@ msgstr "无效的显示模式 '%s'。"
#: ../src/common/cmdline.cpp:875
#, c-format
msgid "Option '%s' can't be negated"
-msgstr "選项’%s’无法取消"
+msgstr "选项 '%s' 无法取消"
#: ../src/common/cmdline.cpp:889
#, c-format
@@ -826,7 +825,7 @@ msgstr "数字"
#: ../src/common/cmdline.cpp:1506
msgid "double"
-msgstr "双倍"
+msgstr "实数"
#: ../src/common/cmdline.cpp:1510
msgid "date"
@@ -869,13 +868,13 @@ msgstr "颜色名称:错误的颜色规范:%s"
#: ../src/common/config.cpp:259
#, c-format
msgid "Invalid value %ld for a boolean key \"%s\" in config file."
-msgstr "配置文件中的 %ld 值 (对映至布尔键 \"%s\"表项) 无效。"
+msgstr "配置文件中布尔键 \"%2$s\" 的值 %1$ld 无效。"
#: ../src/common/config.cpp:526
#, c-format
msgid ""
"Environment variables expansion failed: missing '%c' at position %u in '%s'."
-msgstr "环境变量扩展失败:'%c' 没有出现在位置 %u / '%s'。"
+msgstr "环境变量展开失败:'%3$s' 中在位置 %2$u 处缺少 '%1$c'。"
#: ../src/common/config.cpp:576 ../src/msw/regconf.cpp:272
#, c-format
@@ -895,7 +894,7 @@ msgstr "未勾选"
#. TRANSLATORS: Checkbox state name
#: ../src/common/datavcmn.cpp:2174
msgid "undetermined"
-msgstr "未判定"
+msgstr "不确定"
#: ../src/common/datetimefmt.cpp:1875
msgid "today"
@@ -1052,12 +1051,12 @@ msgstr ""
#: ../src/common/debugrpt.cpp:729
msgid "Failed to execute curl, please install it in PATH."
-msgstr "无法执行 curl,请在 PATH 变量所指的目录中安装 curl。"
+msgstr "无法执行 curl,请将其安装到 PATH 路径中。"
#: ../src/common/debugrpt.cpp:742
#, c-format
msgid "Failed to upload the debug report (error code %d)."
-msgstr "无法上传调试报告 (错误号 %d)。"
+msgstr "无法上传调试报告 (错误码 %d)。"
#: ../src/common/docview.cpp:366
msgid "Save As"
@@ -1065,7 +1064,7 @@ msgstr "另存为"
#: ../src/common/docview.cpp:457
msgid "Discard changes and reload the last saved version?"
-msgstr "放弃更改,并重新加载最近保存的版本?"
+msgstr "放弃更改并重新加载上次保存的版本吗?"
#: ../src/common/docview.cpp:488
msgid "unnamed"
@@ -1074,7 +1073,7 @@ msgstr "未命名"
#: ../src/common/docview.cpp:513
#, c-format
msgid "Do you want to save changes to %s?"
-msgstr "是否保存修改至 %s?"
+msgstr "是否保存对 %s 的更改?"
#: ../src/common/docview.cpp:521 ../src/common/docview.cpp:560
#: ../src/common/stockitem.cpp:195
@@ -1083,35 +1082,33 @@ msgstr "保存(&S)"
#: ../src/common/docview.cpp:522 ../src/common/docview.cpp:560
msgid "&Discard changes"
-msgstr ""
+msgstr "放弃更改(&D)"
#: ../src/common/docview.cpp:523
-#, fuzzy
msgid "Do&n't close"
-msgstr "不保存"
+msgstr "不关闭(&n)"
#: ../src/common/docview.cpp:553
-#, fuzzy, c-format
+#, c-format
msgid "Do you want to save changes to %s before closing it?"
-msgstr "是否保存修改至 %s?"
+msgstr "是否在关闭 %s 前保存更改?"
#: ../src/common/docview.cpp:559
-#, fuzzy
msgid "The document must be closed."
-msgstr "文本无法保存。"
+msgstr "必须关闭此文档。"
#: ../src/common/docview.cpp:571
#, c-format
msgid "Saving %s failed, would you like to retry?"
-msgstr ""
+msgstr "保存 %s 失败,是否要重试?"
#: ../src/common/docview.cpp:577
msgid "Retry"
-msgstr ""
+msgstr "重试"
#: ../src/common/docview.cpp:577
msgid "Discard changes"
-msgstr ""
+msgstr "放弃更改"
#: ../src/common/docview.cpp:679
#, c-format
@@ -1219,12 +1216,12 @@ msgstr "无法关闭文件 '%s'"
#: ../src/common/ffile.cpp:106 ../src/common/ffile.cpp:131
#, c-format
msgid "Read error on file '%s'"
-msgstr "读文件 '%s' 出错"
+msgstr "读取文件 '%s' 出错"
#: ../src/common/ffile.cpp:148
#, c-format
msgid "Write error on file '%s'"
-msgstr "写文件 '%s' 出错"
+msgstr "写入文件 '%s' 出错"
#: ../src/common/ffile.cpp:182
#, c-format
@@ -1283,7 +1280,7 @@ msgstr "无法读取文件描述符 %d"
#: ../src/common/file.cpp:351
#, c-format
msgid "can't write to file descriptor %d"
-msgstr "无法写文件描述符 %d"
+msgstr "无法写入文件描述符 %d"
#: ../src/common/file.cpp:390
#, c-format
@@ -1316,26 +1313,24 @@ msgid ""
" and additionally, the existing configuration file was renamed to \"%s\" and "
"couldn't be renamed back, please rename it to its original path \"%s\""
msgstr ""
+"此外,现有配置文件已重命名为 \"%s\",且无法恢复原名,请手动将其重命名回原始路"
+"径 \"%s\""
#: ../src/common/fileconf.cpp:389
-#, fuzzy
msgid " due to the following error:\n"
-msgstr "并且包含以下文件:\n"
+msgstr "由于以下错误:\n"
#: ../src/common/fileconf.cpp:412
-#, fuzzy
msgid "failed to rename the existing file"
-msgstr "无法读取文本文件 “%s”。"
+msgstr "无法重命名现有文件"
#: ../src/common/fileconf.cpp:421
-#, fuzzy
msgid "failed to create the new file directory"
-msgstr "无法获取工作目录"
+msgstr "无法创建新文件目录"
#: ../src/common/fileconf.cpp:428
-#, fuzzy
msgid "failed to move the file to the new location"
-msgstr "无法将 Web 视图设置为现代仿真级别"
+msgstr "无法将文件移动到新位置"
#: ../src/common/fileconf.cpp:462
#, c-format
@@ -1350,40 +1345,40 @@ msgstr "无法打开用户配置文件 '%s'。"
#: ../src/common/fileconf.cpp:483
#, c-format
msgid "Changes won't be saved to avoid overwriting the existing file \"%s\""
-msgstr "为了防止重写已有的 \"%s\" 文件,不会保存更改。"
+msgstr "为了防止重写已有的 \"%s\" 文件,不会保存更改"
#: ../src/common/fileconf.cpp:583
msgid "Error reading config options."
-msgstr "读配置选项错误。"
+msgstr "读取配置选项错误。"
#: ../src/common/fileconf.cpp:593
msgid "Failed to read config options."
-msgstr "无法读配置选项。"
+msgstr "无法读取配置选项。"
#: ../src/common/fileconf.cpp:700
#, c-format
msgid "file '%s': unexpected character %c at line %zu."
-msgstr "文件 '%s':异常字符 %c 存在于行 %zu。"
+msgstr "文件 '%1$s':第 %3$zu 行存在异常字符 %2$c。"
#: ../src/common/fileconf.cpp:736
#, c-format
msgid "file '%s', line %zu: '%s' ignored after group header."
-msgstr "文件 ‘%s’,行%zu:忽略群组标头之后的 '%s'。"
+msgstr "文件 '%s',第 %zu 行:忽略群组标头之后的 '%s'。"
#: ../src/common/fileconf.cpp:765
#, c-format
msgid "file '%s', line %zu: '=' expected."
-msgstr "文件 '%s',行 %zu:应有 '='。"
+msgstr "文件 '%s',第 %zu 行:应有 '='。"
#: ../src/common/fileconf.cpp:778
#, c-format
msgid "file '%s', line %zu: value for immutable key '%s' ignored."
-msgstr "文件 '%s',行 %zu:已忽略不可变密钥 '%s' 的值。"
+msgstr "文件 '%s',第 %zu 行:已忽略不可变键 '%s' 的值。"
#: ../src/common/fileconf.cpp:788
#, c-format
msgid "file '%s', line %zu: key '%s' was first found at line %d."
-msgstr "文件 '%s',行 %zu:键 '%s' 第一次出现在 %d 行。"
+msgstr "文件 '%s',第 %zu 行:键 '%s' 第一次出现在第 %d 行。"
#: ../src/common/fileconf.cpp:1091
#, c-format
@@ -1391,9 +1386,8 @@ msgid "Config entry name cannot start with '%c'."
msgstr "配置条目名不能以 '%c' 开头。"
#: ../src/common/fileconf.cpp:1146
-#, fuzzy
msgid "Failed to create configuration file directory."
-msgstr "未能创建字体配置对象。"
+msgstr "无法创建配置文件目录。"
#: ../src/common/fileconf.cpp:1158
msgid "can't open user configuration file."
@@ -1401,7 +1395,7 @@ msgstr "无法打开用户配置文件。"
#: ../src/common/fileconf.cpp:1172
msgid "can't write user configuration file."
-msgstr "无法写用户配置文件。"
+msgstr "无法写入用户配置文件。"
#: ../src/common/fileconf.cpp:1178
msgid "Failed to update user configuration file."
@@ -1429,12 +1423,12 @@ msgstr "忽略对不可变表项 '%s' 的修改。"
#: ../src/common/fileconf.cpp:2118
#, c-format
msgid "trailing backslash ignored in '%s'"
-msgstr "'%s' 尾部的斜线将被忽略"
+msgstr "'%s' 尾部的反斜杠将被忽略"
#: ../src/common/fileconf.cpp:2153
#, c-format
msgid "unexpected \" at position %d in '%s'."
-msgstr "异常的 \" 发现在 %d 位于 '%s'。"
+msgstr "在字符串 '%2$s' 的位置 %1$d 处发现意外的 \"。"
#: ../src/common/filefn.cpp:474
#, c-format
@@ -1444,7 +1438,7 @@ msgstr "无法复制 '%s' 文件至 '%s'"
#: ../src/common/filefn.cpp:487
#, c-format
msgid "Impossible to get permissions for file '%s'"
-msgstr "无法获得许可权限访问 '%s'文件"
+msgstr "不可能获得文件 '%s' 的权限"
#: ../src/common/filefn.cpp:501
#, c-format
@@ -1454,12 +1448,12 @@ msgstr "不可能重写文件 '%s'"
#: ../src/common/filefn.cpp:508
#, c-format
msgid "Error copying the file '%s' to '%s'."
-msgstr "无法复制文件 '%s' 至 ‘%s’。"
+msgstr "无法将文件 '%s' 复制到 '%s'。"
#: ../src/common/filefn.cpp:556
#, c-format
msgid "Impossible to set permissions for the file '%s'"
-msgstr "不可能设置文件 '%s' 的许可权限"
+msgstr "不可能设置文件 '%s' 的权限"
#: ../src/common/filefn.cpp:606
#, c-format
@@ -1509,12 +1503,12 @@ msgstr "文件 (%s)"
#: ../src/common/filename.cpp:182
#, c-format
msgid "Failed to open '%s' for reading"
-msgstr "无法读取文件 '%s'"
+msgstr "无法打开欲读取的文件 '%s'"
#: ../src/common/filename.cpp:187
#, c-format
msgid "Failed to open '%s' for writing"
-msgstr "无法写入文件 '%s'"
+msgstr "无法打开欲写入的文件 '%s'"
#: ../src/common/filename.cpp:199
msgid "Failed to close file handle"
@@ -1531,17 +1525,17 @@ msgstr "无法打开临时文件。"
#: ../src/common/filename.cpp:2862
#, c-format
msgid "Failed to modify file times for '%s'"
-msgstr "无法为 '%s' 修改文件时间"
+msgstr "无法修改文件 '%s' 的时间"
#: ../src/common/filename.cpp:2877
#, c-format
msgid "Failed to touch the file '%s'"
-msgstr "无法设置 '%s' 文件的修改和访问时间"
+msgstr "无法更新文件 '%s' 的修改、访问时间"
#: ../src/common/filename.cpp:2958
#, c-format
msgid "Failed to retrieve file times for '%s'"
-msgstr "无法提取 '%s' 文件时间"
+msgstr "无法提取文件 '%s' 的时间"
#: ../src/common/filepickercmn.cpp:39 ../src/common/filepickercmn.cpp:40
msgid "Browse"
@@ -1570,35 +1564,35 @@ msgstr "保存文件 %s"
#: ../src/common/fmapbase.cpp:144
msgid "Western European (ISO-8859-1)"
-msgstr "西欧语系 (ISO-8859-1)"
+msgstr "西欧语言 (ISO-8859-1)"
#: ../src/common/fmapbase.cpp:145
msgid "Central European (ISO-8859-2)"
-msgstr "中欧语系 (ISO-8859-2)"
+msgstr "中欧语言 (ISO-8859-2)"
#: ../src/common/fmapbase.cpp:146
msgid "Esperanto (ISO-8859-3)"
-msgstr "世界语 (ISO-8859-3)"
+msgstr "南欧语言 (ISO-8859-3)"
#: ../src/common/fmapbase.cpp:147
msgid "Baltic (old) (ISO-8859-4)"
-msgstr "波罗的海语 (旧式) (ISO-8859-4)"
+msgstr "北欧语言 (旧式) (ISO-8859-4)"
#: ../src/common/fmapbase.cpp:148
msgid "Cyrillic (ISO-8859-5)"
-msgstr "西里尔语 (ISO-8859-5)"
+msgstr "西里尔文 (ISO-8859-5)"
#: ../src/common/fmapbase.cpp:149
msgid "Arabic (ISO-8859-6)"
-msgstr "阿拉伯语 (ISO-8859-6)"
+msgstr "阿拉伯文 (ISO-8859-6)"
#: ../src/common/fmapbase.cpp:150
msgid "Greek (ISO-8859-7)"
-msgstr "希腊语 (ISO-8859-7)"
+msgstr "希腊文 (ISO-8859-7)"
#: ../src/common/fmapbase.cpp:151
msgid "Hebrew (ISO-8859-8)"
-msgstr "希伯来语 (ISO-8859-8)"
+msgstr "希伯来文 (ISO-8859-8)"
#: ../src/common/fmapbase.cpp:152
msgid "Turkish (ISO-8859-9)"
@@ -1606,23 +1600,23 @@ msgstr "土耳其语 (ISO-8859-9)"
#: ../src/common/fmapbase.cpp:153
msgid "Nordic (ISO-8859-10)"
-msgstr "日尔曼语 (ISO-8859-10)"
+msgstr "北日耳曼语支 (ISO-8859-10)"
#: ../src/common/fmapbase.cpp:154
msgid "Thai (ISO-8859-11)"
-msgstr "泰语 (ISO-8859-11)"
+msgstr "泰文 (ISO-8859-11)"
#: ../src/common/fmapbase.cpp:155
msgid "Indian (ISO-8859-12)"
-msgstr "印地安语 (ISO-8859-12)"
+msgstr "ISO-8859-12"
#: ../src/common/fmapbase.cpp:156
msgid "Baltic (ISO-8859-13)"
-msgstr "波罗的海语 (ISO-8859-13)"
+msgstr "波罗的语族 (ISO-8859-13)"
#: ../src/common/fmapbase.cpp:157
msgid "Celtic (ISO-8859-14)"
-msgstr "凯尔特语 (ISO-8859-14)"
+msgstr "凯尔特语族 (ISO-8859-14)"
#: ../src/common/fmapbase.cpp:158
msgid "Western European with Euro (ISO-8859-15)"
@@ -1638,15 +1632,15 @@ msgstr "KOI8-U"
#: ../src/common/fmapbase.cpp:161
msgid "Windows/DOS OEM Cyrillic (CP 866)"
-msgstr "Windows/DOS OEM 西里尔语 (CP 866)"
+msgstr "Windows/DOS OEM 西里尔文 (CP 866)"
#: ../src/common/fmapbase.cpp:162
msgid "Windows Thai (CP 874)"
-msgstr "Windows 泰国语 (CP 874)"
+msgstr "Windows 泰文 (CP 874)"
#: ../src/common/fmapbase.cpp:163
msgid "Windows Japanese (CP 932) or Shift-JIS"
-msgstr "Windows 日语 (CP 932) 或 Shift-JIS"
+msgstr "Windows 日文 (CP 932) 或 Shift-JIS"
#: ../src/common/fmapbase.cpp:164
msgid "Windows Chinese Simplified (CP 936) or GB-2312"
@@ -1654,7 +1648,7 @@ msgstr "Windows 简体中文 (CP 936) 或 GB-2312"
#: ../src/common/fmapbase.cpp:165
msgid "Windows Korean (CP 949)"
-msgstr "Windows 韩语 (CP 949)"
+msgstr "Windows 韩文 (CP 949)"
#: ../src/common/fmapbase.cpp:166
msgid "Windows Chinese Traditional (CP 950) or Big-5"
@@ -1662,19 +1656,19 @@ msgstr "Windows 正體中文 (CP 950) 或 Big-5"
#: ../src/common/fmapbase.cpp:167
msgid "Windows Central European (CP 1250)"
-msgstr "Windows 中欧语系 (CP 1250)"
+msgstr "Windows 中欧语言 (CP 1250)"
#: ../src/common/fmapbase.cpp:168
msgid "Windows Cyrillic (CP 1251)"
-msgstr "Windows 西里尔语 (CP 1251)"
+msgstr "Windows 西里尔文 (CP 1251)"
#: ../src/common/fmapbase.cpp:169
msgid "Windows Western European (CP 1252)"
-msgstr "Windows 西欧语系 (CP 1252)"
+msgstr "Windows 西欧语言 (CP 1252)"
#: ../src/common/fmapbase.cpp:170
msgid "Windows Greek (CP 1253)"
-msgstr "Windows 希腊语 (CP 1253)"
+msgstr "Windows 希腊文 (CP 1253)"
#: ../src/common/fmapbase.cpp:171
msgid "Windows Turkish (CP 1254)"
@@ -1682,23 +1676,23 @@ msgstr "Windows 土耳其语 (CP 1254)"
#: ../src/common/fmapbase.cpp:172
msgid "Windows Hebrew (CP 1255)"
-msgstr "Windows 希伯来语 (CP 1255)"
+msgstr "Windows 希伯来文 (CP 1255)"
#: ../src/common/fmapbase.cpp:173
msgid "Windows Arabic (CP 1256)"
-msgstr "Windows 阿拉伯语 (CP 1256)"
+msgstr "Windows 阿拉伯文 (CP 1256)"
#: ../src/common/fmapbase.cpp:174
msgid "Windows Baltic (CP 1257)"
-msgstr "Windows 波罗的海语 (CP 1257)"
+msgstr "Windows 波罗的语族 (CP 1257)"
#: ../src/common/fmapbase.cpp:175
msgid "Windows Vietnamese (CP 1258)"
-msgstr "Windows 越南语 (CP 1258)"
+msgstr "Windows 越南文 (CP 1258)"
#: ../src/common/fmapbase.cpp:176
msgid "Windows Johab (CP 1361)"
-msgstr "Windows 朝鲜语 (CP 1361)"
+msgstr "Windows 组合韩文 (CP 1361)"
#: ../src/common/fmapbase.cpp:177
msgid "Windows/DOS OEM (CP 437)"
@@ -1706,35 +1700,35 @@ msgstr "Windows/DOS OEM (CP 437)"
#: ../src/common/fmapbase.cpp:178
msgid "Unicode 7 bit (UTF-7)"
-msgstr "7 位的统一编码 (UTF-7)"
+msgstr "7 位的统一码 (UTF-7)"
#: ../src/common/fmapbase.cpp:179
msgid "Unicode 8 bit (UTF-8)"
-msgstr "8 位的统一编码 (UTF-8)"
+msgstr "8 位的统一码 (UTF-8)"
#: ../src/common/fmapbase.cpp:181 ../src/common/fmapbase.cpp:187
msgid "Unicode 16 bit (UTF-16)"
-msgstr "16 位的统一编码 (UTF-16)"
+msgstr "16 位的统一码 (UTF-16)"
#: ../src/common/fmapbase.cpp:182
msgid "Unicode 16 bit Little Endian (UTF-16LE)"
-msgstr "16 位小字节序统一编码 (UTF-16LE)"
+msgstr "16 位小端序统一码 (UTF-16LE)"
#: ../src/common/fmapbase.cpp:183 ../src/common/fmapbase.cpp:189
msgid "Unicode 32 bit (UTF-32)"
-msgstr "32 位的统一编码 (UTF-32)"
+msgstr "32 位的统一码 (UTF-32)"
#: ../src/common/fmapbase.cpp:184
msgid "Unicode 32 bit Little Endian (UTF-32LE)"
-msgstr "32 位小字节序统一编码 (UTF-32LE)"
+msgstr "32 位小端序统一码 (UTF-32LE)"
#: ../src/common/fmapbase.cpp:186
msgid "Unicode 16 bit Big Endian (UTF-16BE)"
-msgstr "16 位大字节序统一编码 (UTF-16BE)"
+msgstr "16 位大端序统一码 (UTF-16BE)"
#: ../src/common/fmapbase.cpp:188
msgid "Unicode 32 bit Big Endian (UTF-32BE)"
-msgstr "32 位大字节序统一编码 (UTF-32BE)"
+msgstr "32 位大端序统一码 (UTF-32BE)"
#: ../src/common/fmapbase.cpp:191
msgid "Extended Unix Codepage for Japanese (EUC-JP)"
@@ -1936,11 +1930,11 @@ msgstr " 删除线"
#: ../src/common/fontcmn.cpp:942
msgid " thin"
-msgstr " 浅"
+msgstr " 超细"
#: ../src/common/fontcmn.cpp:946
msgid " extra light"
-msgstr " 超细体"
+msgstr " 纤细"
#: ../src/common/fontcmn.cpp:950
msgid " light"
@@ -1948,11 +1942,11 @@ msgstr " 细体"
#: ../src/common/fontcmn.cpp:954
msgid " medium"
-msgstr " 中"
+msgstr " 中等"
#: ../src/common/fontcmn.cpp:958
msgid " semi bold"
-msgstr " 半粗体"
+msgstr " 半粗"
#: ../src/common/fontcmn.cpp:962
msgid " bold"
@@ -1960,15 +1954,15 @@ msgstr " 粗体"
#: ../src/common/fontcmn.cpp:966
msgid " extra bold"
-msgstr " 超粗体"
+msgstr " 大粗"
#: ../src/common/fontcmn.cpp:970
msgid " heavy"
-msgstr " 加重"
+msgstr " 特粗"
#: ../src/common/fontcmn.cpp:974
msgid " extra heavy"
-msgstr " 超重"
+msgstr " 特黑"
#: ../src/common/fontcmn.cpp:990
msgid " italic"
@@ -1980,11 +1974,11 @@ msgstr "删除线"
#: ../src/common/fontcmn.cpp:1143
msgid "thin"
-msgstr "浅"
+msgstr "超细"
#: ../src/common/fontcmn.cpp:1156
msgid "extralight"
-msgstr "超细体"
+msgstr "纤细"
#: ../src/common/fontcmn.cpp:1161
msgid "light"
@@ -1992,15 +1986,15 @@ msgstr "细体"
#: ../src/common/fontcmn.cpp:1169 ../src/richtext/richtextstyles.cpp:775
msgid "normal"
-msgstr "正常"
+msgstr "常规"
#: ../src/common/fontcmn.cpp:1174
msgid "medium"
-msgstr "中"
+msgstr "中等"
#: ../src/common/fontcmn.cpp:1179 ../src/common/fontcmn.cpp:1199
msgid "semibold"
-msgstr "半粗体"
+msgstr "半粗"
#: ../src/common/fontcmn.cpp:1184
msgid "bold"
@@ -2008,15 +2002,15 @@ msgstr "粗体"
#: ../src/common/fontcmn.cpp:1194
msgid "extrabold"
-msgstr "超粗体"
+msgstr "大粗"
#: ../src/common/fontcmn.cpp:1204
msgid "heavy"
-msgstr "加重"
+msgstr "特粗"
#: ../src/common/fontcmn.cpp:1212
msgid "extraheavy"
-msgstr "超重"
+msgstr "特黑"
#: ../src/common/fontcmn.cpp:1217
msgid "italic"
@@ -2116,7 +2110,7 @@ msgstr "FTP 服务器不支持被动模式。"
#: ../src/common/gifdecod.cpp:822
#, c-format
msgid "Incorrect GIF frame size (%u, %d) for the frame #%u"
-msgstr "错误的 GIF 帧尺寸(%u,%d) 对于第 #%u 帧"
+msgstr "GIF 第 %3$u 帧的尺寸 (%1$u, %2$d) 不正确"
#: ../src/common/glcmn.cpp:108
msgid "Failed to allocate colour for OpenGL"
@@ -2152,7 +2146,7 @@ msgstr "无法从数据流中加载图像 %d。"
#: ../src/common/iconbndl.cpp:221
#, c-format
msgid "Failed to load icons from resource '%s'."
-msgstr "无法从资源 \"%s\" 中加载图标 。"
+msgstr "无法从资源 '%s' 中加载图标 。"
#: ../src/common/imagbmp.cpp:97
msgid "BMP: Couldn't save invalid image."
@@ -2164,19 +2158,19 @@ msgstr "BMP:wxImage 没有自己的 wxPalette。"
#: ../src/common/imagbmp.cpp:243
msgid "BMP: Couldn't write the file (Bitmap) header."
-msgstr "BMP:无法写文件 (Bitmap) 表头。"
+msgstr "BMP:无法写入位图文件头。"
#: ../src/common/imagbmp.cpp:266
msgid "BMP: Couldn't write the file (BitmapInfo) header."
-msgstr "BMP:无法写文件 (BitmapInfo) 表头。"
+msgstr "BMP:无法写入位图信息头。"
#: ../src/common/imagbmp.cpp:353
msgid "BMP: Couldn't write RGB color map."
-msgstr "BMP:无法写 RGB 色彩表。"
+msgstr "BMP:无法写入 RGB 色彩表。"
#: ../src/common/imagbmp.cpp:487
msgid "BMP: Couldn't write data."
-msgstr "BMP:无法写数据。"
+msgstr "BMP:无法写入数据。"
#: ../src/common/imagbmp.cpp:561 ../src/common/imagbmp.cpp:642
msgid "BMP: Couldn't allocate memory."
@@ -2184,28 +2178,28 @@ msgstr "BMP:无法分配内存。"
#: ../src/common/imagbmp.cpp:1041
msgid "DIB Header: Image width > 32767 pixels for file."
-msgstr "DIB 表头:对于文件,图像宽度 > 32767 象素。"
+msgstr "DIB 头:文件中图像宽度大于 32767 像素。"
#: ../src/common/imagbmp.cpp:1049
msgid "DIB Header: Image height > 32767 pixels for file."
-msgstr "DIB 表头:对于文件,图像高度 > 32767 象素。"
+msgstr "DIB 头:文件中图像高度大于 32767 像素。"
#: ../src/common/imagbmp.cpp:1081
msgid "DIB Header: Unknown bitdepth in file."
-msgstr "DIB 表头:文件中颜色位数未知。"
+msgstr "DIB 头:文件中色彩的位深未知。"
#: ../src/common/imagbmp.cpp:1156
msgid "DIB Header: Unknown encoding in file."
-msgstr "DIB 表头:文件编码未知。"
+msgstr "DIB 头:文件编码未知。"
#: ../src/common/imagbmp.cpp:1165
msgid "DIB Header: Encoding doesn't match bitdepth."
-msgstr "DIB 表头:编码不匹配颜色位数。"
+msgstr "DIB 头:编码与色彩的位深度不匹配。"
#: ../src/common/imagbmp.cpp:1180
#, c-format
msgid "BMP Header: Invalid number of colors (%d)."
-msgstr ""
+msgstr "BMP 头:无效的颜色数 (%d)。"
#: ../src/common/imagbmp.cpp:1273
msgid "Error in reading image DIB."
@@ -2213,7 +2207,7 @@ msgstr "读取图像 DIB 错误。"
#: ../src/common/imagbmp.cpp:1294
msgid "ICO: Error in reading mask DIB."
-msgstr "ICO:读掩码 DIB 错误。"
+msgstr "ICO:读取掩码 DIB 错误。"
#: ../src/common/imagbmp.cpp:1353
msgid "ICO: Image too tall for an icon."
@@ -2229,7 +2223,7 @@ msgstr "ICO:图像宽度超出范围,不适合做图标。"
#: ../src/common/imagbmp.cpp:1591 ../src/common/imagbmp.cpp:1605
#: ../src/common/imagbmp.cpp:1616
msgid "ICO: Error writing the image file!"
-msgstr "ICO:写图像文件错误!"
+msgstr "ICO:写入图像文件错误!"
#: ../src/common/imagbmp.cpp:1701
msgid "ICO: Invalid icon index."
@@ -2237,11 +2231,11 @@ msgstr "ICO:无效的图标索引。"
#: ../src/common/image.cpp:2410
msgid "Image and mask have different sizes."
-msgstr "图像和掩码的大小不一致。"
+msgstr "图像和蒙版尺寸不同。"
#: ../src/common/image.cpp:2418 ../src/common/image.cpp:2459
msgid "No unused colour in image being masked."
-msgstr "图像中没有被掩码的未用颜色。"
+msgstr "被蒙版遮挡的图像中没有未使用的颜色。"
#: ../src/common/image.cpp:2641
#, c-format
@@ -2256,7 +2250,7 @@ msgstr "无法从资源中加载图标 \"%s\"。"
#: ../src/common/image.cpp:2728 ../src/common/image.cpp:2747
#, c-format
msgid "Failed to load image from file \"%s\"."
-msgstr "无法从文件 \"%s\" 中读取图像。"
+msgstr "无法从文件 \"%s\" 中加载图像。"
#: ../src/common/image.cpp:2761
#, c-format
@@ -2340,7 +2334,7 @@ msgstr "IFF:数据流似乎已被截断。"
#: ../src/common/imagjpeg.cpp:258
msgid "JPEG: Couldn't load - file is probably corrupted."
-msgstr "JPEG:无法加载 - 文件也许已被破坏。"
+msgstr "JPEG:无法加载 - 文件可能已损坏。"
#: ../src/common/imagjpeg.cpp:437
msgid "JPEG: Couldn't save image."
@@ -2364,7 +2358,7 @@ msgstr "PCX:版本号太小"
#: ../src/common/imagpcx.cpp:456 ../src/common/imagpcx.cpp:478
msgid "PCX: unknown error !!!"
-msgstr "PCX:未知错误!"
+msgstr "PCX:未知错误!!!"
#: ../src/common/imagpcx.cpp:476
msgid "PCX: invalid image"
@@ -2373,11 +2367,11 @@ msgstr "PCX:无效图像"
#: ../src/common/imagpng.cpp:385
#, c-format
msgid "Unknown PNG resolution unit %d"
-msgstr "未知 PNG 解析度单位 %d"
+msgstr "未知的 PNG 分辨率单位 %d"
#: ../src/common/imagpng.cpp:439
msgid "Couldn't load a PNG image - file is corrupted or not enough memory."
-msgstr "无法装入 PNG 图像 - 文件被破坏 或者 没有足够内存。"
+msgstr "无法加载 PNG 图像 - 文件已损坏,或者没有足够内存。"
#: ../src/common/imagpng.cpp:513 ../src/common/imagpng.cpp:524
#: ../src/common/imagpng.cpp:534
@@ -2408,7 +2402,7 @@ msgstr "TIFF:加载图像错误。"
#: ../src/common/imagtiff.cpp:314
msgid "Invalid TIFF image index."
-msgstr "无效TIFF图像索引。"
+msgstr "无效 TIFF 图像索引。"
#: ../src/common/imagtiff.cpp:358
msgid "TIFF: Image size is abnormally big."
@@ -2421,12 +2415,12 @@ msgstr "TIFF:无法分配内存。"
#: ../src/common/imagtiff.cpp:471
msgid "TIFF: Error reading image."
-msgstr "TIFF:读图像错误。"
+msgstr "TIFF:读取图像错误。"
#: ../src/common/imagtiff.cpp:532
#, c-format
msgid "Unknown TIFF resolution unit %d ignored"
-msgstr "未知 TIFF 解析度单位 %d,忽略之"
+msgstr "未知的 TIFF 分辨率单位 %d,已忽略"
#: ../src/common/imagtiff.cpp:611
msgid "TIFF: Error saving image."
@@ -2434,57 +2428,54 @@ msgstr "TIFF:保存图像错误。"
#: ../src/common/imagtiff.cpp:868
msgid "TIFF: Error writing image."
-msgstr "TIFF:写图像错误。"
+msgstr "TIFF:写入图像错误。"
#: ../src/common/imagtiff.cpp:881
-#, fuzzy
msgid "TIFF: Error flushing data."
-msgstr "TIFF:保存图像错误。"
+msgstr "TIFF:刷新数据失败。"
#: ../src/common/imagwebp.cpp:56
msgid "WebP: Invalid data (failed to get features)."
-msgstr ""
+msgstr "WebP:数据无效(未能获取特性)。"
#: ../src/common/imagwebp.cpp:65
msgid "WebP: Allocating image memory failed."
-msgstr ""
+msgstr "WebP:分配图像内存失败。"
#: ../src/common/imagwebp.cpp:82
msgid "WebP: Decoding RGBA image data failed."
-msgstr ""
+msgstr "WebP:解码 RGBA 图像数据失败。"
#: ../src/common/imagwebp.cpp:98
msgid "WebP: Decoding RGB image data failed."
-msgstr ""
+msgstr "WebP:解码 RGB 图像数据失败。"
#: ../src/common/imagwebp.cpp:113 ../src/common/imagwebp.cpp:201
msgid "WebP: Allocating stream buffer failed."
-msgstr ""
+msgstr "WebP:无法分配流缓冲区。"
#: ../src/common/imagwebp.cpp:131
-#, fuzzy
msgid "WebP: Failed to parse container data."
-msgstr "无法设置剪贴板数据。"
+msgstr "WebP:无法解析容器数据。"
#: ../src/common/imagwebp.cpp:222
-#, fuzzy
msgid "WebP: Error decoding animation."
-msgstr "读配置选项错误。"
+msgstr "WebP:动画解码出错。"
#: ../src/common/imagwebp.cpp:240
msgid "WebP: Error getting next animation frame."
-msgstr ""
+msgstr "WebP:获取下一动画帧出错。"
#: ../src/common/init.cpp:172
#, c-format
msgid ""
"Command line argument %d couldn't be converted to Unicode and will be "
"ignored."
-msgstr "命令行参数 %d 无法被转化成统一编码,其将被忽略。"
+msgstr "命令行参数 %d 无法转化成统一码,将被忽略。"
#: ../src/common/init.cpp:344
msgid "Initialization failed in post init, aborting."
-msgstr "在后初始化阶段出错,退出..."
+msgstr "在后初始化阶段出错,退出。"
#: ../src/common/intl.cpp:378
#, c-format
@@ -2497,7 +2488,7 @@ msgstr "错误: "
#: ../src/common/log.cpp:236
msgid "Warning: "
-msgstr "警语: "
+msgstr "警告: "
#: ../src/common/log.cpp:284
msgid "The previous message repeated once."
@@ -2513,7 +2504,7 @@ msgstr[0] "前则消息已重复 %u 次。"
#, c-format
msgid "Last repeated message (\"%s\", %u time) wasn't output"
msgid_plural "Last repeated message (\"%s\", %u times) wasn't output"
-msgstr[0] "最后重复的消息(“%s\",%u 时间)没有输出"
+msgstr[0] "最后重复的消息(\"%s\",%u 次)没有输出"
#: ../src/common/log.cpp:435
#, c-format
@@ -2522,7 +2513,7 @@ msgstr " (错误 %ld: %s)"
#: ../src/common/lzmastream.cpp:121
msgid "Failed to allocate memory for LZMA decompression."
-msgstr "无法配置内存供 OpenGL 解压用。"
+msgstr "无法分配内存用于 LZMA 解压。"
#: ../src/common/lzmastream.cpp:125
#, c-format
@@ -2581,17 +2572,17 @@ msgstr "刷新输出时出现 LZMA 压缩错误:%s"
#: ../src/common/mimecmn.cpp:167
#, c-format
msgid "Unmatched '{' in an entry for mime type %s."
-msgstr "类型 %s 中有不配套的 '{'。"
+msgstr "媒体类型 %s 的条目中,'{' 未闭合。"
#: ../src/common/module.cpp:76
#, c-format
msgid "Circular dependency involving module \"%s\" detected."
-msgstr "检测到导致循环依赖模块 \"%s\" 。"
+msgstr "检测到模块 \"%s\" 涉及循环依赖。"
#: ../src/common/module.cpp:128
#, c-format
msgid "Dependency \"%s\" of module \"%s\" doesn't exist."
-msgstr "依赖 \"%s\" 对模块 \"%s\" 不存在。"
+msgstr "找不到模块 \"%2$s\" 的依赖项 \"%1$s\"。"
#: ../src/common/module.cpp:137
#, c-format
@@ -2876,19 +2867,19 @@ msgstr "A6 纸张,105 x 148 毫米"
#: ../src/common/paper.cpp:140
msgid "Japanese Envelope Kaku #2"
-msgstr "日式 Kaku 2 信封"
+msgstr "日本角形 2 号信封"
#: ../src/common/paper.cpp:141
msgid "Japanese Envelope Kaku #3"
-msgstr "日式 Kaku 3 信封"
+msgstr "日本角形 3 号信封"
#: ../src/common/paper.cpp:142
msgid "Japanese Envelope Chou #3"
-msgstr "日式 Chou 3 信封"
+msgstr "日本直式 3 号信封"
#: ../src/common/paper.cpp:143
msgid "Japanese Envelope Chou #4"
-msgstr "日式 Chou 4 信封"
+msgstr "日本直式 4 号信封"
#: ../src/common/paper.cpp:144
msgid "Letter Rotated 11 x 8 1/2 in"
@@ -2928,19 +2919,19 @@ msgstr "横向 A5 纸张,148 x 105 毫米"
#: ../src/common/paper.cpp:153
msgid "Japanese Envelope Kaku #2 Rotated"
-msgstr "日式 Kaku 2 信封(横向)"
+msgstr "日本角形 2 号信封 (横向)"
#: ../src/common/paper.cpp:154
msgid "Japanese Envelope Kaku #3 Rotated"
-msgstr "日式 Kaku 3 信封 (横向)"
+msgstr "日本角形 3 号信封 (横向)"
#: ../src/common/paper.cpp:155
msgid "Japanese Envelope Chou #3 Rotated"
-msgstr "日式 Chou 3 信封 (横向)"
+msgstr "日本直式 3 号信封 (横向)"
#: ../src/common/paper.cpp:156
msgid "Japanese Envelope Chou #4 Rotated"
-msgstr "日式 Chou 4 信封 (横向)"
+msgstr "日本直式 4 号信封 (横向)"
#: ../src/common/paper.cpp:157
msgid "B6 (JIS) 128 x 182 mm"
@@ -2956,115 +2947,115 @@ msgstr "12 x 11 英寸"
#: ../src/common/paper.cpp:160
msgid "Japanese Envelope You #4"
-msgstr "日式 You 4 信封"
+msgstr "日本洋形 4 号信封"
#: ../src/common/paper.cpp:161
msgid "Japanese Envelope You #4 Rotated"
-msgstr "日式 You 4 信封 (横向)"
+msgstr "日本洋形 4 号信封 (横向)"
#: ../src/common/paper.cpp:162
msgid "PRC 16K 146 x 215 mm"
-msgstr "中国 16开 纸,146 x 215 毫米"
+msgstr "中国 16 开纸,146 x 215 毫米"
#: ../src/common/paper.cpp:163
msgid "PRC 32K 97 x 151 mm"
-msgstr "中国 32开 纸,97 x 151 毫米"
+msgstr "中国 32 开纸,97 x 151 毫米"
#: ../src/common/paper.cpp:164
msgid "PRC 32K(Big) 97 x 151 mm"
-msgstr "中国 32开 (大) 纸,97 x 151 毫米"
+msgstr "中国 32 开纸 (大),97 x 151 毫米"
#: ../src/common/paper.cpp:165
msgid "PRC Envelope #1 102 x 165 mm"
-msgstr "中国标准信封1#,102 x 165 毫米"
+msgstr "中国 1 号信封,102 x 165 毫米"
#: ../src/common/paper.cpp:166
msgid "PRC Envelope #2 102 x 176 mm"
-msgstr "中国标准信封2#,102 x 176 毫米"
+msgstr "中国 2 号信封,102 x 176 毫米"
#: ../src/common/paper.cpp:167
msgid "PRC Envelope #3 125 x 176 mm"
-msgstr "中国标准信封3#,125 x 176 毫米"
+msgstr "中国 3 号信封,125 x 176 毫米"
#: ../src/common/paper.cpp:168
msgid "PRC Envelope #4 110 x 208 mm"
-msgstr "中国标准信封4#,110 x 208 毫米"
+msgstr "中国 4 号信封,110 x 208 毫米"
#: ../src/common/paper.cpp:169
msgid "PRC Envelope #5 110 x 220 mm"
-msgstr "中国标准信封5#,110 x 220 毫米"
+msgstr "中国 5 号信封,110 x 220 毫米"
#: ../src/common/paper.cpp:170
msgid "PRC Envelope #6 120 x 230 mm"
-msgstr "中国标准信封6#,120 x 230 毫米"
+msgstr "中国 6 号信封,120 x 230 毫米"
#: ../src/common/paper.cpp:171
msgid "PRC Envelope #7 160 x 230 mm"
-msgstr "中国标准信封7#,160 x 230 毫米"
+msgstr "中国 7 号信封,160 x 230 毫米"
#: ../src/common/paper.cpp:172
msgid "PRC Envelope #8 120 x 309 mm"
-msgstr "中国标准信封8#,120 x 309 毫米"
+msgstr "中国 8 号信封,120 x 309 毫米"
#: ../src/common/paper.cpp:173
msgid "PRC Envelope #9 229 x 324 mm"
-msgstr "中国标准信封9#,229 x 324 毫米"
+msgstr "中国 9 号信封,229 x 324 毫米"
#: ../src/common/paper.cpp:174
msgid "PRC Envelope #10 324 x 458 mm"
-msgstr "中国标准信封10#,324 x 458 毫米"
+msgstr "中国 10 号信封,324 x 458 毫米"
#: ../src/common/paper.cpp:175
msgid "PRC 16K Rotated"
-msgstr "中国 16开 纸张 (横向)"
+msgstr "中国 16 开纸 (横向)"
#: ../src/common/paper.cpp:176
msgid "PRC 32K Rotated"
-msgstr "中国 32开 纸张 (横向)"
+msgstr "中国 32 开纸 (横向)"
#: ../src/common/paper.cpp:177
msgid "PRC 32K(Big) Rotated"
-msgstr "中国 32开 (大) 纸张 (横向)"
+msgstr "中国 32 开纸 (大,横向)"
#: ../src/common/paper.cpp:178
msgid "PRC Envelope #1 Rotated 165 x 102 mm"
-msgstr "中国标准信封1#(横向),165 x 102 毫米"
+msgstr "中国 1 号信封 (横向),165 x 102 毫米"
#: ../src/common/paper.cpp:179
msgid "PRC Envelope #2 Rotated 176 x 102 mm"
-msgstr "中国标准信封2# (横向),176 x 102 毫米"
+msgstr "中国 2 号信封 (横向),176 x 102 毫米"
#: ../src/common/paper.cpp:180
msgid "PRC Envelope #3 Rotated 176 x 125 mm"
-msgstr "中国标准信封3# (横向),176 x 125 毫米"
+msgstr "中国 3 号信封 (横向),176 x 125 毫米"
#: ../src/common/paper.cpp:181
msgid "PRC Envelope #4 Rotated 208 x 110 mm"
-msgstr "中国标准信封4# (横向),208 x 110 毫米"
+msgstr "中国 4 号信封 (横向),208 x 110 毫米"
#: ../src/common/paper.cpp:182
msgid "PRC Envelope #5 Rotated 220 x 110 mm"
-msgstr "中国标准信封5# (横向),220 x 110 毫米"
+msgstr "中国 5 号信封 (横向),220 x 110 毫米"
#: ../src/common/paper.cpp:183
msgid "PRC Envelope #6 Rotated 230 x 120 mm"
-msgstr "中国标准信封6#(横向),230 x 120 毫米"
+msgstr "中国 6 号信封 (横向),230 x 120 毫米"
#: ../src/common/paper.cpp:184
msgid "PRC Envelope #7 Rotated 230 x 160 mm"
-msgstr "中国标准信封7# (横向),230 x 160 毫米"
+msgstr "中国 7 号信封 (横向),230 x 160 毫米"
#: ../src/common/paper.cpp:185
msgid "PRC Envelope #8 Rotated 309 x 120 mm"
-msgstr "中国标准信封8# (横向),309 x 120 毫米"
+msgstr "中国 8 号信封 (横向),309 x 120 毫米"
#: ../src/common/paper.cpp:186
msgid "PRC Envelope #9 Rotated 324 x 229 mm"
-msgstr "中国标准信封9# (横向),324 x 229 毫米"
+msgstr "中国 9 号信封 (横向),324 x 229 毫米"
#: ../src/common/paper.cpp:187
msgid "PRC Envelope #10 Rotated 458 x 324 mm"
-msgstr "中国标准信封10# (横向),458 x 324 毫米"
+msgstr "中国 10 号信封 (横向),458 x 324 毫米"
#: ../src/common/paper.cpp:192
msgid "A0 sheet, 841 x 1189 mm"
@@ -3084,7 +3075,7 @@ msgstr "高级"
#: ../src/common/prntbase.cpp:245
msgid "Generic PostScript"
-msgstr "普通 PostScript"
+msgstr "通用 PostScript"
#: ../src/common/prntbase.cpp:259
msgid "Ready"
@@ -3213,12 +3204,12 @@ msgstr "不适用于此平台"
#: ../src/common/secretstore.cpp:183
#, c-format
msgid "Saving password for \"%s\" failed: %s."
-msgstr "保存 “%s” 的密码失败:%s。"
+msgstr "保存 \"%s\" 的密码失败:%s。"
#: ../src/common/secretstore.cpp:205
#, c-format
msgid "Reading password for \"%s\" failed: %s."
-msgstr "读取 “%s” 的密码失败:%s。"
+msgstr "读取 \"%s\" 的密码失败:%s。"
#: ../src/common/secretstore.cpp:228
#, c-format
@@ -3403,7 +3394,7 @@ msgstr "查找(&F)"
#: ../src/common/stockitem.cpp:163
msgid "Find..."
-msgstr "查找…"
+msgstr "查找..."
#: ../src/common/stockitem.cpp:164
msgid "&First"
@@ -3435,7 +3426,7 @@ msgstr "硬盘(&H)"
#: ../src/common/stockitem.cpp:167
msgid "Harddisk"
-msgstr "磁盘"
+msgstr "硬盘"
#: ../src/common/stockitem.cpp:168 ../src/generic/wizard.cpp:418
#: ../src/osx/cocoa/
menu.mm:225 ../src/richtext/richtextstyledlg.cpp:298
@@ -3606,7 +3597,7 @@ msgstr "替换(&l)..."
#: ../src/common/stockitem.cpp:193
msgid "Replace..."
-msgstr "替换…"
+msgstr "替换..."
#: ../src/common/stockitem.cpp:194
msgid "Revert to Saved"
@@ -3817,7 +3808,7 @@ msgstr "保存当前文档至重命名"
#: ../src/common/strconv.cpp:2324
#, c-format
msgid "Conversion to charset '%s' doesn't work."
-msgstr "无法进行到字符集 '%s' 的转换。"
+msgstr "无法转换到字符集 '%s'。"
#: ../src/common/tarstrm.cpp:352 ../src/common/tarstrm.cpp:375
#: ../src/common/tarstrm.cpp:406 ../src/generic/progdlgg.cpp:373
@@ -3834,7 +3825,7 @@ msgstr "读取 tar 表头块发生校验和错误"
#: ../src/common/tarstrm.cpp:971
msgid "invalid data in extended tar header"
-msgstr "tar 扩展表头中有图小数据"
+msgstr "tar 扩展头数据无效"
#: ../src/common/tarstrm.cpp:981 ../src/common/tarstrm.cpp:1003
#: ../src/common/tarstrm.cpp:1477 ../src/common/tarstrm.cpp:1499
@@ -3843,7 +3834,7 @@ msgstr "tar 标头未打开"
#: ../src/common/tarstrm.cpp:1023
msgid "unexpected end of file"
-msgstr "异常地到达文件结尾"
+msgstr "文件意外结束"
#: ../src/common/tarstrm.cpp:1297
#, c-format
@@ -3857,7 +3848,7 @@ msgstr "tar 项目不正确的大小"
#: ../src/common/textbuf.cpp:232
#, c-format
msgid "'%s' is probably a binary buffer."
-msgstr "'%s' 或许是一个二进制文件。"
+msgstr "'%s' 或许是二进制缓冲区。"
#: ../src/common/textcmn.cpp:1006 ../src/richtext/richtextctrl.cpp:3053
msgid "File couldn't be loaded."
@@ -3866,7 +3857,7 @@ msgstr "文件无法加载。"
#: ../src/common/textfile.cpp:95
#, c-format
msgid "Failed to read text file \"%s\"."
-msgstr "无法读取文本文件 “%s”。"
+msgstr "无法读取文本文件 \"%s\"。"
#: ../src/common/textfile.cpp:160
#, c-format
@@ -3929,17 +3920,17 @@ msgstr "必要的信息项目为空。"
#: ../src/common/valtext.cpp:188
#, c-format
msgid "'%s' is one of the invalid strings"
-msgstr "'%s' 在有效的字符串中"
+msgstr "'%s' 是无效的字符串"
#: ../src/common/valtext.cpp:190
#, c-format
msgid "'%s' is not one of the valid strings"
-msgstr "'%s' 不在有效的字符串中"
+msgstr "'%s' 不属于有效的字符串"
#: ../src/common/valtext.cpp:199
#, c-format
msgid "'%s' contains invalid character(s)"
-msgstr "'%s' 包含无效字符。"
+msgstr "'%s' 包含无效字符"
#: ../src/common/webrequest.cpp:139
#, c-format
@@ -3947,15 +3938,15 @@ msgid "Error: %s (%d)"
msgstr "错误:%s (%d)"
#: ../src/common/webrequest.cpp:655
-#, fuzzy, c-format
+#, c-format
msgid ""
"Not enough free disk space for download: %llu needed but only %llu available."
-msgstr "没有足够的可用磁盘空间供下载。"
+msgstr "磁盘空间不足,无法下载:需要 %llu,但仅有 %llu 可用。"
#: ../src/common/webrequest.cpp:669
-#, fuzzy, c-format
+#, c-format
msgid "Failed to create temporary file in %s"
-msgstr "无法创建临时文件名"
+msgstr "无法在 %s 中创建临时文件"
#: ../src/common/webrequest_curl.cpp:1106
msgid "libcurl could not be initialized"
@@ -3971,33 +3962,33 @@ msgid "Error running JavaScript: %s"
msgstr "运行 JavaScript 时出错:%s"
#: ../src/common/webview_chromium.cpp:858
-#, fuzzy, c-format
+#, c-format
msgid "Failed to set proxy \"%s\": %s"
-msgstr "无法创建 \"%s\" 目录"
+msgstr "设置代理 \"%s\" 失败:%s"
#: ../src/common/webview_chromium.cpp:989
msgid ""
"Chromium can't be used because libcef.so wasn't loaded early enough; please "
"relink the application or use LD_PRELOAD to load it earlier."
msgstr ""
+"无法使用 Chromium,因为 libcef.so 未被提前加载;请重新链接应用程序或使用 "
+"LD_PRELOAD 提前加载。"
#: ../src/common/webview_chromium.cpp:1108
-#, fuzzy
msgid "Could not initialize Chromium"
-msgstr "无法设定对齐。"
+msgstr "无法初始化 Chromium"
#: ../src/common/webview_chromium.cpp:1616
msgid "Show DevTools"
-msgstr ""
+msgstr "显示开发者工具"
#: ../src/common/webview_chromium.cpp:1617
-#, fuzzy
msgid "Close DevTools"
-msgstr "全部关闭"
+msgstr "关闭开发者工具"
#: ../src/common/webview_chromium.cpp:1623
msgid "Inspect"
-msgstr ""
+msgstr "检查"
#: ../src/common/wincmn.cpp:1628
msgid "This platform does not support background transparency."
@@ -4009,7 +4000,7 @@ msgstr "无法把数据转到窗口"
#: ../src/common/windowid.cpp:240
msgid "Out of window IDs. Recommend shutting down application."
-msgstr "现 window ID 已用完。 建议关闭应用。"
+msgstr "窗口 ID 已耗尽。 建议关闭应用。"
#: ../src/common/xpmdecod.cpp:678
msgid "XPM: incorrect header format!"
@@ -4018,33 +4009,33 @@ msgstr "XPM:不正确的头格式!"
#: ../src/common/xpmdecod.cpp:703
#, c-format
msgid "XPM: incorrect colour description in line %d"
-msgstr "XPM:在第 %d 行有错误的颜色描述"
+msgstr "XPM:错误的颜色描述,位于第 %d 行"
#: ../src/common/xpmdecod.cpp:715 ../src/common/xpmdecod.cpp:724
#, c-format
msgid "XPM: malformed colour definition '%s' at line %d!"
-msgstr "XPM:错误的颜色定义 '%s',位于行 %d!"
+msgstr "XPM:错误的颜色定义 '%s',位于第 %d 行!"
#: ../src/common/xpmdecod.cpp:754
msgid "XPM: no colors left to use for mask!"
-msgstr "XPM:没有剩下可供选择的掩码颜色!"
+msgstr "XPM:没有空余的颜色能用于蒙版!"
#: ../src/common/xpmdecod.cpp:781
#, c-format
msgid "XPM: truncated image data at line %d!"
-msgstr "XPM:图像数据被截断,位于行 %d!"
+msgstr "XPM:第 %d 行的图像数据被截断!"
#: ../src/common/xpmdecod.cpp:795
msgid "XPM: Malformed pixel data!"
-msgstr "XPM:错误的象素数据!"
+msgstr "XPM:错误的像素数据!"
#: ../src/common/xti.cpp:492
msgid "Illegal Parameter Count for Create Method"
-msgstr "非法的针对 Create 方法的参数计数"
+msgstr "Create 方法的参数个数不正确"
#: ../src/common/xti.cpp:504
msgid "Illegal Parameter Count for ConstructObject Method"
-msgstr "非法的针对 ConstructObject 方法的参数计数"
+msgstr "ConstructObject 方法的参数个数不正确"
#: ../src/common/xtistrm.cpp:161
#, c-format
@@ -4141,15 +4132,15 @@ msgstr "无效的 zip 文件"
#: ../src/common/zipstrm.cpp:1723
msgid "can't find central directory in zip"
-msgstr "无法在 zip 文件中找到中央目录"
+msgstr "zip 文件中找不到核心目录"
#: ../src/common/zipstrm.cpp:1812
msgid "error reading zip central directory"
-msgstr "读 zip 中央目录时出错"
+msgstr "读取 zip 核心目录时出错"
#: ../src/common/zipstrm.cpp:1916
msgid "error reading zip local header"
-msgstr "读 zip 本地头时出错"
+msgstr "读取 zip 本地头时出错"
#: ../src/common/zipstrm.cpp:1964
msgid "bad zipfile offset to entry"
@@ -4176,12 +4167,12 @@ msgstr "读入 zip 流 (条目 %s):crc 校验错误"
#: ../src/common/zipstrm.cpp:2578
#, c-format
msgid "error writing zip entry '%s': file too large without ZIP64"
-msgstr "写入 zip 条目 ‘%s’ 时出错:文件太大,没有 ZIP64"
+msgstr "写入 zip 条目 '%s' 时出错:文件太大,没有 ZIP64"
#: ../src/common/zipstrm.cpp:2585
#, c-format
msgid "error writing zip entry '%s': bad crc or length"
-msgstr "写 zip 条目 '%s' 时出错:crc 校验或长度错误"
+msgstr "写入 zip 条目 '%s' 时出错:crc 校验或长度错误"
#: ../src/common/zstream.cpp:155 ../src/common/zstream.cpp:315
msgid "Gzip not supported by this version of zlib"
@@ -4193,7 +4184,7 @@ msgstr "无法初始化 zlib 解压流。"
#: ../src/common/zstream.cpp:241
msgid "Can't read inflate stream: unexpected EOF in underlying stream."
-msgstr "无法读解压流:流内有异常的 EOF。"
+msgstr "无法读取解压流:流内有异常的 EOF。"
#: ../src/common/zstream.cpp:248 ../src/common/zstream.cpp:423
#, c-format
@@ -4225,7 +4216,7 @@ msgstr "无法从 DirectFB 管道中读取事件"
#: ../src/dfb/evtloop.cpp:171
msgid "Failed to switch DirectFB pipe to non-blocking mode"
-msgstr "无法将 DirectFB 通道切换至非闭塞模式"
+msgstr "无法将 DirectFB 通道切换至非阻塞模式"
#: ../src/dfb/fontmgr.cpp:171
#, c-format
@@ -4244,7 +4235,7 @@ msgstr "字体索引文件 %s 加载字体时丢失。"
#: ../src/dfb/wrapdfb.cpp:60
#, c-format
msgid "DirectFB error %d occurred."
-msgstr "Direct FB 错误 %d 发生。"
+msgstr "Direct FB 报错 %d。"
#: ../src/generic/aboutdlgg.cpp:69
msgid "Developed by "
@@ -4252,15 +4243,15 @@ msgstr "开发者 "
#: ../src/generic/aboutdlgg.cpp:72
msgid "Documentation by "
-msgstr "文档撰写人员 "
+msgstr "文档作者 "
#: ../src/generic/aboutdlgg.cpp:75
msgid "Graphics art by "
-msgstr "图形艺术设计由 "
+msgstr "美工 "
#: ../src/generic/aboutdlgg.cpp:78
msgid "Translations by "
-msgstr "翻译人员 "
+msgstr "译者 "
#: ../src/generic/aboutdlgg.cpp:133 ../src/osx/cocoa/
aboutdlg.mm:83
msgid "Version "
@@ -4274,7 +4265,7 @@ msgstr "关于 %s"
#: ../src/generic/aboutdlgg.cpp:181
msgid "License"
-msgstr "授权"
+msgstr "软件许可证"
#: ../src/generic/aboutdlgg.cpp:184
msgid "Developers"
@@ -4286,25 +4277,25 @@ msgstr "文档作者"
#: ../src/generic/aboutdlgg.cpp:192
msgid "Artists"
-msgstr "美术设计者"
+msgstr "美工"
#: ../src/generic/aboutdlgg.cpp:196
msgid "Translators"
-msgstr "翻译人员"
+msgstr "译者"
#: ../src/generic/animateg.cpp:125
msgid "No handler found for animation type."
-msgstr "没有找到动画类型的句柄。"
+msgstr "找不到动画类型的句柄。"
#: ../src/generic/animateg.cpp:133
#, c-format
msgid "No animation handler for type %ld defined."
-msgstr "没有类型 %ld 的动画句柄定义。"
+msgstr "未定义 %ld 类型的动画句柄。"
#: ../src/generic/animateg.cpp:145
#, c-format
msgid "Animation file is not of type %ld."
-msgstr "动画文件的类型不是 %ld。"
+msgstr "动画文件不符合 %ld 类型。"
#: ../src/generic/colrdlgg.cpp:154 ../src/gtk/colordlg.cpp:47
msgid "Choose colour"
@@ -4396,12 +4387,11 @@ msgstr "右"
#, c-format
msgid ""
"\"%s\" is not in the expected date format, please enter it as e.g. \"%s\"."
-msgstr ""
+msgstr "\"%s\" 的日期格式不正确,请参照 \"%s\" 的格式输入。"
#: ../src/generic/datectlg.cpp:94
-#, fuzzy
msgid "Invalid date"
-msgstr "无效的数据视图项"
+msgstr "无效日期"
#: ../src/generic/dbgrptg.cpp:159
#, c-format
@@ -4424,7 +4414,7 @@ msgstr "调试报告 \"%s\""
#: ../src/generic/dbgrptg.cpp:316
msgid "A debug report has been generated in the directory\n"
-msgstr "产生了一份调试报告,位于目录\n"
+msgstr "调试报告已生成到以下目录\n"
#: ../src/generic/dbgrptg.cpp:317
msgid "The following debug report will be generated\n"
@@ -4436,8 +4426,8 @@ msgid ""
"private information,\n"
"please uncheck them and they will be removed from the report.\n"
msgstr ""
-"报告包含了以下文件。如果这些文件含有私人信息,\n"
-"请去掉选中相应的文件,未选中的文件就会从报告中删除。\n"
+"调试报告包含了以下文件。如果这些文件含有私人信息,\n"
+"请取消选中它们,调试报告中将移除这些文件。\n"
#: ../src/generic/dbgrptg.cpp:323
msgid ""
@@ -4446,9 +4436,8 @@ msgid ""
"but be warned that it may hinder improving the program, so if\n"
"at all possible please do continue with the report generation.\n"
msgstr ""
-"如果您想完全禁用调试报告,请按\"取消\"按钮,\n"
-"但我们不建议这样做,因为调试报告有助于改进本程序。\n"
-"在可能的情况下,请尽量选择让程序生成调试报告。\n"
+"如果您想完全禁用调试报告,请按 “取消” 按钮。\n"
+"但请注意,这可能会阻碍我们改进程序。如果条件允许,请务必继续生成报告。\n"
#: ../src/generic/dbgrptg.cpp:325
msgid " Thank you and we're sorry for the inconvenience!\n"
@@ -4523,7 +4512,7 @@ msgstr "创建新目录"
#: ../src/generic/dirdlgg.cpp:112 ../src/generic/filedlgg.cpp:203
msgid "Go to home directory"
-msgstr "进入主页目录"
+msgstr "进入主目录"
#: ../src/generic/dirdlgg.cpp:143
msgid "Show &hidden directories"
@@ -4536,7 +4525,7 @@ msgid ""
"Create it now?"
msgstr ""
"目录 '%s' 不存在\n"
-"是否现在创建?"
+"是否现在创建?"
#: ../src/generic/dirdlgg.cpp:198
msgid "Directory does not exist"
@@ -4653,7 +4642,7 @@ msgstr "修改日期"
#: ../src/generic/filectrlg.cpp:426
msgid "Permissions"
-msgstr "允许"
+msgstr "权限"
#: ../src/generic/filectrlg.cpp:429
msgid "Attributes"
@@ -4677,11 +4666,11 @@ msgstr "目录不存在。"
#: ../src/generic/filedlgg.cpp:195
msgid "View files as a list view"
-msgstr "按列表视图观看文件"
+msgstr "以列表视图查看文件"
#: ../src/generic/filedlgg.cpp:197
msgid "View files as a detailed view"
-msgstr "按详细视图观看文件"
+msgstr "以详细视图查看文件"
#: ../src/generic/filedlgg.cpp:200
msgid "Go to parent directory"
@@ -4690,7 +4679,7 @@ msgstr "进入父目录"
#: ../src/generic/filedlgg.cpp:351 ../src/gtk/filedlg.cpp:59
#, c-format
msgid "File '%s' already exists, do you really want to overwrite it?"
-msgstr "文件 '%s' 已存在,确实需要重写它?"
+msgstr "文件 '%s' 已存在,确实需要重写它?"
#: ../src/generic/filedlgg.cpp:354 ../src/gtk/filedlg.cpp:62
msgid "Confirm"
@@ -4698,7 +4687,7 @@ msgstr "确认"
#: ../src/generic/filedlgg.cpp:362 ../src/gtk/filedlg.cpp:75
msgid "Please choose an existing file."
-msgstr "请选择一个已存在的文件."
+msgstr "请选择一个已存在的文件。"
#: ../src/generic/filepickerg.cpp:64
msgid "..."
@@ -4815,36 +4804,36 @@ msgid ""
"Error copying grid to the clipboard. Either selected cells were not "
"contiguous or no cell was selected."
msgstr ""
+"复制网格到剪贴板时出错。可能是因为所选单元格不连续,或者没有选中任何单元格。"
#: ../src/generic/grid.cpp:12739
-#, fuzzy
msgid "Grid Corner"
-msgstr "角"
+msgstr "网格角"
#: ../src/generic/grid.cpp:12741
-#, fuzzy, c-format
+#, c-format
msgid "Column %s Header"
-msgstr "列 %u"
+msgstr "第 %s 列标题"
#: ../src/generic/grid.cpp:12743
#, c-format
msgid "Row %s Header"
-msgstr ""
+msgstr "第 %s 行标题"
#: ../src/generic/grid.cpp:12745
-#, fuzzy, c-format
+#, c-format
msgid "Column %s: %s"
-msgstr "列 %u"
+msgstr "第 %s 列:%s"
#: ../src/generic/grid.cpp:12749
-#, fuzzy, c-format
+#, c-format
msgid "Row %s: %s"
-msgstr "\t%s: %s\n"
+msgstr "第 %s 行:%s"
#: ../src/generic/grid.cpp:12753
#, c-format
msgid "Row %s, Column %s: %s"
-msgstr ""
+msgstr "第 %s 行,第 %s 列:%s"
#: ../src/generic/helpext.cpp:257
#, c-format
@@ -4859,7 +4848,7 @@ msgstr "找不到帮助文件 \"%s\"。"
#: ../src/generic/helpext.cpp:284
#, c-format
msgid "Line %lu of map file \"%s\" has invalid syntax, skipped."
-msgstr "行 %lu 的map文件 \"%s\" 有无效语法,跳过。"
+msgstr "映射文件 \"%2$s\" 的第 %1$lu 行存在无效语法,跳过。"
#: ../src/generic/helpext.cpp:292
#, c-format
@@ -4952,7 +4941,7 @@ msgstr "无法将对话框内容复制到剪贴板。"
#: ../src/generic/logg.cpp:1022
#, c-format
msgid "Append log to file '%s' (choosing [No] will overwrite it)?"
-msgstr "是否把日志添加到文件 ‘%s’?(选择【否】将覆盖该文件)"
+msgstr "是否把日志添加到文件 '%s'?(选择【否】将覆盖该文件)"
#: ../src/generic/logg.cpp:1024
msgid "Question"
@@ -4960,7 +4949,7 @@ msgstr "问题"
#: ../src/generic/logg.cpp:1038
msgid "invalid message box return value"
-msgstr "消息框返回无效的值"
+msgstr "消息框的返回值无效"
#: ../src/generic/notifmsgg.cpp:129
msgid "Notice"
@@ -4983,7 +4972,7 @@ msgstr "无法启动打印。"
#: ../src/generic/printps.cpp:183
#, c-format
msgid "Printing page %d..."
-msgstr "正在打印页 %d..."
+msgstr "正在打印第 %d 页..."
#: ../src/generic/prntdlgg.cpp:171
msgid "Printer options"
@@ -5089,7 +5078,7 @@ msgstr "左边距 (毫米):"
#: ../src/generic/prntdlgg.cpp:861
msgid "Top margin (mm):"
-msgstr "上页边距 (毫米):"
+msgstr "上边距 (毫米):"
#: ../src/generic/prntdlgg.cpp:872
msgid "Right margin (mm):"
@@ -5122,7 +5111,7 @@ msgstr "搜索"
#: ../src/generic/tabg.cpp:1026
msgid "Could not find tab for id"
-msgstr "找不到 id 的标签"
+msgstr "找不到 id 对应的标签"
#: ../src/generic/tipdlg.cpp:136
msgid "Tips not available, sorry!"
@@ -5166,8 +5155,8 @@ msgid ""
"with input handling and flickering. Consider unsetting GTK_IM_MODULE or "
"setting to \"ibus\"."
msgstr ""
-"警告:不支持使用 XIM 输入法,可能会导致输入处理和闪烁问题。 考虑取消设置 "
-"GTK_IM_MODULE 或设置为 “ibus\"。"
+"警告:不支持使用 XIM 输入法,可能会导致输入处理和闪烁问题。考虑取消设置 "
+"GTK_IM_MODULE 或设置为 \"ibus\"。"
#: ../src/gtk/app.cpp:569
msgid "Unable to initialize GTK+, is DISPLAY set properly?"
@@ -5208,9 +5197,8 @@ msgid ""
"install EGL libraries and rebuild or run it under X11 backend by setting\n"
"environment variable GDK_BACKEND=x11 before starting your program."
msgstr ""
-"该程序也没有在 Wayland 下使用 EGL 支持进行编译\n"
-"通过设置安装 EGL 库并在 X11 后端下重建或运行它\n"
-"启动程序之前的环境变量 GDK_BACKEND=x11。"
+"本程序编译时缺少 Wayland 环境下所需的 EGL 支持。请安装 EGL 库并重新构建\n"
+"本程序,或在启动程序前设置环境变量 GDK_BACKEND=x11,以便在 X11 后端运行。"
#: ../src/gtk/glcanvas.cpp:132
msgid ""
@@ -5219,49 +5207,47 @@ msgid ""
"work around this by setting environment variable GDK_BACKEND=x11 before\n"
"starting your program."
msgstr ""
-"wxGLCanvas 目前仅支持 Wayland 和 X11。 你也许可以\n"
-"通过在之前设置环境变量 GDK_BACKEND=x11 来解决这个问题\n"
-"开始你的程序。"
+"wxGLCanvas 目前仅支持 Wayland 和 X11。您可能可以通过\n"
+"在启动程序前设置环境变量 GDK_BACKEND=x11 来解决此问题。"
#: ../src/gtk/mdi.cpp:433
msgid "MDI child"
msgstr "多文档界面子窗口"
#: ../src/gtk/power.cpp:188
-#, fuzzy, c-format
+#, c-format
msgid "Failed to open D-Bus connection to the login manager: %s"
-msgstr "到 %s 的拨号连接失败:%s"
+msgstr "无法打开与登录管理器的 D-Bus 连接:%s"
#: ../src/gtk/power.cpp:214
-#, fuzzy
msgid "wxWidgets application"
-msgstr "隐藏应用程序"
+msgstr "wxWidgets 应用程序"
#: ../src/gtk/power.cpp:226
msgid "Application needs to keep running"
-msgstr ""
+msgstr "应用程序需要保持运行"
#: ../src/gtk/power.cpp:233
msgid "Clean up before suspend"
-msgstr ""
+msgstr "挂起前清理"
#: ../src/gtk/power.cpp:259
-#, fuzzy, c-format
+#, c-format
msgid "Failed to inhibit sleep: %s"
-msgstr "无法初始化拨号连接:%s"
+msgstr "阻止睡眠失败:%s"
#: ../src/gtk/power.cpp:265
msgid "Unexpected response to D-Bus \"Inhibit\" request."
-msgstr ""
+msgstr "对 D-Bus “阻止” 请求的意外响应。"
#: ../src/gtk/print.cpp:218
msgid "Custom size"
msgstr "自定义大小"
#: ../src/gtk/print.cpp:752
-#, fuzzy, c-format
+#, c-format
msgid "Error while printing: %s"
-msgstr "打印时出错: "
+msgstr "打印时出错:%s"
#: ../src/gtk/print.cpp:816
msgid "Page Setup"
@@ -5269,16 +5255,16 @@ msgstr "页面设置"
#: ../src/gtk/webview_webkit.cpp:932
msgid "Retrieving JavaScript script output is not supported with WebKit v1"
-msgstr "WebKit v1 不支持检索 JavaScript 脚本输出"
+msgstr "WebKit v1 不支持获取 JavaScript 脚本输出"
#: ../src/gtk/webview_webkit2.cpp:1098
msgid ""
"Setting proxy is not supported by WebKit, at least version 2.16 is required."
-msgstr ""
+msgstr "WebKit 不支持设置代理,至少需要 2.16 版本。"
#: ../src/gtk/webview_webkit2.cpp:1104
msgid "This program was compiled without support for setting WebKit proxy."
-msgstr ""
+msgstr "本程序编译时缺少对设置 WebKit 代理的支持。"
#: ../src/gtk/window.cpp:6289
msgid ""
@@ -5476,7 +5462,7 @@ msgstr "到上一级文档目录"
#: ../src/html/helpwnd.cpp:666 ../src/html/helpwnd.cpp:1547
msgid "Open HTML document"
-msgstr "打开HTML文档"
+msgstr "打开 HTML 文档"
#: ../src/html/helpwnd.cpp:670
msgid "Print this page"
@@ -5665,9 +5651,9 @@ msgstr ":文件不存在!"
#. TRANSLATORS: %s may be a document title.
#: ../src/html/htmprint.cpp:717
-#, fuzzy, c-format
+#, c-format
msgid "%s Preview"
-msgstr " 预览"
+msgstr "%s 预览"
#: ../src/html/htmprint.cpp:755 ../src/richtext/richtextprint.cpp:618
msgid ""
@@ -5765,9 +5751,8 @@ msgid ""
"or an invalid instance identifier\n"
"was passed to a DDEML function."
msgstr ""
-"没有调用 DdeInitialize 初始化函数就调用DDEML其它函数,\n"
-"或传给DDEML函数的是\n"
-"无效的实例标识。"
+"没有调用 DdeInitialize 初始化函数就调用其它的\n"
+"DDEML 函数,或传给 DDEML 函数的是无效的实例标识。"
#: ../src/msw/dde.cpp:1147
msgid ""
@@ -5776,10 +5761,8 @@ msgid ""
"or an application initialized as APPCMD_CLIENTONLY has \n"
"attempted to perform server transactions."
msgstr ""
-"初始化为 APPCLASS_MONITOR 的应用程序\n"
-"试图执行 DDE 事务,\n"
-"或初始化为 APPCMD_CLIENTONLY 的应用程序\n"
-"视图执行服务器事务。"
+"初始化为 APPCLASS_MONITOR 的应用程序试图执行 DDE 事务,\n"
+"或初始化为 APPCMD_CLIENTONLY 的应用程序试图执行服务器事务。"
#: ../src/msw/dde.cpp:1150
msgid "a request for a synchronous execute transaction has timed out."
@@ -5823,13 +5806,12 @@ msgid ""
"that was terminated by the client, or the server\n"
"terminated before completing a transaction."
msgstr ""
-"服务器端事务试图处理\n"
-"已被客户端终止的会话,或服务器\n"
-"在完成事务前终止。"
+"服务器端事务尝试在已被客户端终止的会话上\n"
+"执行,或服务器在完成事务前终止。"
#: ../src/msw/dde.cpp:1180
msgid "an internal error has occurred in the DDEML."
-msgstr "在 DDEML 中发生内部错误。"
+msgstr "DDEML 内部发生错误。"
#: ../src/msw/dde.cpp:1183
msgid "a request to end an advise transaction has timed out."
@@ -5841,9 +5823,8 @@ msgid ""
"Once the application has returned from an XTYP_XACT_COMPLETE callback,\n"
"the transaction identifier for that callback is no longer valid."
msgstr ""
-"传给 DDEML 函数的是无效的事务标识符。\n"
-"一旦应用程序从 XTYP_XACT_COMPLETE 回调函数返回,\n"
-"回调函数事务标识符就不再有效。"
+"传给 DDEML 函数的是无效的事务标识符。一旦应用程序从\n"
+"XTYP_XACT_COMPLETE 回调函数返回,回调函数事务标识符就不再有效。"
#: ../src/msw/dde.cpp:1189
#, c-format
@@ -5854,14 +5835,15 @@ msgstr "未知 DDE 错误 %08x"
msgid ""
"Dial up functions are unavailable because the remote access service (RAS) is "
"not installed on this machine. Please install it."
-msgstr "由于远程访问服务 (RAS) 没有安装在本机,拨号功能无法使用。请安装它。"
+msgstr "本机未安装远程访问服务 (RAS),拨号功能不可用。请安装该服务。"
#: ../src/msw/dialup.cpp:402
#, c-format
msgid ""
"The version of remote access service (RAS) installed on this machine is too "
"old, please upgrade (the following required function is missing: %s)."
-msgstr "安装在本机的远程访问服务(RAS)太旧,请更新它 (缺少下列必要的函数:%s)."
+msgstr ""
+"本机安装的远程访问服务 (RAS) 太旧,请更新该服务 (缺少下列必要的函数:%s)."
#: ../src/msw/dialup.cpp:437
msgid "Failed to retrieve text of RAS error message"
@@ -5870,7 +5852,7 @@ msgstr "无法提取 RAS 错误消息正文"
#: ../src/msw/dialup.cpp:440
#, c-format
msgid "unknown error (error code %08x)."
-msgstr "未知错误 (错误号 %08x)。"
+msgstr "未知错误 (错误码 %08x)。"
#: ../src/msw/dialup.cpp:492
#, c-format
@@ -5879,7 +5861,7 @@ msgstr "无法找到活动的拨号连接:%s"
#: ../src/msw/dialup.cpp:513
msgid "Several active dialup connections found, choosing one randomly."
-msgstr "找到多个活动拨号连接,随机选择一个."
+msgstr "找到多个活动拨号连接,随机选择一个。"
#: ../src/msw/dialup.cpp:598 ../src/msw/dialup.cpp:832
#, c-format
@@ -5952,25 +5934,25 @@ msgstr "(错误 %d:%s)"
#: ../src/msw/dragimag.cpp:143 ../src/msw/dragimag.cpp:178
#: ../src/msw/imaglist.cpp:309 ../src/msw/imaglist.cpp:331
msgid "Couldn't add an image to the image list."
-msgstr "无法把图像加到图象列表。"
+msgstr "无法将图像添加到图像列表。"
#: ../src/msw/enhmeta.cpp:94
#, c-format
msgid "Failed to load metafile from file \"%s\"."
-msgstr "无法从文件 \"%s\" 读取元文件。"
+msgstr "无法从文件 \"%s\" 加载图元文件。"
#: ../src/msw/fdrepdlg.cpp:412
#, c-format
msgid "Failed to create the standard find/replace dialog (error code %d)"
-msgstr "无法创建标准 \"查找/替换\" 对话框 (错误号 %d)"
+msgstr "无法创建标准 “查找/替换” 对话框 (错误码 %d)"
#: ../src/msw/filedlg.cpp:1241
msgid "Access to the file system is not allowed from secure desktop."
-msgstr ""
+msgstr "在安全桌面环境下不允许访问文件系统。"
#: ../src/msw/filedlg.cpp:1242
msgid "Security warning"
-msgstr ""
+msgstr "安全警告"
#: ../src/msw/filedlg.cpp:1533
#, c-format
@@ -5980,7 +5962,7 @@ msgstr "文件对话框错误,错误码:%0lx。"
#: ../src/msw/font.cpp:1120
#, c-format
msgid "Font file \"%s\" couldn't be loaded"
-msgstr "无法加载字体文件 “%s”"
+msgstr "无法加载字体文件 \"%s\""
#: ../src/msw/fontdlg.cpp:220
#, c-format
@@ -6034,11 +6016,11 @@ msgstr "无法注册自定义 DirectWrite 字体加载器。"
msgid ""
"MS HTML Help functions are unavailable because the MS HTML Help library is "
"not installed on this machine. Please install it."
-msgstr "MS HTML帮助功能不存在,因为此机器上没有安装 MS HTML 帮助库。请安装它。"
+msgstr "缺少微软 HTML 帮助库,无法使用微软 HTML 帮助功能。请安装该库。"
#: ../src/msw/helpchm.cpp:55
msgid "Failed to initialize MS HTML Help."
-msgstr "无法初始化 MS HTML 帮助。"
+msgstr "微软 HTML 帮助初始化失败。"
#: ../src/msw/iniconf.cpp:458
#, c-format
@@ -6048,7 +6030,7 @@ msgstr "无法删除 INI 文件 '%s'"
#: ../src/msw/listctrl.cpp:995
#, c-format
msgid "Couldn't retrieve information about list control item %d."
-msgstr "无法获得列表控件的项 %d 信息。"
+msgstr "无法获取列表控件第 %d 项的信息。"
#: ../src/msw/mdi.cpp:170 ../src/qt/mdi.cpp:253
msgid "&Cascade"
@@ -6197,7 +6179,7 @@ msgstr "无法关闭注册表项 '%s'"
#: ../src/msw/registry.cpp:512
#, c-format
msgid "Registry value '%s' already exists."
-msgstr "注册值 '%s' 已存在."
+msgstr "注册值 '%s' 已存在。"
#: ../src/msw/registry.cpp:520
#, c-format
@@ -6217,7 +6199,7 @@ msgstr "注册表项 '%s' 不存在,无法改名。"
#: ../src/msw/registry.cpp:617
#, c-format
msgid "Registry key '%s' already exists."
-msgstr "注册表项 '%s' 已存在."
+msgstr "注册表项 '%s' 已存在。"
#: ../src/msw/registry.cpp:625
#, c-format
@@ -6248,23 +6230,23 @@ msgid ""
msgstr ""
"正常的系统操作需要注册表项 '%s',\n"
"删除它将使系统进入不可用状态:\n"
-"操作终止."
+"操作终止。"
#: ../src/msw/registry.cpp:754
#, c-format
msgid "Can't delete key '%s'"
-msgstr "无法删除键 '%s'"
+msgstr "无法删除注册表项 '%s'"
#: ../src/msw/registry.cpp:782
#, c-format
msgid "Can't delete value '%s' from key '%s'"
-msgstr "无法删除值 '%s' 位于键 '%s'"
+msgstr "无法从注册表项 '%2$s' 中删除值 '%1$s'"
#: ../src/msw/registry.cpp:855 ../src/msw/registry.cpp:887
#: ../src/msw/registry.cpp:929 ../src/msw/registry.cpp:1000
#, c-format
msgid "Can't read value of key '%s'"
-msgstr "无法读项 '%s' 的值"
+msgstr "无法读取注册表项 '%s' 的值"
#: ../src/msw/registry.cpp:873 ../src/msw/registry.cpp:915
#: ../src/msw/registry.cpp:963 ../src/msw/registry.cpp:1106
@@ -6275,32 +6257,32 @@ msgstr "无法设置 '%s' 的值"
#: ../src/msw/registry.cpp:894 ../src/msw/registry.cpp:943
#, c-format
msgid "Registry value \"%s\" is not numeric (but of type %s)"
-msgstr "注册表值 “%s\" 不是数字(但类型为 %s)"
+msgstr "注册表值 \"%s\" 不是数字类型(而是 %s 类型)"
#: ../src/msw/registry.cpp:979
#, c-format
msgid "Registry value \"%s\" is not binary (but of type %s)"
-msgstr "注册表值 “%s\" 不是二进制的(但类型为 %s)"
+msgstr "注册表值 \"%s\" 不是二进制类型(而是 %s 类型)"
#: ../src/msw/registry.cpp:1028
#, c-format
msgid "Registry value \"%s\" is not text (but of type %s)"
-msgstr "注册表值 “%s\" 不是文本(但类型为 %s)"
+msgstr "注册表值 \"%s\" 不是文本类型(而是 %s 类型)"
#: ../src/msw/registry.cpp:1089
#, c-format
msgid "Can't read value of '%s'"
-msgstr "无法读 '%s' 的值"
+msgstr "无法读取 '%s' 的值"
#: ../src/msw/registry.cpp:1157
#, c-format
msgid "Can't enumerate values of key '%s'"
-msgstr "无法枚举键 '%s' 的值"
+msgstr "无法枚举注册表项 '%s' 的值"
#: ../src/msw/registry.cpp:1196
#, c-format
msgid "Can't enumerate subkeys of key '%s'"
-msgstr "无法枚举键 '%s' 的子键"
+msgstr "无法枚举注册表项 '%s' 的子项"
#: ../src/msw/registry.cpp:1262
#, c-format
@@ -6311,12 +6293,12 @@ msgstr "导出注册表项:文件 \"%s\" 已经存在,无法覆盖。"
#: ../src/msw/registry.cpp:1411
#, c-format
msgid "Can't export value of unsupported type %d."
-msgstr "无法导出不支持的类型 %d 的值."
+msgstr "无法导出不支持的类型 %d 的值。"
#: ../src/msw/registry.cpp:1427
#, c-format
msgid "Ignoring value \"%s\" of the key \"%s\"."
-msgstr "忽略值 \"%s\" (项 \"%s\")。"
+msgstr "忽略注册表项 \"%2$s\" 的值 \"%1$s\"。"
#: ../src/msw/textctrl.cpp:596
msgid ""
@@ -6327,7 +6309,7 @@ msgstr ""
#: ../src/msw/thread.cpp:522 ../src/unix/threadpsx.cpp:850
msgid "Cannot start thread: error writing TLS."
-msgstr "无法启动线程:写 TLS 出错。"
+msgstr "无法启动线程:写入 TLS 出错。"
#: ../src/msw/thread.cpp:613
msgid "Can't set thread priority"
@@ -6398,7 +6380,7 @@ msgstr "无法锁定资源 \"%s\"。"
#: ../src/msw/utils.cpp:1209
#, c-format
msgid "build %lu"
-msgstr "构建 %lu"
+msgstr "构建号 %lu"
#: ../src/msw/utils.cpp:1218
msgid ", 64-bit edition"
@@ -6433,7 +6415,7 @@ msgstr "无法从 '%s' 中读取图标。"
#: ../src/msw/webview_edge.cpp:285
msgid "This program was compiled without support for setting Edge proxy."
-msgstr ""
+msgstr "编译本程序时选择了不支持设置 Edge 代理。"
#: ../src/msw/webview_ie.cpp:1010
msgid "Failed to find web view emulation level in the registry"
@@ -6464,34 +6446,29 @@ msgid "File type:"
msgstr "文件类型:"
#: ../src/osx/cocoa/
menu.mm:242
-#, fuzzy
msgctxt "macOS menu name"
msgid "Window"
-msgstr "视窗"
+msgstr "窗口"
#: ../src/osx/cocoa/
menu.mm:259
-#, fuzzy
msgctxt "macOS menu name"
msgid "Help"
msgstr "帮助"
#: ../src/osx/cocoa/
menu.mm:298
-#, fuzzy
msgctxt "macOS menu item"
msgid "Minimize"
msgstr "最小化"
#: ../src/osx/cocoa/
menu.mm:303
-#, fuzzy
msgctxt "macOS menu item"
msgid "Zoom"
-msgstr "放大缩小"
+msgstr "缩放"
#: ../src/osx/cocoa/
menu.mm:309
-#, fuzzy
msgctxt "macOS menu item"
msgid "Bring All to Front"
-msgstr "最上层显示"
+msgstr "前置全部窗口"
#: ../src/osx/core/sound.cpp:143
#, c-format
@@ -6501,14 +6478,14 @@ msgstr "无法从 \"%s\" 加载声音 (错误 %d)。"
#: ../src/osx/fontutil.cpp:80
#, c-format
msgid "Font file \"%s\" doesn't exist."
-msgstr "字体文件“%s\"不存在。"
+msgstr "字体文件 \"%s\" 不存在。"
#: ../src/osx/fontutil.cpp:88
#, c-format
msgid ""
"Font file \"%s\" cannot be used as it is not inside the font directory "
"\"%s\"."
-msgstr "无法使用字体文件 “%s”,因为它不在字体目录 “%s” 内。"
+msgstr "无法使用字体文件 \"%s\",因为它不在字体目录 \"%s\" 内。"
#: ../src/osx/menu_osx.cpp:496
#, c-format
@@ -6780,7 +6757,7 @@ msgstr "银色"
#: ../src/propgrid/advprops.cpp:1572
msgid "Lime"
-msgstr "莱姆色"
+msgstr "草绿色"
#: ../src/propgrid/advprops.cpp:1573
msgid "Aqua"
@@ -6988,7 +6965,9 @@ msgstr "资源错误:%s"
msgid ""
"Type operation \"%s\" failed: Property labeled \"%s\" is of type \"%s\", NOT "
"\"%s\"."
-msgstr "类型操作“%s\"失败:标记为“%s\"的属性属于“%s\"类型,而不是“%s\"类型。"
+msgstr ""
+"类型操作 \"%s\" 失败:标记为 \"%s\" 的属性属于 \"%s\" 类型,而不是 \"%s\" 类"
+"型。"
#: ../src/propgrid/props.cpp:159
#, c-format
@@ -7025,7 +7004,7 @@ msgstr "选择文件"
#: ../src/qt/mdi.cpp:254
msgid "&Tile"
-msgstr ""
+msgstr "平铺(&T)"
#: ../src/richtext/richtextbackgroundpage.cpp:147
#: ../src/richtext/richtextformatdlg.cpp:376
@@ -7566,7 +7545,7 @@ msgstr "方块属性"
#: ../src/richtext/richtextbuffer.cpp:10006
msgid "Multiple Cell Properties"
-msgstr "多重单元属性"
+msgstr "多个单元格属性"
#: ../src/richtext/richtextbuffer.cpp:10008
msgid "Cell Properties"
@@ -7620,14 +7599,14 @@ msgstr "可用的项目符号样式。"
#: ../src/richtext/richtextbulletspage.cpp:158
#: ../src/richtext/richtextliststylepage.cpp:221
msgid "Peri&od"
-msgstr "时期(&o)"
+msgstr "英文句号(&o)"
#: ../src/richtext/richtextbulletspage.cpp:160
#: ../src/richtext/richtextbulletspage.cpp:162
#: ../src/richtext/richtextliststylepage.cpp:223
#: ../src/richtext/richtextliststylepage.cpp:225
msgid "Check to add a period after the bullet."
-msgstr "勾选以在项目符号后加上句号。"
+msgstr "勾选以在项目符号后加上英文句号。"
#. TRANSLATORS: Bullet point in parentheses option
#: ../src/richtext/richtextbulletspage.cpp:167
@@ -7696,7 +7675,7 @@ msgstr "点击浏览该符号。"
#: ../src/richtext/richtextbulletspage.cpp:230
#: ../src/richtext/richtextliststylepage.cpp:291
msgid "Symbol &font:"
-msgstr "符号样式(&F)"
+msgstr "符号样式(&f):"
#: ../src/richtext/richtextbulletspage.cpp:235
#: ../src/richtext/richtextbulletspage.cpp:237
@@ -7707,7 +7686,7 @@ msgstr "可用字体。"
#: ../src/richtext/richtextbulletspage.cpp:242
#: ../src/richtext/richtextliststylepage.cpp:302
msgid "S&tandard bullet name:"
-msgstr "标准项目符号名称(&t)"
+msgstr "标准项目符号名称(&t):"
#: ../src/richtext/richtextbulletspage.cpp:247
#: ../src/richtext/richtextbulletspage.cpp:249
@@ -7881,7 +7860,7 @@ msgstr "选择是否粗体。"
#: ../src/richtext/richtextfontpage.cpp:233
msgid "&Underlining:"
-msgstr "下划线(&U)"
+msgstr "下划线(&U):"
#: ../src/richtext/richtextfontpage.cpp:238
#: ../src/richtext/richtextfontpage.cpp:240
@@ -7927,7 +7906,7 @@ msgstr "小型大写(&a)"
#: ../src/richtext/richtextfontpage.cpp:290
#: ../src/richtext/richtextfontpage.cpp:292
msgid "Check to show the text in small capitals."
-msgstr "选中以小写字母显示文本。"
+msgstr "勾选显示为小型大写。"
#: ../src/richtext/richtextfontpage.cpp:295
msgid "Supe&rscript"
@@ -7949,7 +7928,7 @@ msgstr "勾选显示为下标。"
#: ../src/richtext/richtextfontpage.cpp:312
msgid "Rig&ht-to-left"
-msgstr "从右到左"
+msgstr "从右到左(&h)"
#: ../src/richtext/richtextfontpage.cpp:314
#: ../src/richtext/richtextfontpage.cpp:316
@@ -7988,7 +7967,7 @@ msgstr "(无)"
#: ../src/richtext/richtextfontpage.cpp:349
#: ../src/richtext/richtextfontpage.cpp:353
msgid "Regular"
-msgstr "一般"
+msgstr "常规"
#: ../src/richtext/richtextfontpage.cpp:357
msgid "Not underlined"
@@ -7996,11 +7975,11 @@ msgstr "无下划线"
#: ../src/richtext/richtextformatdlg.cpp:341
msgid "Indents && Spacing"
-msgstr "锁紧和空格"
+msgstr "缩进和间距"
#: ../src/richtext/richtextformatdlg.cpp:346
msgid "Tabs"
-msgstr "标签"
+msgstr "制表位"
#: ../src/richtext/richtextformatdlg.cpp:351
msgid "Bullets"
@@ -8135,24 +8114,24 @@ msgstr "间距(&S) (十分之一毫米)"
#: ../src/richtext/richtextindentspage.cpp:252
msgid "&Before a paragraph:"
-msgstr "段落之前(&B):"
+msgstr "段前(&B):"
#: ../src/richtext/richtextindentspage.cpp:256
#: ../src/richtext/richtextindentspage.cpp:258
#: ../src/richtext/richtextliststylepage.cpp:433
#: ../src/richtext/richtextliststylepage.cpp:435
msgid "The spacing before the paragraph."
-msgstr "段落之前的间距。"
+msgstr "段落前的间距。"
#: ../src/richtext/richtextindentspage.cpp:261
msgid "&After a paragraph:"
-msgstr "段落之后(&A):"
+msgstr "段后(&A):"
#: ../src/richtext/richtextindentspage.cpp:266
#: ../src/richtext/richtextliststylepage.cpp:442
#: ../src/richtext/richtextliststylepage.cpp:444
msgid "The spacing after the paragraph."
-msgstr "段落之后的间距。"
+msgstr "段落后的间距。"
#: ../src/richtext/richtextindentspage.cpp:269
msgid "L&ine spacing:"
@@ -8161,7 +8140,7 @@ msgstr "行距(&I):"
#: ../src/richtext/richtextindentspage.cpp:274
#: ../src/richtext/richtextliststylepage.cpp:452
msgid "Single"
-msgstr "单一"
+msgstr "单倍"
#: ../src/richtext/richtextindentspage.cpp:275
#: ../src/richtext/richtextliststylepage.cpp:453
@@ -8222,12 +8201,12 @@ msgstr "行距。"
#: ../src/richtext/richtextindentspage.cpp:292
msgid "&Page Break"
-msgstr "断页符号(&P)"
+msgstr "分页符(&P)"
#: ../src/richtext/richtextindentspage.cpp:294
#: ../src/richtext/richtextindentspage.cpp:296
msgid "Inserts a page break before the paragraph."
-msgstr "在段落前插入断页符。"
+msgstr "在段落前插入分页符。"
#: ../src/richtext/richtextindentspage.cpp:302
#: ../src/richtext/richtextindentspage.cpp:304
@@ -8241,7 +8220,7 @@ msgstr "列表层级(&L):"
#: ../src/richtext/richtextliststylepage.cpp:186
#: ../src/richtext/richtextliststylepage.cpp:188
msgid "Selects the list level to edit."
-msgstr "选择并辨析列表层级。"
+msgstr "选择并编辑列表层级。"
#: ../src/richtext/richtextliststylepage.cpp:193
msgid "&Font for Level..."
@@ -8258,11 +8237,11 @@ msgstr "项目符号样式"
#: ../src/richtext/richtextliststylepage.cpp:429
msgid "Before a paragraph:"
-msgstr "段落之前:"
+msgstr "段前:"
#: ../src/richtext/richtextliststylepage.cpp:438
msgid "After a paragraph:"
-msgstr "段落之后:"
+msgstr "段后:"
#: ../src/richtext/richtextliststylepage.cpp:447
msgid "Line spacing:"
@@ -8270,7 +8249,7 @@ msgstr "行距:"
#: ../src/richtext/richtextliststylepage.cpp:470
msgid "Spacing"
-msgstr "空格"
+msgstr "间距"
#: ../src/richtext/richtextmarginspage.cpp:193
#: ../src/richtext/richtextmarginspage.cpp:195
@@ -8371,7 +8350,7 @@ msgstr "浮动模式(&F):"
#: ../src/richtext/richtextsizepage.cpp:252
#: ../src/richtext/richtextsizepage.cpp:254
msgid "How the object will float relative to the text."
-msgstr "对象怎样浮动与文本有关。"
+msgstr "对象相对于文本如何浮动。"
#: ../src/richtext/richtextsizepage.cpp:265
msgid "Alignment"
@@ -8379,7 +8358,7 @@ msgstr "对齐"
#: ../src/richtext/richtextsizepage.cpp:277
msgid "&Vertical alignment:"
-msgstr "垂直对齐(&V)"
+msgstr "垂直对齐(&V):"
#: ../src/richtext/richtextsizepage.cpp:279
#: ../src/richtext/richtextsizepage.cpp:281
@@ -8514,7 +8493,7 @@ msgstr "位置"
#: ../src/richtext/richtextsizepage.cpp:513
msgid "&Position mode:"
-msgstr "位置(&P)"
+msgstr "位置(&P):"
#: ../src/richtext/richtextsizepage.cpp:517
#: ../src/richtext/richtextsizepage.cpp:522
@@ -8813,7 +8792,7 @@ msgstr "子集(&S):"
#: ../src/richtext/richtextsymboldlg.cpp:401
#: ../src/richtext/richtextsymboldlg.cpp:403
msgid "Shows a Unicode subset."
-msgstr "显示统一编码子集。"
+msgstr "显示统一码子集。"
#: ../src/richtext/richtextsymboldlg.cpp:412
msgid "xxxx"
@@ -8836,7 +8815,7 @@ msgstr "从(&F):"
#: ../src/richtext/richtextsymboldlg.cpp:434
#: ../src/richtext/richtextsymboldlg.cpp:435
msgid "Unicode"
-msgstr "统一编码"
+msgstr "统一码"
#: ../src/richtext/richtextsymboldlg.cpp:436
#: ../src/richtext/richtextsymboldlg.cpp:438
@@ -8853,7 +8832,7 @@ msgstr "(正常字体)"
#: ../src/richtext/richtexttabspage.cpp:109
msgid "&Position (tenths of a mm):"
-msgstr "位置(&P) (十分之一毫米)"
+msgstr "位置(&P) (十分之一毫米):"
#: ../src/richtext/richtexttabspage.cpp:113
#: ../src/richtext/richtexttabspage.cpp:115
@@ -8959,12 +8938,12 @@ msgstr "无法将描述符 %d 加到 epoll 描述符 %d"
#: ../src/unix/epolldispatcher.cpp:136
#, c-format
msgid "Failed to modify descriptor %d in epoll descriptor %d"
-msgstr "无法修改描述符 %d (于 epoll 描述符 %d)"
+msgstr "无法修改 epoll 描述符 %2$d 中的描述符 %1$d"
#: ../src/unix/epolldispatcher.cpp:155
#, c-format
msgid "Failed to unregister descriptor %d from epoll descriptor %d"
-msgstr "无法注销描述符 %d 位于 epoll 描述符 %d"
+msgstr "无法从 epoll 描述符 %2$d 中注销描述符 %1$d"
#: ../src/unix/epolldispatcher.cpp:213
#, c-format
@@ -8991,7 +8970,7 @@ msgstr "无法删除 inotify watch %i"
#: ../src/unix/fswatcher_inotify.cpp:271
#, c-format
msgid "Unexpected event for \"%s\": no matching watch descriptor."
-msgstr "“%s” 的异常事件:没有匹配的监控描述符。"
+msgstr "意外事件 \"%s\":没有匹配的监控描述符。"
#: ../src/unix/fswatcher_inotify.cpp:320
#, c-format
@@ -9034,7 +9013,7 @@ msgstr "媒体回放错误:%s"
#: ../src/unix/mediactrl.cpp:1228
#, c-format
msgid "Failed to prepare playing \"%s\"."
-msgstr "无法准备播放 “%s”。"
+msgstr "无法准备播放 \"%s\"。"
#: ../src/unix/snglinst.cpp:164
#, c-format
@@ -9044,12 +9023,12 @@ msgstr "无法写入锁定文件 '%s'"
#: ../src/unix/snglinst.cpp:177
#, c-format
msgid "Failed to set permissions on lock file '%s'"
-msgstr "无法在锁定文件 '%s' 上设置许可权限"
+msgstr "无法设置锁定文件 '%s' 的权限"
#: ../src/unix/snglinst.cpp:194
#, c-format
msgid "Failed to lock the lock file '%s'"
-msgstr "无法锁定上锁文件 '%s'"
+msgstr "无法给锁定文件 '%s' 上锁"
#: ../src/unix/snglinst.cpp:237
#, c-format
@@ -9115,16 +9094,16 @@ msgstr "无法异步地播放声音。"
#: ../src/unix/sound.cpp:458
#, c-format
msgid "Couldn't load sound data from '%s'."
-msgstr "无法从 '%s' 中的读取声音数据。"
+msgstr "无法从 '%s' 中加载声音数据。"
#: ../src/unix/sound.cpp:465
#, c-format
msgid "Sound file '%s' is in unsupported format."
-msgstr "声音文件 '%s' 为不支持的格式。"
+msgstr "不支持声音文件 '%s' 的格式。"
#: ../src/unix/sound.cpp:480
msgid "Sound data are in unsupported format."
-msgstr "声音数据为不支持的格式。"
+msgstr "不支持声音数据的格式。"
#: ../src/unix/sound_sdl.cpp:226
#, c-format
@@ -9133,7 +9112,7 @@ msgstr "无法打开音频:%s"
#: ../src/unix/threadpsx.cpp:1033
msgid "Cannot retrieve thread scheduling policy."
-msgstr "无法找回线程调度策略。"
+msgstr "无法读取线程调度策略。"
#: ../src/unix/threadpsx.cpp:1058
#, c-format
@@ -9148,7 +9127,7 @@ msgstr "线程优先级设置被忽略。"
msgid ""
"Failed to join a thread, potential memory leak detected - please restart the "
"program"
-msgstr "无法合并线程,检测到潜在地内存丢失 - 请重新启动系统"
+msgstr "线程回收失败,检测到潜在的内存泄漏 - 请重启程序"
#: ../src/unix/threadpsx.cpp:1352
#, c-format
@@ -9170,7 +9149,7 @@ msgstr "线程模块初始化失败:创建线程键失败"
#: ../src/unix/utilsunx.cpp:340
msgid "Impossible to get child process input"
-msgstr "不可能获得子过程的输入"
+msgstr "无法获取子进程输入"
#: ../src/unix/utilsunx.cpp:390
msgid "Can't write to child process's stdin"
@@ -9187,31 +9166,31 @@ msgstr "Fork 失败"
#: ../src/unix/utilsunx.cpp:701
msgid "Failed to set process priority"
-msgstr "无法设置线程优先级"
+msgstr "无法设置进程优先级"
#: ../src/unix/utilsunx.cpp:712
msgid "Failed to redirect child process input/output"
-msgstr "无法重定向子过程输入/输出"
+msgstr "无法重定向子进程输入/输出"
#: ../src/unix/utilsunx.cpp:816
msgid "Failed to set up non-blocking pipe, the program might hang."
-msgstr "无法设置非闭塞通道,程序可能挂起。"
+msgstr "设置非阻塞管道失败,程序可能会挂起。"
#: ../src/unix/utilsunx.cpp:1023
msgid "Cannot get the hostname"
-msgstr "无法获得主机名"
+msgstr "无法获取主机名"
#: ../src/unix/utilsunx.cpp:1059
msgid "Cannot get the official hostname"
-msgstr "无法获得正式的主机名"
+msgstr "无法获取正式主机名"
#: ../src/unix/wakeuppipe.cpp:49
msgid "Failed to create wake up pipe used by event loop."
-msgstr "无法创建被事件循环使用的唤醒管道。"
+msgstr "无法创建用于事件循环的唤醒管道。"
#: ../src/unix/wakeuppipe.cpp:56
msgid "Failed to switch wake up pipe to non-blocking mode"
-msgstr "无法将唤醒管道切换至非闭塞模式"
+msgstr "无法将唤醒管道切换至非阻塞模式"
#: ../src/unix/wakeuppipe.cpp:117
msgid "Failed to read from wake-up pipe"
@@ -9239,12 +9218,12 @@ msgstr "无法打开显示设备 \"%s\"。"
#: ../src/xml/xml.cpp:868
#, c-format
msgid "XML parsing error: '%s' at line %d"
-msgstr "XML 解析错误:'%s',位于行 %d"
+msgstr "XML 解析错误:'%s',位于第 %d 行"
#: ../src/xrc/xh_propgrid.cpp:239
-#, fuzzy, c-format
+#, c-format
msgid "Page %i"
-msgstr "页 %d"
+msgstr "页 %i"
#: ../src/xrc/xmlres.cpp:448
#, c-format
=====================================
misc/schema/xrc_schema.rnc
=====================================
@@ -1083,6 +1083,8 @@ wxInfoBar =
[xrc:p="o"] element effectduration {_, t_integer }* &
[xrc:p="o"] element showeffect {_, t_showeffect }* &
[xrc:p="o"] element hideeffect {_, t_showeffect }* &
+ [xrc:p="o"] element checkboxlabel {_, t_text }* &
+ [xrc:p="o"] element checked {_, t_bool }* &
element object {
attribute class { "button" } &
attribute name { t_identifier }? &
=====================================
samples/dialogs/dialogs.cpp
=====================================
@@ -721,7 +721,7 @@ MyFrame::MyFrame(const wxString& title)
#if wxUSE_INFOBAR
// an info bar can be created very simply and used without any extra effort
- m_infoBarSimple = new wxInfoBar(this);
+ m_infoBarSimple = new wxInfoBar(this, wxID_ANY, wxINFOBAR_CHECKBOX);
// or it can also be customized by
m_infoBarAdvanced = new wxInfoBar(this);
@@ -942,6 +942,13 @@ void MyFrame::LogDialog(wxCommandEvent& WXUNUSED(event))
void MyFrame::InfoBarSimple(wxCommandEvent& WXUNUSED(event))
{
static int s_count = 0;
+ static bool s_dontShowAgain = false;
+
+ if (s_dontShowAgain)
+ {
+ wxMessageBox("You asked to not see this again. Remember?");
+ return;
+ }
wxString msg;
if ( ++s_count % 2 )
@@ -959,7 +966,21 @@ void MyFrame::InfoBarSimple(wxCommandEvent& WXUNUSED(event))
s_count);
}
+ m_infoBarSimple->ShowCheckBox(_("Do not show this again"), false);
m_infoBarSimple->ShowMessage(msg);
+ // intercept the close button being clicked
+ m_infoBarSimple->Bind(wxEVT_BUTTON,
+ [this](wxCommandEvent& WXUNUSED(event))
+ {
+ // dismiss the message and (if a generic control)
+ // see if the "don't show this again" checkbox
+ // was checked and handle that for next time
+ m_infoBarSimple->Dismiss();
+ if (m_infoBarSimple->IsCheckBoxChecked())
+ {
+ s_dontShowAgain = true;
+ };
+ }, wxID_CLOSE);
}
void MyFrame::InfoBarAdvanced(wxCommandEvent& WXUNUSED(event))
=====================================
src/common/dpycmn.cpp
=====================================
@@ -91,6 +91,10 @@ wxDisplay::wxDisplay(const wxWindow* window)
: Factory().GetPrimaryDisplay();
}
+// Note that this dtor must be implemented here, where wxDisplayImpl is fully
+// declared, and not inline.
+wxDisplay::~wxDisplay() = default;
+
// ----------------------------------------------------------------------------
// static functions forwarded to wxDisplayFactory
// ----------------------------------------------------------------------------
@@ -119,17 +123,27 @@ wxDisplay::wxDisplay(const wxWindow* window)
/* static */ void wxDisplay::InvalidateCache()
{
- Factory().InvalidateCache();
+ Factory().UpdateOnDisplayChange();
}
// ----------------------------------------------------------------------------
// functions forwarded to wxDisplayImpl
// ----------------------------------------------------------------------------
+bool wxDisplay::IsConnected() const
+{
+ wxCHECK_MSG( IsOk(), false, wxT("invalid wxDisplay object") );
+
+ return m_impl->IsConnected();
+}
+
wxRect wxDisplay::GetGeometry() const
{
wxCHECK_MSG( IsOk(), wxRect(), wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return wxRect();
+
return m_impl->GetGeometry();
}
@@ -137,6 +151,9 @@ wxRect wxDisplay::GetClientArea() const
{
wxCHECK_MSG( IsOk(), wxRect(), wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return wxRect();
+
return m_impl->GetClientArea();
}
@@ -144,6 +161,9 @@ wxSize wxDisplay::GetPPI() const
{
wxCHECK_MSG( IsOk(), wxSize(), wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return wxSize();
+
return m_impl->GetPPI();
}
@@ -151,6 +171,9 @@ double wxDisplay::GetScaleFactor() const
{
wxCHECK_MSG( IsOk(), 0, wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return 0.0;
+
return m_impl->GetScaleFactor();
}
@@ -158,6 +181,9 @@ int wxDisplay::GetDepth() const
{
wxCHECK_MSG( IsOk(), 0, wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return 0;
+
return m_impl->GetDepth();
}
@@ -165,12 +191,15 @@ wxString wxDisplay::GetName() const
{
wxCHECK_MSG( IsOk(), wxString(), wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return wxString();
+
return m_impl->GetName();
}
bool wxDisplay::IsPrimary() const
{
- return m_impl && m_impl->IsPrimary();
+ return m_impl && m_impl->IsConnected() && m_impl->IsPrimary();
}
#if wxUSE_DISPLAY
@@ -179,6 +208,9 @@ wxArrayVideoModes wxDisplay::GetModes(const wxVideoMode& mode) const
{
wxCHECK_MSG( IsOk(), wxArrayVideoModes(), wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return wxArrayVideoModes();
+
return m_impl->GetModes(mode);
}
@@ -186,6 +218,9 @@ wxVideoMode wxDisplay::GetCurrentMode() const
{
wxCHECK_MSG( IsOk(), wxVideoMode(), wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return wxVideoMode();
+
return m_impl->GetCurrentMode();
}
@@ -193,6 +228,9 @@ bool wxDisplay::ChangeMode(const wxVideoMode& mode)
{
wxCHECK_MSG( IsOk(), false, wxT("invalid wxDisplay object") );
+ if ( !m_impl->IsConnected() )
+ return false;
+
return m_impl->ChangeMode(mode);
}
@@ -216,18 +254,56 @@ bool wxDisplay::ChangeMode(const wxVideoMode& mode)
// wxDisplayFactory implementation
// ============================================================================
+bool wxDisplayFactory::RefreshOnDisplayChange(wxDisplayImpl& impl) const
+{
+ // We have no means to detect if the display is still connected here, so
+ // assume it isn't any more: this is safer than assuming that it still is.
+ //
+ // Of course, ideally this should be really implemented in port-specific
+ // code.
+ impl.Disconnect();
+
+ return false;
+}
+
void wxDisplayFactory::ClearImpls()
{
- for ( size_t n = 0; n < m_impls.size(); ++n )
+ m_impls.clear();
+}
+
+wxObjectDataPtr<wxDisplayImpl> wxDisplayFactory::GetDisplay(unsigned n)
+{
+ // Normally, m_impls should be cleared if the number of displays in the
+ // system changes because InvalidateCache() must be called. However in
+ // some ports, cache invalidation never happens, so we can end up with
+ // m_impls size being out of sync with the actual number of monitors.
+ // Compensate for this here by checking if the index is invalid and
+ // invalidating the cache at least in this case.
+ //
+ // Note that this is still incorrect because we continue using outdated
+ // information if the first monitor is disconnected, for example. The
+ // only real solution is to ensure that InvalidateCache() is called,
+ // but for now this at least avoids crashes when a new display is
+ // connected.
+ if ( n >= m_impls.size() )
{
- // It can be null, that's ok.
- delete m_impls[n];
+ // This strange two-step resize is done to clear all the existing
+ // elements: they may not be valid any longer if the number of
+ // displays has changed.
+ m_impls.resize(0);
+ m_impls.resize(GetCount());
}
- m_impls.clear();
+ // Return the existing display if we have it or create a new one.
+ auto& impl = m_impls[n];
+
+ if ( !impl )
+ impl = CreateDisplay(n);
+
+ return impl;
}
-wxDisplayImpl* wxDisplayFactory::GetPrimaryDisplay()
+wxObjectDataPtr<wxDisplayImpl> wxDisplayFactory::GetPrimaryDisplay()
{
// Just use dumb linear search -- there seems to be the most reliable way
// to do this in general. In particular, primary monitor is not guaranteed
@@ -235,14 +311,14 @@ wxDisplayImpl* wxDisplayFactory::GetPrimaryDisplay()
const unsigned count = GetCount();
for ( unsigned n = 0; n < count; ++n )
{
- wxDisplayImpl* const d = GetDisplay(n);
+ auto const d = GetDisplay(n);
if ( d && d->IsPrimary() )
return d;
}
// This is not supposed to happen, but what else can we do if it
// somehow does?
- return nullptr;
+ return wxObjectDataPtr<wxDisplayImpl>();
}
int wxDisplayFactory::GetFromRect(const wxRect& r)
@@ -287,6 +363,29 @@ int wxDisplayFactory::GetFromWindow(const wxWindow *window)
return GetFromRect(window->GetScreenRect());
}
+void wxDisplayFactory::UpdateOnDisplayChange()
+{
+ // Prepare the new vector by copying the still valid displays into it.
+ //
+ // Preserve the invariant that m_impls size is always equal to the number
+ // of displays.
+ wxVector<wxObjectDataPtr<wxDisplayImpl>> impls(GetCount());
+
+ for ( auto& impl : m_impls )
+ {
+ // Object may be empty if not accessed yet.
+ // Try to update display state or mark it as disconnected.
+ if ( impl && RefreshOnDisplayChange(*impl) )
+ {
+ // If display is still connected put it at the new index position:
+ // it must have been updated by RefreshOnDisplayChange().
+ impls[impl->GetIndex()] = impl;
+ }
+ }
+
+ m_impls = std::move(impls);
+}
+
// ============================================================================
// wxDisplayFactorySingle implementation
// ============================================================================
=====================================
src/generic/infobar.cpp
=====================================
@@ -35,6 +35,8 @@
#include "wx/artprov.h"
#include "wx/scopeguard.h"
+#include "wx/valgen.h"
+#include "wx/checkbox.h"
#ifdef __WXGTK3__
#include "wx/gtk/private/wrapgtk.h"
@@ -45,6 +47,7 @@
wxBEGIN_EVENT_TABLE(wxInfoBarGeneric, wxInfoBarBase)
EVT_BUTTON(wxID_ANY, wxInfoBarGeneric::OnButton)
+ EVT_BUTTON(wxID_CLOSE, wxInfoBarGeneric::OnButton)
wxEND_EVENT_TABLE()
// ============================================================================
@@ -64,11 +67,12 @@ void wxInfoBarGeneric::Init()
m_effectDuration = 0;
}
-bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid)
+bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid, long style)
{
// calling Hide() before Create() ensures that we're created initially
// hidden
Hide();
+ SetWindowStyle(style);
if ( !wxWindow::Create(parent, winid) )
return false;
@@ -115,19 +119,37 @@ bool wxInfoBarGeneric::Create(wxWindow *parent, wxWindowID winid)
if(!m_hasFgCol)
m_text->SetForegroundColour(colFg);
- m_button = wxBitmapButton::NewCloseButton(this, wxID_ANY);
+ m_button = wxBitmapButton::NewCloseButton(this, wxID_CLOSE);
m_button->SetToolTip(_("Hide this notification message."));
+ m_checkbox =
+ new wxCheckBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition,
+ wxDefaultSize, 0, wxGenericValidator(&m_checked));
+ m_checkbox->SetForegroundColour(
+ wxSystemSettings::GetColour(wxSYS_COLOUR_INFOTEXT));
+
// center the text inside the sizer with an icon to the left of it and a
// button at the very right
//
// NB: AddButton() relies on the button being the last control in the sizer
// and being preceded by a spacer
wxSizer * const sizer = new wxBoxSizer(wxHORIZONTAL);
- sizer->Add(m_icon, wxSizerFlags().Centre().Border());
- sizer->Add(m_text, wxSizerFlags().Proportion(1).Centre());
- sizer->AddSpacer(0); // This spacer only exists for compatibility.
- sizer->Add(m_button, wxSizerFlags().Centre().Border());
+ wxSizer * const defaultControlSizer = new wxBoxSizer(wxVERTICAL);
+ wxBoxSizer* const firstRowSizer = new wxBoxSizer(wxHORIZONTAL);
+ firstRowSizer->Add(m_icon, wxSizerFlags{}.Centre().Border());
+ firstRowSizer->Add(m_text, wxSizerFlags{}.Proportion(1).Centre());
+ firstRowSizer->AddSpacer(0); // This spacer only exists for compatibility.
+ firstRowSizer->Add(m_button, wxSizerFlags{}.Centre().Border());
+
+ wxBoxSizer* const secondRowSizer = new wxBoxSizer(wxHORIZONTAL);
+ secondRowSizer->Add(m_checkbox, wxSizerFlags{}.CentreVertical().Border());
+
+ defaultControlSizer->Add(firstRowSizer, wxSizerFlags{ 1 }.Expand());
+ defaultControlSizer->Add(secondRowSizer);
+ defaultControlSizer->Show(m_checkbox, !m_checkbox->GetLabel().empty(), true);
+
+ sizer->Add(defaultControlSizer, wxSizerFlags{ 1 }.Expand());
+
SetSizer(sizer);
return true;
@@ -223,6 +245,8 @@ void wxInfoBarGeneric::UpdateParent()
void wxInfoBarGeneric::DoHide()
{
+ TransferDataFromWindow();
+
HideWithEffect(GetHideEffect(), GetEffectDuration());
UpdateParent();
@@ -230,6 +254,8 @@ void wxInfoBarGeneric::DoHide()
void wxInfoBarGeneric::DoShow()
{
+ TransferDataToWindow();
+
// re-layout the parent first so that the window expands into an already
// unoccupied by the other controls area: for this we need to change our
// internal visibility flag to force Layout() to take us into account (an
@@ -466,4 +492,16 @@ void wxInfoBarGeneric::OnButton(wxCommandEvent& WXUNUSED(event))
DoHide();
}
+void wxInfoBarGeneric::ShowCheckBox(const wxString& checkBoxText, bool checked)
+{
+ wxASSERT_MSG( HasFlag(wxINFOBAR_CHECKBOX),
+ "wxINFOBAR_CHECKBOX style should be set if calling ShowCheckBox()!");
+ m_checked = checked;
+ if (m_checkbox != nullptr)
+ {
+ m_checkbox->SetLabel(checkBoxText);
+ GetSizer()->Show(m_checkbox, !checkBoxText.empty(), true);
+ }
+}
+
#endif // wxUSE_INFOBAR
=====================================
src/gtk/infobar.cpp
=====================================
@@ -75,17 +75,6 @@ public:
// local functions
// ----------------------------------------------------------------------------
-namespace
-{
-
-inline bool UseNative()
-{
- // native GtkInfoBar widget is only available in GTK+ 2.18 and later
- return wx_is_at_least_gtk2(18);
-}
-
-} // anonymous namespace
-
extern "C"
{
@@ -108,10 +97,19 @@ static void wxgtk_infobar_close(GtkInfoBar * WXUNUSED(infobar),
// wxInfoBar implementation
// ============================================================================
-bool wxInfoBar::Create(wxWindow *parent, wxWindowID winid)
+bool wxInfoBar::UseNative() const
+{
+ // Native GtkInfoBar widget is only available in GTK+ 2.18 and later.
+ // Also, if the checkbox is included, then we need to use
+ // the generic version.
+ return wx_is_at_least_gtk2(18) && !HasFlag(wxINFOBAR_CHECKBOX);
+}
+
+bool wxInfoBar::Create(wxWindow *parent, wxWindowID winid, long style)
{
+ SetWindowStyle(style);
if ( !UseNative() )
- return wxInfoBarGeneric::Create(parent, winid);
+ return wxInfoBarGeneric::Create(parent, winid, style);
m_impl = new wxInfoBarGTKImpl;
=====================================
src/msw/display.cpp
=====================================
@@ -140,6 +140,10 @@ public:
virtual wxArrayVideoModes GetModes(const wxVideoMode& mode) const override;
virtual bool ChangeMode(const wxVideoMode& mode) override;
+ // Check if this display is still found in the given vector and update both
+ // its properties and the index to the new values if it is.
+ bool DoRefreshOnDisplayChange(const wxVector<wxDisplayInfo>& displays);
+
protected:
// convert a DEVMODE to our wxVideoMode
static wxVideoMode ConvertToVideoMode(const DEVMODE& dm)
@@ -183,10 +187,21 @@ public:
virtual int GetFromRect(const wxRect& rect) override;
virtual int GetFromWindow(const wxWindow *window) override;
- void InvalidateCache() override
+ void UpdateOnDisplayChange() override
{
- wxDisplayFactory::InvalidateCache();
+ // Update m_displays first, before calling the base class version which
+ // will call our RefreshOnDisplayChange() that uses it.
DoRefreshMonitors();
+ wxDisplayFactory::UpdateOnDisplayChange();
+ }
+
+ virtual bool RefreshOnDisplayChange(wxDisplayImpl& impl) const override
+ {
+ // All wxDisplayImpl in a program using this factory are of type
+ // wxDisplayMSW, so the cast is safe.
+ auto& implMSW = static_cast<wxDisplayMSW&>(impl);
+
+ return implMSW.DoRefreshOnDisplayChange(m_displays);
}
// Declare the second argument as int to avoid problems with older SDKs not
@@ -487,6 +502,22 @@ bool wxDisplayMSW::ChangeMode(const wxVideoMode& mode)
return false;
}
+bool
+wxDisplayMSW::DoRefreshOnDisplayChange(const wxVector<wxDisplayInfo>& displays)
+{
+ for ( size_t n = 0; n < displays.size(); ++n )
+ {
+ if ( displays[n].hmon == displays[n].hmon )
+ {
+ m_info = displays[n];
+ m_index = n;
+ return true;
+ }
+ }
+
+ Disconnect();
+ return false;
+}
// ----------------------------------------------------------------------------
// wxDisplayFactoryMSW implementation
=====================================
src/msw/window.cpp
=====================================
@@ -5116,6 +5116,10 @@ bool wxWindowMSW::HandleDisplayChange()
wxDisplayChangedEvent event;
event.SetEventObject(this);
+ // trigger display cache update to ensure the user receives the most
+ // recent display properties on event handling after change.
+ wxDisplay::InvalidateCache();
+
return HandleWindowEvent(event);
}
=====================================
src/xrc/xh_infobar.cpp
=====================================
@@ -36,6 +36,9 @@ wxInfoBarXmlHandler::wxInfoBarXmlHandler()
XRC_ADD_SHOW_EFFECT(wxSHOW_EFFECT_SLIDE_TO_BOTTOM);
XRC_ADD_SHOW_EFFECT(wxSHOW_EFFECT_BLEND);
XRC_ADD_SHOW_EFFECT(wxSHOW_EFFECT_EXPAND);
+
+ XRC_ADD_STYLE(wxINFOBAR_CHECKBOX);
+ AddWindowStyles();
}
wxObject *wxInfoBarXmlHandler::DoCreateResource()
@@ -44,7 +47,18 @@ wxObject *wxInfoBarXmlHandler::DoCreateResource()
{
XRC_MAKE_INSTANCE(control, wxInfoBar)
- control->Create(m_parentAsWindow, GetID());
+ const wxString& checkboxLabel = GetText("checkboxlabel");
+ const bool hasCheckbox = !checkboxLabel.empty();
+
+ long style = GetStyle();
+ if ( hasCheckbox )
+ {
+ // If we have a checkbox, we need to add the wxINFOBAR_CHECKBOX
+ // style to allow using it.
+ style |= wxINFOBAR_CHECKBOX;
+ }
+
+ control->Create(m_parentAsWindow, GetID(), style);
SetupWindow(control);
@@ -57,6 +71,24 @@ wxObject *wxInfoBarXmlHandler::DoCreateResource()
if ( HasParam("effectduration") )
control->SetEffectDuration(GetLong("effectduration"));
+ bool checked = false;
+ if ( HasParam("checked") )
+ {
+ if ( !hasCheckbox )
+ {
+ ReportError
+ (
+ R"(The "checked" parameter can only be specified when )"
+ R"(the "checkboxlabel" parameter is set.)"
+ );
+ }
+
+ checked = GetBool("checked");
+ }
+
+ if ( hasCheckbox )
+ control->ShowCheckBox(checkboxLabel, checked);
+
m_insideBar = true;
CreateChildrenPrivately(control);
m_insideBar = false;
View it on GitLab:
https://gitlab.com/wxwidgets/wxwidgets/-/compare/b734172836951bd8f51fed62bc1ca95e040b116e...826228430eff768441a845d8cfb86f06e998b821
--
View it on GitLab:
https://gitlab.com/wxwidgets/wxwidgets/-/compare/b734172836951bd8f51fed62bc1ca95e040b116e...826228430eff768441a845d8cfb86f06e998b821
You're receiving this email because of your account on
gitlab.com.