diff --git a/.github/workflows/workflow-build.yml b/.github/workflows/workflow-build.yml
index 2df68bf3f4db10..34060cc2a5618b 100644
--- a/.github/workflows/workflow-build.yml
+++ b/.github/workflows/workflow-build.yml
@@ -55,6 +55,10 @@ jobs:
run: |
cd build
echo "google-site-verification: google1a6263055b2bea44.html" >> google1a6263055b2bea44.html
+ - name: Fix version-dropdown links
+ uses: doc4d/doc_postprocessing@v1
+ with:
+ path: ./build
- uses: actions/upload-artifact@v4
with:
path: ./build
diff --git a/README.md b/README.md
index c65701a70d88a4..5db000d2cdd75b 100644
--- a/README.md
+++ b/README.md
@@ -203,6 +203,7 @@ Aller dans l'interface Algolia et lancer un reindex de la doc
3. faire git rebase upstream/main -X ours (remettre tout dans Tempo et en cas de conflit prendre la preprod)
4. git push (fait une PR auto et pas de conflit)
+5. En cas de conflits résolus: sur la preprod sur github, cliquer sur **Sync Fork**.
## Building new architecture for sorted themes
### Edit the sidebars.js file
@@ -405,3 +406,7 @@ Translate commit (apply + commit) — pour appliquer et committer
| 164 (¤) | a_contient_keyword |
| default | (assert) |
+## Fix pour le switch de version entre 21.x et 21 R+ (changement de structure)
+un swizzle :
+https://github.com/doc4d/docs/commit/c20dca17cde1993756ceb632253e0b8144ed7529
+
diff --git a/crowdin.yml b/crowdin.yml
index f0ab9371e79aa1..697b84123e2680 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -1,3 +1,5 @@
+commit_message: New Crowdin updates
+append_commit_message: false
files:
- source: /docs/**/*
ignore:
diff --git a/docs/API/IMAPTransporterClass.md b/docs/API/IMAPTransporterClass.md
index 22bb9f7daf6b7a..81906240b8dc75 100644
--- a/docs/API/IMAPTransporterClass.md
+++ b/docs/API/IMAPTransporterClass.md
@@ -46,7 +46,7 @@ IMAP Transporter objects are instantiated with the [IMAP New transporter](../com
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/docs/Develop/async.md b/docs/Develop/async.md
index 51cd28f3661a21..4eaebd1db93050 100644
--- a/docs/Develop/async.md
+++ b/docs/Develop/async.md
@@ -63,7 +63,7 @@ The calling process posts a message then the worker executes it. The worker can
### Event listening
-In event-driven development, it is obvious that some code must be able to listen for incoming events. Events can be generated by the user interface (such as a mouse click on an object or a keyboard key pressed) or by any other interaction such as an http request or the end of another action. For example, when a form is displayed using the `DIALOG` command, user actions can trigger events that your code can process. A click on a button will trigger the code associated to the button.
+In event-driven development, it is obvious that some code must be able to listen for incoming events. Events can be generated by the user interface (such as a mouse click on an object or a keyboard key pressed) or by any other interaction such as an http request or the end of another action. For example, when a form is displayed using the [`DIALOG`](../commands/dialog) command, user actions can trigger events that your code can process. A click on a button will trigger the code associated to the button.
In the context of asynchronous execution, the following features place your code in listening mode:
diff --git a/docs/FormEditor/forms.md b/docs/FormEditor/forms.md
index 22df991dd74b48..360518bda2d52d 100644
--- a/docs/FormEditor/forms.md
+++ b/docs/FormEditor/forms.md
@@ -67,6 +67,185 @@ You can add or modify 4D forms using the following elements:
}
```
+
+## Using forms
+
+Forms are called using specific commands of the 4D Language. In your 4D desktop applications, forms can be used in various ways, depending on their status within your interface needs. A form can be:
+
+- used in its own window for data viewing, processing, editing, or to display on-screen information to the user,
+- used embedded in another form (subform),
+- used as template for printing,
+- or called by specific features like the Label editor.
+
+
+### Using a project form in a window
+
+When you want to use a form as on-screen dialog, you need to (1) create a window and (2) load the form within the window, along with an event loop to process user actions. The straighforward steps to display a form on screen are:
+
+1. Call the [`Open form window`](../commands/open-form-window) command to create and preconfigure a window tailored for your form. Note that the command only draw aan empty window, it does not display anything.
+2. In the same method, call the [`DIALOG`](../commands/dialog) command to actually load the form in the opened form window, ready for user interaction. [`DIALOG`](../commands/dialog) loads form data and places your code in listening mode to user events. When you call this command without asterisk (\*), the dialog will stay on screen and the code execution is frozen until an event occurs (see also ["Event listening" paragraph](../Develop/async.md#event-listening)).
+3. (optional) Use the [`Form`](../commands/form) command from within the form context to access form data.
+
+
+::note Compatibility
+
+All-in-one commands such as [`ADD RECORD`](../commands/add-record) or [`MODIFY RECORD`](../commands/add-record) merge all steps in a single call. These legacy commands can still be used for prototyping or basic developments but are not adapted to modern, fully controlled interfaces. They directly rely on the 4D database and legacy features such as [table forms](#project-form-and-table-form) and do not benefit from the power and flexibility of [ORDA features](../ORDA/overview.md). Unless specific needs, it is recommended to use project forms for your 4D desktop application interfaces.
+
+:::
+
+
+#### Simple example
+
+You create the following basic form in the [Form editor](./formEditor.md):
+
+
+
+The form is [associated with a "myForm" class](./properties_FormProperties.md#form-class), defined as follow:
+
+```4d
+ //cs.myForm
+property name : Text
+property age : Integer
+
+Class constructor
+ This.name:=""
+ This.age:=0
+```
+
+The form class is automatically instantiated by 4D once the form is loaded. If you execute the following project method:
+
+```4d
+ // Instantiate a form object that will host form data and UI logic
+var $formObject:=cs.myForm.new()
+
+ //Prepare default value within the form object
+$formObject.name:="Smith"
+$formObject.age:=42
+
+ // Create an empty window with ad-hoc settings that fits the desired form dimensions, resizing properties,
+ // and window type (this does not render the form)
+var $win:=Open form window("myForm"; Movable form dialog box; Horizontally centered; Vertically centered)
+
+ //Render the form, and provide $formObject's data. Dialog also activates the form event loop
+DIALOG("myForm"; $formObject)
+
+ //Without asterisk to Dialog statement, the form waits for a closing action from the user
+ //before executing the rest of the code. Calling Close window is just a good practice
+CLOSE WINDOW($win) //releases reference
+
+ //Display data modified by the user, if any/
+ALERT($formObject.name+" is "+String($formObject.age)+" years old!")
+
+```
+
+4D displays:
+
+
+
+
+### Using forms as subforms
+
+A form can be embedded within another form, in which case it becomes a [subform object](../FormObjects/subform_overview.md) which follows specific rules. A subform is automatically used when its parent form is [displayed in a window](#using-a-project-form-in-a-window).
+
+In the same way that you pass an object to a form with the [`DIALOG`](../commands/dialog) command, you can also pass an object to a subform area using the property list. Then, you can use it in the subform with the [`Form`](../commands/form) command. In this example, the "InvoiceAddress" object is bound to the subform:
+
+
+
+
+
+### Using forms to be printed
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+#### Examples
+
+You can use forms to print data, either as page or as list.
+
+- To simply print some part of a form, use the [`Print form`](../commands/print-form) command. For example:
+
+```4d
+var $formData:={}
+$formData.lastname:="Smith"
+$formData.firstname:="john"
+$formData.request:="I need more COFFEE"
+var $h:=Print form("Request_var";$formData;Form detail)
+```
+
+- To print a form within a printing job to process data during printing, use [`FORM LOAD`](../commands/form-load) and [`Print object`](../commands/print-object) commands. For example:
+
+```4d
+ var $formData : Object
+ var $over : Boolean
+ var $full : Boolean
+
+ OPEN PRINTING JOB
+ $formData:={}
+ $formData.LBcollection:=[]
+ ... //fill the collection with data
+
+ FORM LOAD("GlobalForm";$formData)
+ $over:=False
+ Repeat
+ $full:=Print object(*;"LB") // the datasource of this "LB" listbox is Form.LBcollection
+ LISTBOX GET PRINT INFORMATION(*;"LB";lk printing is over;$over)
+ If(Not($over))
+ PAGE BREAK
+ End if
+ Until($over)
+ FORM UNLOAD
+ CLOSE PRINTING JOB
+ ```
+
+
+#### Print rendering engine
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+
+:::tip Related blog post
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+#### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning Limitation
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
+
+
+### Other form usages
+
+There are several other ways to use forms in the 4D applications, including:
+
+- a form can be [inherited](#inherited-forms) from another form,
+- a form can be [associated to a listbox](../FormObjects/properties_ListBox.md#detail-form-name) in response to a user action to display a row using an edit button or a double-click,
+- the [label editor can use a form](../Desktop/labels.md#form-to-use) as template to print labels.
+
+
## Project form and Table form
There are two categories of forms:
@@ -79,7 +258,7 @@ Typically, you select the form category when you create the form, but you can ch
## Form pages
-Each form has is made of at least two pages:
+Each form is made of at least two pages:
- a page 1: a main page, displayed by default
- a page 0: a background page, whose contents is displayed on every other page.
@@ -98,6 +277,8 @@ There are no restrictions on the number of pages a form can have. The same field
A multi-page form has both a background page and several display pages. Objects that are placed on the background page may be visible on all display pages, but can be selected and edited only on the background page. In multi-page forms, you should put your button palette on the background page. You also need to include one or more objects on the background page that provide page navigation tools for the user.
+
+
## Fluent UI rendering
:::caution Developer Preview
diff --git a/docs/FormEditor/properties_Print.md b/docs/FormEditor/properties_Print.md
index c20aa5d482156b..e620e35724bc5d 100644
--- a/docs/FormEditor/properties_Print.md
+++ b/docs/FormEditor/properties_Print.md
@@ -8,7 +8,7 @@ title: Print
Allows defining specific print settings for the form. This feature is useful to view printing page limits in the form editor.
-> **Compatibility:** Even if these settings are taken into account when the form is printed in Application mode, it is discouraged to rely on this feature to store print settings for the form, due to limitations regarding the platform and driver dependency. It is highly recommended to use the 4D commands `Print settings to BLOB`/`BLOB to print settings` which are more powerful.
+> **Compatibility:** Even if these settings are taken into account when the form is printed in Application mode, it is discouraged to rely on this feature to store print settings for the form, due to limitations regarding the platform and driver dependency. It is highly recommended to use the 4D commands [`Print settings to BLOB`](../commands/print-settings-to-blob)/[`BLOB to print settings`](../commands/blob-to-print-settings) which are more powerful.
You can modify the following print settings:
diff --git a/docs/Notes/updates.md b/docs/Notes/updates.md
index 95ae76d4fac791..4dc9c84d0d049b 100644
--- a/docs/Notes/updates.md
+++ b/docs/Notes/updates.md
@@ -18,6 +18,7 @@ Read [**What’s new in 4D 21 R3**](https://blog.4d.com/whats-new-in-4d-21-r3/),
- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component.
- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md).
- Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions.
+- New [printing renderer](../FormEditor/forms.md#print-rendering-engine) for forms on Liquid glass and Fluent UI interfaces. New compatibility options to [enable the renderer on Classic interfaces](../FormEditor/forms.md#legacy-print-renderer).
- Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository).
- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=21_R3): list of all bugs that have been fixed in 4D 21 R3.
@@ -74,7 +75,7 @@ Read [**What’s new in 4D 21 R2**](https://blog.4d.com/whats-new-in-4d-21-r2/),
|Library|Current version|Updated in 4D|Comment|
|---|---|---|----|
-|BoringSSL|9b86817|21|Used for QUIC|
+|BoringSSL|664a985|**21 R4**|Used for QUIC|
|CEF|7258|21|Chromium 139|
|Hunspell|1.7.2|20|Used for spell checking in 4D forms and 4D Write Pro|
|ICU|77.1|21|This upgrade forces an automatic rebuild of alphanumeric, text and object indexes.|
@@ -84,7 +85,7 @@ Read [**What’s new in 4D 21 R2**](https://blog.4d.com/whats-new-in-4d-21-r2/),
|Libuv |1.51.0|21|Used for QUIC|
|libZip|1.11.4|21|Used by zip class, 4D Write Pro, svg and serverNet components|
|LZMA|5.8.1|21||
-|ngtcp2|1.18.0|21|Used for QUIC|
+|ngtcp2|1.22.1|**21 R4**|Used for QUIC|
|OpenSSL|3.5.2|21||
|PDFWriter|4.7.0|21|Used for [`WP Export document`](../WritePro/commands/wp-export-document.md) and [`WP Export variable`](../WritePro/commands/wp-export-variable.md) |
|SpreadJS|18.2.0|21 R2|See [this blog post](https://blog.4d.com/4d-view-pro-whats-new-in-4d-21-r2/) for an overview of the new features|
diff --git a/docs/WritePro/user/user-new.md b/docs/WritePro/user/user-new.md
index 0db04f1ad883ee..77f1d00da79f72 100644
--- a/docs/WritePro/user/user-new.md
+++ b/docs/WritePro/user/user-new.md
@@ -38,7 +38,7 @@ When the list is created using [the WP SET ATTRIBUTE command](../commands-legacy
### Multi-level lists
-Multi-level lists are based on [hierarchical list style sheets](stylesheets.md#hierarchical-list-style-sheets). Multi-level lists contain a root-level style sheet and one or more sub-level style sheet(s). Each level is attached to a hierarchical list style sheet and represents a depth in the list (level 1, level 2, level 3, etc.).
+Multi-level lists are based on [hierarchical list style sheets](../user-legacy/stylesheets.md#hierarchical-list-style-sheets). Multi-level lists contain a root-level style sheet and one or more sub-level style sheet(s). Each level is attached to a hierarchical list style sheet and represents a depth in the list (level 1, level 2, level 3, etc.).
When a new sub-level is created, the level numbering restarts at 1. When you add or remove an element in your multi-level list, the numbers are automatically adjusted.
@@ -48,7 +48,7 @@ Multi-level lists are created with command [WP New style sheet](../commands/wp-n
Multi-level lists can be managed using:
-* paragraph [style sheet attributes](../commands/4d-write-pro-attributes.md#style-sheets) (such as `wk list level index`, `wk list level count`, and `wk list concat string format`)
+* paragraph [style sheet attributes](../commands-legacy/4d-write-pro-attributes.md#style-sheets) (such as `wk list level index`, `wk list level count`, and `wk list concat string format`)
* dedicated [standard actions](../user-legacy/standard-actions.md) for level management (`listLevelAppend`, `listLevelInc`, `listLevelDec`)
* dedicated standard actions for numbering marker management (`listConcatStringFormat`, `listNumberFormat`).
@@ -64,11 +64,11 @@ Multi-level lists can be managed using:
## Hierarchical list style sheets
-Hierarchical list style sheets are used to create [multi-level lists](using-a-4d-write-pro-area.md#multi-level-lists).
+Hierarchical list style sheets are used to create [multi-level lists](../user-legacy/using-a-4d-write-pro-area.md#multi-level-lists).
To create a hierarchical list style sheet, use [WP New style sheet](../commands/wp-new-style-sheet.md) and pass in *listLevelCount* the desired number of levels. You then define a hierarchy of related paragraph style sheets: one **root-level** style sheet and one or more **sub-level** style sheets linked to it. Each level represents a depth in the list (level 1, level 2, level 3, etc.) and is automatically named "root-level name + lvl + index", for example "Mylist lvl 2".
-To customize hierarchical list styles, the paragraph style sheet object can be customized using [style sheet attributes](../commands/4d-write-pro-attributes.md#style-sheets).
+To customize hierarchical list styles, the paragraph style sheet object can be customized using [style sheet attributes](../commands-legacy/4d-write-pro-attributes.md#style-sheets).
Hierarchical list style sheets are fully supported by the following commands: [`WP Get style sheet`](../commands/wp-get-style-sheet.md), [`WP SET ATTRIBUTES`](../commands/wp-set-attributes.md), [`WP DELETE STYLE SHEET`](../commands/wp-delete-style-sheet.md).
diff --git a/docs/assets/en/FormEditor/Subform-example.png b/docs/assets/en/FormEditor/Subform-example.png
new file mode 100644
index 00000000000000..7e1cd6b7e973b8
Binary files /dev/null and b/docs/assets/en/FormEditor/Subform-example.png differ
diff --git a/docs/assets/en/FormEditor/example-form-1.png b/docs/assets/en/FormEditor/example-form-1.png
new file mode 100644
index 00000000000000..ce157014371ec1
Binary files /dev/null and b/docs/assets/en/FormEditor/example-form-1.png differ
diff --git a/docs/assets/en/FormEditor/example-form-2.png b/docs/assets/en/FormEditor/example-form-2.png
new file mode 100644
index 00000000000000..592ae7d506e652
Binary files /dev/null and b/docs/assets/en/FormEditor/example-form-2.png differ
diff --git a/docs/assets/en/FormEditor/print_rendering.png b/docs/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/docs/assets/en/FormEditor/print_rendering.png differ
diff --git a/docs/assets/en/FormEditor/screen_rendering.png b/docs/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/docs/assets/en/FormEditor/screen_rendering.png differ
diff --git a/docs/assets/en/commands/form-print1.png b/docs/assets/en/commands/form-print1.png
new file mode 100644
index 00000000000000..7cbec84055b1d3
Binary files /dev/null and b/docs/assets/en/commands/form-print1.png differ
diff --git a/docs/assets/en/commands/form-print2.png b/docs/assets/en/commands/form-print2.png
new file mode 100644
index 00000000000000..d78a6f5f3c1a48
Binary files /dev/null and b/docs/assets/en/commands/form-print2.png differ
diff --git a/docs/assets/en/commands/print-selection1.png b/docs/assets/en/commands/print-selection1.png
new file mode 100644
index 00000000000000..95e6603575d8a3
Binary files /dev/null and b/docs/assets/en/commands/print-selection1.png differ
diff --git a/docs/assets/en/commands/print-selection2.png b/docs/assets/en/commands/print-selection2.png
new file mode 100644
index 00000000000000..5b09f52d9fa16c
Binary files /dev/null and b/docs/assets/en/commands/print-selection2.png differ
diff --git a/docs/commands/theme/System_Documents.md b/docs/commands/theme/System_Documents.md
index 272792c4ad675e..66efd631190f9a 100644
--- a/docs/commands/theme/System_Documents.md
+++ b/docs/commands/theme/System_Documents.md
@@ -41,3 +41,85 @@ slug: /commands/theme/System-Documents
|[](../../commands/text-to-document)
|
|[](../../commands/volume-attributes)
|
|[](../../commands/volume-list)
|
+
+
+:::info Compatibility
+
+Legacy commands from this theme can usually be usefully replaced by commands of the [*File and Folder*](./File_and_Folder.md) theme and their associated [File](../../API/FileClass.md), [Folder](../../API/FolderClass.md), [ZipFile](../../API/ZipFileClass.md) and [ZipFolder](../../API/ZipFolderClass.md) classes, allowing you to handle files and folders as objects.
+
+:::
+
+
+## Document reference number
+
+You open a document with the [`Open document`](../../commands/open-document), [`Create document`](../../commands/create-document) and [`Append document`](../../commands/append-document) commands. Once a document is open, you can read and write characters from and to the document using commands such as [`RECEIVE PACKET`](../../commands/receive-packet) and [`SEND PACKET`](../../commands/send-packet). When you are finished with the document, you usually close it using the `CLOSE DOCUMENT` command.
+
+All open documents returned by these commands are referred to using a **document reference number** (*DocRef*). A *DocRef* uniquely identifies an open document. It is formally an expression of the **Time** type. All commands working with open documents expect *DocRef* as a parameter. If you pass an incorrect *DocRef* to one of these commands, a file manager error occurs.
+
+A document can be opened in **read/write** mode by only one process at a time. In **read-only** mode, one process can open several documents, several processes can open multiple documents, you can open the same document as many times as necessary, but you cannot open the same document in read/write mode twice at a time. The `Create document` and `Append document` commands automatically open documents in read/write mode. Only the `Open document` command lets you choose the opening mode.
+
+:::note
+
+When it is called from a [preemptive process](../../Develop/preemptive.md), a *DocRef* reference can only be used from this preemptive process. When it is called from a cooperative process, a *DocRef* reference can be used from any other cooperative process.
+
+:::
+
+
+## The Document system variable
+
+`Open document`, `Create document`, `Append document` and `Select document` enable you to access a document using the standard Open or Save file dialog boxes. When you access a document through a standard dialog, 4D returns the full pathname of the document in the [`Document` system variable](../../Concepts/variables.md#system-variables). This system variable has to be distinguished from the *document* parameter that appears in the parameter list of the commands.
+
+
+
+## Absolute or relative pathname
+
+Most of the routines of this section accept document names, relative pathnames or absolute pathnames:
+
+Relative pathnames define a location with respect to a folder located on disk. Passing only a document name is considered as using a relative pathname. In 4D, a relative pathname is usually expressed with respect to the database folder, i.e. the folder containing the structure file. Relative pathnames are especially useful when deploying applications in heterogenous environments.
+Absolute pathnames define a location with respect to the root of the volume and so they do not depend on the current location of the database folder.
+To determine whether a pathname passed to a command must be interpreted as absolute or relative, 4D applies a specific algorithm on each platform.
+
+Windows
+If the parameter contains only two characters and if the second one is a ':',
+ or if the text contains ':' and '\' as the second and third character,
+ or if the text starts with "\\",
+then the pathname is absolute.
+
+In all other cases, the pathname is relative.
+
+Examples with the CREATE FOLDER command:
+
+ CREATE FOLDER("lundi") // relative path
+ CREATE FOLDER("\Monday") // relative path
+ CREATE FOLDER("\Monday\Tuesday") // relative path
+ CREATE FOLDER("c:") // absolute path
+ CREATE FOLDER("d:\Monday") // absolute path
+ CREATE FOLDER("\\srv-Internal\temp") // absolute path
+
+macOS
+If the text starts with a folder separator ':',
+ or if does not contain any,
+then the path is relative.
+
+In all other cases, it is absolute.
+
+Examples with the CREATE FOLDER command:
+
+ CREATE FOLDER("Monday") // relative path
+ CREATE FOLDER("macintosh hd:") // absolute path
+ CREATE FOLDER("Monday:Tuesday") // absolute path (a volume must be called Monday)
+ CREATE FOLDER(":Monday:Tuesday") // relative path
+
+:::note
+
+See also [**Absolute and relative pathnames** in the Concepts section](../../Concepts/paths.md#absolute-and-relative-pathnames).
+
+:::
+
+## Extracting pathname contents
+
+You can handle pathname contents using the Path to object and Object to path commands. In particular, using these commands, you can extract from a pathname:
+
+a file name,
+the parent folder path,
+the file or folder extension.
\ No newline at end of file
diff --git a/docs/commands/theme/XML.md b/docs/commands/theme/XML.md
index ca199ba7db0504..b592bec6d156ea 100644
--- a/docs/commands/theme/XML.md
+++ b/docs/commands/theme/XML.md
@@ -5,10 +5,71 @@ sidebar_label: XML
slug: /commands/theme/XML
---
-
||
|---|
|[](../../commands/xml-decode)
|
|[](../../commands/xml-get-error)
|
|[](../../commands/xml-get-options)
|
|[](../../commands/xml-set-options)
|
+
+
+## Overview of XML Commands
+
+:::note
+
+For XML support, 4D uses a library named Xerces.dll developed by the Apache Foundation company.
+
+:::
+
+
+### XML, DOM, and SAX
+
+The **XML** theme groups together the generic XML "utilities" commands of 4D. These are option- and error-management commands.
+
+4D also offers two separate sets of XML commands: [**DOM**](../theme/XML_DOM.md) (Document Object Model) and [**SAX**](../theme/XML_SAX.md) (Simple API XML) are two different parsing modes for XML documents.
+
+- The DOM mode parses an XML source and builds its structure (its "tree") in memory. Because of this, access to each element of the source is extremely fast. However, since the entire tree structure is stored in memory, the processing of large XML documents may lead to the memory capacity being exceeded and thus provoke errors.
+- The SAX mode does not build a tree structure in memory. In this mode, "events" (such as the start and end of an element) are generated when parsing the source. This mode lets you parse XML documents of any size, regardless of the amount of memory available.
+
+#### See also
+
+http://www.saxproject.org/?selected=event
+http://www.w3schools.com/xml/
+
+### Preemptive mode
+
+XML references created by a [preemptive process](../../Develop/preemptive.md) can only be used in that specific process. Conversely, XML references created by a cooperative process can be used by any other cooperative process, but cannot be used by any preemptive process.
+
+
+### Character Sets
+
+The following character sets are supported by the XML DOM and XML SAX commands of 4D:
+
+- ASCII
+- UTF-8
+- UTF-16 (Big/Small Endian)
+- UCS4 (Big/Small Endian)
+- EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings,
+- ISO-8859-1 (or Latin1)
+- Windows-1252.
+
+
+### Glossary
+
+This non-exhaustive list details the main XML concepts used by the commands and functions of 4D.
+
+- **Attribute**: an XML sub-tag associated with an element. An attribute always contains a name and a value.
+- **Child**: In an XML structure, an element in a level directly below another.
+- **DTD**: *Document Type Declaration*. The DTD records the set of specific rules and properties that the XML must follow. These rules define, more particularly, the name and content of each tag as well as its context. This formalization of the elements can be used to check whether an XML document is in compliance (in which case, it is declared “valid”). The DTD may be included in the XML document (internal DTD) or in a separate document (external DTD). Note that the DTD is not mandatory.
+- **Element**: an XML tag. An element always contains a name and a value. Optionally, an element may contain attributes.
+- **ElementRef**: XML reference used by the 4D XML commands to specify an XML structure. This reference is made up of 8 coded characters in hexadecimal form, which means that its length is 32 characters on a 64-bit system. It is recommended to declare XML references as Text.
+- **Parent**: In an XML structure, an element in a level directly above another.
+- **Parsing, parser**: The act of analyzing the contents of a structured object in order to extract useful information.
+- **Root**: An element located at the first level of an XML structure.
+- **Sibling**: An element at the same level as another.
+- **Structure**: structured XML object. This object can be a document, a variable, or an element.
+- **Validation**: An XML document is “validated” by the parser when it is “well-formed” and in compliance with the DTD specifications.
+- **Well-formed**: An XML document is declared “well-formed” by the parser when it complies with the generic XML specifications.
+- **XML**: eXtensible Markup Language. A computerized data exchange standard enabling the transfer of data as well as their structure. The XML language is based on the use of tags and a specific syntax, in keeping with the HTML language. However, unlike the latter, the XML language allows the definition of customized tags.
+- **XSL**: eXtensible Stylesheet Language. A language permitting the definition of style sheets used to process and display the contents of an XSL document.
+
diff --git a/docs/commands/theme/XML_DOM.md b/docs/commands/theme/XML_DOM.md
index df18f4c44be734..35952a7bf19560 100644
--- a/docs/commands/theme/XML_DOM.md
+++ b/docs/commands/theme/XML_DOM.md
@@ -6,6 +6,7 @@ slug: /commands/theme/XML-DOM
---
+
||
|---|
|[](../../commands/dom-append-xml-child-node)
|
@@ -43,3 +44,66 @@ slug: /commands/theme/XML-DOM
|[](../../commands/dom-set-xml-declaration)
|
|[](../../commands/dom-set-xml-element-name)
|
|[](../../commands/dom-set-xml-element-value)
|
+
+
+## Overview of XML DOM Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML DOM.
+
+### Creating, opening and closing XML documents via DOM
+
+Objects created, modified or parsed by the 4D DOM commands can be text, URLs, documents or BLOBs. The DOM commands used for opening XML objects in 4D are [`DOM Parse XML source`](../../commands/dom-parse-xml-source) and [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable).
+
+Many commands then let you read, parse and write the elements and attributes. Errors are recovered using the [`XML GET ERROR`](../../commands/xml-get-error) command. Do not forget to call the [`DOM CLOSE XML`](../../commands/dom-close-xml) command to close the source in the end.
+
+Note about use of XML BLOB parameters: For historical reasons, XML commands such as [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable) accept BLOB type parameters. However, it is highly recommended to store XML structures as Text. The use of BLOBs is reserved for processing binary data. In conformity with XML specifications, binary data are automatically encoded in Base64, even when the BLOB contains text.
+
+
+### Support of XPath notation
+
+Several XML DOM commands ([`DOM Create XML element`](../../commands/dom-create-xml-element), [`DOM Find XML element`](../../commands/dom-find-xml-element), [`DOM Create XML element arrays`](../../commands/dom-create-xml-element-arrays) and [`DOM SET XML ELEMENT VALUE`](../../commands/dom-set-xml-element-value)) support some XPath expressions for accessing XML elements.
+
+XPath notation comes from the XPath language, designed to navigate within XML structures. It allows the setting of elements directly within an XML structure via a "pathname" type syntax, without necessarily having to indicate the complete pathname in order to reach it.
+
+For example, given the following structure:
+
+```xml
+
+
+
+
+
+
+
+```
+
+XPath notation allows you to access element 3 using the */RootElement/Elem1/Elem2/Elem3* syntax.
+
+4D also accepts indexed XPath elements using the *Element[ElementNum]* syntax. For example, given the following structure:
+
+```xml
+
+
+ aaa
+ bbb
+ ccc
+
+
+```
+
+XPath notation allows you to access the "ccc" value using the */RootElement/Elem1/Elem2[3]* syntax.
+
+For a comprehensive list of supported XPath expressions, refer to the [`DOM Find XML element`](../../commands/dom-find-xml-element) command description.
+
+:::note Compatibility
+
+Starting with 4D 18 R3, the XPath implementation has been modified to be more compliant and to support a wider set of expressions. If you want to benefit from the extended features in your converted databases, you need to select the **Use standard XPath** option of the [Compatibility page](../../settings/compatibility.md).
+
+:::
+
+### Error Handling
+
+Many functions in this theme return an XML element reference. If an error occurs during function execution (for example, if the root element reference is not valid), the *OK* variable is set to 0 and an error is generated.
+
+In addition, the reference returned in this case is a sequence of 32 zero "0" characters.
+
diff --git a/docs/commands/theme/XML_SAX.md b/docs/commands/theme/XML_SAX.md
index 6d5c3979213b4f..de16e6c401d184 100644
--- a/docs/commands/theme/XML_SAX.md
+++ b/docs/commands/theme/XML_SAX.md
@@ -25,3 +25,35 @@ slug: /commands/theme/XML-SAX
|[](../../commands/sax-open-xml-element)
|
|[](../../commands/sax-open-xml-element-arrays)
|
|[](../../commands/sax-set-xml-declaration)
|
+
+
+## Overview of XML SAX Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML SAX.
+
+### Creating, opening and closing XML documents via SAX
+
+The SAX commands work with the standard document references of 4D (**DocRef**, a Time type reference). It is therefore possible to use these commands jointly with the 4D commands used to manage documents, such as [`SEND PACKET`](../../commands/send-packet) or [`Append document`](../../commands/append-document).
+
+The creation and opening of XML documents by programming is carried out using the [`Create document`](../../commands/create-document) and [`Open document`](../../commands/open-document) commands. Subsequently, the use of an XML command with these documents will cause the automatic activation of XML mechanisms such as encoding. For instance, the `` header will be written automatically in the document.
+
+:::note
+
+Documents read by SAX commands must be opened in read-only mode by the [`Open document`](../../commands/open-document) command. This avoids any conflict between 4D and the Xerces library when you open "regular" and XML documents simultaneously. If you execute a SAX parsing command with a document open in read-write mode, an alert message is displayed and parsing is impossible.
+
+:::
+
+Closing an XML document must be carried out using the [`CLOSE DOCUMENT`](../../commands/close-document) command. If any XML elements were open, they will be closed automatically.
+
+### About end-of-line characters and BOM management
+
+When writing SAX documents, 4D uses the following default settings for end-of-line characters and BOM (byte order mask) usage:
+
+- CRLF characters on Windows and LF on macOS for end-of-line characters
+- files are written without BOM.
+
+:::note Compatibility
+
+In projects created with 4D versions up to 19.x, by default 4D uses CRLF as end-of-line characters on macOS for SAX and a BOM. You can control the `XML line ending` and `XML BOM` management using the [`XML SET OPTIONS`](../../commands/xml-set-options) command and a [Compatibility setting](../../settings/compatibility.md). Important: Since SAX file lines are written directly at each statement, if you need to set the BOM and/or end-of-line options, you must call the [`XML SET OPTIONS`](../../commands/xml-set-options) command before the first SAX writing command.
+
+:::
diff --git a/docs/language-legacy/4D Environment/get-database-parameter.md b/docs/language-legacy/4D Environment/get-database-parameter.md
index 504871add223f1..e0e6a41d8d2626 100644
--- a/docs/language-legacy/4D Environment/get-database-parameter.md
+++ b/docs/language-legacy/4D Environment/get-database-parameter.md
@@ -23,7 +23,7 @@ displayed_sidebar: docs
|Release|Changes|
|---|---|
-|21 R3|Removed support of *Use legacy network layer*|
+|21 R3|Removed support of *Use legacy network layer*, added *Use legacy print rendering*|
|20 R6|Modified|
|19 R5|Modified|
|16 R4|Modified|
@@ -1428,6 +1428,15 @@ In previous releases, time values were converted and stored as number of millise
Note that this parameter sets all 4D tips, i.e. form help messages and Design mode editor's tips.
+### Use legacy print rendering (136)
+
+**Scope:** 4D application
+
+**Kept between two sessions:** No
+
+**Possible values:** 0 = legacy print rendering disabled, 1 = legacy print rendering enabled
+
+**Description:** Sets or gets the current status of the [legacy print renderer](../../FormEditor/forms.md#legacy-print-rendering) on macOS or Windows. When the legacy print renderer is *disabled*, 4D’s [modern print rendering engine](../../FormEditor/forms.md) is used. Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this selector is ignored (in such contexts forms are always printed using the modern print renderer, see [this section](../../FormEditor/forms.md#legacy-print-rendering)). In converted projects, this parameter can also be set permanently using a [compatibility setting](../../settings/compatibility.md).
diff --git a/docs/language-legacy/4D Environment/set-database-parameter.md b/docs/language-legacy/4D Environment/set-database-parameter.md
index 643a6609541ec3..8123a5d0ca4297 100644
--- a/docs/language-legacy/4D Environment/set-database-parameter.md
+++ b/docs/language-legacy/4D Environment/set-database-parameter.md
@@ -22,7 +22,7 @@ displayed_sidebar: docs
|Release|Changes|
|---|---|
-|21 R3|Removed support of *Use legacy network layer*|
+|21 R3|Removed support of *Use legacy network layer*, added *Use legacy print rendering* |
|20 R6|Modified|
|20 R3|Modified|
|19 R5|Modified|
@@ -1035,6 +1035,15 @@ In previous releases, time values were converted and stored as number of millise
Note that this parameter sets all 4D tips, i.e. form help messages and Design mode editor's tips.
+### Use legacy print rendering (136)
+
+**Scope:** 4D application
+
+**Kept between two sessions:** No
+
+**Possible values:** 0 = legacy print rendering disabled, 1 = legacy print rendering enabled
+
+**Description:** Sets or gets the current status of the [legacy print renderer](../../FormEditor/forms.md#legacy-print-rendering) on macOS or Windows. When the legacy print renderer is *disabled*, 4D’s [modern print rendering engine](../../FormEditor/forms.md) is used. Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this selector is ignored (in such contexts forms are always printed using the modern print renderer, see [this section](../../FormEditor/forms.md#legacy-print-rendering)). In converted projects, this parameter can also be set permanently using a [compatibility setting](../../settings/compatibility.md).
### User param value (108)
@@ -1047,7 +1056,9 @@ In previous releases, time values were converted and stored as number of millise
**Description:** Custom string passed from one session to the next one when the 4D application is restarted. This selector is useful in the context of automated unit tests that require applications to restart with different parameters.
-When used with [SET DATABASE PARAMETER](../commands/set-database-parameter), defines a new value that will be available within the next opened database after 4D is restarted manually or using the [OPEN DATABASE](../commands/open-database)(\*), [OPEN DATA FILE](../commands/open-data-file), or [RESTART 4D](../commands/restart-4d) commands. When used with [Get database parameter](../commands/get-database-parameter), gets the currently available user parameter value, defined using a command line (see *Command Line Interface*), the .4DLink file (see *Using a 4DLink file*), or a call to [SET DATABASE PARAMETER](../commands/set-database-parameter) during the previous session. (\*) If [SET DATABASE PARAMETER](../commands/set-database-parameter) sets a User param value before a call to [OPEN DATABASE](../commands/open-database) with a .4DLink file that also contains a user-param xml attribute, 4D takes into account only the parameter provided by [SET DATABASE PARAMETER](../commands/set-database-parameter).
+When used with [SET DATABASE PARAMETER](../commands/set-database-parameter), defines a new value that will be available within the next opened database after 4D is restarted manually or using the [OPEN DATABASE](../commands/open-database)(\*), [OPEN DATA FILE](../commands/open-data-file), or [RESTART 4D](../commands/restart-4d) commands. When used with [Get database parameter](../commands/get-database-parameter), gets the currently available user parameter value, defined using a command line (see [Command Line Interface](../../Admin/cli.md)), the .4DLink file (see [Using a 4DLink file](../../GettingStarted/creating.md#opening-a-project-with-a-4dlink-file)), or a call to [SET DATABASE PARAMETER](../commands/set-database-parameter) during the previous session.
+
+(\*) If [SET DATABASE PARAMETER](../commands/set-database-parameter) sets a User param value before a call to [OPEN DATABASE](../commands/open-database) with a .4DLink file that also contains a user-param xml attribute, 4D takes into account only the parameter provided by [SET DATABASE PARAMETER](../commands/set-database-parameter).
diff --git a/docs/language-legacy/Data Entry/dialog.md b/docs/language-legacy/Data Entry/dialog.md
index fc5405d48bf146..7c5a8845635065 100644
--- a/docs/language-legacy/Data Entry/dialog.md
+++ b/docs/language-legacy/Data Entry/dialog.md
@@ -33,11 +33,11 @@ displayed_sidebar: docs
## Description
-The **DIALOG** command presents the *form* to the user, along with *formData* parameter(s) (optional).
+The **DIALOG** command presents the *form* to the user, along with *formData* parameter(s) (optional), in the last opened window.
This command is designed to work with customized and advanced user interfaces based on forms. You can use it to display information coming from the database or other locations, or to provide data entry features. Unlike [ADD RECORD](../commands/add-record) or [MODIFY RECORD](../commands/modify-record), **DIALOG** gives you full control over the form, its contents and the navigation and validation buttons.
-This command is typically called along with the [Open form window](../commands/open-form-window) to display sophisticated forms, as shown in the following example:
+This command must be called along with the [Open form window](../commands/open-form-window) to display sophisticated forms, as shown in the following example:

@@ -69,7 +69,7 @@ To fill the "form data" object, you have two possibilities:
:::
-The dialog is closed by the user either with an "accept" action (triggered by the ak accept standard action, the Enter key, or the [ACCEPT](../commands/accept) command), or with a "cancel" action (triggered by the ak cancel standard action, the Escape key, or the [CANCEL](../commands/cancel) command). An accept action will set the OK system variable to 1, while a cancel action will set OK to 0\.
+The dialog is closed by the user either with an "accept" action (triggered by the `ak accept` standard action, the Enter key, or the [ACCEPT](../commands/accept) command), or with a "cancel" action (triggered by the `ak cancel` standard action, the Escape key, or the [CANCEL](../commands/cancel) command). An accept action will set the OK [system variable](../../Concepts/variables.md#system-variables) to 1, while a cancel action will set OK to 0.
Keep in mind that validation does not equal saving: if the dialog includes fields, you must explicitly call the [SAVE RECORD](../commands/save-record) command to save any data that has been modified.
@@ -78,7 +78,7 @@ This form then reacts “normally” to user actions and is closed using a stand
**Notes:**
-* You can combine the use of the **DIALOG**(form;\*) syntax with the [CALL FORM](../commands/call-form) command to establish communication between the forms.
+* You can combine the use of the **DIALOG**(form;\*) syntax with the [`CALL FORM`](../commands/call-form) command to establish communication between the forms.
* You must create a window before calling the **DIALOG**(form;\*) statement. It is not possible to use the current dialog window in the process nor the window created by default for each process. Otherwise, error -9909 is generated.
* When the *\** parameter is used, the window is closed automatically following a standard action or a call to the [CANCEL](../commands/cancel) or [ACCEPT](../commands/accept) command. You do not have to manage the closing of the window itself.
diff --git a/docs/language-legacy/Mail/imap-new-transporter.md b/docs/language-legacy/Mail/imap-new-transporter.md
index 93a6a4f23574d7..f4380ce0055512 100644
--- a/docs/language-legacy/Mail/imap-new-transporter.md
+++ b/docs/language-legacy/Mail/imap-new-transporter.md
@@ -5,7 +5,7 @@ slug: /commands/imap-new-transporter
displayed_sidebar: docs
---
-**IMAP New transporter**( *server* : Object ) : 4D.IMAPTransporter
+**IMAP New transporter**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/docs/language-legacy/Printing/print-form.md b/docs/language-legacy/Printing/print-form.md
index 9bca02115665c2..17539ff363293f 100644
--- a/docs/language-legacy/Printing/print-form.md
+++ b/docs/language-legacy/Printing/print-form.md
@@ -34,7 +34,9 @@ displayed_sidebar: docs
## Description
-The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process. **Print form** does not do any record processing, break processing or page breaks. These operations are your responsibility. **Print form** prints fields and variables in a fixed size frame only.
+The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process.
+
+**Print form** does not do any record processing, break processing or page breaks. These operations are your responsibility.
In the *form* parameter, you can pass:
@@ -44,9 +46,11 @@ In the *form* parameter, you can pass:
Since **Print form** does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, **Print form** is perfect for complex printing tasks that involve different tables and different forms. To force a page break between forms, use the [PAGE BREAK](../commands/page-break) command. In order to carry printing over to the next page for a form whose height is greater than the available space, call the [CANCEL](../commands/cancel) command before the [PAGE BREAK](../commands/page-break) command.
+### Syntaxes
+
Three different syntaxes may be used:
-* **Detail area printing**
+#### Detail area printing
Syntax:
@@ -56,7 +60,7 @@ Syntax:
In this case, **Print form** only prints the Detail area (the area between the Header line and the Detail line) of the form.
-* **Form area printing**
+#### Form area printing
Syntax:
@@ -92,7 +96,7 @@ In this case, the command will print the section designated by the *marker*. Pas
| Form header8 | Integer | 208 |
| Form header9 | Integer | 209 |
-* **Section printing**
+#### Section printing
Syntax:
@@ -102,37 +106,50 @@ Syntax:
In this case, the command will print the section included between the *areaStart* and *areaEnd* parameters. The values entered must be expressed in pixels.
-**formData**
+#### formData
Optionally, you can pass parameters to the *form* using either the *formData* object or the form class object automatically instantiated by 4D if you have [associated a user class to the form](../../FormEditor/properties_FormProperties.md#form-class). Any properties of the form data object will then be available from within the form context through the [Form](../commands/form) command. The form data object is available in the [`On Printing Detail` form event](../../Events/onPrintingDetail.md).
For detailed information on the form data object, please refer to the [`DIALOG`](../commands/dialog) command.
-**Return value**
+#### Return value
The value returned by **Print form** indicates the height of the printable area. This value will be automatically taken into account by the [Get printed height](../commands/get-printed-height) command.
+
+### Print settings
+
The printer dialog boxes do not appear when you use **Print form**. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to **Print form**:
* Call [PRINT SETTINGS](../commands/print-settings). In this case, you let the user choose the settings.
* Call [SET PRINT OPTION](../commands/set-print-option) and [GET PRINT OPTION](../commands/get-print-option). In this case, print settings are specified programmatically.
+### Page breaks
+
**Print form** builds each printed page in memory. Each page is printed when the page in memory is full or when you call [PAGE BREAK](../commands/page-break). To ensure the printing of the last page after any use of **Print form**, you must conclude with the [PAGE BREAK](../commands/page-break) command (except in the context of an [OPEN PRINTING JOB](../commands/open-printing-job), see note). Otherwise, if the last page is not full, it stays in memory and is not printed.
**Warning:** If the command is called in the context of a printing job opened with [OPEN PRINTING JOB](../commands/open-printing-job), you must NOT call [PAGE BREAK](../commands/page-break) for the last page because it is automatically printed by the [CLOSE PRINTING JOB](../commands/close-printing-job) command. If you call [PAGE BREAK](../commands/page-break) in this case, a blank page is printed.
-This command prints external areas and objects (for example, 4D Write or 4D View areas). The area is reset for each execution of the command.
+### Support of form events and form objects
-**Warning:** Subforms are not printed with **Print form**. To print only one form with such objects, use [PRINT RECORD](../commands/print-record) instead.
+**Print form** only generates the [`On Printing Detail` event](../../Events/onPrintingDetail.md) in the form method.
-**Print form** generates only one [`On Printing Detail` event](../../Events/onPrintingDetail.md) for the form method.
+**Print form** prints fields and variables in a [fixed size frame](../../FormObjects/properties_Print.md#print-frame) only.
-**4D Server:** This command can be executed on 4D Server within the framework of a stored procedure. In this context:
+**Print form** prints external areas and objects (for example, 4D Write or 4D View areas). The area is reset for each execution of the command.
+
+[Subforms](../../FormObjects/subform_overview.md) are not printed with **Print form**. To print only one form with such objects, use [PRINT RECORD](../commands/print-record) instead.
+
+:::note 4D Server
+
+This command can be executed on 4D Server within the framework of a stored procedure. In this context:
* Make sure that no dialog box appears on the server machine (except for a specific requirement).
* In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated.
+:::
+
## Example 1
The following example performs as a [PRINT SELECTION](../commands/print-selection) command would. However, the report uses one of two different forms, depending on whether the record is for a check or a deposit:
@@ -190,6 +207,78 @@ The code that calls the dialog then prints its body:
$h:=Print form("Request_var";$formData;Form detail)
```
+## Example 4
+
+You want to print a report with data coming from an entity selection (ORDA) in a project form, using breaks and subtotals.
+
+The form template is the following:
+
+
+
+The method that calls the form:
+
+```4d
+var $es : cs.SalesSelection
+var $e : cs.SalesEntity
+
+$es:=ds.Sales.all().orderBy("Region asc, Seller asc")
+$breakRegion:=""
+$breakSeller:=""
+
+
+// Global report header (printed once)
+Print form("testPrintForm1"; $e; Form header)
+For each ($e; $es)
+
+ // Region break (level 1): close previous seller and region totals, then open new region
+ If ($breakRegion#$e.Region)
+ If ($breakRegion#"")
+ Print form("testPrintForm1"; {totalQuantity: $filteredSeller.sum("Quantity"); totalPrice: $filteredSeller.sum("UnitPrice")}; Form break2)
+ Print form("testPrintForm1"; {totalQuantity: $filtered.sum("Quantity"); totalPrice: $filtered.sum("UnitPrice")}; Form break1)
+ End if
+ $breakRegion:=$e.Region
+ // Reset seller break so header2 is printed for first seller in this region
+ $breakSeller:=""
+ $filtered:=$es.query("Region=:1"; $breakRegion)
+ Print form("testPrintForm1"; {Region: $e.Region}; Form header1)
+ End if
+
+ // Seller break (level 2) inside current region
+ If (($breakSeller#$e.Seller))
+ If ($breakSeller#"")
+ Print form("testPrintForm1"; {totalQuantity: $filteredSeller.sum("Quantity"); totalPrice: $filteredSeller.sum("UnitPrice")}; Form break2)
+ End if
+ $breakSeller:=$e.Seller
+ // Seller subtotal must be scoped by Region + Seller
+ $filteredSeller:=$es.query("Region=:1 and Seller=:2"; $breakRegion; $breakSeller)
+ Print form("testPrintForm1"; {Seller: $e.Seller}; Form header2)
+ End if
+
+
+ // Detail line
+ Print form("testPrintForm1"; $e; Form detail)
+End for each
+
+// Close the last seller and region groups after loop
+Print form("testPrintForm1"; {totalQuantity: $filteredSeller.sum("Quantity"); totalPrice: $filteredSeller.sum("UnitPrice")}; Form break2)
+Print form("testPrintForm1"; {totalQuantity: $filtered.sum("Quantity"); totalPrice: $filtered.sum("UnitPrice")}; Form break1)
+
+// Grand totals for the full selection
+Print form("testPrintForm1"; \
+{totalQuantity: $es.sum("Quantity"); totalPrice: $es.sum("UnitPrice"); \
+minQuantity: $es.min("Quantity"); minPrice: $es.min("UnitPrice"); \
+maxQuantity: $es.max("Quantity"); maxPrice: $es.max("UnitPrice")}; \
+Form break0)
+
+// Global report footer (printed once)
+Print form("testPrintForm1"; $e; Form footer)
+```
+
+The resulting printed report:
+
+
+
+
## See also
[CANCEL](../commands/cancel)
diff --git a/docs/language-legacy/Printing/print-selection.md b/docs/language-legacy/Printing/print-selection.md
index 21d9038a0823e1..cdb67cdb61b56e 100644
--- a/docs/language-legacy/Printing/print-selection.md
+++ b/docs/language-legacy/Printing/print-selection.md
@@ -49,16 +49,25 @@ You can check whether **PRINT SELECTION** is printing the first header by testin
To print a sorted selection with subtotals or breaks using **PRINT SELECTION**, you must first sort the selection. Then, in each Break area of the report, include a variable with an object method that assigns the subtotal to the variable. You can also use statistical and arithmetical functions like [Sum](../commands/sum) and [Average](../commands/average) to assign values to variables. For more information, see the descriptions of [Subtotal](../commands/subtotal), [BREAK LEVEL](../commands/break-level) and [ACCUMULATE](../commands/accumulate).
-**Warning:** Do not use the [PAGE BREAK](../commands/page-break) command with the **PRINT SELECTION** command. [PAGE BREAK](../commands/page-break) is to be used with the [Print form](../commands/print-form) command.
+:::warning
+
+ Do not use the [PAGE BREAK](../commands/page-break) command with the **PRINT SELECTION** command. [PAGE BREAK](../commands/page-break) is to be used with the [Print form](../commands/print-form) command.
+
+:::
After a call to **PRINT SELECTION**, the OK variable is set to 1 if the printing has been completed. If the printing was interrupted, the OK variable is set to 0 (zero) (i.e., the user clicked Cancel in the printing dialog box).
-**4D Server:** This command can be executed on 4D Server in a stored procedure. In this context:
+:::note 4D Server
+
+This command can be executed on 4D Server in a stored procedure. In this context:
* Make sure that no dialog box appears on the server machine (except for a specific requirement). To do this, it is necessary to call the command with the *\** or *\>* parameter.
* In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated.
-## Example
+:::
+
+
+## Example 1
The following example selects all the records in the \[People\] table. It then uses the [DISPLAY SELECTION](../commands/display-selection) command to display the records and allows the user to highlight the records to print. Finally, it uses the selected records with the [USE SET](../commands/use-set) command, and prints them with **PRINT SELECTION**:
@@ -69,11 +78,54 @@ The following example selects all the records in the \[People\] table. It then u
PRINT SELECTION([People]) // Print the records that the user picked
```
+## Example 2
+
+You want to print a report with breaks and subtotals, using the following form template:
+
+
+
+The method called to build the report:
+
+```4d
+ALL RECORDS([Sales])
+ORDER BY([Sales]Region; <; [Sales]Seller; <)
+BREAK LEVEL(2)
+ACCUMULATE([Sales]Quantity; [Sales]UnitPrice)
+PRINT SELECTION([Sales])
+```
+
+In the form method, you calculate the subtotal values thanks to the built-in **PRINT SELECTION** command features, i.e. values processed in the `On printing break` event can be directly evaluated by [`Subtotal`](../commands/subtotal):
+
+```4d
+ //form method
+Case of
+ : (FORM Event.code=On Printing Break)
+ vBreak:=[Sales]Region
+ //Subtotal uses currently processed values
+ //it can be used in break variables
+ vTotalQuantity:=Subtotal([Sales]Quantity)
+ vTotalPrice:=Subtotal([Sales]UnitPrice)
+
+ //Min and Max use current selection
+ //they are valid at the final break
+ vMinQuantity:=Min([Sales]Quantity)
+ vMinPrice:=Min([Sales]UnitPrice)
+ vMaxQuantity:=Max([Sales]Quantity)
+ vMaxPrice:=Max([Sales]UnitPrice)
+End case
+```
+
+The resulting printed report:
+
+
+
+
## See also
[ACCUMULATE](../commands/accumulate)
[BREAK LEVEL](../commands/break-level)
[Level](../commands/level)
+[Print form](../commands/print-form)
[Subtotal](../commands/subtotal)
## Properties
diff --git a/docs/language-legacy/Windows/open-form-window.md b/docs/language-legacy/Windows/open-form-window.md
index 3e974daf0ce230..c58bbc1639b8a1 100644
--- a/docs/language-legacy/Windows/open-form-window.md
+++ b/docs/language-legacy/Windows/open-form-window.md
@@ -173,7 +173,7 @@ These window types have the following properties:
|Suitable for scroll bars|No|No|No|
|Modal|Yes|Yes, but can be moved|Yes, but can be moved|
-**Usage**: `DIALOG`, `ADD RECORD(...;...*)` or equivalent.
+**Usage**: [`DIALOG`](../commands/dialog), `ADD RECORD(...;...*)` or equivalent.
#### Palette form window {#palette-form-window}
@@ -225,7 +225,7 @@ Sheet windows are specific to macOS. These windows are displayed above the main
- Since a sheet window must be drawn above a form, its display is pushed back in the [`On Load` event](../../Events/onLoad.md) of the first form loaded in the window ([see example 3](#example-3)).
-**Usage**: `DIALOG`, `ADD RECORD(...;...*)` or equivalent, under macOS (not standard under Windows).
+**Usage**: [`DIALOG`](../commands/dialog), `ADD RECORD(...;...*)` or equivalent, under macOS (not standard under Windows).
#### Toolbar form window {#toolbar-form-window}
@@ -299,6 +299,7 @@ which displays:
## See also
+[DIALOG](../commands/dialog)
[FORM GET PROPERTIES](../commands/form-get-properties)
[Open window](../commands/open-window)
diff --git a/docs/settings/compatibility.md b/docs/settings/compatibility.md
index 2706580697dde2..900493351b8d30 100644
--- a/docs/settings/compatibility.md
+++ b/docs/settings/compatibility.md
@@ -5,23 +5,29 @@ title: Compatibility page
The Compatibility page groups together parameters related to maintaining compatibility with previous versions of 4D.
-> The number of options displayed depends on the version of 4D with which the original database/project was created, as well as the settings modified in this database/project.
-> This page lists the compatibility options available for database/projects converted from 4D v18 onwards. For older compatibility options, refer to the [Compatibility page](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) on **doc.4d.com**.
+:::note
+- The number of options displayed depends on the version of 4D with which the original database/project was created, as well as the settings modified in this database/project.
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. For older compatibility options, refer to the [Compatibility page](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) on **doc.4d.com**.
-- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to v18 R3, and checked for databases created with 4D v18 R3 and higher. Starting with v18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. As a consequence, non-standard features of the previous implementation no longer work. They include:
+:::
+
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. As a consequence, non-standard features of the previous implementation no longer work. They include:
* initial "/" is not the root node only - using a / as first character in a XPath expression does not declare an absolute path from the root node
* no implicit current node - the current node has to be included in the XPath expression
* no recursive searches in repeated structures - only the first element is parsed.\
Although not standard, you might want to keep using these features so that your code continues to work as before -- in this case, just set the option *unchecked*. On the other hand, if your code does not rely on the non-standard implementation and if you want to benefit from the extended XPath features in your databases (as described in the [`DOM Find XML element`](../commands/dom-find-xml-element) command), make sure the **Use standard XPath** option is *checked*.
-- **Use LF for end of line on macOS:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. If you want to benefit from this new behavior on projects converted from previous 4D versions, check this option. See [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), and [XML SET OPTIONS](../commands/xml-set-options).
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. If you want to benefit from this new behavior on projects converted from previous 4D versions, check this option. See [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), and [XML SET OPTIONS](../commands/xml-set-options).
+
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. In previous versions, text files were written with a BOM by default. Select this option if you want to enable the new behavior in converted projects. See [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), and [XML SET OPTIONS](../commands/xml-set-options).
-- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. In previous versions, text files were written with a BOM by default. Select this option if you want to enable the new behavior in converted projects. See [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), and [XML SET OPTIONS](../commands/xml-set-options).
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. You can apply this default behavior to your converted databases by checking this option (working with Null values is recommended since they are fully supported by [ORDA](../ORDA/overview.md).
-- **Map NULL values to blank values unchecked by default a field creation**: For better compliance with ORDA specifications, in databases created with 4D v19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. You can apply this default behavior to your converted databases by checking this option (working with Null values is recommended since they are fully supported by [ORDA](../ORDA/overview.md).
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Non-blocking printing**: Starting with 4D v20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call `CLOSE PRINTING JOB` for the printer to be available for the next print job (check previous 4D documentations for more information).
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) are saved in a separate file named `catalog_editor.json`, stored in the project's [Sources folder](../Project/architecture.md#sources). This new file architecture makes it easier to manage merge conflicts in VCS applications since the `catalog.4DCatalog` file now contains only crucial database structure changes. For compatibility reasons, this feature is not enabled by default in projects converted from previous 4D versions, you need to check this option. When the feature is enabled, the `catalog_editor.json` file is created at the first modification in the Structure editor.
-- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D v20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) are saved in a separate file named `catalog_editor.json`, stored in the project's [Sources folder](../Project/architecture.md#sources). This new file architecture makes it easier to manage merge conflicts in VCS applications since the `catalog.4DCatalog` file now contains only crucial database structure changes. For compatibility reasons, this feature is not enabled by default in projects converted from previous 4D versions, you need to check this option. When the feature is enabled, the `catalog_editor.json` file is created at the first modification in the Structure editor.
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../FormEditor/forms.md#legacy-print-renderer)).
\ No newline at end of file
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md b/i18n/es/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
index 0d9d030de073c4..83ea74eaa7b121 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
@@ -45,7 +45,7 @@ Los objetos IMAP Transporter se instancian con el comando [IMAP New transporter]
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/classes.md b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/classes.md
index 7d138bfc1e708b..1f31d2f838c6a9 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/classes.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/classes.md
@@ -877,7 +877,7 @@ Supported functions have a **default execution location** when no location keywo
| Supported functions | Ejecución por defecto | with `local` keyword | with `server` keyword |
| ------------------------------------------------- | --------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [ORDA data model](../ORDA/ordaClasses.md) | on Server | The function is executed on the client if called on the client | |
+| [ORDA data model](../ORDA/ordaClasses.md) | en el servidor | The function is executed on the client if called on the client | |
| [Shared or session singleton](#singleton-classes) | Local | | The function is executed on the server on the server instance of the singleton.
If there is no instance of the singleton on the server, it is created. |
If `local` and `server` keywords are used in another context, an error is returned.
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
index 973cc96750bb4f..9a2105aea4cfef 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
@@ -439,7 +439,7 @@ In the 4D language documentation, the following parameter types can be used.
| Tipo | Definición | Ejemplos de un comando 4D que lo usa |
| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| > , <, >=, <=, #, =, \\| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
+| > , <, >=, <=, #, =, \| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
| any | Un parámetro que puede aceptar cualquier tipo de datos soportado | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
| Array | Variable que contiene una lista de valores del mismo tipo. | ARRAY TEXT($arr;10) |
| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Develop/async.md b/i18n/es/docusaurus-plugin-content-docs/current/Develop/async.md
index 521873b104f0a5..d9de4ba2171daa 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/Develop/async.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/Develop/async.md
@@ -64,7 +64,7 @@ El proceso llamante envía un mensaje y el worker lo ejecuta. El worker puede pu
### Escucha de eventos
-En el desarrollo dirigido por eventos, es obvio que parte del código debe ser capaz de escuchar los eventos entrantes. Los eventos pueden ser generados por la interfaz de usuario (como un clic del ratón sobre un objeto o la pulsación de una tecla del teclado) o por cualquier otra interacción, como una petición http o el final de otra acción. Por ejemplo, cuando se muestra un formulario utilizando el comando `DIALOG`, las acciones del usuario pueden desencadenar eventos que su código puede procesar. Al hacer clic en un botón se activará el código asociado al botón.
+En el desarrollo dirigido por eventos, es obvio que parte del código debe ser capaz de escuchar los eventos entrantes. Los eventos pueden ser generados por la interfaz de usuario (como un clic del ratón sobre un objeto o la pulsación de una tecla del teclado) o por cualquier otra interacción, como una petición http o el final de otra acción. For example, when a form is displayed using the [`DIALOG`](../commands/dialog) command, user actions can trigger events that your code can process. Al hacer clic en un botón se activará el código asociado al botón.
En el contexto de la ejecución asíncrona, las siguientes funcionalidades colocan su código en modo de escucha:
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/forms.md b/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/forms.md
index 403237a756ee57..5e9cb6b7c1147b 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/forms.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/forms.md
@@ -66,6 +66,173 @@ Puede añadir o modificar formularios 4D utilizando los siguientes elementos:
}
```
+## Using forms
+
+Forms are called using specific commands of the 4D Language. In your 4D desktop applications, forms can be used in various ways, depending on their status within your interface needs. A form can be:
+
+- used in its own window for data viewing, processing, editing, or to display on-screen information to the user,
+- used embedded in another form (subform),
+- used as template for printing,
+- or called by specific features like the Label editor.
+
+### Using a project form in a window
+
+When you want to use a form as on-screen dialog, you need to (1) create a window and (2) load the form within the window, along with an event loop to process user actions. The straighforward steps to display a form on screen are:
+
+1. Call the [`Open form window`](../commands/open-form-window) command to create and preconfigure a window tailored for your form. Note that the command only draw aan empty window, it does not display anything.
+2. In the same method, call the [`DIALOG`](../commands/dialog) command to actually load the form in the opened form window, ready for user interaction. [`DIALOG`](../commands/dialog) loads form data and places your code in listening mode to user events. When you call this command without asterisk (\*), the dialog will stay on screen and the code execution is frozen until an event occurs (see also ["Event listening" paragraph](../Develop/async.md#event-listening)).
+3. (optional) Use the [`Form`](../commands/form) command from within the form context to access form data.
+
+::note Compatibility
+
+All-in-one commands such as [`ADD RECORD`](../commands/add-record) or [`MODIFY RECORD`](../commands/add-record) merge all steps in a single call. These legacy commands can still be used for prototyping or basic developments but are not adapted to modern, fully controlled interfaces. They directly rely on the 4D database and legacy features such as [table forms](#project-form-and-table-form) and do not benefit from the power and flexibility of [ORDA features](../ORDA/overview.md). Unless specific needs, it is recommended to use project forms for your 4D desktop application interfaces.
+
+:::
+
+#### Simple example
+
+You create the following basic form in the [Form editor](./formEditor.md):
+
+
+
+The form is [associated with a "myForm" class](./properties_FormProperties.md#form-class), defined as follow:
+
+```4d
+ //cs.myForm
+property name : Text
+property age : Integer
+
+Class constructor
+ This.name:=""
+ This.age:=0
+```
+
+The form class is automatically instantiated by 4D once the form is loaded. If you execute the following project method:
+
+```4d
+ // Instantiate a form object that will host form data and UI logic
+var $formObject:=cs.myForm.new()
+
+ //Prepare default value within the form object
+$formObject.name:="Smith"
+$formObject.age:=42
+
+ // Create an empty window with ad-hoc settings that fits the desired form dimensions, resizing properties,
+ // and window type (this does not render the form)
+var $win:=Open form window("myForm"; Movable form dialog box; Horizontally centered; Vertically centered)
+
+ //Render the form, and provide $formObject's data. Dialog also activates the form event loop
+DIALOG("myForm"; $formObject)
+
+ //Without asterisk to Dialog statement, the form waits for a closing action from the user
+ //before executing the rest of the code. Calling Close window is just a good practice
+CLOSE WINDOW($win) //releases reference
+
+ //Display data modified by the user, if any/
+ALERT($formObject.name+" is "+String($formObject.age)+" years old!")
+
+```
+
+4D displays:
+
+
+
+### Using forms as subforms
+
+A form can be embedded within another form, in which case it becomes a [subform object](../FormObjects/subform_overview.md) which follows specific rules. A subform is automatically used when its parent form is [displayed in a window](#using-a-project-form-in-a-window).
+
+In the same way that you pass an object to a form with the [`DIALOG`](../commands/dialog) command, you can also pass an object to a subform area using the property list. Then, you can use it in the subform with the [`Form`](../commands/form) command. In this example, the "InvoiceAddress" object is bound to the subform:
+
+
+
+### Using forms to be printed
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+#### Ejemplos
+
+You can use forms to print data, either as page or as list.
+
+- To simply print some part of a form, use the [`Print form`](../commands/print-form) command. Por ejemplo:
+
+```4d
+var $formData:={}
+$formData.lastname:="Smith"
+$formData.firstname:="john"
+$formData.request:="I need more COFFEE"
+var $h:=Print form("Request_var";$formData;Form detail)
+```
+
+- To print a form within a printing job to process data during printing, use [`FORM LOAD`](../commands/form-load) and [`Print object`](../commands/print-object) commands. Por ejemplo:
+
+```4d
+ var $formData : Object
+ var $over : Boolean
+ var $full : Boolean
+
+ OPEN PRINTING JOB
+ $formData:={}
+ $formData.LBcollection:=[]
+ ... //fill the collection with data
+
+ FORM LOAD("GlobalForm";$formData)
+ $over:=False
+ Repeat
+ $full:=Print object(*;"LB") // the datasource of this "LB" listbox is Form.LBcollection
+ LISTBOX GET PRINT INFORMATION(*;"LB";lk printing is over;$over)
+ If(Not($over))
+ PAGE BREAK
+ End if
+ Until($over)
+ FORM UNLOAD
+ CLOSE PRINTING JOB
+```
+
+#### Print rendering engine
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+:::tip Entrada de blog relacionada
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+#### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning Limitación
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
+### Other form usages
+
+There are several other ways to use forms in the 4D applications, including:
+
+- a form can be [inherited](#inherited-forms) from another form,
+- a form can be [associated to a listbox](../FormObjects/properties_ListBox.md#detail-form-name) in response to a user action to display a row using an edit button or a double-click,
+- the [label editor can use a form](../Desktop/labels.md#form-to-use) as template to print labels.
+
## Formulario proyecto y formulario tabla
Hay dos categorías de formularios:
@@ -78,7 +245,7 @@ Normalmente, se selecciona la categoría del formulario al crearlo, pero se pued
## Páginas formulario
-Cada formulario consta de al menos dos páginas:
+Each form is made of at least two pages:
- una página 1: una página principal, mostrada por defecto
- una página 0: una página de fondo, cuyo contenido se muestra en todas las demás páginas.
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md b/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
index a74cf0f941c532..61cb60fc73f183 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
@@ -7,7 +7,7 @@ title: Imprimir
Permite definir los parámetros de impresión específicos para el formulario. Esta funcionalidad es útil para ver los límites de páginas de impresión en el editor de formularios.
-> **Compatibilidad:** aunque estos parámetros se tengan en cuenta cuando se imprime el formulario en modo Aplicación, se desaconseja confiar en esta funcionalidad para almacenar los parámetros de impresión del formulario, debido a las limitaciones relativas Es muy recomendable utilizar los comandos 4D `Print settings to BLOB`/`BLOB to print settings` que son más poderosos.
+> **Compatibilidad:** aunque estos parámetros se tengan en cuenta cuando se imprime el formulario en modo Aplicación, se desaconseja confiar en esta funcionalidad para almacenar los parámetros de impresión del formulario, debido a las limitaciones relativas It is highly recommended to use the 4D commands [`Print settings to BLOB`](../commands/print-settings-to-blob)/[`BLOB to print settings`](../commands/blob-to-print-settings) which are more powerful.
Puede modificar los siguientes parámetros de impresión:
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md
index 5947c6998f1ab7..fd3e685518a4da 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md
@@ -18,6 +18,7 @@ Lea [**Novedades en 4D 21 R3**](https://blog.4d.com/es/whats-new-in-4d-21-r3/),
- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component.
- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md).
- Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions.
+- New [printing renderer](../FormEditor/forms.md#print-rendering-engine) for forms on Liquid glass and Fluent UI interfaces. New compatibility options to [enable the renderer on Classic interfaces](../FormEditor/forms.md#legacy-print-renderer).
- Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository).
- [**Lista de bugs corregidos**](https://bugs.4d.fr/fixedbugslist?version=21_R3): lista de todos los bugs que se han corregido en 4D 21 R3.
@@ -65,7 +66,7 @@ Lea [**Novedades en 4D 21 R2**](https://blog.4d.com/whats-new-in-4d-21-r2/), la
| Librería | Versión actual | Actualizado en 4D | Comentario |
| --------- | -------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| BoringSSL | 9b86817 | 21 | Utilizado para QUIC |
+| BoringSSL | 664a985 | **21 R4** | Utilizado para QUIC |
| CEF | 7258 | 21 | Chromium 139 |
| Hunspell | 1.7.2 | 20 | Utilizado para la corrección ortográfica en formularios 4D y 4D Write Pro |
| ICU | 77.1 | 21 | Esta actualización fuerza una reconstrucción automática de los índices alfanuméricos, textos y objetos. |
@@ -75,7 +76,7 @@ Lea [**Novedades en 4D 21 R2**](https://blog.4d.com/whats-new-in-4d-21-r2/), la
| Libuv | 1.51.0 | 21 | Utilizado para QUIC |
| libZip | 1.11.4 | 21 | Utilizado por los componentes zip class, 4D Write Pro, svg y serverNet |
| LZMA | 5.8.1 | 21 | |
-| ngtcp2 | 1.18.0 | 21 | Utilizado para QUIC |
+| ngtcp2 | 1.22.1 | **21 R4** | Utilizado para QUIC |
| OpenSSL | 3.5.2 | 21 | |
| PDFWriter | 4.7.0 | 21 | Utilizado para [`WP Export document`](../WritePro/commands/wp-export-document.md) y [`WP Export variable`](../WritePro/commands/wp-export-variable.md) |
| SpreadJS | 18.2.0 | 21 R2 | Consulte [esta entrada de blog](https://blog.4d.com/4d-view-pro-whats-new-in-4d-21-r2/) para obtener una visión general de las nuevas funciones |
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Project/code-overview.md b/i18n/es/docusaurus-plugin-content-docs/current/Project/code-overview.md
index 59fcfff358a455..da151b5c7a1551 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/Project/code-overview.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/Project/code-overview.md
@@ -161,7 +161,7 @@ Estos son los caracteres codificados:
| \< | %3C |
| \> | %3E |
| ? | %3F |
-| \\| | %7C |
+| \| | %7C |
| \\ | %5C |
| % | %25 |
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md
index 20da20c51e3ae0..5ed9f2deadf9e8 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md
@@ -21,7 +21,7 @@ Instead of hard-coding API endpoints and credentials in your code, you can:
The client automatically loads provider configurations from the first existing file found (in priority order):
-| Prioridad | Ubicación | File Path |
+| Prioridad | Ubicación | Ruta del archivo |
| ---------------------------------- | --------- | ------------------------------------------------- |
| 1 (el mayor) | userData | `/Settings/AIProviders.json` |
| 2 | user | `/Settings/AIProviders.json` |
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png
new file mode 100644
index 00000000000000..7e1cd6b7e973b8
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png
new file mode 100644
index 00000000000000..ce157014371ec1
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png
new file mode 100644
index 00000000000000..592ae7d506e652
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png
new file mode 100644
index 00000000000000..7cbec84055b1d3
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png
new file mode 100644
index 00000000000000..d78a6f5f3c1a48
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png
new file mode 100644
index 00000000000000..95e6603575d8a3
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png
new file mode 100644
index 00000000000000..5b09f52d9fa16c
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
index 1529cae518591c..074640b1af08dc 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
@@ -40,3 +40,80 @@ slug: /commands/theme/System-Documents
| [](../../commands/text-to-document)
|
| [](../../commands/volume-attributes)
|
| [](../../commands/volume-list)
|
+
+:::info Compatibilidad
+
+Legacy commands from this theme can usually be usefully replaced by commands of the [*File and Folder*](./File_and_Folder.md) theme and their associated [File](../../API/FileClass.md), [Folder](../../API/FolderClass.md), [ZipFile](../../API/ZipFileClass.md) and [ZipFolder](../../API/ZipFolderClass.md) classes, allowing you to handle files and folders as objects.
+
+:::
+
+## Document reference number
+
+You open a document with the [`Open document`](../../commands/open-document), [`Create document`](../../commands/create-document) and [`Append document`](../../commands/append-document) commands. Once a document is open, you can read and write characters from and to the document using commands such as [`RECEIVE PACKET`](../../commands/receive-packet) and [`SEND PACKET`](../../commands/send-packet). When you are finished with the document, you usually close it using the `CLOSE DOCUMENT` command.
+
+All open documents returned by these commands are referred to using a **document reference number** (*DocRef*). A *DocRef* uniquely identifies an open document. It is formally an expression of the **Time** type. All commands working with open documents expect *DocRef* as a parameter. If you pass an incorrect *DocRef* to one of these commands, a file manager error occurs.
+
+A document can be opened in **read/write** mode by only one process at a time. In **read-only** mode, one process can open several documents, several processes can open multiple documents, you can open the same document as many times as necessary, but you cannot open the same document in read/write mode twice at a time. The `Create document` and `Append document` commands automatically open documents in read/write mode. Only the `Open document` command lets you choose the opening mode.
+
+:::note
+
+When it is called from a [preemptive process](../../Develop/preemptive.md), a *DocRef* reference can only be used from this preemptive process. When it is called from a cooperative process, a *DocRef* reference can be used from any other cooperative process.
+
+:::
+
+## The Document system variable
+
+`Open document`, `Create document`, `Append document` and `Select document` enable you to access a document using the standard Open or Save file dialog boxes. When you access a document through a standard dialog, 4D returns the full pathname of the document in the [`Document` system variable](../../Concepts/variables.md#system-variables). This system variable has to be distinguished from the *document* parameter that appears in the parameter list of the commands.
+
+## Absolute or relative pathname
+
+Most of the routines of this section accept document names, relative pathnames or absolute pathnames:
+
+Relative pathnames define a location with respect to a folder located on disk. Passing only a document name is considered as using a relative pathname. In 4D, a relative pathname is usually expressed with respect to the database folder, i.e. the folder containing the structure file. Relative pathnames are especially useful when deploying applications in heterogenous environments.
+Absolute pathnames define a location with respect to the root of the volume and so they do not depend on the current location of the database folder.
+To determine whether a pathname passed to a command must be interpreted as absolute or relative, 4D applies a specific algorithm on each platform.
+
+Windows
+If the parameter contains only two characters and if the second one is a ':',
+or if the text contains ':' and '\' as the second and third character,
+or if the text starts with "\\",
+then the pathname is absolute.
+
+In all other cases, the pathname is relative.
+
+Examples with the CREATE FOLDER command:
+
+CREATE FOLDER("lundi") // relative path
+CREATE FOLDER("\Monday") // relative path
+CREATE FOLDER("\Monday\Tuesday") // relative path
+CREATE FOLDER("c:") // absolute path
+CREATE FOLDER("d:\Monday") // absolute path
+CREATE FOLDER("\\srv-Internal\temp") // absolute path
+
+macOS
+If the text starts with a folder separator ':',
+or if does not contain any,
+then the path is relative.
+
+In all other cases, it is absolute.
+
+Examples with the CREATE FOLDER command:
+
+CREATE FOLDER("Monday") // relative path
+CREATE FOLDER("macintosh hd:") // absolute path
+CREATE FOLDER("Monday:Tuesday") // absolute path (a volume must be called Monday)
+CREATE FOLDER(":Monday:Tuesday") // relative path
+
+:::note
+
+See also [**Absolute and relative pathnames** in the Concepts section](../../Concepts/paths.md#absolute-and-relative-pathnames).
+
+:::
+
+## Extracting pathname contents
+
+You can handle pathname contents using the Path to object and Object to path commands. In particular, using these commands, you can extract from a pathname:
+
+a file name,
+the parent folder path,
+the file or folder extension.
\ No newline at end of file
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML.md
index 52a6c948f3d4f6..f6453512bb826e 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML.md
@@ -11,3 +11,61 @@ slug: /commands/theme/XML
| [](../../commands/xml-get-error)
|
| [](../../commands/xml-get-options)
|
| [](../../commands/xml-set-options)
|
+
+## Overview of XML Commands
+
+:::note
+
+For XML support, 4D uses a library named Xerces.dll developed by the Apache Foundation company.
+
+:::
+
+### XML, DOM, and SAX
+
+The **XML** theme groups together the generic XML "utilities" commands of 4D. These are option- and error-management commands.
+
+4D also offers two separate sets of XML commands: [**DOM**](../theme/XML_DOM.md) (Document Object Model) and [**SAX**](../theme/XML_SAX.md) (Simple API XML) are two different parsing modes for XML documents.
+
+- The DOM mode parses an XML source and builds its structure (its "tree") in memory. Because of this, access to each element of the source is extremely fast. However, since the entire tree structure is stored in memory, the processing of large XML documents may lead to the memory capacity being exceeded and thus provoke errors.
+- The SAX mode does not build a tree structure in memory. In this mode, "events" (such as the start and end of an element) are generated when parsing the source. This mode lets you parse XML documents of any size, regardless of the amount of memory available.
+
+#### Ver también
+
+http://www.saxproject.org/?selected=event
+http://www.w3schools.com/xml/
+
+### Modo apropiativo
+
+XML references created by a [preemptive process](../../Develop/preemptive.md) can only be used in that specific process. Conversely, XML references created by a cooperative process can be used by any other cooperative process, but cannot be used by any preemptive process.
+
+### Character Sets
+
+The following character sets are supported by the XML DOM and XML SAX commands of 4D:
+
+- ASCII
+- UTF-8
+- UTF-16 (Big/Small Endian)
+- UCS4 (Big/Small Endian)
+- EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings,
+- ISO-8859-1 (or Latin1)
+- Windows-1252.
+
+### Glosario
+
+This non-exhaustive list details the main XML concepts used by the commands and functions of 4D.
+
+- **Attribute**: an XML sub-tag associated with an element. An attribute always contains a name and a value.
+- **Child**: In an XML structure, an element in a level directly below another.
+- **DTD**: *Document Type Declaration*. The DTD records the set of specific rules and properties that the XML must follow. These rules define, more particularly, the name and content of each tag as well as its context. This formalization of the elements can be used to check whether an XML document is in compliance (in which case, it is declared “valid”). The DTD may be included in the XML document (internal DTD) or in a separate document (external DTD). Note that the DTD is not mandatory.
+- **Element**: an XML tag. An element always contains a name and a value. Optionally, an element may contain attributes.
+- **ElementRef**: XML reference used by the 4D XML commands to specify an XML structure. This reference is made up of 8 coded characters in hexadecimal form, which means that its length is 32 characters on a 64-bit system. It is recommended to declare XML references as Text.
+- **Parent**: In an XML structure, an element in a level directly above another.
+- **Parsing, parser**: The act of analyzing the contents of a structured object in order to extract useful information.
+- **Root**: An element located at the first level of an XML structure.
+- **Sibling**: An element at the same level as another.
+- **Structure**: structured XML object. This object can be a document, a variable, or an element.
+- **Validation**: An XML document is “validated” by the parser when it is “well-formed” and in compliance with the DTD specifications.
+- **Well-formed**: An XML document is declared “well-formed” by the parser when it complies with the generic XML specifications.
+- **XML**: eXtensible Markup Language. A computerized data exchange standard enabling the transfer of data as well as their structure. The XML language is based on the use of tags and a specific syntax, in keeping with the HTML language. However, unlike the latter, the XML language allows the definition of customized tags.
+- **XSL**: eXtensible Stylesheet Language. A language permitting the definition of style sheets used to process and display the contents of an XSL document.
+
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
index 9e8ccda3e66b95..13d31e65ab2279 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
@@ -42,3 +42,64 @@ slug: /commands/theme/XML-DOM
| [](../../commands/dom-set-xml-declaration)
|
| [](../../commands/dom-set-xml-element-name)
|
| [](../../commands/dom-set-xml-element-value)
|
+
+## Overview of XML DOM Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML DOM.
+
+### Creating, opening and closing XML documents via DOM
+
+Objects created, modified or parsed by the 4D DOM commands can be text, URLs, documents or BLOBs. The DOM commands used for opening XML objects in 4D are [`DOM Parse XML source`](../../commands/dom-parse-xml-source) and [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable).
+
+Many commands then let you read, parse and write the elements and attributes. Errors are recovered using the [`XML GET ERROR`](../../commands/xml-get-error) command. Do not forget to call the [`DOM CLOSE XML`](../../commands/dom-close-xml) command to close the source in the end.
+
+Note about use of XML BLOB parameters: For historical reasons, XML commands such as [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable) accept BLOB type parameters. However, it is highly recommended to store XML structures as Text. The use of BLOBs is reserved for processing binary data. In conformity with XML specifications, binary data are automatically encoded in Base64, even when the BLOB contains text.
+
+### Support of XPath notation
+
+Several XML DOM commands ([`DOM Create XML element`](../../commands/dom-create-xml-element), [`DOM Find XML element`](../../commands/dom-find-xml-element), [`DOM Create XML element arrays`](../../commands/dom-create-xml-element-arrays) and [`DOM SET XML ELEMENT VALUE`](../../commands/dom-set-xml-element-value)) support some XPath expressions for accessing XML elements.
+
+XPath notation comes from the XPath language, designed to navigate within XML structures. It allows the setting of elements directly within an XML structure via a "pathname" type syntax, without necessarily having to indicate the complete pathname in order to reach it.
+
+For example, given the following structure:
+
+```xml
+
+
+
+
+
+
+
+```
+
+XPath notation allows you to access element 3 using the */RootElement/Elem1/Elem2/Elem3* syntax.
+
+4D also accepts indexed XPath elements using the *Element[ElementNum]* syntax. For example, given the following structure:
+
+```xml
+
+
+ aaa
+ bbb
+ ccc
+
+
+```
+
+XPath notation allows you to access the "ccc" value using the */RootElement/Elem1/Elem2[3]* syntax.
+
+For a comprehensive list of supported XPath expressions, refer to the [`DOM Find XML element`](../../commands/dom-find-xml-element) command description.
+
+:::note Compatibilidad
+
+Starting with 4D 18 R3, the XPath implementation has been modified to be more compliant and to support a wider set of expressions. If you want to benefit from the extended features in your converted databases, you need to select the **Use standard XPath** option of the [Compatibility page](../../settings/compatibility.md).
+
+:::
+
+### Error Handling
+
+Many functions in this theme return an XML element reference. If an error occurs during function execution (for example, if the root element reference is not valid), the *OK* variable is set to 0 and an error is generated.
+
+In addition, the reference returned in this case is a sequence of 32 zero "0" characters.
+
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md b/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
index c550c3ea8541e7..9cf5b35ac4627b 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
@@ -24,3 +24,34 @@ slug: /commands/theme/XML-SAX
| [](../../commands/sax-open-xml-element)
|
| [](../../commands/sax-open-xml-element-arrays)
|
| [](../../commands/sax-set-xml-declaration)
|
+
+## Overview of XML SAX Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML SAX.
+
+### Creating, opening and closing XML documents via SAX
+
+The SAX commands work with the standard document references of 4D (**DocRef**, a Time type reference). It is therefore possible to use these commands jointly with the 4D commands used to manage documents, such as [`SEND PACKET`](../../commands/send-packet) or [`Append document`](../../commands/append-document).
+
+The creation and opening of XML documents by programming is carried out using the [`Create document`](../../commands/create-document) and [`Open document`](../../commands/open-document) commands. Subsequently, the use of an XML command with these documents will cause the automatic activation of XML mechanisms such as encoding. For instance, the `` header will be written automatically in the document.
+
+:::note
+
+Documents read by SAX commands must be opened in read-only mode by the [`Open document`](../../commands/open-document) command. This avoids any conflict between 4D and the Xerces library when you open "regular" and XML documents simultaneously. If you execute a SAX parsing command with a document open in read-write mode, an alert message is displayed and parsing is impossible.
+
+:::
+
+Closing an XML document must be carried out using the [`CLOSE DOCUMENT`](../../commands/close-document) command. If any XML elements were open, they will be closed automatically.
+
+### About end-of-line characters and BOM management
+
+When writing SAX documents, 4D uses the following default settings for end-of-line characters and BOM (byte order mask) usage:
+
+- CRLF characters on Windows and LF on macOS for end-of-line characters
+- files are written without BOM.
+
+:::note Compatibilidad
+
+In projects created with 4D versions up to 19.x, by default 4D uses CRLF as end-of-line characters on macOS for SAX and a BOM. You can control the `XML line ending` and `XML BOM` management using the [`XML SET OPTIONS`](../../commands/xml-set-options) command and a [Compatibility setting](../../settings/compatibility.md). Important: Since SAX file lines are written directly at each statement, if you need to set the BOM and/or end-of-line options, you must call the [`XML SET OPTIONS`](../../commands/xml-set-options) command before the first SAX writing command.
+
+:::
diff --git a/i18n/es/docusaurus-plugin-content-docs/current/settings/compatibility.md b/i18n/es/docusaurus-plugin-content-docs/current/settings/compatibility.md
index 21dc3c4ba00c72..a7655ac309725a 100644
--- a/i18n/es/docusaurus-plugin-content-docs/current/settings/compatibility.md
+++ b/i18n/es/docusaurus-plugin-content-docs/current/settings/compatibility.md
@@ -5,10 +5,14 @@ title: Página de compatibilidad
La página Compatibilidad agrupa los parámetros relacionados con el mantenimiento de la compatibilidad con versiones anteriores de 4D.
-> El número de opciones mostradas depende de la versión de 4D con la que se creó la base de datos/proyecto original, así como de los ajustes modificados en esta base de datos/proyecto.
-> Esta página enumera las opciones de compatibilidad disponibles para las bases de datos/proyectos convertidos a partir de 4D v18. Para las opciones de compatibilidad más antiguas, consulte la [página Compatibilidad](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) en **doc.4d.com**.
+:::note
-- **Utilizar XPath estándar**: por defecto, esta opción está desmarcada para las bases convertidas desde una versión 4D anterior a la v18 R3, y marcada para las bases creadas con 4D v18 R3 y superiores. A partir de la v18 R3, la implementación de XPath en 4D ha sido modificada para ser más compatible y soportar más predicados. Como consecuencia, las funcionalidades no estándar de la implementación anterior ya no funcionan. Incluyen:
+- El número de opciones mostradas depende de la versión de 4D con la que se creó la base de datos/proyecto original, así como de los ajustes modificados en esta base de datos/proyecto.
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. Para las opciones de compatibilidad más antiguas, consulte la [página Compatibilidad](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) en **doc.4d.com**.
+
+:::
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. Como consecuencia, las funcionalidades no estándar de la implementación anterior ya no funcionan. Incluyen:
- el caracter inicial "/" no es sólo el nodo raíz - la utilización del caracter / como primer caracter en una expresión XPath no declara una ruta absoluta desde el nodo raíz
- no hay nodo actual implícito - el nodo actual debe incluirse en la expresión XPath
@@ -16,12 +20,14 @@ La página Compatibilidad agrupa los parámetros relacionados con el mantenimien
Aunque no es estándar, es posible que desee seguir utilizando estas funcionalidades para que su código siga funcionando como antes -- en este caso, basta con establecer la opción *desmarcarcada*. Por otra parte, si su código no se basa en la implementación no estándar y si desea beneficiarse de las funcionalidades extendidas de XPath en sus bases de datos (como se describe en el comando [`DOM Find XML element`](../commands/dom-find-xml-element)), asegúrese de que la opción \**Utilizar XPath estándar* esté *marcada*.
-- **Utilizar LF como caracter de fin de línea en macOS**: a partir de 4D v19 R2 (y 4D v19 R3 para archivos XML), 4D escribe archivos texto con salto de línea (LF) como caracter de fin de línea (EOL) por defecto en lugar de CR (CRLF para xml SAX) en macOS en nuevos proyectos. Si desea beneficiarse de este nuevo comportamiento en proyectos convertidos a partir de versiones anteriores de 4D, marque esta opción. Ver [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), y [XML SET OPTIONS](../commands/xml-set-options).
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Si desea beneficiarse de este nuevo comportamiento en proyectos convertidos a partir de versiones anteriores de 4D, marque esta opción. Ver [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), y [XML SET OPTIONS](../commands/xml-set-options).
+
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. En las versiones anteriores, los archivos texto se escribían con un BOM por defecto. Seleccione esta opción si desea activar el nuevo comportamiento en los proyectos convertidos. Ver [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), y [XML SET OPTIONS](../commands/xml-set-options).
-- \*\*No añadir un BOM al escribir un archivo de texto unicode por defecto:\*\*a partir de 4D v19 R2 (y 4D v19 R3 para archivos XML), 4D escribe archivos de texto sin BOM ("Byte order mark") por defecto. En las versiones anteriores, los archivos texto se escribían con un BOM por defecto. Seleccione esta opción si desea activar el nuevo comportamiento en los proyectos convertidos. Ver [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), y [XML SET OPTIONS](../commands/xml-set-options).
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. Puede aplicar este comportamiento por defecto a sus bases de datos convertidas marcando esta opción (se recomienda trabajar con valores Null, ya que están totalmente soportados por [ORDA](../ORDA/overview.md).
-- **Mapear valores NULL a valores en blanco sin marcar por defecto una creación de campo**: para un mejor cumplimiento con las especificaciones ORDA, en bases de datos creadas con 4D v19 R4 y superiores, la propiedad de campo **Mapear valores NULL a valores en blanco** no está marcada por defecto cuando creas campos. Puede aplicar este comportamiento por defecto a sus bases de datos convertidas marcando esta opción (se recomienda trabajar con valores Null, ya que están totalmente soportados por [ORDA](../ORDA/overview.md).
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Impresión sin bloqueo**: a partir de 4D v20 R4, cada proceso tiene sus propias configuraciones de impresión (opciones de impresión, impresora actual, etc.), lo que le permite ejecutar múltiples trabajos de impresión simultáneamente. Marque esta opción si desea beneficiarse de esta nueva implementación en sus proyectos 4D convertidos o bases de datos convertidas de modo binario a modo proyecto. **Si se deja sin marcar**, se aplica la implementación anterior: la configuración actual de impresión 4D se aplica globalmente, la impresora se pone en modo "ocupado" cuando hay un trabajo de impresión en marcha, se debe llamar a `CLOSE PRINTING JOB` para que la impresora esté disponible para el siguiente trabajo de impresión (consulte la documentación anterior de 4D para más información).
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) se guardan en un archivo independiente llamado `catalog_editor.json`, almacenado en la carpeta [Sources] del proyecto(../Project/architecture.md#sources). Esta nueva arquitectura de archivos facilita la gestión de conflictos en aplicaciones VCS, ya que el archivo `catalog.4DCatalog` ahora contiene sólo cambios cruciales en la estructura de la base de datos. Por razones de compatibilidad, esta funcionalidad no está habilitada por defecto en proyectos convertidos de versiones anteriores de 4D, necesita marcar esta opción. Cuando la función está habilitada, el archivo `catalog_editor.json` se crea en la primera modificación en el editor de estructuras.
-- **Guardar el color y las coordenadas de la estructura en un archivo catalog_editor.json separado**: a partir de 4D v20 R5, cambios realizados en el editor de estructura en relación a la apariencia gráfica de tablas y campos (color, posición, orden...) se guardan en un archivo independiente llamado `catalog_editor.json`, almacenado en la carpeta [Sources] del proyecto(../Project/architecture.md#sources). Esta nueva arquitectura de archivos facilita la gestión de conflictos en aplicaciones VCS, ya que el archivo `catalog.4DCatalog` ahora contiene sólo cambios cruciales en la estructura de la base de datos. Por razones de compatibilidad, esta funcionalidad no está habilitada por defecto en proyectos convertidos de versiones anteriores de 4D, necesita marcar esta opción. Cuando la función está habilitada, el archivo `catalog_editor.json` se crea en la primera modificación en el editor de estructuras.
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../../FormEditor/forms.md#legacy-print-rendering)).
\ No newline at end of file
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/WritePro/commands/wp-export-variable.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/WritePro/commands/wp-export-variable.md
index 6dde913623443d..42d1f478b7434c 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/WritePro/commands/wp-export-variable.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/WritePro/commands/wp-export-variable.md
@@ -34,14 +34,14 @@ En *destination*, pase la variable que quiere llenar con el objeto exportado de
En el parámetro *format*, pase una constante del tema *4D Write Pro Constants* para definir el formato de exportación que desea utilizar. Cada formato está relacionado con un uso específico. Se soportan los siguientes formatos:
-| Constante | Tipo | Valor | Comentario |
-| ------------------- | ------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| wk 4wp | Integer | 4 | El documento 4D Write Pro se guarda en un formato de archivo nativo (HTML comprimido e imágenes guardadas en una carpeta separada). Se incluyen las etiquetas específicas 4D y no se calculan las expresiones 4D. Este formato es especialmente adecuado para guardar y archivar documentos 4D Write Pro en disco sin pérdida alguna. |
-| wk docx | Integer | 7 | Extensión .docx. El documento 4D Write Pro se guarda en formato Microsoft Word. Compatibilidad certificada con Microsoft Word 2010 y versiones posteriores.
The document parts exported are: - Body / headers / footers / sections
- Page / print settings (margins, background color / image, borders, padding, paper size / orientation)
- Images - inline, anchored, and background image pattern (defined with wk background image)
- Style sheets (character, paragraph)
- Compatible variables and expressions (page number, number of pages, date, time, metadata). Las variables y expresiones no compatibles se evaluarán y congelarán antes de la exportación.
- Enlaces - Marcadores y URLs
Tenga en cuenta que algunos ajustes de 4D Write Pro pueden no estar disponibles o comportarse de forma diferente en Microsoft Word. |
-| wk mime html | Integer | 1 | El documento 4D Write Pro se guarda como HTML MIME estándar con documentos HTML e imágenes anidadas como partes MIME (codificadas en base64). Se calculan las expresiones y se eliminan las etiquetas específicas de 4D y los enlaces de métodos. Sólo se exportan los cuadros de texto anclados a la vista incrustada (como divs). This format is particularly suitable for sending HTML emails. |
-| wk pdf | Integer | 5 | Extensión .pdf. El documento 4D Write Pro se guarda en formato PDF, según el modo vista Página. Los siguientes metadatos se exportan en un documento PDF: Título Autor Asunto Creador del contenido **Notas**: Las expresiones se congelan automáticamente al exportar el documento Los enlaces a métodos NO se exportan |
-| wk svg | Integer | 8 | La página del documento 4D Write Pro se guarda en formato SVG, según el modo vista Página. **Nota:** al exportar a SVG, sólo puede exportar una página cada vez. Utilice el wk page index para especificar qué página exportar. |
-| wk web page html 4D | Integer | 3 | El documento 4D Write Pro se guarda como HTML e incluye etiquetas específicas 4D; cada expresión se inserta como un espacio inseparable. Como este formato no tiene pérdidas, es apropiado para almacenar propósitos en un campo de texto. |
+| Constante | Tipo | Valor | Comentario |
+| ------------------- | ------- | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| wk 4wp | Integer | 4 | El documento 4D Write Pro se guarda en un formato de archivo nativo (HTML comprimido e imágenes guardadas en una carpeta separada). Se incluyen las etiquetas específicas 4D y no se calculan las expresiones 4D. Este formato es especialmente adecuado para guardar y archivar documentos 4D Write Pro en disco sin pérdida alguna. |
+| wk docx | Integer | 7 | Extensión .docx. El documento 4D Write Pro se guarda en formato Microsoft Word. Compatibilidad certificada con Microsoft Word 2010 y versiones posteriores.
Las partes del documento exportadas son: - Cuerpo / encabezados / pies de página / secciones
- Página / configuración de impresión (márgenes, color de fondo / imagen, bordes, relleno, tamaño de papel / orientación)
- Imágenes - en línea, ancladas, y patrón de imagen de fondo (definido con wk background image)
- Hojas de estilo (caracter, párrafo)
- Variables y expresiones compatibles (número de página, número de páginas, fecha, hora, metadatos). Las variables y expresiones no compatibles se evaluarán y congelarán antes de la exportación.
- Enlaces - Marcadores y URLs
Tenga en cuenta que algunos ajustes de 4D Write Pro pueden no estar disponibles o comportarse de forma diferente en Microsoft Word. |
+| wk mime html | Integer | 1 | El documento 4D Write Pro se guarda como HTML MIME estándar con documentos HTML e imágenes anidadas como partes MIME (codificadas en base64). Se calculan las expresiones y se eliminan las etiquetas específicas de 4D y los enlaces de métodos. Sólo se exportan los cuadros de texto anclados a la vista incrustada (como divs). Este formato es especialmente adecuado para enviar correos electrónicos HTML. |
+| wk pdf | Integer | 5 | Extensión .pdf. El documento 4D Write Pro se guarda en formato PDF, según el modo vista Página. Los siguientes metadatos se exportan en un documento PDF: Título Autor Asunto Creador del contenido **Notas**: Las expresiones se congelan automáticamente al exportar el documento Los enlaces a métodos NO se exportan |
+| wk svg | Integer | 8 | La página del documento 4D Write Pro se guarda en formato SVG, según el modo vista Página. **Nota:** al exportar a SVG, sólo puede exportar una página cada vez. Utilice el wk page index para especificar qué página exportar. |
+| wk web page html 4D | Integer | 3 | El documento 4D Write Pro se guarda como HTML e incluye etiquetas específicas 4D; cada expresión se inserta como un espacio inseparable. Como este formato no tiene pérdidas, es apropiado para almacenar propósitos en un campo de texto. |
**Notas:**
@@ -53,7 +53,7 @@ En el parámetro *format*, pase una constante del tema *4D Write Pro Constants*
### Parámetro option
-Pass in *option* an object containing the values to define the properties of the exported document. Las siguientes propiedades están disponibles:
+Pase en *option* un objeto que contenga los valores para definir las propiedades del documento exportado. Las siguientes propiedades están disponibles:
| Constante | Valor | Comentario |
| ------------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -69,7 +69,7 @@ Pass in *option* an object containing the values to define the properties of the
| wk pdfa version | pdfaVersion | Exporta PDF conforme a una versión PDF/A. Para más información sobre las propiedades y versiones de PDF/A, consulte la [página PDF/A en Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Valores posibles: `wk pdfa2`: exporta a la versión "PDF/A-2" `wk pdfa3`: exporta a la versión "PDF/A-3" **Nota:** en macOS, `wk pdfa2` puede exportar a PDF/A-2 o PDF/A-3 o superior, dependiendo de la implementación de la plataforma. Además, `wk pdfa3` significa "exporta a *al menos* PDF/A-3". En Windows, el archivo PDF de salida siempre será igual a la conformidad deseada. |
| wk recompute formulas | recomputeFormulas | Define si las fórmulas deben volver a calcularse cuando se exportan. Valores posibles: true - Valor por defecto. Se vuelven a calcular todas las fórmulasfalse - No se vuelven a calcular las fórmulas |
| wk visible background and anchored elements | visibleBackground | Muestra o exporta imágenes/color de fondo, imágenes ancladas y cuadros de texto (para mostrar, efecto visible sólo en modo de vista Página o Anidado). Valores posibles: True/False |
-| wk visible empty images | visibleEmptyImages | Muestra o exporta un rectángulo negro por defecto para las imágenes que no se pueden cargar o calcular (imágenes vacías o imágenes en un formato no compatible). Valores posibles: True/False. Valor por defecto: True. If value is False, missing image elements will not be displayed at all even if they have borders, width, height, or background; this may impact the page layout for inline images. |
+| wk visible empty images | visibleEmptyImages | Muestra o exporta un rectángulo negro por defecto para las imágenes que no se pueden cargar o calcular (imágenes vacías o imágenes en un formato no compatible). Valores posibles: True/False. Valor por defecto: True. Si el valor es False, los elementos de imagen que falten no se mostrarán en absoluto aunque tengan bordes, ancho, alto o fondo; esto puede afectar al diseño de la página para las imágenes en línea. |
| wk visible footers | visibleFooters | Muestra o exporta los pies de página (para la visualización, efecto visible sólo en el modo vista Página). Valores posibles: True/False |
| wk visible headers | visibleHeaders | Muestra o exporta los encabezados (para la visualización, efecto visible sólo en el modo vista Página). Valores posibles: True/False |
| wk visible references | visibleReferences | Muestra o exporta todas las expresiones 4D insertadas en el documento como referencias. Valores posibles: True/False |
@@ -97,7 +97,7 @@ La siguiente tabla indica la *option* disponible por *format* de exportación:
| wk visible references | \- | \- | \- |  (por defecto: false) | \- |  (por defecto: false) |
| wk whitespace | \- | \- |  (por defecto: "pre-wrap") | \- | \- | \- |
-**Compatibility Note:** Passing a *longint* value in *option* is supported for compatibility reasons, but it is recommended to use an object parameter.
+**Nota de compatibilidad:** pasar un valor *longint* en *option* se soporta por razones de compatibilidad, pero se recomienda usar un parámetro object.
## Ejemplo 1
@@ -159,9 +159,9 @@ Para exportar la primera página de un 4D Write Pro como SVG en una variable Tex
## Ver también
-[4D QPDF (Component) - PDF Get attachments](https://github.com/4d/4D-QPDF)
-[Blog post - 4D Write Pro: Electronic invoice generation](https://blog.4d.com/4d-write-pro-electronic-invoice-generation)
-[Blog post - 4D Write Pro: Export to PDF with enclosures](https://blog.4d.com/4d-write-pro-export-to-pdf-with-enclosures)
-[Exporting to HTML and MIME HTML formats](../user-legacy/exporting-to-html-and-mime-html-formats.md)
-[Importing and Exporting in .docx format](../user-legacy/importing-and-exporting-in-docx-format.md)
+[4D QPDF (Component) - PDF Get attachments](https://github.com/4d/4D-QPDF)
+[Blog - 4D Write Pro: generación de facturas electrónicas](https://blog.4d.com/4d-write-pro-electronic-invoice-generation)
+[Blog post - 4D Write Pro: Exportar a PDF con cerrados](https://blog.4d.com/4d-write-pro-export-to-pdf-with-enclosures)
+[Exportar a formatos HTML y MIME HTML](../user-legacy/exporting-to-html-and-mime-html-formats.md)
+[Importar y exportar al formato docx](../user-legacy/importing-and-exporting-in-docx-format.md)
[WP EXPORT DOCUMENT](../commands/wp-export-document.md)
\ No newline at end of file
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/WritePro/managing-formulas.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/WritePro/managing-formulas.md
index 7da117ce6c1fdb..0c9134a2bfc7bb 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R2/WritePro/managing-formulas.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R2/WritePro/managing-formulas.md
@@ -54,22 +54,22 @@ Desea sustituir la selección en un área de 4D Write Pro por el contenido de un
Puede insertar expresiones especiales relacionadas con los atributos del documento en cualquier área del documento (cuerpo, encabezado, pie de página) utilizando el comando [WP Insertar fórmula](commands/wp-insert-formula.md). Dentro de una fórmula, un objeto contextual de la fórmula se expone automáticamente. Puede utilizar las propiedades de este objeto a través de [**This**](../commands/this.md):
-| Propiedades | Tipo | Descripción |
-| ------------------------------------------------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [This](../commands/this.md).title | Text | Título definido en el atributo wk title |
-| [This](../commands/this.md).author | Text | Autor definido en el atributo wk author |
-| [This](../commands/this.md).subject | Text | Asunto definido en el atributo wk subject |
-| [This](../commands/this.md).company | Text | Empresa definida en el atributo wk company |
-| [This](../commands/this.md).notes | Text | Notas definidas en el atributo wk notes |
-| [This](../commands/this.md).dateCreation | Fecha | Fecha de creación definida en el atributo wk date creation |
-| [This](../commands/this.md).dateModified | Fecha | Fecha de modificación definida en el atributo wk date modified |
-| [This](../commands/this.md).pageNumber (\*) | Number | Page number as it is defined:- From the document start (default) or
- From the section page start if it is defined by section page start.
This formula is always dynamic; it is not affected by the [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) command. |
-| [This](../commands/this.md).pageCount (\*) | Number | Número de páginas: número total de páginas.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
-| [This](../commands/this.md).document | Object | Documento 4D Write Pro |
-| [This](../commands/this.md).data | Object | Contexto de datos del documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) |
-| [This](../commands/this.md).sectionIndex | Number | El índice de la sección en el documento 4D Write Pro a partir de 1 |
-| [This](../commands/this.md).pageIndex | Number | El número de página real en el documento 4D Write Pro a partir de 1 (independientemente de los números de página de la sección) |
-| [This](../commands/this.md).sectionName | String | El nombre que el usuario da a la sección |
+| Propiedades | Tipo | Descripción |
+| ------------------------------------------------------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [This](../commands/this.md).title | Text | Título definido en el atributo wk title |
+| [This](../commands/this.md).author | Text | Autor definido en el atributo wk author |
+| [This](../commands/this.md).subject | Text | Asunto definido en el atributo wk subject |
+| [This](../commands/this.md).company | Text | Empresa definida en el atributo wk company |
+| [This](../commands/this.md).notes | Text | Notas definidas en el atributo wk notes |
+| [This](../commands/this.md).dateCreation | Fecha | Fecha de creación definida en el atributo wk date creation |
+| [This](../commands/this.md).dateModified | Fecha | Fecha de modificación definida en el atributo wk date modified |
+| [This](../commands/this.md).pageNumber (\*) | Number | Número de página tal y como está definido:- Desde el inicio del documento (por defecto) o
- Desde el inicio de página de sección si está definido por inicio de página de sección.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
+| [This](../commands/this.md).pageCount (\*) | Number | Número de páginas: número total de páginas.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
+| [This](../commands/this.md).document | Object | Documento 4D Write Pro |
+| [This](../commands/this.md).data | Object | Contexto de datos del documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) |
+| [This](../commands/this.md).sectionIndex | Number | El índice de la sección en el documento 4D Write Pro a partir de 1 |
+| [This](../commands/this.md).pageIndex | Number | El número de página real en el documento 4D Write Pro a partir de 1 (independientemente de los números de página de la sección) |
+| [This](../commands/this.md).sectionName | String | El nombre que el usuario da a la sección |
:::note
@@ -91,21 +91,21 @@ Por ejemplo, para insertar el número de página en el pie de página:
//no funcionaría correctamente
```
-## Table formula context object
+## Objeto contexto de fórmula de tabla
Cuando se utiliza en una fórmula dentro de la tabla, la palabra clave **This** da acceso a diferentes datos según el contexto:
-| **Contexto** | **Expression** | **Tipo** | **Devuelve** |
-| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| En cualquier sitio | [This](../commands/this.md).table | Object | Tabla actual |
-| | [This](../commands/this.md).row | Object | Current table row element |
-| | [This](../commands/this.md).rowIndex | Number | Índice de la línea actual, a partir de 1 |
-| Cuando se ha definido una fuente de datos para la tabla | [This](../commands/this.md).table.dataSource | Objet (fórmula) | Fuente de datos como fórmula |
-| | [This](../commands/this.md).tableData | Collection o Entity selection (por lo general) | table.dataSource evaluada |
-| En cada fila de datos cuando una fuente de datos tabla devuelve una colección o una selección de entidades | [This](../commands/this.md).item.xxx | Cualquiera | Asignado a cada elemento de la colección de fuentes de datos de la tabla o selección de entidades, por ejemplo **This.item.firstName** si la entidad asociada tiene el atributo *firstName* |
-| | [This](../commands/this.md).itemIndex | Number | Índice del elemento actual en la colección o selección de entidades, a partir de 0 |
-| En cualquier línea (excepto en las líneas de encabezado) cuando una fuente de datos tabla devuelve una colección o una selección de entidades | [This](../commands/this.md).previousItems | Collection o entity selection | Items displayed on the pages before the bottom carry over row (if any) or before the row of the expression, including the page where is displayed the row containing the expression.
Esta expresión devuelve el mismo tipo de valor que la expresión **This.tableData**. |
-| In a break row | [This](../commands/this.md).breakItems | Collection o entity selection | Items of the collection or entity selection displayed in the rows between:
- the current break row and the previous break row of the same level (or the start of the table) if the break row(s) are displayed after the data row.
- la línea de ruptura actual y la siguiente del mismo nivel (o el final de la tabla) si la línea o líneas de ruptura se muestran antes de la línea de datos.
|
+| **Contexto** | **Expression** | **Tipo** | **Devuelve** |
+| ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| En cualquier sitio | [This](../commands/this.md).table | Object | Tabla actual |
+| | [This](../commands/this.md).row | Object | Elemento de la línea de tabla actual |
+| | [This](../commands/this.md).rowIndex | Number | Índice de la línea actual, a partir de 1 |
+| Cuando se ha definido una fuente de datos para la tabla | [This](../commands/this.md).table.dataSource | Objet (fórmula) | Fuente de datos como fórmula |
+| | [This](../commands/this.md).tableData | Collection o Entity selection (por lo general) | table.dataSource evaluada |
+| En cada fila de datos cuando una fuente de datos tabla devuelve una colección o una selección de entidades | [This](../commands/this.md).item.xxx | Cualquiera | Asignado a cada elemento de la colección de fuentes de datos de la tabla o selección de entidades, por ejemplo **This.item.firstName** si la entidad asociada tiene el atributo *firstName* |
+| | [This](../commands/this.md).itemIndex | Number | Índice del elemento actual en la colección o selección de entidades, a partir de 0 |
+| En cualquier línea (excepto en las líneas de encabezado) cuando una fuente de datos tabla devuelve una colección o una selección de entidades | [This](../commands/this.md).previousItems | Collection o entity selection | Elementos mostrados en las páginas anteriores a la línea de arrastre inferior (si existe) o anteriores a la línea de la expresión, incluida la página en la que se muestra la línea que contiene la expresión.
Esta expresión devuelve el mismo tipo de valor que la expresión **This.tableData**. |
+| En una línea de ruptura | [This](../commands/this.md).breakItems | Collection o entity selection | Elementos de la colección o de la selección de entidades mostrados en las líneas entre:
- la línea ruptura actual y la línea de ruptura anterior del mismo nivel (o el inicio de la tabla) si la línea o las líneas de interrupción se muestran después de la línea de datos.
- la línea de ruptura actual y la siguiente del mismo nivel (o el final de la tabla) si la línea o líneas de ruptura se muestran antes de la línea de datos.
|
En cualquier otro contexto, estas expresiones devolverán *undefined*.
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
index ac5ff89cdb8ce7..3313c020e45c75 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
@@ -45,7 +45,7 @@ Los objetos IMAP Transporter se instancian con el comando [IMAP New transporter]
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Admin/cli.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Admin/cli.md
index 6f4d21a0f3b654..5474fe9f7e66bc 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Admin/cli.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Admin/cli.md
@@ -42,27 +42,27 @@ Sintaxis:
[--utility] [--skip-onstartup] [--startup-method ]
```
-| Argumento | Valor | Descripción |
-| :-------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `applicationPath` | Ruta de 4D, 4D Server, aplicación fusionada o tool4d | Lanza la aplicación.
Si no es sin interfaz: idéntico a hacer doble clic en la aplicación; cuando se llama sin argumento de archivo de estructura, la aplicación se ejecuta y aparece el cuadro de diálogo "seleccionar base de datos". |
-| `--version` | | Muestra la versión de la aplicación y sale |
-| `--help` | | Muestra el mensaje de ayuda y sale. Argumentos
alternativos: -?, -h |
-| `--project` | projectPath
| packagePath | 4dlinkPath | Archivo de proyecto
a abrir con el archivo de datos actual. No aparece ninguna
caja de diálogo. |
-| `--data` | dataPath | Archivo de datos a
abrir con el archivo de proyecto designado. Si no se especifica, se utiliza el último archivo de datos
abierto. |
-| `--opening-mode` | interpreted
| compiled | Base de datos de
peticiones a abrir en modo interpretado o compilado. No se lanza ningún
error si el modo solicitado no está disponible. |
-| `--create-data` | | Crea automáticamente
un nuevo archivo de datos si no se encuentra un archivo de datos válido. No aparece ninguna
caja de diálogo. 4D utiliza el nombre
del archivo pasado en el argumento "--data" si lo hay (genera un error si ya
existe un archivo con el mismo nombre). |
-| `--user-param` | Cadena usuario
personalizada | Una cadena que estará disponible en la aplicación a través del comando [`Get database parameter`](../commands/get-database-parameter) (la cadena no debe comenzar por un carácter "-", que está reservado). |
-| `--headless` | | Lanza 4D, 4D Server o la aplicación fusionada sin interfaz (modo headless). In this mode: The Design mode is not available, database starts in Application mode No toolbar, menu bar, MDI window or splash screen is displayedNo icon is displayed in the dock or task barThe opened database is not registered in the "Recent databases" menuThe diagnostic log is automatically started (see [SET DATABASE PARAMETER](../commands/set-database-parameter), selector 79)Every call to a dialog box is intercepted and an automatic response it provided (e.g. OK for the [ALERT](../commands/alert) command, Abort for an error dialog...). Todos los comandos interceptados(\*) se registran en el registro de diagnóstico.
Para las necesidades de mantenimiento, puede enviar cualquier texto a los flujos de salida estándar utilizando el comando [LOG EVENT](../commands/log-event). Tenga en cuenta que las aplicaciones 4D sin interfaz sólo pueden cerrarse mediante una llamada a [QUIT 4D](../commands/quit-4d) o utilizando el administrador de tareas del sistema operativo. |
-| `--dataless` | | Lanza 4D, 4D Server, la aplicación fusionada o tool4d en modo sin datos. El modo sin datos es útil cuando 4D ejecuta tareas sin necesidad de datos (compilación de proyectos, por ejemplo). En este modo: No se abre ningún archivo que contenga datos, aunque se especifique en la línea de comandos o en el archivo `.4DLink`, o cuando se utilicen los comandos `CREATE DATA FILE` y `OPEN DATA FILE`.Los comandos que manipulan datos arrojarán un error. Por ejemplo, `CREATE RECORD` lanza "no hay tabla a la que aplicar el comando".
**Nota**:si se pasa en la línea de comando, el modo dataless se aplica a todas las bases de datos abiertas en 4D, mientras no se cierre la aplicación.Si se pasa utilizando el archivo `.4DLink`, el modo dataless sólo se aplica a la base de datos especificada en el archivo `.4DLink`. Para más información sobre los archivos `.4DLink`, ver [Atajos para abrir proyectos](../GettingStarted/creating.md#project-opening-shortcuts). |
-| `--webadmin-settings-file` | Ruta del archivo | Ruta del archivo `.4DSettings` personalizado para el [servidor web WebAdmin](webAdmin.md). No disponible con [tool4d](#tool4d). |
-| `--webadmin-access-key` | Text | Llave de acceso para el [servidor web WebAdmin](webAdmin.md). No disponible con [tool4d](#tool4d). |
-| `--webadmin-auto-start` | Boolean | Estado del lanzamiento automático del [servidor web WebAdmin](webAdmin.md). No disponible con [tool4d](#tool4d). |
-| `--webadmin-store-settings` | | Almacena la llave de acceso y los parámetros de inicio automático en el archivo de parámetros actualmente utilizado (es decir, el archivo [`WebAdmin.4DSettings`](webAdmin.md#settings) por defecto o un archivo personalizado designado con el parámetro `--webadmin-settings-path`). Utilice el argumento `--webadmin-store-settings` para guardar esta configuración si es necesario. No disponible con [tool4d](#tool4d). |
-| `--utility` | | Sólo disponible con 4D Server. Sólo disponible con 4D Server. |
-| `--skip-onstartup` | | Lanza el proyecto sin ejecutar ningún método "automático", incluyendo los métodos base `On Startup` y `On Exit` |
-| `--startup-method` | Nombre del método proyecto (cadena) | Método de proyecto a ejecutar inmediatamente después del método base `On Startup` (si no se omite con `--skip-onstartup`). |
-
-(\*) Some dialogs are displayed before the database is opened, so that it's impossible to write into the [Diagnostic log file](Debugging/debugLogFiles.md#4ddiagnosticlogtxt) (license alert, conversion dialog, database selection, data file selection). En este caso, se
+| Argumento | Valor | Descripción |
+| :-------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `applicationPath` | Ruta de 4D, 4D Server, aplicación fusionada o tool4d | Lanza la aplicación.
Si no es sin interfaz: idéntico a hacer doble clic en la aplicación; cuando se llama sin argumento de archivo de estructura, la aplicación se ejecuta y aparece el cuadro de diálogo "seleccionar base de datos". |
+| `--version` | | Muestra la versión de la aplicación y sale |
+| `--help` | | Muestra el mensaje de ayuda y sale. Argumentos
alternativos: -?, -h |
+| `--project` | projectPath
| packagePath | 4dlinkPath | Archivo de proyecto
a abrir con el archivo de datos actual. No aparece ninguna
caja de diálogo. |
+| `--data` | dataPath | Archivo de datos a
abrir con el archivo de proyecto designado. Si no se especifica, se utiliza el último archivo de datos
abierto. |
+| `--opening-mode` | interpreted
| compiled | Base de datos de
peticiones a abrir en modo interpretado o compilado. No se lanza ningún
error si el modo solicitado no está disponible. |
+| `--create-data` | | Crea automáticamente
un nuevo archivo de datos si no se encuentra un archivo de datos válido. No aparece ninguna
caja de diálogo. 4D utiliza el nombre
del archivo pasado en el argumento "--data" si lo hay (genera un error si ya
existe un archivo con el mismo nombre). |
+| `--user-param` | Cadena usuario
personalizada | Una cadena que estará disponible en la aplicación a través del comando [`Get database parameter`](../commands/get-database-parameter) (la cadena no debe comenzar por un carácter "-", que está reservado). |
+| `--headless` | | Lanza 4D, 4D Server o la aplicación fusionada sin interfaz (modo headless). En este modo: El modo Diseño no está disponible, la base de datos se inicia en modo Aplicación No se muestra la barra de herramientas, la barra de menú, la ventana MDI ni la pantalla de presentaciónNo se muestra ningún icono en el dock o la barra de tareasLa base de datos abierta no se registra en el menú "Bases de datos recientes"Se inicia automáticamente el registro de diagnóstico (ver [SET DATABASE PARAMETER](../commands/set-database-parameter), selector 79)Se intercepta cada llamada a una caja de diálogo y se suministra una respuesta automática (por ejemplo, OK para el comando [ALERT](../commands/alert), Abort para un diálogo de error...). Todos los comandos interceptados(\*) se registran en el registro de diagnóstico.
Para las necesidades de mantenimiento, puede enviar cualquier texto a los flujos de salida estándar utilizando el comando [LOG EVENT](../commands/log-event). Tenga en cuenta que las aplicaciones 4D sin interfaz sólo pueden cerrarse mediante una llamada a [QUIT 4D](../commands/quit-4d) o utilizando el administrador de tareas del sistema operativo. |
+| `--dataless` | | Lanza 4D, 4D Server, la aplicación fusionada o tool4d en modo sin datos. El modo sin datos es útil cuando 4D ejecuta tareas sin necesidad de datos (compilación de proyectos, por ejemplo). En este modo: No se abre ningún archivo que contenga datos, aunque se especifique en la línea de comandos o en el archivo `.4DLink`, o cuando se utilicen los comandos `CREATE DATA FILE` y `OPEN DATA FILE`.Los comandos que manipulan datos arrojarán un error. Por ejemplo, `CREATE RECORD` lanza "no hay tabla a la que aplicar el comando".
**Nota**:si se pasa en la línea de comando, el modo dataless se aplica a todas las bases de datos abiertas en 4D, mientras no se cierre la aplicación.Si se pasa utilizando el archivo `.4DLink`, el modo dataless sólo se aplica a la base de datos especificada en el archivo `.4DLink`. Para más información sobre los archivos `.4DLink`, ver [Atajos para abrir proyectos](../GettingStarted/creating.md#project-opening-shortcuts). |
+| `--webadmin-settings-file` | Ruta del archivo | Ruta del archivo `.4DSettings` personalizado para el [servidor web WebAdmin](webAdmin.md). No disponible con [tool4d](#tool4d). |
+| `--webadmin-access-key` | Text | Llave de acceso para el [servidor web WebAdmin](webAdmin.md). No disponible con [tool4d](#tool4d). |
+| `--webadmin-auto-start` | Boolean | Estado del lanzamiento automático del [servidor web WebAdmin](webAdmin.md). No disponible con [tool4d](#tool4d). |
+| `--webadmin-store-settings` | | Almacena la llave de acceso y los parámetros de inicio automático en el archivo de parámetros actualmente utilizado (es decir, el archivo [`WebAdmin.4DSettings`](webAdmin.md#settings) por defecto o un archivo personalizado designado con el parámetro `--webadmin-settings-path`). Utilice el argumento `--webadmin-store-settings` para guardar esta configuración si es necesario. No disponible con [tool4d](#tool4d). |
+| `--utility` | | Sólo disponible con 4D Server. Sólo disponible con 4D Server. |
+| `--skip-onstartup` | | Lanza el proyecto sin ejecutar ningún método "automático", incluyendo los métodos base `On Startup` y `On Exit` |
+| `--startup-method` | Nombre del método proyecto (cadena) | Método de proyecto a ejecutar inmediatamente después del método base `On Startup` (si no se omite con `--skip-onstartup`). |
+
+(\*) Algunos diálogos se muestran antes de abrir la base de datos, por lo que es imposible escribir en el [archivo de registro de diagnóstico](Debugging/debugLogFiles.md#4ddiagnosticlogtxt) (alerta de licencia, diálogo de conversión, selección de bases de datos, selección de archivos de datos). En este caso, se
lanza un mensaje de error tanto en el flujo stderr como en el registro de eventos sistema,
y luego la aplicación se cierra.
@@ -219,7 +219,7 @@ En Windows, tool4d es una aplicación de consola, de modo que el stream `stdout`
:::note Notas
- tool4d siempre se ejecuta sin interfaz (la opción de línea de comandos `headless` es inútil).
-- The [`Application type`](../commands/application-type) command returns the value 6 ("tool4d") when called from the tool4d application.
+- El comando [`Application type`](../commands/application-type) devuelve el valor 6 ("tool4d") cuando se llama desde la aplicación tool4d.
- el [archivo de registro de diagnóstico](../Debugging/debugLogFiles.md#4ddiagnosticlogtxt) tiene el prefijo "4DDiagnosticLogTool".
:::
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Concepts/classes.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Concepts/classes.md
index 9c49847c00d8c0..2850149e86dc2c 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Concepts/classes.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Concepts/classes.md
@@ -877,7 +877,7 @@ Supported functions have a **default execution location** when no location keywo
| Supported functions | Ejecución por defecto | with `local` keyword | with `server` keyword |
| ------------------------------------------------- | --------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [ORDA data model](../ORDA/ordaClasses.md) | on Server | The function is executed on the client if called on the client | |
+| [ORDA data model](../ORDA/ordaClasses.md) | en el servidor | The function is executed on the client if called on the client | |
| [Shared or session singleton](#singleton-classes) | Local | | The function is executed on the server on the server instance of the singleton.
If there is no instance of the singleton on the server, it is created. |
If `local` and `server` keywords are used in another context, an error is returned.
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
index 973cc96750bb4f..9a2105aea4cfef 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
@@ -439,7 +439,7 @@ In the 4D language documentation, the following parameter types can be used.
| Tipo | Definición | Ejemplos de un comando 4D que lo usa |
| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| > , <, >=, <=, #, =, \\| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
+| > , <, >=, <=, #, =, \| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
| any | Un parámetro que puede aceptar cualquier tipo de datos soportado | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
| Array | Variable que contiene una lista de valores del mismo tipo. | ARRAY TEXT($arr;10) |
| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
index 403237a756ee57..5c7d6e67a9bc26 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
@@ -66,6 +66,47 @@ Puede añadir o modificar formularios 4D utilizando los siguientes elementos:
}
```
+## Printing forms
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+### Print rendering engine
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+:::tip Entrada de blog relacionada
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning Limitación
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
## Formulario proyecto y formulario tabla
Hay dos categorías de formularios:
@@ -78,7 +119,7 @@ Normalmente, se selecciona la categoría del formulario al crearlo, pero se pued
## Páginas formulario
-Cada formulario consta de al menos dos páginas:
+Each form is made of at least two pages:
- una página 1: una página principal, mostrada por defecto
- una página 0: una página de fondo, cuyo contenido se muestra en todas las demás páginas.
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
index 4edef371468b67..f11024ef3c872e 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
@@ -5,7 +5,7 @@ title: Notas del lanzamiento
## 4D 21 R3
-Lea [**Novedades en 4D 21 R3**](https://blog.4d.com/whats-new-in-4d-21-r3/), la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 21 R3.
+Lea [**Novedades en 4D 21 R3**](https://blog.4d.com/es/whats-new-in-4d-21-r3/), la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 21 R3.
#### Lo más destacado
@@ -18,6 +18,7 @@ Lea [**Novedades en 4D 21 R3**](https://blog.4d.com/whats-new-in-4d-21-r3/), la
- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component.
- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md).
- Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions.
+- New [printing renderer](../FormEditor/forms.md#print-rendering-engine) for forms on Liquid glass and Fluent UI interfaces. New compatibility options to [enable the renderer on Classic interfaces](../FormEditor/forms.md#legacy-print-renderer).
- Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository).
- [**Lista de bugs corregidos**](https://bugs.4d.fr/fixedbugslist?version=21_R3): lista de todos los bugs que se han corregido en 4D 21 R3.
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
index b366b927b551e3..b7736d619791b0 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
@@ -161,7 +161,7 @@ Estos son los caracteres codificados:
| \< | %3C |
| \> | %3E |
| ? | %3F |
-| \\| | %7C |
+| \| | %7C |
| \\ | %5C |
| % | %25 |
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/WritePro/managing-formulas.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/WritePro/managing-formulas.md
index 96d571dccbbfc9..27e817d93b1562 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/WritePro/managing-formulas.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/WritePro/managing-formulas.md
@@ -56,22 +56,22 @@ Desea sustituir la selección en un área de 4D Write Pro por el contenido de un
Puede insertar expresiones especiales relacionadas con los atributos del documento en cualquier área del documento (cuerpo, encabezado, pie de página) utilizando el comando [WP Insertar fórmula](commands/wp-insert-formula.md). Dentro de una fórmula, un objeto contextual de la fórmula se expone automáticamente. Puede utilizar las propiedades de este objeto a través de [**This**](../commands/this):
-| Propiedades | Tipo | Descripción |
-| ------------------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| This.title | Text | Título definido en el atributo wk title |
-| This.author | Text | Autor definido en el atributo wk author |
-| This.subject | Text | Asunto definido en el atributo wk subject |
-| This.company | Text | Empresa definida en el atributo wk company |
-| This.notes | Text | Notas definidas en el atributo wk notes |
-| This.dateCreation | Fecha | Fecha de creación definida en el atributo wk date creation |
-| This.dateModified | Fecha | Fecha de modificación definida en el atributo wk date modified |
-| This.pageNumber (\*) | Number | Page number as it is defined:- From the document start (default) or
- From the section page start if it is defined by section page start.
This formula is always dynamic; it is not affected by the [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) command. |
-| This.pageCount (\*) | Number | Número de páginas: número total de páginas.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
-| This.document | Object | Documento 4D Write Pro |
-| This.data | Object | Contexto de datos del documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) |
-| This.sectionIndex | Number | El índice de la sección en el documento 4D Write Pro a partir de 1 |
-| This.pageIndex | Number | El número de página real en el documento 4D Write Pro a partir de 1 (independientemente de los números de página de la sección) |
-| This.sectionName | String | El nombre que el usuario da a la sección |
+| Propiedades | Tipo | Descripción |
+| ------------------------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| This.title | Text | Título definido en el atributo wk title |
+| This.author | Text | Autor definido en el atributo wk author |
+| This.subject | Text | Asunto definido en el atributo wk subject |
+| This.company | Text | Empresa definida en el atributo wk company |
+| This.notes | Text | Notas definidas en el atributo wk notes |
+| This.dateCreation | Fecha | Fecha de creación definida en el atributo wk date creation |
+| This.dateModified | Fecha | Fecha de modificación definida en el atributo wk date modified |
+| This.pageNumber (\*) | Number | Número de página tal y como está definido:- Desde el inicio del documento (por defecto) o
- Desde el inicio de página de sección si está definido por inicio de página de sección.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
+| This.pageCount (\*) | Number | Número de páginas: número total de páginas.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
+| This.document | Object | Documento 4D Write Pro |
+| This.data | Object | Contexto de datos del documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) |
+| This.sectionIndex | Number | El índice de la sección en el documento 4D Write Pro a partir de 1 |
+| This.pageIndex | Number | El número de página real en el documento 4D Write Pro a partir de 1 (independientemente de los números de página de la sección) |
+| This.sectionName | String | El nombre que el usuario da a la sección |
:::note
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/aikit/provider-model-aliases.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/aikit/provider-model-aliases.md
index 20da20c51e3ae0..5ed9f2deadf9e8 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/aikit/provider-model-aliases.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/aikit/provider-model-aliases.md
@@ -21,7 +21,7 @@ Instead of hard-coding API endpoints and credentials in your code, you can:
The client automatically loads provider configurations from the first existing file found (in priority order):
-| Prioridad | Ubicación | File Path |
+| Prioridad | Ubicación | Ruta del archivo |
| ---------------------------------- | --------- | ------------------------------------------------- |
| 1 (el mayor) | userData | `/Settings/AIProviders.json` |
| 2 | user | `/Settings/AIProviders.json` |
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png differ
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
index 656fdc3449dd23..10db628c71f21b 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
@@ -5,7 +5,7 @@ slug: /commands/imap-new-transporter
displayed_sidebar: docs
---
-**IMAP New transporter**( *server* : Object ) : 4D.IMAPTransporter
+**IMAP New transporter**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
index 21dc3c4ba00c72..a7655ac309725a 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
@@ -5,10 +5,14 @@ title: Página de compatibilidad
La página Compatibilidad agrupa los parámetros relacionados con el mantenimiento de la compatibilidad con versiones anteriores de 4D.
-> El número de opciones mostradas depende de la versión de 4D con la que se creó la base de datos/proyecto original, así como de los ajustes modificados en esta base de datos/proyecto.
-> Esta página enumera las opciones de compatibilidad disponibles para las bases de datos/proyectos convertidos a partir de 4D v18. Para las opciones de compatibilidad más antiguas, consulte la [página Compatibilidad](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) en **doc.4d.com**.
+:::note
-- **Utilizar XPath estándar**: por defecto, esta opción está desmarcada para las bases convertidas desde una versión 4D anterior a la v18 R3, y marcada para las bases creadas con 4D v18 R3 y superiores. A partir de la v18 R3, la implementación de XPath en 4D ha sido modificada para ser más compatible y soportar más predicados. Como consecuencia, las funcionalidades no estándar de la implementación anterior ya no funcionan. Incluyen:
+- El número de opciones mostradas depende de la versión de 4D con la que se creó la base de datos/proyecto original, así como de los ajustes modificados en esta base de datos/proyecto.
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. Para las opciones de compatibilidad más antiguas, consulte la [página Compatibilidad](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) en **doc.4d.com**.
+
+:::
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. Como consecuencia, las funcionalidades no estándar de la implementación anterior ya no funcionan. Incluyen:
- el caracter inicial "/" no es sólo el nodo raíz - la utilización del caracter / como primer caracter en una expresión XPath no declara una ruta absoluta desde el nodo raíz
- no hay nodo actual implícito - el nodo actual debe incluirse en la expresión XPath
@@ -16,12 +20,14 @@ La página Compatibilidad agrupa los parámetros relacionados con el mantenimien
Aunque no es estándar, es posible que desee seguir utilizando estas funcionalidades para que su código siga funcionando como antes -- en este caso, basta con establecer la opción *desmarcarcada*. Por otra parte, si su código no se basa en la implementación no estándar y si desea beneficiarse de las funcionalidades extendidas de XPath en sus bases de datos (como se describe en el comando [`DOM Find XML element`](../commands/dom-find-xml-element)), asegúrese de que la opción \**Utilizar XPath estándar* esté *marcada*.
-- **Utilizar LF como caracter de fin de línea en macOS**: a partir de 4D v19 R2 (y 4D v19 R3 para archivos XML), 4D escribe archivos texto con salto de línea (LF) como caracter de fin de línea (EOL) por defecto en lugar de CR (CRLF para xml SAX) en macOS en nuevos proyectos. Si desea beneficiarse de este nuevo comportamiento en proyectos convertidos a partir de versiones anteriores de 4D, marque esta opción. Ver [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), y [XML SET OPTIONS](../commands/xml-set-options).
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Si desea beneficiarse de este nuevo comportamiento en proyectos convertidos a partir de versiones anteriores de 4D, marque esta opción. Ver [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), y [XML SET OPTIONS](../commands/xml-set-options).
+
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. En las versiones anteriores, los archivos texto se escribían con un BOM por defecto. Seleccione esta opción si desea activar el nuevo comportamiento en los proyectos convertidos. Ver [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), y [XML SET OPTIONS](../commands/xml-set-options).
-- \*\*No añadir un BOM al escribir un archivo de texto unicode por defecto:\*\*a partir de 4D v19 R2 (y 4D v19 R3 para archivos XML), 4D escribe archivos de texto sin BOM ("Byte order mark") por defecto. En las versiones anteriores, los archivos texto se escribían con un BOM por defecto. Seleccione esta opción si desea activar el nuevo comportamiento en los proyectos convertidos. Ver [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), y [XML SET OPTIONS](../commands/xml-set-options).
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. Puede aplicar este comportamiento por defecto a sus bases de datos convertidas marcando esta opción (se recomienda trabajar con valores Null, ya que están totalmente soportados por [ORDA](../ORDA/overview.md).
-- **Mapear valores NULL a valores en blanco sin marcar por defecto una creación de campo**: para un mejor cumplimiento con las especificaciones ORDA, en bases de datos creadas con 4D v19 R4 y superiores, la propiedad de campo **Mapear valores NULL a valores en blanco** no está marcada por defecto cuando creas campos. Puede aplicar este comportamiento por defecto a sus bases de datos convertidas marcando esta opción (se recomienda trabajar con valores Null, ya que están totalmente soportados por [ORDA](../ORDA/overview.md).
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Impresión sin bloqueo**: a partir de 4D v20 R4, cada proceso tiene sus propias configuraciones de impresión (opciones de impresión, impresora actual, etc.), lo que le permite ejecutar múltiples trabajos de impresión simultáneamente. Marque esta opción si desea beneficiarse de esta nueva implementación en sus proyectos 4D convertidos o bases de datos convertidas de modo binario a modo proyecto. **Si se deja sin marcar**, se aplica la implementación anterior: la configuración actual de impresión 4D se aplica globalmente, la impresora se pone en modo "ocupado" cuando hay un trabajo de impresión en marcha, se debe llamar a `CLOSE PRINTING JOB` para que la impresora esté disponible para el siguiente trabajo de impresión (consulte la documentación anterior de 4D para más información).
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) se guardan en un archivo independiente llamado `catalog_editor.json`, almacenado en la carpeta [Sources] del proyecto(../Project/architecture.md#sources). Esta nueva arquitectura de archivos facilita la gestión de conflictos en aplicaciones VCS, ya que el archivo `catalog.4DCatalog` ahora contiene sólo cambios cruciales en la estructura de la base de datos. Por razones de compatibilidad, esta funcionalidad no está habilitada por defecto en proyectos convertidos de versiones anteriores de 4D, necesita marcar esta opción. Cuando la función está habilitada, el archivo `catalog_editor.json` se crea en la primera modificación en el editor de estructuras.
-- **Guardar el color y las coordenadas de la estructura en un archivo catalog_editor.json separado**: a partir de 4D v20 R5, cambios realizados en el editor de estructura en relación a la apariencia gráfica de tablas y campos (color, posición, orden...) se guardan en un archivo independiente llamado `catalog_editor.json`, almacenado en la carpeta [Sources] del proyecto(../Project/architecture.md#sources). Esta nueva arquitectura de archivos facilita la gestión de conflictos en aplicaciones VCS, ya que el archivo `catalog.4DCatalog` ahora contiene sólo cambios cruciales en la estructura de la base de datos. Por razones de compatibilidad, esta funcionalidad no está habilitada por defecto en proyectos convertidos de versiones anteriores de 4D, necesita marcar esta opción. Cuando la función está habilitada, el archivo `catalog_editor.json` se crea en la primera modificación en el editor de estructuras.
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../../FormEditor/forms.md#legacy-print-rendering)).
\ No newline at end of file
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
index 6cf8ab52e39496..7f687b9cc897fe 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
@@ -159,9 +159,9 @@ Para exportar la primera página de un 4D Write Pro como SVG en una variable Tex
## Ver también
-[4D QPDF (Component) - PDF Get attachments](https://github.com/4d/4D-QPDF)
-[Blog post - 4D Write Pro: Electronic invoice generation](https://blog.4d.com/4d-write-pro-electronic-invoice-generation)
-[Blog post - 4D Write Pro: Export to PDF with enclosures](https://blog.4d.com/4d-write-pro-export-to-pdf-with-enclosures)
-[Exporting to HTML and MIME HTML formats](../user-legacy/exporting-to-html-and-mime-html-formats.md)
-[Importing and Exporting in .docx format](../user-legacy/importing-and-exporting-in-docx-format.md)
+[4D QPDF (Component) - PDF Get attachments](https://github.com/4d/4D-QPDF)
+[Blog - 4D Write Pro: generación de facturas electrónicas](https://blog.4d.com/4d-write-pro-electronic-invoice-generation)
+[Blog post - 4D Write Pro: Exportar a PDF con cerrados](https://blog.4d.com/4d-write-pro-export-to-pdf-with-enclosures)
+[Exportar a formatos HTML y MIME HTML](../user-legacy/exporting-to-html-and-mime-html-formats.md)
+[Importar y exportar al formato docx](../user-legacy/importing-and-exporting-in-docx-format.md)
[WP EXPORT DOCUMENT](../commands/wp-export-document.md)
\ No newline at end of file
diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md
index 7da117ce6c1fdb..5ee01a70bf784d 100644
--- a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md
+++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md
@@ -54,22 +54,22 @@ Desea sustituir la selección en un área de 4D Write Pro por el contenido de un
Puede insertar expresiones especiales relacionadas con los atributos del documento en cualquier área del documento (cuerpo, encabezado, pie de página) utilizando el comando [WP Insertar fórmula](commands/wp-insert-formula.md). Dentro de una fórmula, un objeto contextual de la fórmula se expone automáticamente. Puede utilizar las propiedades de este objeto a través de [**This**](../commands/this.md):
-| Propiedades | Tipo | Descripción |
-| ------------------------------------------------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [This](../commands/this.md).title | Text | Título definido en el atributo wk title |
-| [This](../commands/this.md).author | Text | Autor definido en el atributo wk author |
-| [This](../commands/this.md).subject | Text | Asunto definido en el atributo wk subject |
-| [This](../commands/this.md).company | Text | Empresa definida en el atributo wk company |
-| [This](../commands/this.md).notes | Text | Notas definidas en el atributo wk notes |
-| [This](../commands/this.md).dateCreation | Fecha | Fecha de creación definida en el atributo wk date creation |
-| [This](../commands/this.md).dateModified | Fecha | Fecha de modificación definida en el atributo wk date modified |
-| [This](../commands/this.md).pageNumber (\*) | Number | Page number as it is defined:- From the document start (default) or
- From the section page start if it is defined by section page start.
This formula is always dynamic; it is not affected by the [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) command. |
-| [This](../commands/this.md).pageCount (\*) | Number | Número de páginas: número total de páginas.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
-| [This](../commands/this.md).document | Object | Documento 4D Write Pro |
-| [This](../commands/this.md).data | Object | Contexto de datos del documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) |
-| [This](../commands/this.md).sectionIndex | Number | El índice de la sección en el documento 4D Write Pro a partir de 1 |
-| [This](../commands/this.md).pageIndex | Number | El número de página real en el documento 4D Write Pro a partir de 1 (independientemente de los números de página de la sección) |
-| [This](../commands/this.md).sectionName | String | El nombre que el usuario da a la sección |
+| Propiedades | Tipo | Descripción |
+| ------------------------------------------------------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [This](../commands/this.md).title | Text | Título definido en el atributo wk title |
+| [This](../commands/this.md).author | Text | Autor definido en el atributo wk author |
+| [This](../commands/this.md).subject | Text | Asunto definido en el atributo wk subject |
+| [This](../commands/this.md).company | Text | Empresa definida en el atributo wk company |
+| [This](../commands/this.md).notes | Text | Notas definidas en el atributo wk notes |
+| [This](../commands/this.md).dateCreation | Fecha | Fecha de creación definida en el atributo wk date creation |
+| [This](../commands/this.md).dateModified | Fecha | Fecha de modificación definida en el atributo wk date modified |
+| [This](../commands/this.md).pageNumber (\*) | Number | Número de página tal y como está definido:- Desde el inicio del documento (por defecto) o
- Desde el inicio de página de sección si está definido por inicio de página de sección.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
+| [This](../commands/this.md).pageCount (\*) | Number | Número de páginas: número total de páginas.
Esta fórmula siempre es dinámica; no se ve afectada por el comando [**FORMULAS WP FREEZE**](commands-legacy/wp-freeze-formulas.md). |
+| [This](../commands/this.md).document | Object | Documento 4D Write Pro |
+| [This](../commands/this.md).data | Object | Contexto de datos del documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) |
+| [This](../commands/this.md).sectionIndex | Number | El índice de la sección en el documento 4D Write Pro a partir de 1 |
+| [This](../commands/this.md).pageIndex | Number | El número de página real en el documento 4D Write Pro a partir de 1 (independientemente de los números de página de la sección) |
+| [This](../commands/this.md).sectionName | String | El nombre que el usuario da a la sección |
:::note
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md b/i18n/fr/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
index 2161426721eca4..ff6c3dcf2eacaa 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
@@ -45,7 +45,7 @@ Les objets IMAP Transporter sont instanciés avec la commande [IMAP New transpor
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
@@ -53,7 +53,7 @@ Les objets IMAP Transporter sont instanciés avec la commande [IMAP New transpor
| Paramètres | Type | | Description |
| ---------- | ---------------------------------- | :-------------------------: | -------------------------------------------------- |
-| paramètres | Object | -> | Mail server configuration |
+| parameter | Object | -> | Configuration du serveur de messagerie |
| Résultat | 4D.IMAPTransporter | <- | [Objet transporteur IMAP](#objet-imap-transporter) |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Admin/data-collect.md b/i18n/fr/docusaurus-plugin-content-docs/current/Admin/data-collect.md
index 9a0c9f680e1978..839b8df217abde 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/Admin/data-collect.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/Admin/data-collect.md
@@ -110,29 +110,29 @@ Certaines données sont également collectées à intervalles réguliers.
| restServer.executionTime | Number | Temps d'exécution CPU du serveur WEB REST |
| soapServer | Object | Objet contenant des informations sur le serveur SOAP |
| soapServer.bytesIn | Number | Octets reçus par le serveur SOAP |
-| soapServer.bytesOut | Number | Bytes sent by the SOAP server |
-| soapServer.hits | Number | Number of hits on the SOAP server |
-| soapServer.executionTime | Number | CPU execution time for the SOAP server |
+| soapServer.bytesOut | Number | Octets envoyés par le serveur SOAP |
+| soapServer.hits | Number | Nombre de hits du serveur SOAP |
+| soapServer.executionTime | Number | Temps d'exécution CPU du serveur SOAP |
| SQLBeginEndStatement | Number | Nombre d'utilisations de `Begin SQL` / `End SQL` |
| SQLLoginInternal | Number | Nombre d'appels à `SQL LOGIN` utilisant SQL_INTERNAL |
-| sqlServer | Object | Object containing SQL server information |
-| sqlServer.hits | Number | Number of SQL queries executed |
-| sqlServer.bytesIn | Number | Bytes received by the SQL engine |
-| sqlServer.bytesOut | Number | Bytes sent by the SQL engine |
-| sqlServer.executionTime | Number | CPU execution time for SQL queries |
+| sqlServer | Object | Objet contenant des informations sur le serveur SQL |
+| sqlServer.hits | Number | Nombre de requêtes SQL exécutées |
+| sqlServer.bytesIn | Number | Octets reçus par le moteur SQL |
+| sqlServer.bytesOut | Number | Octets envoyés par le moteur SQL |
+| sqlServer.executionTime | Number | Temps d'exécution CPU pour les requêtes SQL |
| usingQUICNetworkLayer | Boolean | True si la base de données utilise la couche réseau QUIC |
-| totalExecutionTime | Number | Total CPU execution time: sum of all request types |
-| totalRequests | Number | Total requests: sum of web, REST, SOAP, SQL, and internal traffic |
-| webServer | Object | Object containing Web server information |
-| webServer.bytesIn | Number | Bytes received by the Web server |
-| webServer.bytesOut | Number | Bytes sent by the Web server |
-| webServer.hits | Number | Number of hits on the Web server |
-| webServer.executionTime | Number | CPU execution time for the Web server |
-| webStaticServer | Object | Object containing the static Web server information |
-| webStaticServer.bytesIn | Number | Bytes received by the static Web server |
-| webStaticServer.bytesOut | Number | Bytes sent by the static Web server |
-| webStaticServer.hits | Number | Number of hits on the static Web server |
-| webStaticServer.executionTime | Number | CPU execution time for the static Web server |
+| totalExecutionTime | Number | Temps d'exécution total du CPU : somme de tous les types de requêtes |
+| totalRequests | Number | Total des requêtes : somme des requêtes web, REST, SOAP, SQL et du trafic interne |
+| webServer | Object | Objet contenant des informations sur le serveur Web |
+| webServer.bytesIn | Number | Octets reçus par le serveur Web |
+| webServer.bytesOut | Number | Octets envoyés par le serveur Web |
+| webServer.hits | Number | Nombre de hits du serveur Web |
+| webServer.executionTime | Number | Temps d'exécution CPU du serveur Web |
+| webStaticServer | Object | Objet contenant des informations sur le serveur Web statique |
+| webStaticServer.bytesIn | Number | Octets reçus par le serveur Web statique |
+| webStaticServer.bytesOut | Number | Octets envoyés par le serveur Web statique |
+| webStaticServer.hits | Number | Nombre de hits du serveur Web statique |
+| webStaticServer.executionTime | Number | Temps d'exécution CPU du serveur Web statique |
## Où sont-elles stockées et envoyées ?
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/classes.md b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/classes.md
index 9fbac47d7317e3..845f7862f040f0 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/classes.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/classes.md
@@ -41,9 +41,9 @@ Les fichiers de classe sont gérés via l'Explorateur 4D (voir [Créer des class
#### Supprimer une classe
-To delete an existing class, select it in the Explorer and click  or choose **Move to Trash** from the contextual menu.
+Pour supprimer une classe existante, sélectionnez-la dans l'explorateur et cliquez sur  ou choisissez **Déplacer vers la corbeille** dans le menu contextuel.
-You can also remove the .4dm class file from the "Classes" folder on your disk.
+Vous pouvez également supprimer le fichier de classe .4dm du dossier "Classes" de votre disque.
## Class stores
@@ -162,7 +162,7 @@ Les fonctions de classe sont des propriétés spécifiques de la classe. Ce sont
Si les fonctions sont déclarées dans une [classe partagée](#shared-classes), vous pouvez utiliser le mot-clé `shared` avec elles afin qu'elles puissent être appelées sans [structure `Use...End use`](shared.md#useend-use). Pour plus d'informations, consultez le paragraphe sur les [fonctions partagées](#shared-functions) ci-dessous.
-In the context of a client/server application, the `local` or `server` keyword allows you to specify on which machine the function must be executed. These keywords can only be used with ORDA data model functions and shared/session singleton functions. For more information, refer to the [local and server functions](#local-and-server) paragraph below.
+Dans le contexte d'une application client/serveur, le mot-clé `local` ou `server` permet de spécifier sur quelle machine la fonction doit être exécutée. Ces mots-clés ne peuvent être utilisés qu'avec les fonctions du modèle de données ORDA et les fonctions singleton partagées/session. Pour plus d'informations, reportez-vous au paragraphe [fonctions locales et serveur](#local-and-server) ci-dessous.
Le nom de la fonction doit être conforme aux [règles de nommage des objets](Concepts/identifiers.md#object-properties).
@@ -204,9 +204,9 @@ Dans le code de l'application, les fonctions de classes sont appelées comme des
- [`apply()`](API/FunctionClass.md#apply)
- [`call()`](API/FunctionClass.md#call)
-:::warning Note importante thread-safety
+:::warning Attention thread-safety
-Si une fonction de classe n'est pas thread-safe et qu'elle est appelée par une méthode avec l'attribut "Peut être exécutée dans un process preémptif" :
+Si une fonction de classe n'est pas thread-safe et qu'elle est appelée par une méthode ayant l'attribut "Peut être exécutée dans un process préemptif" :
- le compilateur ne génère pas d'erreur (ce qui est différent par rapport aux méthodes standard),
- une erreur est déclenchée par 4D uniquement au moment de l'exécution.
@@ -229,7 +229,7 @@ Si le type n'est pas fourni, le paramètre sera défini comme `Variant`.
#### Valeur retournée
-Vous déclarez le paramètre de retour d'une fonction (optionnel) en ajoutant une flèche (`->`) et la définition du paramètre de retour après la liste des paramètres d'entrée, ou les deux points (`:`) et le tye de paramètre de retour uniquement. Par exemple :
+Vous déclarez le paramètre de retour d'une fonction (optionnel) en ajoutant une flèche (`->`) et la définition du paramètre de retour après la liste des paramètres d'entrée, ou les deux points (`:`) et le type de paramètre de retour uniquement. Par exemple :
```4d
Function add($x : Variant; $y : Integer)->$result : Integer
@@ -336,7 +336,7 @@ $o:=cs.MyClass.new("John";42)
// $o = {"name" : "John" ; "age":42}
```
-### `propriété`
+### `property`
#### Syntaxe
@@ -488,7 +488,7 @@ Lorsque les deux fonctions sont définies, la propriété calculée est en **lec
Si une fonction définie à l'intérieur d'une classe partagée modifie les objets de la classe, elle devrait appeler la structure [`Use...End use`](shared.md#useend-use) pour protéger l'accès aux objets partagés. Pour plus d'informations, consultez le paragraphe sur les [fonctions partagées](#shared-functions) ci-dessous.
-In the context of a client/server application, the `local` or `server` keyword allows you to specify on which machine the function must be executed. These keywords can only be used with ORDA data model functions and shared/session singleton functions. For more information, refer to the [local and server functions](#local-and-server) paragraph below.
+Dans le contexte d'une application client/serveur, le mot-clé `local` ou `server` permet de spécifier sur quelle machine la fonction doit être exécutée. Ces mots-clés ne peuvent être utilisés qu'avec les fonctions du modèle de données ORDA et les fonctions singleton partagées/session. Pour plus d'informations, reportez-vous au paragraphe [fonctions locales et serveur](#local-and-server) ci-dessous.
Le type de la propriété calculée est défini par la déclaration de type `$return` du *getter*. Il peut s'agir de n'importe quel [type de propriété valide](dt_object.md).
@@ -702,7 +702,7 @@ Les singletons sont utiles pour définir des valeurs qui doivent être disponibl
- un **singleton process** a une instance unique pour le process dans lequel il est instancié,
- un **singleton partagé** a une instance unique pour tous les process sur la machine.
-- une **singleton session** est un singleton partagé, mais avec une instance unique pour tous les process de la [session](../API/SessionClass.md). Les singletons de session sont partagés au sein d'une session entière mais varient d'une session à l'autre. Dans le contexte d'un client-serveur ou d'une application web, les singletons de session permettent de créer et d'utiliser une instance différente pour chaque session, et donc pour chaque utilisateur. Les singletons de session sont particulièrement appropriés pour les [applications Qodly](https://developer.4d.com/qodly/).
+- un **singleton session** est un singleton partagé, mais avec une instance unique pour tous les process de la [session](../API/SessionClass.md). Les singletons de session sont partagés au sein d'une même session mais varient d'une session à l'autre. Dans le contexte d'une application client-serveur ou web, les singletons de session permettent de créer et d'utiliser une instance différente pour chaque session, et donc pour chaque utilisateur. Les singletons de session sont particulièrement appropriés pour les [applications Qodly](https://developer.4d.com/qodly/).
:::info
@@ -745,7 +745,7 @@ La propriété [`.isSessionSingleton`](../API/ClassClass.md#issessionsingleton)
### Fonctions singleton exposées
-Les fonctions singleton partagées et de session prennent en charge le mot-clé [`exposed`](../ORDA/ordaClasses.md#exposed-vs-non-exposed-functions). Une fonction singleton exposée peut être directement appelée par des requêtes REST. Cette fonction est utile pour la conception de [pages Qodly appelant des fonctions 4D](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#class-functions).
+Les fonctions singleton partagées et de session prennent en charge le mot-clé [`exposed`](../ORDA/ordaClasses.md#exposed-vs-non-exposed-functions). Une fonction singleton exposée peut être directement appelée par des requêtes REST. Cette fonctionnalié est utile pour la conception de [pages Qodly appelant des fonctions 4D](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#class-functions).
### Exemples
@@ -839,68 +839,68 @@ $myList := cs.ItemInventory.me.itemList
:::tip Articles de blog sur le sujet
-[Singletons in 4D](https://blog.4d.com/singletons-in-4d)
-[Session Singletons](https://blog.4d.com/introducing-session-singletons)
+[Singletons dans 4D](https://blog.4d.com/singletons-in-4d)
+[Présentation des singletons de session](https://blog.4d.com/introducing-session-singletons)
:::
-## `local` and `server`
+## `local` et `server`
-In [client/server architecture](../Desktop/clientServer.md), `local` and `server` keywords allow you to specify where you want the function to be executed: client-side, or server-side. Controlling the execution location is useful for performance reasons or to implement business logic features.
+Dans [l'architecture client/serveur](../Desktop/clientServer.md), les mots-clés `local` et `server` vous permettent de spécifier où vous voulez que la fonction soit exécutée : côté client ou côté serveur. Le contrôle de l'emplacement d'exécution est utile pour des raisons de performance ou pour la mise en de fonctions métier logiques.
La syntaxe formelle est la suivante :
```4d
-// declare a function to execute on a client in client/server
+// déclarer une fonction à exécuter sur un client dans le cadre du client/serveur
local Function
```
```4d
-// declare a function to execute on the server in client/server
+// déclarer une fonction à exécuter sur le serveur en client/serveur
server Function
```
-`local` and `server` keywords are only available for the functions of the following classes:
+Les mots-clés `local` et `server` ne sont disponibles que pour les fonctions des classes suivantes :
-- [ORDA data model](../ORDA/ordaClasses.md) classes
-- [shared or session singleton](#singleton-classes) classes.
+- [Modèle de données ORDA](../ORDA/ordaClasses.md) classes
+- classes [singleton partagées ou de session](#singleton-classes).
:::tip Article(s) de blog sur le sujet
-[A new way to execute business logic on the server](https://blog.4d.com/a-new-way-to-execute-business-logic-on-the-server)
+[Une nouvelle façon d'exécuter la logique commerciale sur le serveur](https://blog.4d.com/a-new-way-to-execute-business-logic-on-the-server)
:::
### Vue d’ensemble
-Supported functions have a **default execution location** when no location keyword is used. You can nevertheless insert a `local` or `server` keyword to modify the execution location, or to make the code more explicit.
+Les fonctions prises en charge ont un **emplacement d'exécution par défaut** lorsqu'aucun mot-clé d'emplacement n'est utilisé. Vous pouvez néanmoins insérer un mot-clé `local` ou `server` pour modifier le lieu d'exécution, ou pour rendre le code plus explicite.
-| Supported functions | Default execution | with `local` keyword | with `server` keyword |
-| ------------------------------------------------- | ----------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [ORDA data model](../ORDA/ordaClasses.md) | on Server | The function is executed on the client if called on the client | |
-| [Shared or session singleton](#singleton-classes) | Local | | The function is executed on the server on the server instance of the singleton.
If there is no instance of the singleton on the server, it is created. |
+| Fonctions prises en charge | Exécution par défaut | avec le mot-clé `local` | avec le mot-clé `server` |
+| ----------------------------------------------------- | -------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [Modèle de données ORDA](../ORDA/ordaClasses.md) | sur le serveur | La fonction est exécutée sur le client si elle est appelée sur le client | |
+| [Singleton partagé ou de session](#singleton-classes) | Local | | La fonction est exécutée sur le serveur sur l'instance serveur du singleton.
S'il n'y a aucune instance du singleton sur le serveur, elle est créée. |
-If `local` and `server` keywords are used in another context, an error is returned.
+Si les mots-clés `local` et `server` sont utilisés dans un autre contexte, une erreur est retournée.
:::note
-For a overall description of where code is actually executed in client/server, please refer to [this section](../Desktop/clientServer.md#code-execution-location).
+Pour une description globale des emplacements où le code est réellement exécuté en client/serveur, veuillez vous référer à [cette section](../Desktop/clientServer.md#code-execution-location).
::::
### `local`
-In a [client/server architecture](../Desktop/clientServer.md), the `local` keyword specifies that the function must be executed **on the machine from where it is called**.
+Dans l'[architecture client/serveur] (../Desktop/clientServer.md), le mot-clé `local` spécifie que la fonction doit être exécutée **sur la machine à partir de laquelle elle est appelée**.
:::note Rappel
-The `local` keyword is useless for [shared or session singleton functions](#singleton-classes), which are executed locally by default.
+Le mot-clé `local` est inutile pour les [fonctions singleton partagées ou de session](#singleton-classes), qui sont exécutées localement par défaut.
:::
-By default, [ORDA data model functions](../ORDA/ordaClasses.md) are executed on the server. Cela garantit généralement les meilleures performances puisque seuls la requête de fonction et le résultat sont envoyés sur le réseau. However, [for optimization reasons](../ORDA/client-server-optimization.md#using-the-local-keyword), you could want to execute a data model function on client. You can then use the `local` keyword.
+Par défaut, les [fonctions du modèle de données ORDA](../ORDA/ordaClasses.md) sont exécutées sur le serveur. Cela garantit généralement les meilleures performances puisque seuls la requête de fonction et le résultat sont envoyés sur le réseau. Cependant, [pour des raisons d'optimisation](../ORDA/client-server-optimization.md#using-the-local-keyword), vous pouvez vouloir exécuter une fonction de modèle de données sur le client. Vous pouvez alors utiliser le mot clé `local`.
-#### Example: Calculating age
+#### Exemple: Calcul de l'âge
Considérons une entité avec un attribut *birthDate*. Nous souhaitons définir une fonction `age()` qui serait appelée dans une list box. Cette fonction peut être exécutée sur le client, ce qui évite de déclencher une requête au serveur pour chaque ligne de la list box.
@@ -920,43 +920,43 @@ End if
### `server`
-In a [client/server architecture](../Desktop/clientServer.md), the `server` keyword specifies that the function must be executed **on the server side**.
+Dans l'[architecture client/serveur](../Desktop/clientServer.md), le mot-clé `server` spécifie que la fonction doit être exécutée **sur le serveur**.
:::note Rappel
-The `server` keyword is useless for [ORDA data model functions](../ORDA/ordaClasses.md), which are executed on the server by default.
+Le mot clé `server` est inutile avec les [fonctions du modèle de données ORDA](../ORDA/ordaClasses.md), qui sont exécutées sur le serveur par défaut.
:::
-`server` function parameters and result must be [**streamable**](./dt_object.md#streaming-support). For example, [4D.Datastore](../API/DataStoreClass.md), [File handle](../API/FileHandleClass.md), or [WebServer](../API/WebServerClass.md) are non-streamable classes but [4D.File](../API/FileClass.md) is streamable.
+Les paramètres et le résultat de la fonction `server` doivent être [**streamable**](./dt_object.md#streaming-support). Par exemple, [4D.Datastore](../API/DataStoreClass.md), [File handle](../API/FileHandleClass.md), ou [WebServer](../API/WebServerClass.md) sont des classes non streamables mais [4D.File](../API/FileClass.md) est streamable.
-This feature is particularly useful in the context of [remote user sessions](../Desktop/sessions.md#remote-user-sessions), allowing you to implement the business logic in a [session singleton](../Concepts/classes.md#session-singleton) to share it accross all the processes of the session, thus extending the functionalities of the [`Session`](../commands/session) command. In this case, you might want the relevant business logic to be executed **on the server** so that all the session information is gathered on the server.
+Cette fonctionnalité est particulièrement utile dans le cadre des [sessions utilisateur à distance](../Desktop/sessions.md#remote-user-sessions), vous permettant d'implémenter la logique métier dans un [singleton de session](../Concepts/classes.md#session-singleton) afin de la partager entre tous les process de la session, étendant ainsi les fonctionnalités de la commande [`Session`](../commands/session). Dans ce cas, vous pourrez vouloir que la logique applicative soit exécutée **sur le serveur** afin que toutes les informations relatives à la session soient rassemblées sur le serveur.
-By default, shared or session singleton functions are executed locally. Adding the `server` keyword in the class function definition makes 4D use the singleton instance on the server. Note that this can result of an instantiation of the singleton on the server if no instance exists yet.
+Par défaut, les fonctions singleton partagées ou de session sont exécutées localement. L'ajout du mot-clé `server` dans la définition de la fonction de la classe permet à 4D d'utiliser l'instance singleton sur le serveur. Notez que cela peut entraîner l'instanciation du singleton sur le serveur s'il n'existe pas encore d'instance.
-For [sessions singletons](#singleton-classes), the function is executed on the server in the corresponding singleton instance, i.e. the instance of the singleton for the current session.
+Pour les [sessions singleton](#singleton-classes), la fonction est exécutée sur le serveur dans l'instance de singleton correspondante, c'est-à-dire l'instance de singleton pour la session courante.
:::note
-If you declare a `server Function` in a shared singleton, then:
+Si vous déclarez une `server Function` dans un singleton partagé puis :
-- you instantiate a singleton *S1* on the client (named *s1*),
-- you run *s1.function()* on the client.
+- vous instanciez un singleton *S1* sur le client (nommé *s1*),
+- vous exécutez *s1.function()* sur le client.
-If no instance of *S1* exists on the server at that moment, *S1* is instantiated on the server (the constructor is executed), and *function()* runs on that server instance. As a result, two instances of *S1* can coexist (client-side and server-side), with distinct property values. In this case, *s1.property* is always accessed locally. It cannot be accessed on the server, for example from server-side code using direct dot notation (an error is returned).
+Si aucune instance de *S1* n'existe sur le serveur à ce moment-là, *S1* est instancié sur le serveur (le constructeur est exécuté) et *function()* s'exécute sur cette instance de serveur. Par conséquent, deux instances de *S1* peuvent coexister (côté client et côté serveur), avec des valeurs de propriété distinctes. Dans ce cas, *s1.property* est toujours accessible localement. Il n'est pas possible d'y accéder sur le serveur, par exemple à partir de code côté serveur utilisant la notation à point directe (une erreur est renvoyée).
:::
-#### Example: Administration singleton
+#### Exemple : singleton Administration
-The *Administration* shared singleton has a "server" function running the [`Process activity`](../commands/process-activity) command. This singleton is instantiated on a remote 4D but the function returns the server activity on the server.
+Le singleton partagé *Administration* possède une fonction "server" qui exécute la commande [`Process activity`](../commands/process-activity). Ce singleton est instancié sur un 4D distant mais la fonction renvoie l'activité du serveur sur le serveur.
```4d
// Administration class
shared singleton Class constructor
- // This function is executed on the server
+ // Cette fonction est exécutée sur le serveur
server Function processActivity() : Object
return Process activity
@@ -965,29 +965,29 @@ Function localProcessActivity() : Object
return Process activity
```
-Code running on the client:
+Code s'exécutant sur le client :
```4d
var $localActivity; $serverActivity : Object
var $administration : cs.Administration
-// The Administration singleton is instantiated on the 4D Client
+// Le singleton Administration est instancié sur le client 4D
$administration:=cs.Administration.me
-// Get processes running on the remote 4D
+// Obtenir les process en cours d'exécution sur le serveur 4D distant
$localActivity:=$administration.localProcessActivity()
-// Get processes and sessions running on 4D Server
+// Obtenir les process et les sessions en cours d'exécution sur le serveur 4D
$serverActivity:=$administration.processActivity()
```
-#### Example: Session singleton
+#### Exemple: singleton de session
-You store your users in a Users table and handle a custom authentication. You use a session singleton for the authentication:
+Vous stockez vos utilisateurs dans une table Users et vous gérez une authentification personnalisée. Vous utilisez un singleton de session pour l'authentification :
```4d
-// UserSession session singleton class
+// Classe singleton session UserSession
server Function checkUser($credentials : Object) : Boolean
@@ -1009,7 +1009,7 @@ End if
return $result
```
-To provide the current user to 4D clients, the singleton exposes a user computed property got from the server:
+Pour fournir l'utilisateur courant aux clients 4D, le singleton expose une propriété calculée de l'utilisateur obtenue du serveur :
```4d
server Function get user() : cs.UsersEntity
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
index 34ae676fbd9aaf..cc3d5e57727ffa 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
@@ -439,36 +439,36 @@ Les conventions suivantes sont utilisées dans la documentation du langage 4D :
In the 4D language documentation, the following parameter types can be used.
-| Type | Définition | Examples of a 4D command using it |
-| ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| > , <, >=, <=, #, =, \\| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
-| any | A parameter that can accept any supported data type | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
-| Tableau | A variable containing a list of values of the same type. | ARRAY TEXT($arr;10) |
-| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
-| Blob | Binary large object used to store binary data. | BLOB TO DOCUMENT($blob;"file.bin") |
-| Boolean | A logical value: True or False. | If (OK=1) |
-| Boolean array | An array containing boolean values. | ARRAY BOOLEAN($flags;10) |
-| Class name (ex: 4D.File) | A reference to a class type used to create or manipulate class instances. | $file:=File("/RESOURCES/NovelCover1.jpg") |
-| Collection | An ordered list of values that can contain multiple types. | New collection("A";"B";"C") |
-| Date | A calendar date value. | $vDate:=Current date |
-| Date array | An array containing date values. | ARRAY DATE($dates;10) |
-| Expression | Can be anything | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
-| Champ | A reference to a field belonging to a table. | ORDER BY([Person];[Person]Name) |
-| Integer | A whole number without decimal part. | $Sel:=ds.Employee.newSelection(dk keep ordered) |
-| Integer array | An array containing integer values. | ARRAY INTEGER($numbers;10) |
-| Longint array | An array containing long integer values. | ARRAY LONGINT($values;10) |
-| Object array | An array containing objects. | ARRAY OBJECT($objects;10) |
-| Object | A structured data container composed of key/value pairs. | $entity.fromObject($o) |
-| Opérateur | Toujours \*. | QUERY([Person];[Person]Name="Smith";\*) |
-| Picture array | An array containing pictures. | ARRAY PICTURE($images;10) |
-| Picture | A graphical image value. | READ PICTURE FILE($pic;"image.png") |
-| Pointer array | An array containing pointers. | ARRAY POINTER($ptrs;10) |
-| Pointer | A reference to another variable, field, or object. | If(Is nil pointer($ptr)) |
-| Real array | An array containing real numbers. | ARRAY REAL($values;10) |
-| Real | A floating-point numeric value. | $vlResult:=Int(123.4) |
-| Table | A reference to a database table. | ALL RECORDS([Person]) |
-| Text | A sequence of characters representing textual data. | ALERT("Hello world") |
-| Text array | An array containing text values. | ARRAY TEXT($names;10) |
-| Time | A time value representing hours, minutes, and seconds. | Heure courante |
-| Time array | An array containing time values. | ARRAY TIME($times;10) |
-| Variable | A writable variable of type "any" that can receive a value (assignable). | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
+| Type | Définition | Examples of a 4D command using it |
+| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| > , <, >=, <=, #, =, \| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
+| any | A parameter that can accept any supported data type | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
+| Tableau | A variable containing a list of values of the same type. | ARRAY TEXT($arr;10) |
+| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
+| Blob | Binary large object used to store binary data. | BLOB TO DOCUMENT($blob;"file.bin") |
+| Boolean | A logical value: True or False. | If (OK=1) |
+| Boolean array | An array containing boolean values. | ARRAY BOOLEAN($flags;10) |
+| Class name (ex: 4D.File) | A reference to a class type used to create or manipulate class instances. | $file:=File("/RESOURCES/NovelCover1.jpg") |
+| Collection | An ordered list of values that can contain multiple types. | New collection("A";"B";"C") |
+| Date | A calendar date value. | $vDate:=Current date |
+| Date array | An array containing date values. | ARRAY DATE($dates;10) |
+| Expression | Can be anything | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
+| Champ | A reference to a field belonging to a table. | ORDER BY([Person];[Person]Name) |
+| Integer | A whole number without decimal part. | $Sel:=ds.Employee.newSelection(dk keep ordered) |
+| Integer array | An array containing integer values. | ARRAY INTEGER($numbers;10) |
+| Longint array | An array containing long integer values. | ARRAY LONGINT($values;10) |
+| Object array | An array containing objects. | ARRAY OBJECT($objects;10) |
+| Object | A structured data container composed of key/value pairs. | $entity.fromObject($o) |
+| Opérateur | Toujours \*. | QUERY([Person];[Person]Name="Smith";\*) |
+| Picture array | An array containing pictures. | ARRAY PICTURE($images;10) |
+| Picture | A graphical image value. | READ PICTURE FILE($pic;"image.png") |
+| Pointer array | An array containing pointers. | ARRAY POINTER($ptrs;10) |
+| Pointer | A reference to another variable, field, or object. | If(Is nil pointer($ptr)) |
+| Real array | An array containing real numbers. | ARRAY REAL($values;10) |
+| Real | A floating-point numeric value. | $vlResult:=Int(123.4) |
+| Table | A reference to a database table. | ALL RECORDS([Person]) |
+| Text | A sequence of characters representing textual data. | ALERT("Hello world") |
+| Text array | An array containing text values. | ARRAY TEXT($names;10) |
+| Time | A time value representing hours, minutes, and seconds. | Heure courante |
+| Time array | An array containing time values. | ARRAY TIME($times;10) |
+| Variable | A writable variable of type "any" that can receive a value (assignable). | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Desktop/clientServer.md b/i18n/fr/docusaurus-plugin-content-docs/current/Desktop/clientServer.md
index 0676b1992833cf..a81b48c228f92e 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/Desktop/clientServer.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/Desktop/clientServer.md
@@ -131,20 +131,20 @@ In a client/server application, it is important to know where your code will be
The following table summarizes where the code is executed by default and how to switch its execution location (if allowed). Note that **local** means that the code will be executed on the machine from where it is actually called.
-| Code | Default execution | How to switch |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [ORDA data model functions](../ORDA/ordaClasses.md) | server | use `local` keyword in function definition |
-| ORDA computed attribute functions [`get()`](../ORDA/ordaClasses.md#function-get-attributename), [`set()`](../ORDA/ordaClasses.md#function-set-attributename) | server | use `local` keyword in function definition |
-| ORDA computed attribute functions [`query()`](../ORDA/ordaClasses.md#function-query-attributename), [`orderBy()`](../ORDA/ordaClasses.md#function-orderby-attributename) | server | n/a |
-| ORDA event functions [(general)](../ORDA/orda-events.md) | server | n/a |
-| ORDA event function [`constructor()`](../ORDA/ordaClasses.md#class-constructor-1) | local | n/a |
-| ORDA event function [`event touched()`](../ORDA/orda-events.md#function-event-touched) | server | use `local` keyword in function definition |
-| [User class functions](../Concepts/classes.md#function) | local | n/a |
-| [Shared or session singleton function](../Concepts/classes.md#singleton-classes) | local | use `server` keyword in function definition |
-| Trigger | server | n/a |
-| Project method called from a client | client | check [**Execute on server** option](../Project/project-method-properties.md#execute-on-server). The code is executed in the twin process of the [user session process](./sessions.md#remote-user-sessions) |
-| | | call [`Execute on server`](../commands/execute-on-server) command. The code is executed in the [Stored procedures session](./sessions.md#stored-procedure-sessions) |
-| Project method called from a stored procedure on the server | server | call [`EXECUTE ON CLIENT`](../commands/execute-on-client) command. The target client must have been [registered](../commands/register-client) |
-| Object method | local | n/a |
-| Database methods:- On Backup Shutdown
- On Backup Startup
- On Server Close Connection
- On Server Open Connection
- On Server Shutdown
- On Server Startup
- On SQL Authentication
- On Web Authentication
- On Web Connection
| server | n/a |
-| Database methods: | client | n/a |
\ No newline at end of file
+| Code | Exécution par défaut | How to switch |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [ORDA data model functions](../ORDA/ordaClasses.md) | server | use `local` keyword in function definition |
+| ORDA computed attribute functions [`get()`](../ORDA/ordaClasses.md#function-get-attributename), [`set()`](../ORDA/ordaClasses.md#function-set-attributename) | server | use `local` keyword in function definition |
+| ORDA computed attribute functions [`query()`](../ORDA/ordaClasses.md#function-query-attributename), [`orderBy()`](../ORDA/ordaClasses.md#function-orderby-attributename) | server | n/a |
+| ORDA event functions [(general)](../ORDA/orda-events.md) | server | n/a |
+| ORDA event function [`constructor()`](../ORDA/ordaClasses.md#class-constructor-1) | local | n/a |
+| ORDA event function [`event touched()`](../ORDA/orda-events.md#function-event-touched) | server | use `local` keyword in function definition |
+| [User class functions](../Concepts/classes.md#function) | local | n/a |
+| [Shared or session singleton function](../Concepts/classes.md#singleton-classes) | local | use `server` keyword in function definition |
+| Trigger | server | n/a |
+| Project method called from a client | client | check [**Execute on server** option](../Project/project-method-properties.md#execute-on-server). The code is executed in the twin process of the [user session process](./sessions.md#remote-user-sessions) |
+| | | call [`Execute on server`](../commands/execute-on-server) command. The code is executed in the [Stored procedures session](./sessions.md#stored-procedure-sessions) |
+| Project method called from a stored procedure on the server | server | call [`EXECUTE ON CLIENT`](../commands/execute-on-client) command. The target client must have been [registered](../commands/register-client) |
+| Object method | local | n/a |
+| Database methods:- On Backup Shutdown
- On Backup Startup
- On Server Close Connection
- On Server Open Connection
- On Server Shutdown
- On Server Startup
- On SQL Authentication
- On Web Authentication
- On Web Connection
| server | n/a |
+| Database methods: | client | n/a |
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Develop/async.md b/i18n/fr/docusaurus-plugin-content-docs/current/Develop/async.md
index 204958e50284ea..a59c9f5baf5f06 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/Develop/async.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/Develop/async.md
@@ -64,7 +64,7 @@ Le process appelant envoie un message, puis le workerl'exécute. Le worker peut
### Écoute d'événements
-Dans le cadre d'un développement orienté événements (*event-driven development*), il est évident qu'une partie du code doit être en mesure d'écouter les événements entrants. Les événements peuvent être générés par l'interface utilisateur (comme un clic souris sur un objet ou une touche de clavier enfoncée) ou par toute autre interaction telle qu'une requête http ou la fin d'une autre action. Par exemple, lorsqu'un formulaire est affiché à l'aide de la commande `DIALOG`, les actions de l'utilisateur peuvent déclencher des événements que votre code peut traiter. Un clic sur un bouton déclenche le code associé au bouton.
+Dans le cadre d'un développement orienté événements (*event-driven development*), il est évident qu'une partie du code doit être en mesure d'écouter les événements entrants. Les événements peuvent être générés par l'interface utilisateur (comme un clic souris sur un objet ou une touche de clavier enfoncée) ou par toute autre interaction telle qu'une requête http ou la fin d'une autre action. For example, when a form is displayed using the [`DIALOG`](../commands/dialog) command, user actions can trigger events that your code can process. Un clic sur un bouton déclenche le code associé au bouton.
Dans le contexte de l'exécution asynchrone, les fonctionnalités suivantes placent votre code en mode d'écoute :
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/forms.md b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/forms.md
index 70672f53e6684a..d524d3381d481f 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/forms.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/forms.md
@@ -66,6 +66,173 @@ Vous pouvez ajouter ou modifier des formulaires 4D à l'aide des éléments suiv
}
```
+## Using forms
+
+Forms are called using specific commands of the 4D Language. In your 4D desktop applications, forms can be used in various ways, depending on their status within your interface needs. A form can be:
+
+- used in its own window for data viewing, processing, editing, or to display on-screen information to the user,
+- used embedded in another form (subform),
+- used as template for printing,
+- or called by specific features like the Label editor.
+
+### Using a project form in a window
+
+When you want to use a form as on-screen dialog, you need to (1) create a window and (2) load the form within the window, along with an event loop to process user actions. The straighforward steps to display a form on screen are:
+
+1. Call the [`Open form window`](../commands/open-form-window) command to create and preconfigure a window tailored for your form. Note that the command only draw aan empty window, it does not display anything.
+2. In the same method, call the [`DIALOG`](../commands/dialog) command to actually load the form in the opened form window, ready for user interaction. [`DIALOG`](../commands/dialog) loads form data and places your code in listening mode to user events. When you call this command without asterisk (\*), the dialog will stay on screen and the code execution is frozen until an event occurs (see also ["Event listening" paragraph](../Develop/async.md#event-listening)).
+3. (optional) Use the [`Form`](../commands/form) command from within the form context to access form data.
+
+::note Compatibilité
+
+All-in-one commands such as [`ADD RECORD`](../commands/add-record) or [`MODIFY RECORD`](../commands/add-record) merge all steps in a single call. These legacy commands can still be used for prototyping or basic developments but are not adapted to modern, fully controlled interfaces. They directly rely on the 4D database and legacy features such as [table forms](#project-form-and-table-form) and do not benefit from the power and flexibility of [ORDA features](../ORDA/overview.md). Unless specific needs, it is recommended to use project forms for your 4D desktop application interfaces.
+
+:::
+
+#### Simple example
+
+You create the following basic form in the [Form editor](./formEditor.md):
+
+
+
+The form is [associated with a "myForm" class](./properties_FormProperties.md#form-class), defined as follow:
+
+```4d
+ //cs.myForm
+property name : Text
+property age : Integer
+
+Class constructor
+ This.name:=""
+ This.age:=0
+```
+
+The form class is automatically instantiated by 4D once the form is loaded. If you execute the following project method:
+
+```4d
+ // Instantiate a form object that will host form data and UI logic
+var $formObject:=cs.myForm.new()
+
+ //Prepare default value within the form object
+$formObject.name:="Smith"
+$formObject.age:=42
+
+ // Create an empty window with ad-hoc settings that fits the desired form dimensions, resizing properties,
+ // and window type (this does not render the form)
+var $win:=Open form window("myForm"; Movable form dialog box; Horizontally centered; Vertically centered)
+
+ //Render the form, and provide $formObject's data. Dialog also activates the form event loop
+DIALOG("myForm"; $formObject)
+
+ //Without asterisk to Dialog statement, the form waits for a closing action from the user
+ //before executing the rest of the code. Calling Close window is just a good practice
+CLOSE WINDOW($win) //releases reference
+
+ //Display data modified by the user, if any/
+ALERT($formObject.name+" is "+String($formObject.age)+" years old!")
+
+```
+
+4D displays:
+
+
+
+### Using forms as subforms
+
+A form can be embedded within another form, in which case it becomes a [subform object](../FormObjects/subform_overview.md) which follows specific rules. A subform is automatically used when its parent form is [displayed in a window](#using-a-project-form-in-a-window).
+
+In the same way that you pass an object to a form with the [`DIALOG`](../commands/dialog) command, you can also pass an object to a subform area using the property list. Then, you can use it in the subform with the [`Form`](../commands/form) command. In this example, the "InvoiceAddress" object is bound to the subform:
+
+
+
+### Using forms to be printed
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+#### Exemples
+
+You can use forms to print data, either as page or as list.
+
+- To simply print some part of a form, use the [`Print form`](../commands/print-form) command. Par exemple :
+
+```4d
+var $formData:={}
+$formData.lastname:="Smith"
+$formData.firstname:="john"
+$formData.request:="I need more COFFEE"
+var $h:=Print form("Request_var";$formData;Form detail)
+```
+
+- To print a form within a printing job to process data during printing, use [`FORM LOAD`](../commands/form-load) and [`Print object`](../commands/print-object) commands. Par exemple :
+
+```4d
+ var $formData : Object
+ var $over : Boolean
+ var $full : Boolean
+
+ OPEN PRINTING JOB
+ $formData:={}
+ $formData.LBcollection:=[]
+ ... //fill the collection with data
+
+ FORM LOAD("GlobalForm";$formData)
+ $over:=False
+ Repeat
+ $full:=Print object(*;"LB") // the datasource of this "LB" listbox is Form.LBcollection
+ LISTBOX GET PRINT INFORMATION(*;"LB";lk printing is over;$over)
+ If(Not($over))
+ PAGE BREAK
+ End if
+ Until($over)
+ FORM UNLOAD
+ CLOSE PRINTING JOB
+```
+
+#### Print rendering engine
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+:::tip Article(s) de blog sur le sujet
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+#### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning Limitation
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
+### Other form usages
+
+There are several other ways to use forms in the 4D applications, including:
+
+- a form can be [inherited](#inherited-forms) from another form,
+- a form can be [associated to a listbox](../FormObjects/properties_ListBox.md#detail-form-name) in response to a user action to display a row using an edit button or a double-click,
+- the [label editor can use a form](../Desktop/labels.md#form-to-use) as template to print labels.
+
## Formulaire projet et formulaire table
Il existe deux catégories de formulaires :
@@ -78,7 +245,7 @@ En règle générale, vous sélectionnez la catégorie de formulaire lorsque vou
## Pages formulaire
-Chaque formulaire est composé d'au moins deux pages :
+Each form is made of at least two pages:
- une page 1 : une page principale, affichée par défaut
- une page 0 : une page de fond, dont le contenu est affiché sur une page sur deux.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
index 47e1bb442101f2..bfeaf3678c7ca6 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
@@ -7,7 +7,7 @@ title: Impression
Permet de définir des paramètres d'impression spécifiques pour le formulaire. Cette fonctionnalité est utile pour afficher les limites de pages d'impression dans l'éditeur de formulaire.
-> **Compatibilité** : Même si ces paramètres sont pris en compte lors de l'impression du formulaire en mode Application, il est déconseillé de s'appuyer sur cette fonctionnalité pour stocker les paramètres d'impression du formulaire, en raison des limitatio It is highly recommended to use the 4D commands `Print settings to BLOB`/`BLOB to print settings` which are more powerful. Propriétés
+> **Compatibilité** : Même si ces paramètres sont pris en compte lors de l'impression du formulaire en mode Application, il est déconseillé de s'appuyer sur cette fonctionnalité pour stocker les paramètres d'impression du formulaire, en raison des limitatio It is highly recommended to use the 4D commands `Print settings to BLOB`/`BLOB to print settings` which are more powerful. It is highly recommended to use the 4D commands [`Print settings to BLOB`](../commands/print-settings-to-blob)/[`BLOB to print settings`](../commands/blob-to-print-settings) which are more powerful.
Vous pouvez modifier les paramètres d'impression suivants :
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md
index 8ddf67afc744d5..011abfe62b90dd 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md
@@ -18,6 +18,7 @@ Lisez [**Les nouveautés de 4D 21 R3**](https://blog.4d.com/fr/whats-new-in-4d-2
- Nouvelle [page **IA**](../settings/ai.md) dans la boîte de dialogue des Propriétés, permettant de configurer des [alias de fournisseurs et de modèles](../aikit/provider-model-aliases.md) qui peuvent être appelés dans le code via le composant 4D AIKit.
- Composant 4D AIKit : nouvelle classe [Providers](../aikit/Classes/OpenAIProviders.md) pour instancier et gérer les [alias de fournisseurs et de modèles](../aikit/provider-model-aliases.md).
- Prise en charge du [mot-clé `server`](../Concepts/classes.md#server) pour les fonctions du modèle de données ORDA et les fonctions singleton partagées/session.
+- New [printing renderer](../FormEditor/forms.md#print-rendering-engine) for forms on Liquid glass and Fluent UI interfaces. New compatibility options to [enable the renderer on Classic interfaces](../FormEditor/forms.md#legacy-print-renderer).
- Dépendances : prise en charge des [composants stockés sur les dépôts GitLab](../Project/components.md#configuring-a-gitlab-repository).
- [**Liste des bugs corrigés**](https://bugs.4d.fr/fixedbugslist?version=21_R3) : liste de tous les bugs qui ont été corrigés dans 4D 21 R3.
@@ -65,7 +66,7 @@ Lisez [**Les nouveautés de 4D 21 R2**](https://blog.4d.com/fr-whats-new-in-4d-2
| Bibliothèque | Version courante | Mise à jour dans 4D | Commentaire |
| ------------ | -------------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
-| BoringSSL | 9b86817 | 21 | Utilisé pour QUIC |
+| BoringSSL | 664a985 | **21 R4** | Utilisé pour QUIC |
| CEF | 7258 | 21 | Chromium 139 |
| Hunspell | 1.7.2 | 20 | Utilisé pour la vérification orthographique dans les formulaires 4D et 4D Write Pro |
| ICU | 77.1 | 21 | Cette mise à jour entraîne une reconstruction automatique des index alphanumériques, textes et objets. |
@@ -75,7 +76,7 @@ Lisez [**Les nouveautés de 4D 21 R2**](https://blog.4d.com/fr-whats-new-in-4d-2
| Libuv | 1.51.0 | 21 | Utilisé pour QUIC |
| libZip | 1.11.4 | 21 | Utilisé par les classes zip, 4D Write Pro, les composants svg et serverNet |
| LZMA | 5.8.1 | 21 | |
-| ngtcp2 | 1.18.0 | 21 | Utilisé pour QUIC |
+| ngtcp2 | 1.22.1 | **21 R4** | Utilisé pour QUIC |
| OpenSSL | 3.5.2 | 21 | |
| PDFWriter | 4.7.0 | 21 | Utilisé pour [`WP Export document`](../WritePro/commands/wp-export-document.md) et [`WP Export variable`](../WritePro/commands/wp-export-variable.md) |
| SpreadJS | 18.2.0 | 21 R2 | Voir [ce blog post](https://blog.4d.com/4d-view-pro-whats-new-in-4d-21-r2/) pour un aperçu des nouvelles fonctionnalités. |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Project/code-overview.md b/i18n/fr/docusaurus-plugin-content-docs/current/Project/code-overview.md
index e43b5d81ace165..dc941f1030822f 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/Project/code-overview.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/Project/code-overview.md
@@ -161,7 +161,7 @@ Here are the encoded characters:
| \< | %3C |
| \> | %3E |
| ? | %3F |
-| \\| | %7C |
+| \| | %7C |
| \\ | %5C |
| % | %25 |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md
index 28c927f4594f94..5ebf2ed6230474 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md
@@ -78,6 +78,6 @@ $client.files.create(...)
$client.model.lists(...)
```
-## Provider Model Aliases
+## Alias de modèles de fournisseurs
-The OpenAI client supports provider model aliases for easy multi-provider usage. See [Provider Model Aliases](../provider-model-aliases.md) for complete documentation.
+Le client OpenAI prend en charge les alias de modèles de fournisseurs pour faciliter l'utilisation de plusieurs fournisseurs. Voir [Alias de modèles de fournisseurs](../provider-model-aliases.md) pour une documentation complète.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md
index c61ea26f7df83e..aa38bf8293f03b 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md
@@ -13,20 +13,20 @@ La classe `OpenAIChatCompletionParameters` permet de gérer les paramètres requ
## Propriétés
-| Propriété | Type | Valeur par défaut | Description |
-| ----------------------- | ---------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `model` | Text | `"gpt-4o-mini"` | ID du modèle à utiliser. Supports [provider:model aliases](../provider-model-aliases.md) for multi-provider usage (e.g., `"openai:gpt-4o"`, `"anthropic:claude-3-opus"`). |
-| `stream` | Boolean | `False` | Indique si la progression partielle doit être retransmise en continu. Si cette option est activée, les tokens seront envoyés sous forme de données uniquement. Une formule de rappel est requise. |
-| `stream_options` | Object | `Null` | Propriété pour stream=True. Par exemple : `{include_usage: True}` |
-| `max_completion_tokens` | Integer | `0` | Le nombre maximum de tokens qui peuvent être générés dans la réponse. |
-| `n` | Integer | `1` | Nombre de réponses à générer pour chaque invite (prompt). |
-| `temperature` | Real | `-1` | Température d'échantillonnage à utiliser, entre 0 et 2. Les valeurs élevées rendent la sortie plus aléatoire, tandis que des valeurs faibles la rendent plus ciblée et déterministe. |
-| `store` | Boolean | `False` | Stocker ou non le résultat de cette requête de génération de réponse conversationnelle. |
-| `reasoning_effort` | Text | `Null` | Contraintes sur l'effort de raisonnement pour les modèles de raisonnement. Les valeurs actuellement prises en charge sont "low", "medium" et "high". |
-| `response_format` | Object | `Null` | Un objet spécifiant le format que le modèle doit produire. Compatible avec les sorties structurées. |
-| `tools` | Collection | `Null` | Une liste d'outils ([OpenAITool](OpenAITool.md)) que le modèle peut appeler. Seul le type "function" est pris en charge. |
-| `tool_choice` | Variant | `Null` | Contrôle l'outil (le cas échéant) qui est appelé par le modèle. Peut être `"none"`, `"auto"`, `"required"`, ou spécifier un outil particulier. |
-| `prediction` | Object | `Null` | Contenu de sortie statique, tel que le contenu d'un fichier texte en cours de régénération. |
+| Propriété | Type | Valeur par défaut | Description |
+| ----------------------- | ---------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `model` | Text | `"gpt-4o-mini"` | ID du modèle à utiliser. Prend en charge [provider:model aliases](../provider-model-aliases.md) pour une utilisation multi-fournisseurs (par exemple, `"openai:gpt-4o"`, `"anthropic:claude-3-opus"`). |
+| `stream` | Boolean | `False` | Indique si la progression partielle doit être retransmise en continu. Si cette option est activée, les tokens seront envoyés sous forme de données uniquement. Une formule de rappel est requise. |
+| `stream_options` | Object | `Null` | Propriété pour stream=True. Par exemple : `{include_usage: True}` |
+| `max_completion_tokens` | Integer | `0` | Le nombre maximum de tokens qui peuvent être générés dans la réponse. |
+| `n` | Integer | `1` | Nombre de réponses à générer pour chaque invite (prompt). |
+| `temperature` | Real | `-1` | Température d'échantillonnage à utiliser, entre 0 et 2. Les valeurs élevées rendent la sortie plus aléatoire, tandis que des valeurs faibles la rendent plus ciblée et déterministe. |
+| `store` | Boolean | `False` | Stocker ou non le résultat de cette requête de génération de réponse conversationnelle. |
+| `reasoning_effort` | Text | `Null` | Contraintes sur l'effort de raisonnement pour les modèles de raisonnement. Les valeurs actuellement prises en charge sont "low", "medium" et "high". |
+| `response_format` | Object | `Null` | Un objet spécifiant le format que le modèle doit produire. Compatible avec les sorties structurées. |
+| `tools` | Collection | `Null` | Une liste d'outils ([OpenAITool](OpenAITool.md)) que le modèle peut appeler. Seul le type "function" est pris en charge. |
+| `tool_choice` | Variant | `Null` | Contrôle l'outil (le cas échéant) qui est appelé par le modèle. Peut être `"none"`, `"auto"`, `"required"`, ou spécifier un outil particulier. |
+| `prediction` | Object | `Null` | Contenu de sortie statique, tel que le contenu d'un fichier texte en cours de régénération. |
### Propriétés du callback asynchrone
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md
index 26abe440b712ed..bdc18b5514dd9e 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md
@@ -17,12 +17,12 @@ https://platform.openai.com/docs/api-reference/embeddings
Crée une représentation vectorielle pour l'entrée, le modèle et les paramètres fournis.
-| Paramètre | Type | Description |
-| ------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| *input* | Text ou Collection de textes | L'entrée à vectoriser. |
-| *model* | Text | Le [modèle à utiliser](https://platform.openai.com/docs/guides/embeddings#embedding-models). Supports [provider:model aliases](../provider-model-aliases.md). |
-| *parameters* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | Les paramètres permettant de personnaliser la requête de représentations vectorielles. |
-| Résultat | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | Les représentations vectorielles |
+| Paramètre | Type | Description |
+| ------------ | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| *input* | Text ou Collection de textes | L'entrée à vectoriser. |
+| *model* | Text | Le [modèle à utiliser](https://platform.openai.com/docs/guides/embeddings#embedding-models). Prend en charge [provider:model aliases](../provider-model-aliases.md). |
+| *parameters* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | Les paramètres permettant de personnaliser la requête de représentations vectorielles. |
+| Résultat | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | Les représentations vectorielles |
#### Exemples d'utilisation
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md
index 68a2dc88e3dce5..c41bd344be9853 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md
@@ -13,13 +13,13 @@ La classe `OpenAIImageParameters` permet de configurer et gérer les paramètres
## Propriétés
-| Nom de propriété | Type | Valeur par défaut | Description |
-| ----------------- | ------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `model` | Text | "dall-e-2" | Spécifie le modèle à utiliser pour la génération d'images. Supports [provider:model aliases](../provider-model-aliases.md). |
-| `n` | Integer | 1 | Le nombre d'images à générer (doit être compris entre 1 et 10 ; seul `n=1` est supporté pour `dall-e-3`). |
-| `size` | Text | "1024x1024" | La taille des images générées. Doit être conforme aux spécifications du modèle. |
-| `style` | Text | "" | Le style des images générées (doit être soit `vivid` soit `natural`). |
-| `response_format` | Text | "url" | Le format des images retournées. Doit être `url` ou `b64_json`. |
+| Nom de propriété | Type | Valeur par défaut | Description |
+| ----------------- | ------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `model` | Text | "dall-e-2" | Spécifie le modèle à utiliser pour la génération d'images. Prend en charge [provider:model aliases](../provider-model-aliases.md). |
+| `n` | Integer | 1 | Le nombre d'images à générer (doit être compris entre 1 et 10 ; seul `n=1` est supporté pour `dall-e-3`). |
+| `size` | Text | "1024x1024" | La taille des images générées. Doit être conforme aux spécifications du modèle. |
+| `style` | Text | "" | Le style des images générées (doit être soit `vivid` soit `natural`). |
+| `response_format` | Text | "url" | Le format des images retournées. Doit être `url` ou `b64_json`. |
## Voir également
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md
index 4e714401f5c59c..382936177ed516 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIProviders.md
@@ -7,20 +7,20 @@ title: OpenAIProviders
## Sommaire
-The `OpenAIProviders` class manages AI provider configurations by loading configuration and handling resolution of model strings in the `provider:model` format.
+La classe `OpenAIProviders` gère les configurations de fournisseurs d'IA en chargeant la configuration et en gérant la résolution des chaînes de modèles au format `provider:model`.
-For complete usage documentation, see [Provider Model Aliases](../provider-model-aliases.md).
+Pour une documentation complète sur son utilisation, voir [Alias de modèles de fournisseurs](../provider-model-aliases.md).
## Description
-This class enables multi-provider support by:
+Cette classe permet la prise en charge de plusieurs fournisseurs via :
-- Loading provider configurations from a single JSON file
-- Loading named model aliases that map to providers and model IDs
-- Resolving `provider:model` syntax to full API configurations
-- Resolving named model aliases by bare name to full provider + model configurations
+- le chargement des configurations de fournisseurs à partir d'un seul fichier JSON
+- le chargement des alias de modèles nommés correspondant à des fournisseurs et à des identifiants de modèles
+- la résolution de la syntaxe `provider:model` en configuration complète de l'API
+- la résolution des alias de modèles nommés depuis un nom simple en nom du fournisseur complet + les configurations du modèle
-The `OpenAI` class automatically loads provider configurations when instantiated.
+La classe `OpenAI` charge automatiquement les configurations des fournisseurs lors de son instanciation.
## Constructeur
@@ -28,38 +28,38 @@ The `OpenAI` class automatically loads provider configurations when instantiated
var $providers := cs.AIKit.OpenAIProviders.new()
```
-Creates a new instance that loads provider configuration from the `AIProviders.json` file (see [**Configuration Files**](../provider-model-aliases.md#configuration-files) in the "Provider Model Aliases" page for details on file locations and format).
+Crée une nouvelle instance qui charge la configuration du fournisseur à partir du fichier `AIProviders.json` (voir [**Fichiers de configuration**](../provider-model-aliases.md#configuration-files) dans la page "Alias de fournisseurs de modèles" pour plus de détails sur l'emplacement et le format des fichiers).
**Important:**
-- Only the first existing file is loaded. There is no merging of multiple files.
-- The configuration is read once at instantiation time. If the `AIProviders.json` file is modified afterward, those changes will not be reflected in the existing instance. You must create a new instance of `OpenAIProviders` to reload the updated configuration.
+- Seul le premier fichier existant est chargé. Il n'y a pas de fusion de plusieurs fichiers.
+- La configuration est lue une fois au moment de l'instanciation. Si le fichier `AIProviders.json` est modifié par la suite, ces changements ne seront pas reflétés dans l'instance existante. Vous devez créer une nouvelle instance de `OpenAIProviders` pour recharger la configuration mise à jour.
## Utilisation
-### Integration with OpenAI Class
+### Intégration avec la classe OpenAI
```4d
var $client := cs.AIKit.OpenAI.new()
-// Use model aliases with provider:model syntax
+// Utilisation d'alias de modèles avec syntaxe provider:model
var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"})
var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"})
var $result := $client.chat.completions.create($messages; {model: "local:llama3"})
```
-### Direct Provider Access
+### Accès direct aux fournisseurs
```4d
var $providers := cs.AIKit.OpenAIProviders.new()
-// Get a specific provider configuration
+// Obtenir une configuration de fournisseur spécifique
var $config := $providers.get("openai")
-// Returns: {baseURL: "...", apiKey: "...", modelAliases: [...], ...} or Null
+// Renvoie : {baseURL : "...", apiKey : "...", modelAliases : [...], ...} ou Null
-// Get all provider names
+// Obtenir tous les noms de fournisseurs
var $names := $providers.list()
-// Returns: ["openai", "anthropic", "mistral", "local"]
+// Renvoie : ["openai", "anthropic", "mistral", "local"]
```
## Fonctions
@@ -68,21 +68,21 @@ var $names := $providers.list()
**get**(*name* : Text) : Object
-Get a provider configuration by name.
+Obtenir la configuration d'un fournisseur par son nom.
-| Paramètres | Type | Description |
-| ---------- | ------ | ----------------------------------------------------- |
-| *name* | Text | The provider name |
-| Résultat | Object | Provider configuration object, or `Null` if not found |
+| Paramètres | Type | Description |
+| ---------- | ------ | ---------------------------------------------------------------------- |
+| *name* | Text | Le nom du fournisseur |
+| Résultat | Object | Objet de configuration du fournisseur, ou `Null` s'il n'est pas trouvé |
#### Exemple
```4d
var $config := $providers.get("openai")
If ($config # Null)
- // Use $config.baseURL, $config.apiKey, etc.
+ // Utiliser $config.baseURL, $config.apiKey, etc.
- // We could build a client with it
+ // Nous pourrions construire un client avec
var $client:=cs.AIKit.OpenAI.new($config)
End if
```
@@ -91,17 +91,17 @@ End if
**list**() : Collection
-Get all provider names.
+Obtenir les noms de tous les fournisseurs.
-| Paramètres | Type | Description |
-| ---------- | ---------- | ---------------------------- |
-| Résultat | Collection | Collection of provider names |
+| Paramètres | Type | Description |
+| ---------- | ---------- | ---------------------------------- |
+| Résultat | Collection | Collection de noms de fournisseurs |
#### Exemple
```4d
var $names := $providers.list()
-// Returns: ["openai", "anthropic", ...]
+// Retourne : ["openai", "anthropic", ...]
For each ($name; $names)
var $config := $providers.get($name)
@@ -112,75 +112,75 @@ End for each
**modelAliases**() : Collection
-Get all configured model aliases.
+Récupère tous les alias de modèle configurés.
-| Paramètres | Type | Description |
-| ---------- | ---------- | --------------------------------- |
-| Résultat | Collection | Collection of model alias objects |
+| Paramètres | Type | Description |
+| ---------- | ---------- | -------------------------------------- |
+| Résultat | Collection | Collection d'objets d'alias de modèles |
-Each object in the collection contains:
+Chaque objet de la collection contient :
-| Propriété | Type | Description |
-| ------------- | ---- | --------------------------------- |
-| `name` | Text | Model alias name |
-| `fournisseur` | Text | Provider name |
-| `model` | Text | Model ID to use with the provider |
+| Propriété | Type | Description |
+| ---------- | ---- | ------------------------------------------- |
+| `name` | Text | Nom de l'alias du modèle |
+| `provider` | Text | Nom du fournisseur |
+| `model` | Text | ID du modèle à utiliser avec le fournisseur |
#### Exemple
```4d
var $models := $providers.modelAliases()
-// Returns: [{name: "my-gpt", provider: "openai", model: "gpt-5.1"}, ...]
+// Renvoie : [{name: "my-gpt", provider: "openai", model: "gpt-5.1"}, ...]
For each ($model; $models)
// $m.name, $m.provider, $m.model
End for each
```
-## Model Resolution
+## Résolution du modèle
-Two syntaxes are supported for model resolution:
+Deux syntaxes sont prises en charge pour la résolution des modèles :
-### Provider alias (`provider:model`)
+### Alias de fournisseur (`provider:model`)
-Specify the provider and model name directly:
+Spécifie directement le nom du fournisseur et du modèle :
```4d
var $client := cs.AIKit.OpenAI.new()
$client.chat.completions.create($messages; {model: "openai:gpt-5.1"})
```
-This is resolved internally to:
+Résolution en interne :
-1. Split `"openai:gpt-5.1"` into provider=`"openai"` and model=`"gpt-5.1"`
-2. Look up the `"openai"` provider configuration
-3. Extract `baseURL` and `apiKey`
-4. Make the API request using the resolved configuration
+1. Séparation `"openai:gpt-5.1"` en provider=`"openai"` et model=`"gpt-5.1"`
+2. Recherche de la configuration du fournisseur `"openai"`
+3. Extraction de `baseURL` et `apiKey`
+4. Requête API effectuée en utilisant la configuration résolue
**Exemples :**
-- `"openai:gpt-5.1"` → Use OpenAI provider with gpt-5.1 model
-- `"anthropic:claude-3-opus"` → Use Anthropic provider with claude-3-opus
-- `"local:llama3"` → Use local provider with llama3 model
+- `"openai:gpt-5.1"` → Utiliser le fournisseur OpenAI avec le modèle gpt-5.1
+- `"anthropic:claude-3-opus"` → Utiliser le fournisseur Anthropic avec claude-3-opus
+- `"local:llama3"` → Utiliser un fournisseur local avec le modèle llama3
-### Model alias (bare name)
+### Alias de modèle (nom simple)
-Use a named model by its bare name from the `models` section of the configuration:
+Utilise un modèle déclaré par son nom simple dans la section `models` de la configuration :
```4d
var $client := cs.AIKit.OpenAI.new()
$client.chat.completions.create($messages; {model: ":my-gpt"})
```
-This is resolved internally to:
+Résolution en interne :
-1. Look up `"my-gpt"` in the `models` configuration
-2. Find its `provider` (e.g., `"openai"`) and `model` (e.g., `"gpt-5.1"`)
-3. Resolve the provider to get `baseURL` and `apiKey`
-4. Make the API request using the resolved configuration
+1. Recherche de `"my-gpt"` dans la configuration `models`
+2. Récupération de son `provider` (par exemple, `"openai"`) et de son `model` (par exemple, `"gpt-5.1"`)
+3. Résolution du fournisseur pour obtenir `baseURL` et `apiKey`
+4. Requête API effectuée en utilisant la configuration résolue
**Exemples :**
-- `"my-gpt"` → Use the model alias "my-gpt" (resolves to its configured provider and model)
-- `"my-embedding"` → Use the model alias "my-embedding" for embedding operations
+- `"my-gpt"` → Utiliser l'alias de modèle "my-gpt" (résolu par le fournisseur et le modèle configurés)
+- `"my-embedding"` → Utiliser l'alias de modèle "my-embedding" pour les opérations d'embedding
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md
index 15dc100e3b12ba..0cecf0aec7697a 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/provider-model-aliases.md
@@ -1,35 +1,35 @@
---
id: provider-model-aliases
-title: Provider & Model Aliases
+title: Alias de fournisseurs et de modèles
---
-# Provider & Model Aliases
+# Alias de fournisseurs et de modèles
-The OpenAI client supports provider and model aliases, allowing you to define provider configurations and named model aliases in JSON files and reference them using simple syntaxes.
+Le client OpenAI prend en charge les alias de fournisseurs et de modèles, ce qui vous permet de définir des configurations de fournisseurs et des alias de modèles nommés dans des fichiers JSON et de les référencer à l'aide de syntaxes simples.
## Vue d’ensemble
-Instead of hard-coding API endpoints and credentials in your code, you can:
+Au lieu de coder en dur les points de terminaison et les identifiants de l'API dans votre code, vous pouvez :
-- Define provider configurations in a JSON file
-- Use the `provider:model` syntax to specify a provider and model directly
-- Define named model aliases that map to a provider and a model ID
-- Use a named model alias by bare name (e.g., `my-gpt`)
-- Switch between providers (OpenAI, Anthropic, local Ollama, etc.) easily
+- Définir les configurations des fournisseurs dans un fichier JSON
+- Utiliser la syntaxe `provider:model` pour spécifier directement un fournisseur et un modèle
+- Définir des alias de modèles nommés qui correspondent à un fournisseur et à un identifiant de modèle
+- Utiliser l'alias d'un modèle nommé par son simple nom (par exemple, `my-gpt`)
+- Passer d'un fournisseur à l'autre (OpenAI, Anthropic, Ollama local, etc.) facilement
-## Configuration Files
+## Fichiers de configuration
-The client automatically loads provider configurations from the first existing file found (in priority order):
+Le client charge automatiquement les configurations du fournisseur à partir du premier fichier existant trouvé (par ordre de priorité) :
-| Priorité | Emplacement | File Path |
+| Priorité | Emplacement | Emplacement du fichier |
| ------------------------------------- | ----------- | ------------------------------------------------- |
| 1 (le plus élevé) | userData | `/Settings/AIProviders.json` |
| 2 | user | `/Settings/AIProviders.json` |
| 3 (le plus faible) | structure | `/SOURCES/AIProviders.json` |
-**Important:** Only the **first existing file** is loaded. There is no merging of multiple files.
+**Important:** Seul le **premier fichier existant** est chargé. Il n'y a pas de fusion de plusieurs fichiers.
-### Configuration File Format
+### Format du fichier de configuration
```json
{
@@ -50,23 +50,23 @@ The client automatically loads provider configurations from the first existing f
}
```
-### Provider Fields
+### Champs du fournisseur
-| Champ | Type | Obligatoire | Description |
-| -------------- | ---- | ----------- | -------------------------------------------------------------- |
-| `baseURL` | Text | Oui | API endpoint URL |
-| `apiKey` | Text | Non | API key value |
-| `organisation` | Text | Non | Organization ID (optional, OpenAI-specific) |
-| `project` | Text | Non | Project ID (optional, OpenAI-specific) |
+| Champ | Type | Obligatoire | Description |
+| -------------- | ---- | ----------- | ------------------------------------------------------------------------- |
+| `baseURL` | Text | Oui | URL du point de terminaison de l'API |
+| `apiKey` | Text | Non | Valeur de la clé API |
+| `organisation` | Text | Non | ID de l'organisation (facultatif, spécifique à OpenAI) |
+| `project` | Text | Non | ID du projet (facultatif, spécifique à OpenAI) |
-### Model Alias Fields
+### Champs d'alias de modèle
-| Champ | Type | Obligatoire | Description |
-| ------------- | ---- | ----------- | ------------------------------------------------------------------- |
-| `fournisseur` | Text | Oui | Name of the provider (must exist in `providers`) |
-| `model` | Text | Oui | Model ID used by the provider |
+| Champ | Type | Obligatoire | Description |
+| ---------- | ---- | ----------- | --------------------------------------------------------------------- |
+| `provider` | Text | Oui | Nom du fournisseur (doit exister dans `providers`) |
+| `model` | Text | Oui | ID du modèle utilisé par le fournisseur |
-### Example Configuration
+### Exemple de configuration
```json
{
@@ -103,25 +103,25 @@ The client automatically loads provider configurations from the first existing f
}
```
-## Usage in API Calls
+## Utilisation dans les appels d'API
-### Model Parameter Formats
+### Formats de paramétrage du modèle
-Two syntaxes are supported:
+Deux syntaxes sont prises en charge :
-| Syntaxe | Description |
-| --------------------- | ---------------------------------------------------------------------------------- |
-| `provider:model_name` | Provider alias — specify provider and model directly |
-| `:model_alias` | Model alias — reference a named model from the `models` configuration by bare name |
+| Syntaxe | Description |
+| --------------------- | ------------------------------------------------------------------------------------------ |
+| `provider:model_name` | Alias de fournisseur - spécifie directement le fournisseur et le modèle |
+| `:model_alias` | Alias de modèle — référence un modèle nommé de la configuration `models` par un nom simple |
-#### Provider alias syntax
+#### Syntaxe alias de fournisseur
-Use the `provider:model_name` syntax in any API call that accepts a model parameter:
+Utilisez la syntaxe `provider:model_name` dans tout appel d'API qui accepte un modèle en paramètre :
```4d
var $client := cs.AIKit.OpenAI.new()
-// Chat completions
+// Complétions de chat
var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"})
var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"})
var $result := $client.chat.completions.create($messages; {model: "local:llama3"})
@@ -130,131 +130,131 @@ var $result := $client.chat.completions.create($messages; {model: "local:llama3"
var $result := $client.embeddings.create("text"; "openai:text-embedding-3-small")
var $result := $client.embeddings.create("text"; "local:nomic-embed-text")
-// Image generation
+// Génération d'images
var $result := $client.images.generate("prompt"; {model: "openai:dall-e-3"})
```
-#### Model alias syntax
+#### Syntaxe alias de modèle
-Use a bare model name to reference a named model defined in the `models` section of the configuration file. The provider, model ID, and credentials are resolved automatically:
+Utilisez un nom de modèle simple pour référencer un modèle nommé défini dans la section `models` du fichier de configuration. Le fournisseur, l'ID du modèle et les informations d'identification sont résolus automatiquement :
```4d
var $client := cs.AIKit.OpenAI.new()
-// Use a named model alias
+// Utiliser un alias de modèle nommé
var $result := $client.chat.completions.create($messages; {model: ":my-gpt"})
var $result := $client.chat.completions.create($messages; {model: ":my-claude"})
-// Embeddings with a named model alias
+// Embeddings avec un alias de modèle nommé
var $result := $client.embeddings.create("text"; ":my-embedding")
```
-### How It Works
+### Comment ça marche
-#### Provider alias (`provider:model`)
+#### Alias de fournisseur (`provider:model`)
-When you use the `provider:model` syntax, the client automatically:
+Lorsque vous utilisez la syntaxe `provider:model`, le client automatiquement :
-1. **Parses** the model string to extract provider name and model name
- - Example: `"openai:gpt-5.1"` → provider=`"openai"`, model=`"gpt-5.1"`
+1. **analyse** la chaîne du modèle pour extraire le nom du fournisseur et le nom du modèle
+ - Exemple : `"openai:gpt-5.1"` → provider=`"openai"`, model=`"gpt-5.1"`
-2. **Looks up** the provider configuration from the loaded JSON file
- - Retrieves `baseURL`, `apiKey`, `organization`, `project`
+2. **recherche** la configuration du fournisseur à partir du fichier JSON chargé
+ - Récupère `baseURL`, `apiKey`, `organization`, `project`
-3. **Makes the API request** using the resolved configuration
- - Sends request to the provider's `baseURL` with the correct `apiKey`
+3. **effectue la requête API** en utilisant la configuration résolue
+ - Envoie une requête à la `baseURL` du fournisseur avec la `apiKey` correcte
-#### Model alias (bare name)
+#### Alias de modèle (nom simple)
-When you use a bare model name that matches a configured alias, the client automatically:
+Lorsque vous utilisez un nom de modèle simple qui correspond à un alias configuré, le client automatiquement :
-1. **Looks up** the model alias in the `models` section of the configuration
- - Example: `":my-gpt"` → finds entry with `provider: "openai"`, `model: "gpt-5.1"`
+1. **recherche** l'alias du modèle dans la section `models` de la configuration
+ - Exemple : `":my-gpt"` → trouve une entrée avec `provider : "openai"`, `model : "gpt-5.1"`
-2. **Resolves** the associated provider to get `baseURL` and `apiKey`
+2. **résoud** le fournisseur associé pour obtenir `baseURL` et `apiKey`
-3. **Makes the API request** using the provider's endpoint and the stored model ID
+3. **effectue la requête API** en utilisant le point de terminaison du fournisseur et l'ID du modèle stocké.
-### Using Plain Model Names
+### Utiliser des noms de modèles seuls
-If you specify a model name **without** a provider prefix or `:` prefix, the client uses the configuration from its constructor:
+Si vous spécifiez un nom de modèle **sans** préfixe de fournisseur ou avec un préfixe `:`, le client utilise la configuration de son constructeur :
```4d
-// Use constructor configuration
-var $client := cs.AIKit.OpenAI.new({apiKey: "sk-..."; baseURL: "https://api.openai.com/v1"})
-var $result := $client.chat.completions.create($messages; {model: "gpt-5.1"})
+// Utiliser la configuration du constructeur
+var $client := cs.AIKit.OpenAI.new({apiKey : "sk-..." ; baseURL : "https://api.openai.com/v1"})
+var $result := $client.chat.completions.create($messages; {model : "gpt-5.1"})
-// Override with provider alias
-var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"})
+// Surcharge avec l'alias du fournisseur
+var $result := $client.chat.completions.create($messages; {model : "anthropic:claude-3-opus"})
-// Override with model alias (bare name)
-var $result := $client.chat.completions.create($messages; {model: ":my-gpt"})
+// Surcharge avec l'alias du modèle (nom simple)
+var $result := $client.chat.completions.create($messages; {model : ":my-gpt"})
```
## Exemples
-### Multi-Provider Chat Application
+### Application de chat multi-fournisseurs
```4d
var $client := cs.AIKit.OpenAI.new()
var $messages := []
-$messages.push({role: "user"; content: "What is the capital of France?"})
+$messages.push({role : "user" ; content : "Quelle est la capitale de la France ?"})
-// Try OpenAI
-var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"})
+// On essaie OpenAI
+var $result := $client.chat.completions.create($messages; {model : "openai:gpt-5.1"})
-// Try Anthropic
-var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-5-sonnet"})
+// On essaie Anthropic
+var $result := $client.chat.completions.create($messages; {model : "anthropic:claude-3-5-sonnet"})
-// Try local Ollama
-var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"})
+// On essaie Ollama local
+var $result := $client.chat.completions.create($messages; {model : "local:llama3.2"})
```
-### Embeddings with Multiple Providers
+### Embeddings avec plusieurs fournisseurs
```4d
var $client := cs.AIKit.OpenAI.new()
var $text := "Hello world"
-// Use OpenAI embeddings
+// Utiliser les embeddings OpenAI
var $embedding1 := $client.embeddings.create($text; "openai:text-embedding-3-small")
-// Use local embeddings
+// Utiliser les embeddings locaux
var $embedding2 := $client.embeddings.create($text; "local:nomic-embed-text")
```
-## Configuration Management
+## Gestion des configurations
-Provider configurations can be managed through [4D Settings](https://developer.4d.com/docs/settings/ai) or by directly editing JSON files.
+Les configurations de fournisseurs peuvent être gérées via les [Paramètres de 4D](https://developer.4d.com/docs/settings/ai) ou en modifiant directement les fichiers JSON.
-**To add or modify providers:**
+**Pour ajouter ou modifier des fournisseurs :**
-1. Use 4D Settings interface (recommended), or
-2. Edit the appropriate JSON file (userData, user, or structure)
-3. Restart your application or create a new OpenAI client instance to load changes
+1. Utilisez l'interface des Paramètres 4D (recommandé), ou
+2. Modifiez le fichier JSON approprié (fichier données utilisateur, utilisateur ou structure)
+3. Redémarrez votre application ou créez une nouvelle instance de client OpenAI pour tenir compte des modifications.
-**Recommended file location:**
+**Emplacement du fichier recommandé :**
-- **For user-specific configs:** `/Settings/AIProviders.json`
-- **For application defaults:** `/SOURCES/AIProviders.json`
+- **Pour les configurations spécifiques à l'utilisateur :** `/Settings/AIProviders.json`
+- **Pour les valeurs par défaut de l'application :** `/SOURCES/AIProviders.json`
-### No Reload Capability
+### Pas de capacité de rechargement
-Once a client is instantiated, it cannot reload provider configurations. To pick up configuration changes:
+Une fois qu'un client est instancié, il ne peut pas recharger les configurations de fournisseurs. Pour prendre en compte les changements de configuration :
```4d
-// Configuration changed - create new client
+// Configuration modifiée - création d'un nouveau client
var $client := cs.AIKit.OpenAI.new()
```
-## Security Considerations
+## Considérations sur la sécurité
-When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API tokens and credentials from exposure to client machines.
+Lors de l'utilisation de 4D en mode client/serveur, il est **fortement recommandé** d'exécuter le code lié à l'IA côté serveur afin de protéger les tokens et les informations d'identification de l'API de l'exposition aux machines clientes.
-## Common Use Cases
+## Scénarios d'application courants
-### Local Development with Ollama
+### Développement local avec Ollama
```json
{
@@ -271,9 +271,9 @@ var $client := cs.AIKit.OpenAI.new()
var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"})
```
-### Named Model Aliases
+### Alias de modèles nommés
-Define models once, use them everywhere by name:
+Définir les modèles une fois, les utiliser partout par leur nom :
```json
{
@@ -307,21 +307,21 @@ Define models once, use them everywhere by name:
```4d
var $client := cs.AIKit.OpenAI.new()
-// Use named model aliases — no need to remember provider or model ID
+// Utiliser des alias de modèles nommés — pas besoin de se souvenir du fournisseur ou de l'ID du modèle
var $result := $client.chat.completions.create($messages; {model: ":chat"})
var $result := $client.chat.completions.create($messages; {model: ":fast"})
var $embedding := $client.embeddings.create("text"; ":embedding")
```
-### List All Configured Models
+### Lister tous les modèles configurés
```4d
var $providers := cs.AIKit.OpenAIProviders.new()
var $models := $providers.modelAliases()
-// Returns: [{name: "chat", provider: "openai", model: "gpt-5.1"}, ...]
+// Renvoie : [{name: "chat", provider: "openai", model: "gpt-5.1"}, ...]
```
-### Production with Multiple Cloud Providers
+### Production avec plusieurs fournisseurs de services dans le cloud
```json
{
@@ -342,7 +342,7 @@ var $models := $providers.modelAliases()
}
```
-### Provider-Specific Organizations
+### Organisations spécifiques des fournisseurs
```json
{
@@ -360,13 +360,13 @@ var $models := $providers.modelAliases()
```
```4d
-// Route to different organizations
-var $resultA := $client.chat.completions.create($messages; {model: "openai-team-a:gpt-5.1"})
-var $resultB := $client.chat.completions.create($messages; {model: "openai-team-b:gpt-5.1"})
+// Routage vers différentes organisations
+var $resultA := $client.chat.completions.create($messages; {model : "openai-team-a:gpt-5.1"})
+var $resultB := $client.chat.completions.create($messages; {model : "openai-team-b:gpt-5.1"})
```
-## Related Documentation
+## Documentation liée
-- [OpenAI Class](Classes/OpenAI.md) - Main client class
-- [OpenAIProviders Class](Classes/OpenAIProviders.md) - Provider configuration management
-- [Compatible OpenAI APIs](compatible-openai.md) - List of compatible providers
+- [Classe OpenAI](Classes/OpenAI.md) - Classe client principale
+- [Classe OpenAIProviders](Classes/OpenAIProviders.md) - Gestion de la configuration des fournisseurs
+- [API OpenAI compatibles](compatible-openai.md) - Liste des fournisseurs compatibles
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png
new file mode 100644
index 00000000000000..7e1cd6b7e973b8
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png
new file mode 100644
index 00000000000000..ce157014371ec1
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png
new file mode 100644
index 00000000000000..592ae7d506e652
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png
new file mode 100644
index 00000000000000..7cbec84055b1d3
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png
new file mode 100644
index 00000000000000..d78a6f5f3c1a48
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png
new file mode 100644
index 00000000000000..95e6603575d8a3
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png
new file mode 100644
index 00000000000000..5b09f52d9fa16c
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/code-editor/write-class-method.md b/i18n/fr/docusaurus-plugin-content-docs/current/code-editor/write-class-method.md
index 586180fa24222a..0af7bf40cf7ee6 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/code-editor/write-class-method.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/code-editor/write-class-method.md
@@ -25,16 +25,16 @@ Si vous avez l'habitude de coder avec **VS Code**, vous pouvez également utilis
Chaque fenêtre de l'éditeur de code dispose d'une barre d'outils qui permet un accès instantané aux fonctionnalités de base liées à l'exécution et à l'édition du code.
-| Élément | Icône | Description |
-| --------------------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| **Exécuter la méthode** |  | Lorsque vous travaillez avec des méthodes, chaque fenêtre de l'éditeur de code dispose d'un bouton qui peut être utilisé pour exécuter la méthode en cours. Using the menu associated with this button, you can choose the type of execution:- **Run new process**: Creates a process and runs the method in standard mode in this process.
- **Run and debug new process**: Creates a new process and displays the method in the Debugger window for step by step execution in this process.
- **Run in Application process**: Runs the method in standard mode in the context of the Application process (in other words, the record display window).
- **Run and debug in Application process**: Displays the method in the Debugger window for step by step execution in the context of the Application process (in other words, the record display window).
For more information on method execution, see [Project Methods](../Project/project-method-properties.md). |
-| **Chercher dans la méthode** |  | Affiche la [*zone de recherche*](#find-and-replace). |
-| **Macros** |  | Insère une macro dans la sélection. Cliquez sur la flèche déroulante pour afficher la liste des macros disponibles. Pour plus d'informations sur la création et l'instanciation des macros, voir [Macros](#macros). |
-| **Déployer tout / Contracter tout** |  | Ces boutons permettent de déployer ou de contracter toutes les structures de flux de contrôle du code. |
-| **Informations sur la méthode** |  | Affiche la boîte de dialogue [Propriétés de la méthode](../Project/project-method-properties.md) (méthodes de projet uniquement). |
-| **Dernières valeurs du presse-papiers** |  | Affiche les dernières valeurs stockées dans le presse-papiers. |
-| **Presse-papiers** |  | Neuf presse-papiers sont disponibles dans l'éditeur de code. Vous pouvez [utiliser ces presse-papiers](#clipboards) en cliquant directement dessus ou en utilisant des raccourcis clavier. Vous pouvez utiliser l'[option Préférences](Preferences/methods.md#options-1) pour les masquer. |
-| **Menu déroulant de navigation** |  | Vous permet de naviguer à l'intérieur des méthodes et des classes avec du contenu étiqueté automatiquement ou des marqueurs déclarés manuellement. Voir ci-dessous |
+| Élément | Icône | Description |
+| --------------------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| **Exécuter la méthode** |  | Lorsque vous travaillez avec des méthodes, chaque fenêtre de l'éditeur de code dispose d'un bouton qui peut être utilisé pour exécuter la méthode en cours. En utilisant le menu associé à ce bouton, vous pouvez choisir le type d'exécution :- **Exécuter nouveau process** : Crée un process et exécute la méthode en mode standard dans ce process.
- **Exécuter et déboguer nouveau process** : Crée un nouveau process et affiche la méthode dans la fenêtre du débogueur pour une exécution pas à pas dans ce process.
- **Exécuter dans le process application** : Exécute la méthode en mode standard dans le contexte du process de l'application (c'est-à-dire la fenêtre d'affichage des enregistrements).
- **Exécuter et déboguer dans le process application** : Affiche la méthode dans la fenêtre du débogueur pour une exécution pas à pas dans le contexte du process de l'application.
Pour plus d'informations sur l'exécution des méthodes, voir [Méthodes projet](../Project/project-method-properties.md). |
+| **Chercher dans la méthode** |  | Affiche la [*zone de recherche*](#find-and-replace). |
+| **Macros** |  | Insère une macro dans la sélection. Cliquez sur la flèche déroulante pour afficher la liste des macros disponibles. Pour plus d'informations sur la création et l'instanciation des macros, voir [Macros](#macros). |
+| **Déployer tout / Contracter tout** |  | Ces boutons permettent de déployer ou de contracter toutes les structures de flux de contrôle du code. |
+| **Informations sur la méthode** |  | Affiche la boîte de dialogue [Propriétés de la méthode](../Project/project-method-properties.md) (méthodes de projet uniquement). |
+| **Dernières valeurs du presse-papiers** |  | Affiche les dernières valeurs stockées dans le presse-papiers. |
+| **Presse-papiers** |  | Neuf presse-papiers sont disponibles dans l'éditeur de code. Vous pouvez [utiliser ces presse-papiers](#clipboards) en cliquant directement dessus ou en utilisant des raccourcis clavier. Vous pouvez utiliser l'[option Préférences](Preferences/methods.md#options-1) pour les masquer. |
+| **Menu déroulant de navigation** |  | Vous permet de naviguer à l'intérieur des méthodes et des classes avec du contenu étiqueté automatiquement ou des marqueurs déclarés manuellement. Voir ci-dessous |
### Zone d'édition
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md b/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
index aba96c58a310aa..003b1f930d1a06 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
@@ -40,3 +40,80 @@ slug: /commands/theme/System-Documents
| [](../../commands/text-to-document)
|
| [](../../commands/volume-attributes)
|
| [](../../commands/volume-list)
|
+
+:::info Compatibilité
+
+Legacy commands from this theme can usually be usefully replaced by commands of the [*File and Folder*](./File_and_Folder.md) theme and their associated [File](../../API/FileClass.md), [Folder](../../API/FolderClass.md), [ZipFile](../../API/ZipFileClass.md) and [ZipFolder](../../API/ZipFolderClass.md) classes, allowing you to handle files and folders as objects.
+
+:::
+
+## Document reference number
+
+You open a document with the [`Open document`](../../commands/open-document), [`Create document`](../../commands/create-document) and [`Append document`](../../commands/append-document) commands. Once a document is open, you can read and write characters from and to the document using commands such as [`RECEIVE PACKET`](../../commands/receive-packet) and [`SEND PACKET`](../../commands/send-packet). When you are finished with the document, you usually close it using the `CLOSE DOCUMENT` command.
+
+All open documents returned by these commands are referred to using a **document reference number** (*DocRef*). A *DocRef* uniquely identifies an open document. It is formally an expression of the **Time** type. All commands working with open documents expect *DocRef* as a parameter. If you pass an incorrect *DocRef* to one of these commands, a file manager error occurs.
+
+A document can be opened in **read/write** mode by only one process at a time. In **read-only** mode, one process can open several documents, several processes can open multiple documents, you can open the same document as many times as necessary, but you cannot open the same document in read/write mode twice at a time. The `Create document` and `Append document` commands automatically open documents in read/write mode. Only the `Open document` command lets you choose the opening mode.
+
+:::note
+
+When it is called from a [preemptive process](../../Develop/preemptive.md), a *DocRef* reference can only be used from this preemptive process. When it is called from a cooperative process, a *DocRef* reference can be used from any other cooperative process.
+
+:::
+
+## The Document system variable
+
+`Open document`, `Create document`, `Append document` and `Select document` enable you to access a document using the standard Open or Save file dialog boxes. When you access a document through a standard dialog, 4D returns the full pathname of the document in the [`Document` system variable](../../Concepts/variables.md#system-variables). This system variable has to be distinguished from the *document* parameter that appears in the parameter list of the commands.
+
+## Absolute or relative pathname
+
+Most of the routines of this section accept document names, relative pathnames or absolute pathnames:
+
+Relative pathnames define a location with respect to a folder located on disk. Passing only a document name is considered as using a relative pathname. In 4D, a relative pathname is usually expressed with respect to the database folder, i.e. the folder containing the structure file. Relative pathnames are especially useful when deploying applications in heterogenous environments.
+Absolute pathnames define a location with respect to the root of the volume and so they do not depend on the current location of the database folder.
+To determine whether a pathname passed to a command must be interpreted as absolute or relative, 4D applies a specific algorithm on each platform.
+
+Windows
+If the parameter contains only two characters and if the second one is a ':',
+or if the text contains ':' and '\' as the second and third character,
+or if the text starts with "\\",
+then the pathname is absolute.
+
+In all other cases, the pathname is relative.
+
+Examples with the CREATE FOLDER command:
+
+CREATE FOLDER("lundi") // relative path
+CREATE FOLDER("\Monday") // relative path
+CREATE FOLDER("\Monday\Tuesday") // relative path
+CREATE FOLDER("c:") // absolute path
+CREATE FOLDER("d:\Monday") // absolute path
+CREATE FOLDER("\\srv-Internal\temp") // absolute path
+
+macOS
+If the text starts with a folder separator ':',
+or if does not contain any,
+then the path is relative.
+
+In all other cases, it is absolute.
+
+Examples with the CREATE FOLDER command:
+
+CREATE FOLDER("Monday") // relative path
+CREATE FOLDER("macintosh hd:") // absolute path
+CREATE FOLDER("Monday:Tuesday") // absolute path (a volume must be called Monday)
+CREATE FOLDER(":Monday:Tuesday") // relative path
+
+:::note
+
+See also [**Absolute and relative pathnames** in the Concepts section](../../Concepts/paths.md#absolute-and-relative-pathnames).
+
+:::
+
+## Extracting pathname contents
+
+You can handle pathname contents using the Path to object and Object to path commands. In particular, using these commands, you can extract from a pathname:
+
+a file name,
+the parent folder path,
+the file or folder extension.
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML.md b/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML.md
index 52a6c948f3d4f6..2542923df2b336 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML.md
@@ -11,3 +11,61 @@ slug: /commands/theme/XML
| [](../../commands/xml-get-error)
|
| [](../../commands/xml-get-options)
|
| [](../../commands/xml-set-options)
|
+
+## Overview of XML Commands
+
+:::note
+
+For XML support, 4D uses a library named Xerces.dll developed by the Apache Foundation company.
+
+:::
+
+### XML, DOM, and SAX
+
+The **XML** theme groups together the generic XML "utilities" commands of 4D. These are option- and error-management commands.
+
+4D also offers two separate sets of XML commands: [**DOM**](../theme/XML_DOM.md) (Document Object Model) and [**SAX**](../theme/XML_SAX.md) (Simple API XML) are two different parsing modes for XML documents.
+
+- The DOM mode parses an XML source and builds its structure (its "tree") in memory. Because of this, access to each element of the source is extremely fast. However, since the entire tree structure is stored in memory, the processing of large XML documents may lead to the memory capacity being exceeded and thus provoke errors.
+- The SAX mode does not build a tree structure in memory. In this mode, "events" (such as the start and end of an element) are generated when parsing the source. This mode lets you parse XML documents of any size, regardless of the amount of memory available.
+
+#### Voir également
+
+http://www.saxproject.org/?selected=event
+http://www.w3schools.com/xml/
+
+### Mode préemptif
+
+XML references created by a [preemptive process](../../Develop/preemptive.md) can only be used in that specific process. Conversely, XML references created by a cooperative process can be used by any other cooperative process, but cannot be used by any preemptive process.
+
+### Character Sets
+
+The following character sets are supported by the XML DOM and XML SAX commands of 4D:
+
+- ASCII
+- UTF-8
+- UTF-16 (Big/Small Endian)
+- UCS4 (Big/Small Endian)
+- EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings,
+- ISO-8859-1 (or Latin1)
+- Windows-1252.
+
+### Glossaire
+
+This non-exhaustive list details the main XML concepts used by the commands and functions of 4D.
+
+- **Attribute**: an XML sub-tag associated with an element. An attribute always contains a name and a value.
+- **Child**: In an XML structure, an element in a level directly below another.
+- **DTD**: *Document Type Declaration*. The DTD records the set of specific rules and properties that the XML must follow. These rules define, more particularly, the name and content of each tag as well as its context. This formalization of the elements can be used to check whether an XML document is in compliance (in which case, it is declared “valid”). The DTD may be included in the XML document (internal DTD) or in a separate document (external DTD). Note that the DTD is not mandatory.
+- **Element**: an XML tag. An element always contains a name and a value. Optionally, an element may contain attributes.
+- **ElementRef**: XML reference used by the 4D XML commands to specify an XML structure. This reference is made up of 8 coded characters in hexadecimal form, which means that its length is 32 characters on a 64-bit system. It is recommended to declare XML references as Text.
+- **Parent**: In an XML structure, an element in a level directly above another.
+- **Parsing, parser**: The act of analyzing the contents of a structured object in order to extract useful information.
+- **Root**: An element located at the first level of an XML structure.
+- **Sibling**: An element at the same level as another.
+- **Structure**: structured XML object. This object can be a document, a variable, or an element.
+- **Validation**: An XML document is “validated” by the parser when it is “well-formed” and in compliance with the DTD specifications.
+- **Well-formed**: An XML document is declared “well-formed” by the parser when it complies with the generic XML specifications.
+- **XML**: eXtensible Markup Language. A computerized data exchange standard enabling the transfer of data as well as their structure. The XML language is based on the use of tags and a specific syntax, in keeping with the HTML language. However, unlike the latter, the XML language allows the definition of customized tags.
+- **XSL**: eXtensible Stylesheet Language. A language permitting the definition of style sheets used to process and display the contents of an XSL document.
+
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md b/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
index 9e8ccda3e66b95..d90873f85bebef 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
@@ -42,3 +42,64 @@ slug: /commands/theme/XML-DOM
| [](../../commands/dom-set-xml-declaration)
|
| [](../../commands/dom-set-xml-element-name)
|
| [](../../commands/dom-set-xml-element-value)
|
+
+## Overview of XML DOM Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML DOM.
+
+### Creating, opening and closing XML documents via DOM
+
+Objects created, modified or parsed by the 4D DOM commands can be text, URLs, documents or BLOBs. The DOM commands used for opening XML objects in 4D are [`DOM Parse XML source`](../../commands/dom-parse-xml-source) and [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable).
+
+Many commands then let you read, parse and write the elements and attributes. Errors are recovered using the [`XML GET ERROR`](../../commands/xml-get-error) command. Do not forget to call the [`DOM CLOSE XML`](../../commands/dom-close-xml) command to close the source in the end.
+
+Note about use of XML BLOB parameters: For historical reasons, XML commands such as [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable) accept BLOB type parameters. However, it is highly recommended to store XML structures as Text. The use of BLOBs is reserved for processing binary data. In conformity with XML specifications, binary data are automatically encoded in Base64, even when the BLOB contains text.
+
+### Support of XPath notation
+
+Several XML DOM commands ([`DOM Create XML element`](../../commands/dom-create-xml-element), [`DOM Find XML element`](../../commands/dom-find-xml-element), [`DOM Create XML element arrays`](../../commands/dom-create-xml-element-arrays) and [`DOM SET XML ELEMENT VALUE`](../../commands/dom-set-xml-element-value)) support some XPath expressions for accessing XML elements.
+
+XPath notation comes from the XPath language, designed to navigate within XML structures. It allows the setting of elements directly within an XML structure via a "pathname" type syntax, without necessarily having to indicate the complete pathname in order to reach it.
+
+For example, given the following structure:
+
+```xml
+
+
+
+
+
+
+
+```
+
+XPath notation allows you to access element 3 using the */RootElement/Elem1/Elem2/Elem3* syntax.
+
+4D also accepts indexed XPath elements using the *Element[ElementNum]* syntax. For example, given the following structure:
+
+```xml
+
+
+ aaa
+ bbb
+ ccc
+
+
+```
+
+XPath notation allows you to access the "ccc" value using the */RootElement/Elem1/Elem2[3]* syntax.
+
+For a comprehensive list of supported XPath expressions, refer to the [`DOM Find XML element`](../../commands/dom-find-xml-element) command description.
+
+:::note Compatibilité
+
+Starting with 4D 18 R3, the XPath implementation has been modified to be more compliant and to support a wider set of expressions. If you want to benefit from the extended features in your converted databases, you need to select the **Use standard XPath** option of the [Compatibility page](../../settings/compatibility.md).
+
+:::
+
+### Error Handling
+
+Many functions in this theme return an XML element reference. If an error occurs during function execution (for example, if the root element reference is not valid), the *OK* variable is set to 0 and an error is generated.
+
+In addition, the reference returned in this case is a sequence of 32 zero "0" characters.
+
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md b/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
index c550c3ea8541e7..7e815b3c8e4f53 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
@@ -24,3 +24,34 @@ slug: /commands/theme/XML-SAX
| [](../../commands/sax-open-xml-element)
|
| [](../../commands/sax-open-xml-element-arrays)
|
| [](../../commands/sax-set-xml-declaration)
|
+
+## Overview of XML SAX Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML SAX.
+
+### Creating, opening and closing XML documents via SAX
+
+The SAX commands work with the standard document references of 4D (**DocRef**, a Time type reference). It is therefore possible to use these commands jointly with the 4D commands used to manage documents, such as [`SEND PACKET`](../../commands/send-packet) or [`Append document`](../../commands/append-document).
+
+The creation and opening of XML documents by programming is carried out using the [`Create document`](../../commands/create-document) and [`Open document`](../../commands/open-document) commands. Subsequently, the use of an XML command with these documents will cause the automatic activation of XML mechanisms such as encoding. For instance, the `` header will be written automatically in the document.
+
+:::note
+
+Documents read by SAX commands must be opened in read-only mode by the [`Open document`](../../commands/open-document) command. This avoids any conflict between 4D and the Xerces library when you open "regular" and XML documents simultaneously. If you execute a SAX parsing command with a document open in read-write mode, an alert message is displayed and parsing is impossible.
+
+:::
+
+Closing an XML document must be carried out using the [`CLOSE DOCUMENT`](../../commands/close-document) command. If any XML elements were open, they will be closed automatically.
+
+### About end-of-line characters and BOM management
+
+When writing SAX documents, 4D uses the following default settings for end-of-line characters and BOM (byte order mask) usage:
+
+- CRLF characters on Windows and LF on macOS for end-of-line characters
+- files are written without BOM.
+
+:::note Compatibilité
+
+In projects created with 4D versions up to 19.x, by default 4D uses CRLF as end-of-line characters on macOS for SAX and a BOM. You can control the `XML line ending` and `XML BOM` management using the [`XML SET OPTIONS`](../../commands/xml-set-options) command and a [Compatibility setting](../../settings/compatibility.md). Important: Since SAX file lines are written directly at each statement, if you need to set the BOM and/or end-of-line options, you must call the [`XML SET OPTIONS`](../../commands/xml-set-options) command before the first SAX writing command.
+
+:::
diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/settings/compatibility.md b/i18n/fr/docusaurus-plugin-content-docs/current/settings/compatibility.md
index 264a248513dfd6..0dc399d405f1df 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/current/settings/compatibility.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/current/settings/compatibility.md
@@ -5,12 +5,16 @@ title: Page Compatibilité
La page Compatibilité regroupe les paramètres relatifs au maintien de la compatibilité avec les versions précédentes de 4D.
-> Le nombre d'options affichées dépend de la version de 4D avec laquelle la base de données/projet original a été créé, ainsi que des paramétrages modifiés dans cette base/projet.\
-> Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants.\
-> Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants.
-> Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants. Pour les options de compatibilité plus anciennes, consultez la [page Compatibilité](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) sur **doc.4d.com**.
+:::note
-- **Utiliser XPath standard :** Par défaut, cette option est désélectionnée pour les bases converties depuis une version de 4D antérieure à la 18 R3, et est cochée pour les bases créées sous une version 4D 18 R3 ou une version plus récente. A partir de la version 18 R3, l'implémentation de XPath dans 4D a été modifiée pour une meilleure conformité et pour la prise en charge d'un plus grand nombre de prédicats. Par conséquent, les fonctionnalités non standard de l'implémentation antérieure ne fonctionnent plus. Elles incluent :
+- Le nombre d'options affichées dépend de la version de 4D avec laquelle la base de données/projet original a été créé, ainsi que des paramétrages modifiés dans cette base/projet.\
+ Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants.\
+ Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants.
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. Pour les options de compatibilité plus anciennes, consultez la [page Compatibilité](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) sur **doc.4d.com**.
+
+:::
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. Par conséquent, les fonctionnalités non standard de l'implémentation antérieure ne fonctionnent plus. Elles incluent :
- le caractère "/" initial n'est pas seulement le noeud racine - l'utilisation du caractère / comme premier caractère d'une expression XPath ne déclare pas un chemin absolu à partir du noeud racine
- pas de noeud courant implicite - le noeud courant doit être intégré dans l'expression XPath
@@ -18,12 +22,14 @@ La page Compatibilité regroupe les paramètres relatifs au maintien de la compa
Même si ces fonctionnalités ne sont pas standard, vous pourriez vouloir continuer à les utiliser afin que votre code continue de fonctionner comme avant -- dans ce cas, il vous suffit de *désélectionner* l'option. On the other hand, if your code does not rely on the non-standard implementation and if you want to benefit from the extended XPath features in your databases (as described in the [`DOM Find XML element`](../commands/dom-find-xml-element) command), make sure the **Use standard XPath** option is *checked*.
-- **Utiliser LF comme caractère de fin de ligne sur macOS :** À partir de 4D 19 R2 (et 4D 19 R3 pour les fichiers XML), 4D écrit les fichiers texte avec un saut de ligne (LF) comme caractère de fin de ligne (EOL) par défaut au lieu de Retour Chariot (CR) (CRLF pour xml SAX) sur macOS dans les nouveaux projets. Si vous souhaitez bénéficier de ce nouveau comportement dans les projets convertis à partir de versions antérieures de 4D, cochez cette option. Voir [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), et [XML SET OPTIONS](../commands/xml-set-options).
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Si vous souhaitez bénéficier de ce nouveau comportement dans les projets convertis à partir de versions antérieures de 4D, cochez cette option. Voir [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), et [XML SET OPTIONS](../commands/xml-set-options).
+
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. Dans les versions antérieures, les fichiers texte étaient écrits avec un BOM par défaut. Sélectionnez cette option si vous souhaitez activer le nouveau comportement dans les projets convertis. Voir [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), et [XML SET OPTIONS](../commands/xml-set-options).
-- **Ne pas ajouter de BOM lors de l'écriture d'un fichier texte unicode par défaut :** À partir de 4D 19 R2 (et 4D 19 R3 pour les fichiers XML), 4D écrit des fichiers texte sans BOM ("Byte order mark") par défaut. Dans les versions antérieures, les fichiers texte étaient écrits avec un BOM par défaut. Sélectionnez cette option si vous souhaitez activer le nouveau comportement dans les projets convertis. Voir [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), et [XML SET OPTIONS](../commands/xml-set-options).
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. Vous pouvez appliquer ce comportement par défaut à vos bases de données converties en cochant cette option (il est recommandé de travailler avec des valeurs Null car elles sont entièrement prises en charge par [ORDA](../ORDA/overview.md)).
-- **Traduire les NULL en valeurs vides non cochée par défaut à la création d'un champ** : Pour une meilleure conformité avec les spécifications ORDA, dans les bases de données créées avec 4D 19 R4 et versions ultérieures, la propriété de champ **Traduire les NULL en valeurs vides** est non cochée par défaut lors de la création des champs. Vous pouvez appliquer ce comportement par défaut à vos bases de données converties en cochant cette option (il est recommandé de travailler avec des valeurs Null car elles sont entièrement prises en charge par [ORDA](../ORDA/overview.md)).
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Impression non-bloquante** : À partir de 4D 20 R4, chaque process a ses propres paramètres d'impression (options d'impression, imprimante courante, etc.), ce qui vous permet d'exécuter plusieurs tâches d'impression simultanément. Cochez cette option si vous souhaitez bénéficier de cette nouvelle implémentation dans vos projets 4D convertis ou dans les bases de données converties du mode binaire au mode projet. **Lorsque l'option n'est pas cochée**, l'implémentation précédente est appliquée : les paramètres d'impression 4D courants sont appliqués globalement, l'imprimante passe en mode "occupé" lorsqu'un job d'impression est en cours, vous devez appeler `CLOSE PRINTING JOB` pour que l'imprimante soit disponible pour le prochain job d'impression (consultez la documentation 4D précédente pour plus d'informations).
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) sont sauvegardées dans un fichier séparé nommé `catalog_editor.json`, stocké dans le dossier [Sources](../Project/architecture.md#sources) du projet. Cette nouvelle architecture de fichiers facilite la gestion des conflits de fusion dans les applications de gestion de versions (VCS) car le fichier `catalog.4DCatalog` ne contient désormais que les modifications cruciales de la structure de la base de données. Pour des raisons de compatibilité, cette fonctionnalité n'est pas activée par défaut dans les projets convertis à partir des versions précédentes de 4D, vous devez cocher cette option. Lorsque la fonctionnalité est activée, le fichier `catalog_editor.json` est créé lors de la première modification dans l'éditeur de structure.
-- **Sauvegarder les couleurs et les coordonnées de la structure dans un fichier catalog_editor.json séparé** : À partir de 4D 20 R5, les modifications apportées dans l'éditeur de Structure concernant l'apparence graphique des tables et des champs (couleur, position, ordre...) sont sauvegardées dans un fichier séparé nommé `catalog_editor.json`, stocké dans le dossier [Sources](../Project/architecture.md#sources) du projet. Cette nouvelle architecture de fichiers facilite la gestion des conflits de fusion dans les applications de gestion de versions (VCS) car le fichier `catalog.4DCatalog` ne contient désormais que les modifications cruciales de la structure de la base de données. Pour des raisons de compatibilité, cette fonctionnalité n'est pas activée par défaut dans les projets convertis à partir des versions précédentes de 4D, vous devez cocher cette option. Lorsque la fonctionnalité est activée, le fichier `catalog_editor.json` est créé lors de la première modification dans l'éditeur de structure.
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../../FormEditor/forms.md#legacy-print-rendering)).
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/API/EntityClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/API/EntityClass.md
index e519d5be306d7e..8c2c939adb504b 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-20/API/EntityClass.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/API/EntityClass.md
@@ -876,7 +876,7 @@ La valeur résultante est comprise entre 0 et la longueur de l'entity selection
|Paramètre|Type||Description|
|---------|--- |:---:|------|
-|Résultat|Booléen|<-|True if entity has just been created and not yet saved. Otherwise, False.|
+|Résultat|Boolean|<-|True if entity has just been created and not yet saved. Otherwise, False.|
@@ -1662,7 +1662,7 @@ Retourne :
|Paramètre|Type||Description|
|---------|--- |:---:|------|
-|Résultat|Booléen|<-|True if at least one entity attribute has been modified and not yet saved, else False|
+|Résultat|Boolean|<-|True if at least one entity attribute has been modified and not yet saved, else False|
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/API/EntitySelectionClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/API/EntitySelectionClass.md
index 2658c00dffb1f9..a8ed3518f2429f 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-20/API/EntitySelectionClass.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/API/EntitySelectionClass.md
@@ -1237,7 +1237,7 @@ $info:=$persons.getRemoteContextAttributes()
|Paramètre|Type||Description|
|---------|--- |:---:|------|
-|Résultat|Booléen|<-|True if the entity selection is alterable, False otherwise|
+|Résultat|Boolean|<-|True if the entity selection is alterable, False otherwise|
@@ -1282,7 +1282,7 @@ Form.products.add(Form.product)
|Paramètre|Type||Description|
|---------|--- |:---:|------|
-|Résultat|Booléen|<-|True if the entity selection is ordered, False otherwise|
+|Résultat|Boolean|<-|True if the entity selection is ordered, False otherwise|
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/API/SessionClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/API/SessionClass.md
index d2e0b70cd8440d..e0d245d945bd2d 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-20/API/SessionClass.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/API/SessionClass.md
@@ -266,7 +266,7 @@ End if
|Paramètre|Type||Description|
|---------|--- |:---:|------|
-|Résultat|Booléen|<-|True if session is a Guest one, False otherwise|
+|Résultat|Boolean|<-|True if session is a Guest one, False otherwise|
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/Admin/data-collect.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/Admin/data-collect.md
index fbe2be68780f9e..839b8df217abde 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/Admin/data-collect.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/Admin/data-collect.md
@@ -3,7 +3,7 @@ id: data-collect
title: Collecte des données
---
-Pour nous aider à améliorer sans cesse nos produits, nous collectons automatiquement des données concernant les statistiques d'utilisation des applications 4D Server. Les données collectées sont transférées sans incidence sur l'expérience utilisateur. Aucune information personnelle n'est collectée. For more information on 4D policy regarding personal data protection, please visit [this page](https://us.4d.com/privacy-policy).
+Pour nous aider à améliorer sans cesse nos produits, nous collectons automatiquement des données concernant les statistiques d'utilisation des applications 4D Server. Les données collectées sont transférées sans incidence sur l'expérience utilisateur. Aucune information personnelle n'est collectée. Pour plus d'informations sur la politique de 4D en matière de protection des données personnelles, veuillez consulter [cette page](https://fr.4d.com/politique-de-protection-des-donnees-personnelles).
La section ci-dessous explique :
@@ -110,29 +110,29 @@ Certaines données sont également collectées à intervalles réguliers.
| restServer.executionTime | Number | Temps d'exécution CPU du serveur WEB REST |
| soapServer | Object | Objet contenant des informations sur le serveur SOAP |
| soapServer.bytesIn | Number | Octets reçus par le serveur SOAP |
-| soapServer.bytesOut | Number | Bytes sent by the SOAP server |
-| soapServer.hits | Number | Number of hits on the SOAP server |
-| soapServer.executionTime | Number | CPU execution time for the SOAP server |
+| soapServer.bytesOut | Number | Octets envoyés par le serveur SOAP |
+| soapServer.hits | Number | Nombre de hits du serveur SOAP |
+| soapServer.executionTime | Number | Temps d'exécution CPU du serveur SOAP |
| SQLBeginEndStatement | Number | Nombre d'utilisations de `Begin SQL` / `End SQL` |
| SQLLoginInternal | Number | Nombre d'appels à `SQL LOGIN` utilisant SQL_INTERNAL |
-| sqlServer | Object | Object containing SQL server information |
-| sqlServer.hits | Number | Number of SQL queries executed |
-| sqlServer.bytesIn | Number | Bytes received by the SQL engine |
-| sqlServer.bytesOut | Number | Bytes sent by the SQL engine |
-| sqlServer.executionTime | Number | CPU execution time for SQL queries |
+| sqlServer | Object | Objet contenant des informations sur le serveur SQL |
+| sqlServer.hits | Number | Nombre de requêtes SQL exécutées |
+| sqlServer.bytesIn | Number | Octets reçus par le moteur SQL |
+| sqlServer.bytesOut | Number | Octets envoyés par le moteur SQL |
+| sqlServer.executionTime | Number | Temps d'exécution CPU pour les requêtes SQL |
| usingQUICNetworkLayer | Boolean | True si la base de données utilise la couche réseau QUIC |
-| totalExecutionTime | Number | Total CPU execution time: sum of all request types |
-| totalRequests | Number | Total requests: sum of web, REST, SOAP, SQL, and internal traffic |
-| webServer | Object | Object containing Web server information |
-| webServer.bytesIn | Number | Bytes received by the Web server |
-| webServer.bytesOut | Number | Bytes sent by the Web server |
-| webServer.hits | Number | Number of hits on the Web server |
-| webServer.executionTime | Number | CPU execution time for the Web server |
-| webStaticServer | Object | Object containing the static Web server information |
-| webStaticServer.bytesIn | Number | Bytes received by the static Web server |
-| webStaticServer.bytesOut | Number | Bytes sent by the static Web server |
-| webStaticServer.hits | Number | Number of hits on the static Web server |
-| webStaticServer.executionTime | Number | CPU execution time for the static Web server |
+| totalExecutionTime | Number | Temps d'exécution total du CPU : somme de tous les types de requêtes |
+| totalRequests | Number | Total des requêtes : somme des requêtes web, REST, SOAP, SQL et du trafic interne |
+| webServer | Object | Objet contenant des informations sur le serveur Web |
+| webServer.bytesIn | Number | Octets reçus par le serveur Web |
+| webServer.bytesOut | Number | Octets envoyés par le serveur Web |
+| webServer.hits | Number | Nombre de hits du serveur Web |
+| webServer.executionTime | Number | Temps d'exécution CPU du serveur Web |
+| webStaticServer | Object | Objet contenant des informations sur le serveur Web statique |
+| webStaticServer.bytesIn | Number | Octets reçus par le serveur Web statique |
+| webStaticServer.bytesOut | Number | Octets envoyés par le serveur Web statique |
+| webStaticServer.hits | Number | Nombre de hits du serveur Web statique |
+| webStaticServer.executionTime | Number | Temps d'exécution CPU du serveur Web statique |
## Où sont-elles stockées et envoyées ?
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/Concepts/classes.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/Concepts/classes.md
index d247acbcb547ff..cfded42831d3e5 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/Concepts/classes.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/Concepts/classes.md
@@ -251,9 +251,9 @@ Dans le code de l'application, les fonctions de classes sont appelées comme des
- [`apply()`](API/FunctionClass.md#apply)
- [`call()`](API/FunctionClass.md#call)
-:::warning Note importante thread-safety
+:::warning Attention thread-safety
-Si une fonction de classe n'est pas thread-safe et qu'elle est appelée par une méthode avec l'attribut "Peut être exécutée dans un process preémptif" :
+Si une fonction de classe n'est pas thread-safe et qu'elle est appelée par une méthode ayant l'attribut "Peut être exécutée dans un process préemptif" :
- le compilateur ne génère pas d'erreur (ce qui est différent par rapport aux méthodes standard),
- une erreur est déclenchée par 4D uniquement au moment de l'exécution.
@@ -276,7 +276,7 @@ Si le type n'est pas fourni, le paramètre sera défini comme `Variant`.
#### Valeur retournée
-Vous déclarez le paramètre de retour d'une fonction (optionnel) en ajoutant une flèche (`->`) et la définition du paramètre de retour après la liste des paramètres d'entrée, ou les deux points (`:`) et le tye de paramètre de retour uniquement. Par exemple :
+Vous déclarez le paramètre de retour d'une fonction (optionnel) en ajoutant une flèche (`->`) et la définition du paramètre de retour après la liste des paramètres d'entrée, ou les deux points (`:`) et le type de paramètre de retour uniquement. Par exemple :
```4d
Function add($x : Variant; $y : Integer)->$result : Integer
@@ -383,7 +383,7 @@ $o:=cs.MyClass.new("John";42)
// $o = {"name" : "John" ; "age":42}
```
-### `propriété`
+### `property`
#### Syntaxe
@@ -751,7 +751,7 @@ Les singletons sont utiles pour définir des valeurs qui doivent être disponibl
- un **singleton process** a une instance unique pour le process dans lequel il est instancié,
- un **singleton partagé** a une instance unique pour tous les process sur la machine.
-- une **singleton session** est un singleton partagé, mais avec une instance unique pour tous les process de la [session](../API/SessionClass.md). Les singletons de session sont partagés au sein d'une session entière mais varient d'une session à l'autre. Dans le contexte d'un client-serveur ou d'une application web, les singletons de session permettent de créer et d'utiliser une instance différente pour chaque session, et donc pour chaque utilisateur. Les singletons de session sont particulièrement appropriés pour les [applications Qodly](https://developer.4d.com/qodly/).
+- un **singleton session** est un singleton partagé, mais avec une instance unique pour tous les process de la [session](../API/SessionClass.md). Les singletons de session sont partagés au sein d'une même session mais varient d'une session à l'autre. Dans le contexte d'une application client-serveur ou web, les singletons de session permettent de créer et d'utiliser une instance différente pour chaque session, et donc pour chaque utilisateur. Les singletons de session sont particulièrement appropriés pour les [applications Qodly](https://developer.4d.com/qodly/).
:::info
@@ -794,7 +794,7 @@ La propriété [`.isSessionSingleton`](../API/ClassClass.md#issessionsingleton)
### Fonctions singleton exposées
-Les fonctions singleton partagées et de session prennent en charge le mot-clé [`exposed`](../ORDA/ordaClasses.md#exposed-vs-non-exposed-functions). Une fonction singleton exposée peut être directement appelée par des requêtes REST. Cette fonction est utile pour la conception de [pages Qodly appelant des fonctions 4D](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#class-functions).
+Les fonctions singleton partagées et de session prennent en charge le mot-clé [`exposed`](../ORDA/ordaClasses.md#exposed-vs-non-exposed-functions). Une fonction singleton exposée peut être directement appelée par des requêtes REST. Cette fonctionnalié est utile pour la conception de [pages Qodly appelant des fonctions 4D](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#class-functions).
### Exemples
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/ViewPro/commands/vp-export-document.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/ViewPro/commands/vp-export-document.md
index dab36a02ca4dbb..a2112102465162 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/ViewPro/commands/vp-export-document.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/ViewPro/commands/vp-export-document.md
@@ -53,7 +53,7 @@ Le paramètre optionnel *paramObj* vous permet de définir plusieurs propriété
| -------------------- | ------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| format | | text | (optional) When present, designates the exported file format: ".4vp" (default), ".csv", ".xlsx", ".pdf", or ".sjs". You can use the following constants:`vk 4D View Pro format``vk csv format``vk MS Excel format``vk pdf format``vk sjs format`4D adds the appropriate extension to the file name if needed. If the format specified doesn't correspond with the extension in *filePath*, it will be added to the end of *filePath*. If a format is not specified and no extension is provided in *filePath*, the default file format is used. |
| password | | text | Microsoft Excel uniquement (optionnel) - Mot de passe utilisé pour protéger le document MS Excel |
-| formula | | 4D.Function | Méthode callback à lancer lorsque l'export est terminé. L'utilisation d'une méthode callback est nécessaire lorsque l'export est asynchrone (ce qui est le cas pour les formats PDF et Excel) si vous avez besoin d'un code à exécuter après l'export. The callback method must be passed with the [`Formula`](../../commands/formula.md) command. See [Passing a callback method (formula)](#passing-a-callback-method-formula). |
+| formula | | 4D.Function | Méthode callback à lancer lorsque l'export est terminé. L'utilisation d'une méthode callback est nécessaire lorsque l'export est asynchrone (ce qui est le cas pour les formats PDF et Excel) si vous avez besoin d'un code à exécuter après l'export. La méthode callback doit être passée avec la commande [`Formula`](../../commands/formula.md). See [Passing a callback method (formula)](#passing-a-callback-method-formula). |
| valuesOnly | | boolean | Précise que seules les valeurs issues de formules (le cas échéant) seront exportées. |
| includeFormatInfo | | boolean | True pour inclure les informations de formatage, sinon False (True par défaut). Les informations de formatage sont utiles dans certains cas, par exemple pour un export en SVG. On the other hand, setting this property to **false** allows reducing export time. |
| includeBindingSource | | boolean | 4DVP et Microsoft Excel uniquement. True (par défaut) pour exporter les valeurs du contexte de données courant en tant que valeurs de cellule dans le document exporté (les contextes de données eux-mêmes ne sont pas exportés). Sinon Faux. La liaison de cellule est toujours exportée. For data context and cell binding management, see [VP SET DATA CONTEXT](vp-set-data-context.md) and [VP SET BINDING PATH](vp-set-binding-path.md). |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/WritePro/commands/wp-export-variable.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/WritePro/commands/wp-export-variable.md
index 4efca787e359ec..739e5270a120ea 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/WritePro/commands/wp-export-variable.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/WritePro/commands/wp-export-variable.md
@@ -164,4 +164,4 @@ Pour exporter la première page d'un 4D Write Pro en SVG dans une variable Texte
[Blog post - 4D Write Pro : Export au format PDF avec pièces jointes](https://blog.4d.com/fr/4d-write-pro-export-to-pdf-with-enclosures)
[Exporter aux formats HTML et MIME HTML](../user-legacy/exporting-to-html-and-mime-html-formats.md)
[Importer et exporter au format docx](../user-legacy/importing-and-exporting-in-docx-format.md)
-[WP EXPORT DOCUMENT](../commands/wp-export-document)
+[WP EXPORT DOCUMENT](../commands/wp-export-document)
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/commands/compile-project.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/commands/compile-project.md
index 12fb41a081434a..3973f4a9972eb0 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/commands/compile-project.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R2/commands/compile-project.md
@@ -88,7 +88,7 @@ L'objet renvoyé par **Compile project** possède jusqu'à trois propriétés :
| \[\].code | Object | [objet code](#code-object) |
| \[\].line | Number | Numéro de ligne de l'erreur dans le code. Pour les méthodes de classe, le numéro de ligne dans la fonction |
| \[\].lineInFile | Number | Numéro de ligne dans le fichier (différent de "line" pour les méthodes de classe, et prend en compte la ligne de préfixe %attributes) |
-| symbols | Object | **Disponible uniquement si l'option generateSymbols est fixée à True :** |
+| symboles | Object | **Disponible uniquement si l'option generateSymbols est fixée à True :** |
| symbols.interprocessVariables | Object | Liste de toutes les variables interprocessus |
| symbols.interprocessVariables.variables | Collection | Collection d'[objets variables](#objets-variables) |
| symbols.interprocessVariables.size | Number | |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
index ff77506534990b..f9cfe82e6ba438 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
@@ -45,7 +45,7 @@ Les objets IMAP Transporter sont instanciés avec la commande [IMAP New transpor
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
@@ -53,7 +53,7 @@ Les objets IMAP Transporter sont instanciés avec la commande [IMAP New transpor
| Paramètres | Type | | Description |
| ---------- | ---------------------------------- | :-------------------------: | -------------------------------------------------- |
-| paramètres | Object | -> | Mail server configuration |
+| paramètres | Object | -> | Configuration du serveur de messagerie |
| Résultat | 4D.IMAPTransporter | <- | [Objet transporteur IMAP](#objet-imap-transporter) |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Admin/data-collect.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Admin/data-collect.md
index 9a0c9f680e1978..839b8df217abde 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Admin/data-collect.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Admin/data-collect.md
@@ -110,29 +110,29 @@ Certaines données sont également collectées à intervalles réguliers.
| restServer.executionTime | Number | Temps d'exécution CPU du serveur WEB REST |
| soapServer | Object | Objet contenant des informations sur le serveur SOAP |
| soapServer.bytesIn | Number | Octets reçus par le serveur SOAP |
-| soapServer.bytesOut | Number | Bytes sent by the SOAP server |
-| soapServer.hits | Number | Number of hits on the SOAP server |
-| soapServer.executionTime | Number | CPU execution time for the SOAP server |
+| soapServer.bytesOut | Number | Octets envoyés par le serveur SOAP |
+| soapServer.hits | Number | Nombre de hits du serveur SOAP |
+| soapServer.executionTime | Number | Temps d'exécution CPU du serveur SOAP |
| SQLBeginEndStatement | Number | Nombre d'utilisations de `Begin SQL` / `End SQL` |
| SQLLoginInternal | Number | Nombre d'appels à `SQL LOGIN` utilisant SQL_INTERNAL |
-| sqlServer | Object | Object containing SQL server information |
-| sqlServer.hits | Number | Number of SQL queries executed |
-| sqlServer.bytesIn | Number | Bytes received by the SQL engine |
-| sqlServer.bytesOut | Number | Bytes sent by the SQL engine |
-| sqlServer.executionTime | Number | CPU execution time for SQL queries |
+| sqlServer | Object | Objet contenant des informations sur le serveur SQL |
+| sqlServer.hits | Number | Nombre de requêtes SQL exécutées |
+| sqlServer.bytesIn | Number | Octets reçus par le moteur SQL |
+| sqlServer.bytesOut | Number | Octets envoyés par le moteur SQL |
+| sqlServer.executionTime | Number | Temps d'exécution CPU pour les requêtes SQL |
| usingQUICNetworkLayer | Boolean | True si la base de données utilise la couche réseau QUIC |
-| totalExecutionTime | Number | Total CPU execution time: sum of all request types |
-| totalRequests | Number | Total requests: sum of web, REST, SOAP, SQL, and internal traffic |
-| webServer | Object | Object containing Web server information |
-| webServer.bytesIn | Number | Bytes received by the Web server |
-| webServer.bytesOut | Number | Bytes sent by the Web server |
-| webServer.hits | Number | Number of hits on the Web server |
-| webServer.executionTime | Number | CPU execution time for the Web server |
-| webStaticServer | Object | Object containing the static Web server information |
-| webStaticServer.bytesIn | Number | Bytes received by the static Web server |
-| webStaticServer.bytesOut | Number | Bytes sent by the static Web server |
-| webStaticServer.hits | Number | Number of hits on the static Web server |
-| webStaticServer.executionTime | Number | CPU execution time for the static Web server |
+| totalExecutionTime | Number | Temps d'exécution total du CPU : somme de tous les types de requêtes |
+| totalRequests | Number | Total des requêtes : somme des requêtes web, REST, SOAP, SQL et du trafic interne |
+| webServer | Object | Objet contenant des informations sur le serveur Web |
+| webServer.bytesIn | Number | Octets reçus par le serveur Web |
+| webServer.bytesOut | Number | Octets envoyés par le serveur Web |
+| webServer.hits | Number | Nombre de hits du serveur Web |
+| webServer.executionTime | Number | Temps d'exécution CPU du serveur Web |
+| webStaticServer | Object | Objet contenant des informations sur le serveur Web statique |
+| webStaticServer.bytesIn | Number | Octets reçus par le serveur Web statique |
+| webStaticServer.bytesOut | Number | Octets envoyés par le serveur Web statique |
+| webStaticServer.hits | Number | Nombre de hits du serveur Web statique |
+| webStaticServer.executionTime | Number | Temps d'exécution CPU du serveur Web statique |
## Où sont-elles stockées et envoyées ?
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Concepts/classes.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Concepts/classes.md
index 0cfedb1cb04490..17e4dc9b7f2fc8 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Concepts/classes.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Concepts/classes.md
@@ -41,9 +41,9 @@ Les fichiers de classe sont gérés via l'Explorateur 4D (voir [Créer des class
#### Supprimer une classe
-To delete an existing class, select it in the Explorer and click  or choose **Move to Trash** from the contextual menu.
+Pour supprimer une classe existante, sélectionnez-la dans l'explorateur et cliquez sur  ou choisissez **Déplacer vers la corbeille** dans le menu contextuel.
-You can also remove the .4dm class file from the "Classes" folder on your disk.
+Vous pouvez également supprimer le fichier de classe .4dm du dossier "Classes" de votre disque.
## Class stores
@@ -162,7 +162,7 @@ Les fonctions de classe sont des propriétés spécifiques de la classe. Ce sont
Si les fonctions sont déclarées dans une [classe partagée](#shared-classes), vous pouvez utiliser le mot-clé `shared` avec elles afin qu'elles puissent être appelées sans [structure `Use...End use`](shared.md#useend-use). Pour plus d'informations, consultez le paragraphe sur les [fonctions partagées](#shared-functions) ci-dessous.
-In the context of a client/server application, the `local` or `server` keyword allows you to specify on which machine the function must be executed. These keywords can only be used with ORDA data model functions and shared/session singleton functions. For more information, refer to the [local and server functions](#local-and-server) paragraph below.
+Dans le contexte d'une application client/serveur, le mot-clé `local` ou `server` permet de spécifier sur quelle machine la fonction doit être exécutée. Ces mots-clés ne peuvent être utilisés qu'avec les fonctions du modèle de données ORDA et les fonctions singleton partagées/session. Pour plus d'informations, reportez-vous au paragraphe [fonctions locales et serveur](#local-and-server) ci-dessous.
Le nom de la fonction doit être conforme aux [règles de nommage des objets](Concepts/identifiers.md#object-properties).
@@ -204,9 +204,9 @@ Dans le code de l'application, les fonctions de classes sont appelées comme des
- [`apply()`](API/FunctionClass.md#apply)
- [`call()`](API/FunctionClass.md#call)
-:::warning Note importante thread-safety
+:::warning Attention thread-safety
-Si une fonction de classe n'est pas thread-safe et qu'elle est appelée par une méthode avec l'attribut "Peut être exécutée dans un process preémptif" :
+Si une fonction de classe n'est pas thread-safe et qu'elle est appelée par une méthode ayant l'attribut "Peut être exécutée dans un process préemptif" :
- le compilateur ne génère pas d'erreur (ce qui est différent par rapport aux méthodes standard),
- une erreur est déclenchée par 4D uniquement au moment de l'exécution.
@@ -229,7 +229,7 @@ Si le type n'est pas fourni, le paramètre sera défini comme `Variant`.
#### Valeur retournée
-Vous déclarez le paramètre de retour d'une fonction (optionnel) en ajoutant une flèche (`->`) et la définition du paramètre de retour après la liste des paramètres d'entrée, ou les deux points (`:`) et le tye de paramètre de retour uniquement. Par exemple :
+Vous déclarez le paramètre de retour d'une fonction (optionnel) en ajoutant une flèche (`->`) et la définition du paramètre de retour après la liste des paramètres d'entrée, ou les deux points (`:`) et le type de paramètre de retour uniquement. Par exemple :
```4d
Function add($x : Variant; $y : Integer)->$result : Integer
@@ -336,7 +336,7 @@ $o:=cs.MyClass.new("John";42)
// $o = {"name" : "John" ; "age":42}
```
-### `propriété`
+### `property`
#### Syntaxe
@@ -488,7 +488,7 @@ Lorsque les deux fonctions sont définies, la propriété calculée est en **lec
Si une fonction définie à l'intérieur d'une classe partagée modifie les objets de la classe, elle devrait appeler la structure [`Use...End use`](shared.md#useend-use) pour protéger l'accès aux objets partagés. Pour plus d'informations, consultez le paragraphe sur les [fonctions partagées](#shared-functions) ci-dessous.
-In the context of a client/server application, the `local` or `server` keyword allows you to specify on which machine the function must be executed. These keywords can only be used with ORDA data model functions and shared/session singleton functions. For more information, refer to the [local and server functions](#local-and-server) paragraph below.
+Dans le contexte d'une application client/serveur, le mot-clé `local` ou `server` permet de spécifier sur quelle machine la fonction doit être exécutée. Ces mots-clés ne peuvent être utilisés qu'avec les fonctions du modèle de données ORDA et les fonctions singleton partagées/session. Pour plus d'informations, reportez-vous au paragraphe [fonctions locales et serveur](#local-and-server) ci-dessous.
Le type de la propriété calculée est défini par la déclaration de type `$return` du *getter*. Il peut s'agir de n'importe quel [type de propriété valide](dt_object.md).
@@ -702,7 +702,7 @@ Les singletons sont utiles pour définir des valeurs qui doivent être disponibl
- un **singleton process** a une instance unique pour le process dans lequel il est instancié,
- un **singleton partagé** a une instance unique pour tous les process sur la machine.
-- une **singleton session** est un singleton partagé, mais avec une instance unique pour tous les process de la [session](../API/SessionClass.md). Les singletons de session sont partagés au sein d'une session entière mais varient d'une session à l'autre. Dans le contexte d'un client-serveur ou d'une application web, les singletons de session permettent de créer et d'utiliser une instance différente pour chaque session, et donc pour chaque utilisateur. Les singletons de session sont particulièrement appropriés pour les [applications Qodly](https://developer.4d.com/qodly/).
+- un **singleton session** est un singleton partagé, mais avec une instance unique pour tous les process de la [session](../API/SessionClass.md). Les singletons de session sont partagés au sein d'une même session mais varient d'une session à l'autre. Dans le contexte d'une application client-serveur ou web, les singletons de session permettent de créer et d'utiliser une instance différente pour chaque session, et donc pour chaque utilisateur. Les singletons de session sont particulièrement appropriés pour les [applications Qodly](https://developer.4d.com/qodly/).
:::info
@@ -745,7 +745,7 @@ La propriété [`.isSessionSingleton`](../API/ClassClass.md#issessionsingleton)
### Fonctions singleton exposées
-Les fonctions singleton partagées et de session prennent en charge le mot-clé [`exposed`](../ORDA/ordaClasses.md#exposed-vs-non-exposed-functions). Une fonction singleton exposée peut être directement appelée par des requêtes REST. Cette fonction est utile pour la conception de [pages Qodly appelant des fonctions 4D](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#class-functions).
+Les fonctions singleton partagées et de session prennent en charge le mot-clé [`exposed`](../ORDA/ordaClasses.md#exposed-vs-non-exposed-functions). Une fonction singleton exposée peut être directement appelée par des requêtes REST. Cette fonctionnalié est utile pour la conception de [pages Qodly appelant des fonctions 4D](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#class-functions).
### Exemples
@@ -839,68 +839,68 @@ $myList := cs.ItemInventory.me.itemList
:::tip Articles de blog sur le sujet
-[Singletons in 4D](https://blog.4d.com/singletons-in-4d)
-[Session Singletons](https://blog.4d.com/introducing-session-singletons)
+[Singletons dans 4D](https://blog.4d.com/singletons-in-4d)
+[Présentation des singletons de session](https://blog.4d.com/introducing-session-singletons)
:::
-## `local` and `server`
+## `local` et `server`
-In [client/server architecture](../Desktop/clientServer.md), `local` and `server` keywords allow you to specify where you want the function to be executed: client-side, or server-side. Controlling the execution location is useful for performance reasons or to implement business logic features.
+Dans [l'architecture client/serveur](../Desktop/clientServer.md), les mots-clés `local` et `server` vous permettent de spécifier où vous voulez que la fonction soit exécutée : côté client ou côté serveur. Le contrôle de l'emplacement d'exécution est utile pour des raisons de performance ou pour la mise en de fonctions métier logiques.
La syntaxe formelle est la suivante :
```4d
-// declare a function to execute on a client in client/server
+// déclarer une fonction à exécuter sur un client dans le cadre du client/serveur
local Function
```
```4d
-// declare a function to execute on the server in client/server
+// déclarer une fonction à exécuter sur le serveur en client/serveur
server Function
```
-`local` and `server` keywords are only available for the functions of the following classes:
+Les mots-clés `local` et `server` ne sont disponibles que pour les fonctions des classes suivantes :
-- [ORDA data model](../ORDA/ordaClasses.md) classes
-- [shared or session singleton](#singleton-classes) classes.
+- [Modèle de données ORDA](../ORDA/ordaClasses.md) classes
+- classes [singleton partagées ou de session](#singleton-classes).
:::tip Article(s) de blog sur le sujet
-[A new way to execute business logic on the server](https://blog.4d.com/a-new-way-to-execute-business-logic-on-the-server)
+[Une nouvelle façon d'exécuter la logique commerciale sur le serveur](https://blog.4d.com/a-new-way-to-execute-business-logic-on-the-server)
:::
### Vue d’ensemble
-Supported functions have a **default execution location** when no location keyword is used. You can nevertheless insert a `local` or `server` keyword to modify the execution location, or to make the code more explicit.
+Les fonctions prises en charge ont un **emplacement d'exécution par défaut** lorsqu'aucun mot-clé d'emplacement n'est utilisé. Vous pouvez néanmoins insérer un mot-clé `local` ou `server` pour modifier le lieu d'exécution, ou pour rendre le code plus explicite.
-| Supported functions | Default execution | with `local` keyword | with `server` keyword |
-| ------------------------------------------------- | ----------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [ORDA data model](../ORDA/ordaClasses.md) | on Server | The function is executed on the client if called on the client | |
-| [Shared or session singleton](#singleton-classes) | Local | | The function is executed on the server on the server instance of the singleton.
If there is no instance of the singleton on the server, it is created. |
+| Fonctions prises en charge | Exécution par défaut | avec le mot-clé `local` | avec le mot-clé `server` |
+| ----------------------------------------------------- | -------------------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [Modèle de données ORDA](../ORDA/ordaClasses.md) | sur le serveur | La fonction est exécutée sur le client si elle est appelée sur le client | |
+| [Singleton partagé ou de session](#singleton-classes) | Local | | La fonction est exécutée sur le serveur sur l'instance serveur du singleton.
S'il n'y a aucune instance du singleton sur le serveur, elle est créée. |
-If `local` and `server` keywords are used in another context, an error is returned.
+Si les mots-clés `local` et `server` sont utilisés dans un autre contexte, une erreur est retournée.
:::note
-For a overall description of where code is actually executed in client/server, please refer to [this section](../Desktop/clientServer.md#code-execution-location).
+Pour une description globale des emplacements où le code est réellement exécuté en client/serveur, veuillez vous référer à [cette section](../Desktop/clientServer.md#code-execution-location).
::::
### `local`
-In a [client/server architecture](../Desktop/clientServer.md), the `local` keyword specifies that the function must be executed **on the machine from where it is called**.
+Dans l'[architecture client/serveur] (../Desktop/clientServer.md), le mot-clé `local` spécifie que la fonction doit être exécutée **sur la machine à partir de laquelle elle est appelée**.
:::note Rappel
-The `local` keyword is useless for [shared or session singleton functions](#singleton-classes), which are executed locally by default.
+Le mot-clé `local` est inutile pour les [fonctions singleton partagées ou de session](#singleton-classes), qui sont exécutées localement par défaut.
:::
-By default, [ORDA data model functions](../ORDA/ordaClasses.md) are executed on the server. Cela garantit généralement les meilleures performances puisque seuls la requête de fonction et le résultat sont envoyés sur le réseau. However, [for optimization reasons](../ORDA/client-server-optimization.md#using-the-local-keyword), you could want to execute a data model function on client. You can then use the `local` keyword.
+Par défaut, les [fonctions du modèle de données ORDA](../ORDA/ordaClasses.md) sont exécutées sur le serveur. Cela garantit généralement les meilleures performances puisque seuls la requête de fonction et le résultat sont envoyés sur le réseau. Cependant, [pour des raisons d'optimisation](../ORDA/client-server-optimization.md#using-the-local-keyword), vous pouvez vouloir exécuter une fonction de modèle de données sur le client. Vous pouvez alors utiliser le mot clé `local`.
-#### Example: Calculating age
+#### Exemple: Calcul de l'âge
Considérons une entité avec un attribut *birthDate*. Nous souhaitons définir une fonction `age()` qui serait appelée dans une list box. Cette fonction peut être exécutée sur le client, ce qui évite de déclencher une requête au serveur pour chaque ligne de la list box.
@@ -920,43 +920,43 @@ End if
### `server`
-In a [client/server architecture](../Desktop/clientServer.md), the `server` keyword specifies that the function must be executed **on the server side**.
+Dans l'[architecture client/serveur](../Desktop/clientServer.md), le mot-clé `server` spécifie que la fonction doit être exécutée **sur le serveur**.
:::note Rappel
-The `server` keyword is useless for [ORDA data model functions](../ORDA/ordaClasses.md), which are executed on the server by default.
+Le mot clé `server` est inutile avec les [fonctions du modèle de données ORDA](../ORDA/ordaClasses.md), qui sont exécutées sur le serveur par défaut.
:::
-`server` function parameters and result must be [**streamable**](./dt_object.md#streaming-support). For example, [4D.Datastore](../API/DataStoreClass.md), [File handle](../API/FileHandleClass.md), or [WebServer](../API/WebServerClass.md) are non-streamable classes but [4D.File](../API/FileClass.md) is streamable.
+Les paramètres et le résultat de la fonction `server` doivent être [**streamable**](./dt_object.md#streaming-support). Par exemple, [4D.Datastore](../API/DataStoreClass.md), [File handle](../API/FileHandleClass.md), ou [WebServer](../API/WebServerClass.md) sont des classes non streamables mais [4D.File](../API/FileClass.md) est streamable.
-Cette fonctionnalité est particulièrement utile dans le cadre des [sessions utilisateur à distance](../Desktop/sessions.md# remote-user-sessions), vous permettant d'implémenter la logique métier dans un [singleton de session](#shared-or-session-singleton-functions) afin de la partager entre tous les processus de la session, étendant ainsi les fonctionnalités de la commande [`Session`](../commands/session). In this case, you might want the relevant business logic to be executed **on the server** so that all the session information is gathered on the server.
+Cette fonctionnalité est particulièrement utile dans le cadre des [sessions utilisateur à distance](../Desktop/sessions.md# remote-user-sessions), vous permettant d'implémenter la logique métier dans un [singleton de session](#shared-or-session-singleton-functions) afin de la partager entre tous les processus de la session, étendant ainsi les fonctionnalités de la commande [`Session`](../commands/session). Dans ce cas, vous pourrez vouloir que la logique applicative soit exécutée **sur le serveur** afin que toutes les informations relatives à la session soient rassemblées sur le serveur.
-By default, shared or session singleton functions are executed locally. Adding the `server` keyword in the class function definition makes 4D use the singleton instance on the server. Note that this can result of an instantiation of the singleton on the server if no instance exists yet.
+Par défaut, les fonctions singleton partagées ou de session sont exécutées localement. L'ajout du mot-clé `server` dans la définition de la fonction de la classe permet à 4D d'utiliser l'instance singleton sur le serveur. Notez que cela peut entraîner l'instanciation du singleton sur le serveur s'il n'existe pas encore d'instance.
-For [sessions singletons](#singleton-classes), the function is executed on the server in the corresponding singleton instance, i.e. the instance of the singleton for the current session.
+Pour les [sessions singleton](#singleton-classes), la fonction est exécutée sur le serveur dans l'instance de singleton correspondante, c'est-à-dire l'instance de singleton pour la session courante.
:::note
-If you declare a `server Function` in a shared singleton, then:
+Si vous déclarez une `server Function` dans un singleton partagé puis :
-- you instantiate a singleton *S1* on the client (named *s1*),
-- you run *s1.function()* on the client.
+- vous instanciez un singleton *S1* sur le client (nommé *s1*),
+- vous exécutez *s1.function()* sur le client.
-If no instance of *S1* exists on the server at that moment, *S1* is instantiated on the server (the constructor is executed), and *function()* runs on that server instance. As a result, two instances of *S1* can coexist (client-side and server-side), with distinct property values. In this case, *s1.property* is always accessed locally. It cannot be accessed on the server, for example from server-side code using direct dot notation (an error is returned).
+Si aucune instance de *S1* n'existe sur le serveur à ce moment-là, *S1* est instancié sur le serveur (le constructeur est exécuté) et *function()* s'exécute sur cette instance de serveur. Par conséquent, deux instances de *S1* peuvent coexister (côté client et côté serveur), avec des valeurs de propriété distinctes. Dans ce cas, *s1.property* est toujours accessible localement. Il n'est pas possible d'y accéder sur le serveur, par exemple à partir de code côté serveur utilisant la notation à point directe (une erreur est renvoyée).
:::
-#### Example: Administration singleton
+#### Exemple : singleton Administration
-The *Administration* shared singleton has a "server" function running the [`Process activity`](../commands/process-activity) command. This singleton is instantiated on a remote 4D but the function returns the server activity on the server.
+Le singleton partagé *Administration* possède une fonction "server" qui exécute la commande [`Process activity`](../commands/process-activity). Ce singleton est instancié sur un 4D distant mais la fonction renvoie l'activité du serveur sur le serveur.
```4d
// Administration class
shared singleton Class constructor
- // This function is executed on the server
+ // Cette fonction est exécutée sur le serveur
server Function processActivity() : Object
return Process activity
@@ -965,29 +965,29 @@ Function localProcessActivity() : Object
return Process activity
```
-Code running on the client:
+Code s'exécutant sur le client :
```4d
var $localActivity; $serverActivity : Object
var $administration : cs.Administration
-// The Administration singleton is instantiated on the 4D Client
+// Le singleton Administration est instancié sur le client 4D
$administration:=cs.Administration.me
-// Get processes running on the remote 4D
+// Obtenir les process en cours d'exécution sur le serveur 4D distant
$localActivity:=$administration.localProcessActivity()
-// Get processes and sessions running on 4D Server
+// Obtenir les process et les sessions en cours d'exécution sur le serveur 4D
$serverActivity:=$administration.processActivity()
```
-#### Example: Session singleton
+#### Exemple: singleton de session
-You store your users in a Users table and handle a custom authentication. You use a session singleton for the authentication:
+Vous stockez vos utilisateurs dans une table Users et vous gérez une authentification personnalisée. Vous utilisez un singleton de session pour l'authentification :
```4d
-// UserSession session singleton class
+// Classe singleton session UserSession
server Function checkUser($credentials : Object) : Boolean
@@ -1009,7 +1009,7 @@ End if
return $result
```
-To provide the current user to 4D clients, the singleton exposes a user computed property got from the server:
+Pour fournir l'utilisateur courant aux clients 4D, le singleton expose une propriété calculée de l'utilisateur obtenue du serveur :
```4d
server Function get user() : cs.UsersEntity
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
index 34ae676fbd9aaf..cc3d5e57727ffa 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
@@ -439,36 +439,36 @@ Les conventions suivantes sont utilisées dans la documentation du langage 4D :
In the 4D language documentation, the following parameter types can be used.
-| Type | Définition | Examples of a 4D command using it |
-| ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| > , <, >=, <=, #, =, \\| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
-| any | A parameter that can accept any supported data type | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
-| Tableau | A variable containing a list of values of the same type. | ARRAY TEXT($arr;10) |
-| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
-| Blob | Binary large object used to store binary data. | BLOB TO DOCUMENT($blob;"file.bin") |
-| Boolean | A logical value: True or False. | If (OK=1) |
-| Boolean array | An array containing boolean values. | ARRAY BOOLEAN($flags;10) |
-| Class name (ex: 4D.File) | A reference to a class type used to create or manipulate class instances. | $file:=File("/RESOURCES/NovelCover1.jpg") |
-| Collection | An ordered list of values that can contain multiple types. | New collection("A";"B";"C") |
-| Date | A calendar date value. | $vDate:=Current date |
-| Date array | An array containing date values. | ARRAY DATE($dates;10) |
-| Expression | Can be anything | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
-| Champ | A reference to a field belonging to a table. | ORDER BY([Person];[Person]Name) |
-| Integer | A whole number without decimal part. | $Sel:=ds.Employee.newSelection(dk keep ordered) |
-| Integer array | An array containing integer values. | ARRAY INTEGER($numbers;10) |
-| Longint array | An array containing long integer values. | ARRAY LONGINT($values;10) |
-| Object array | An array containing objects. | ARRAY OBJECT($objects;10) |
-| Object | A structured data container composed of key/value pairs. | $entity.fromObject($o) |
-| Opérateur | Toujours \*. | QUERY([Person];[Person]Name="Smith";\*) |
-| Picture array | An array containing pictures. | ARRAY PICTURE($images;10) |
-| Picture | A graphical image value. | READ PICTURE FILE($pic;"image.png") |
-| Pointer array | An array containing pointers. | ARRAY POINTER($ptrs;10) |
-| Pointer | A reference to another variable, field, or object. | If(Is nil pointer($ptr)) |
-| Real array | An array containing real numbers. | ARRAY REAL($values;10) |
-| Real | A floating-point numeric value. | $vlResult:=Int(123.4) |
-| Table | A reference to a database table. | ALL RECORDS([Person]) |
-| Text | A sequence of characters representing textual data. | ALERT("Hello world") |
-| Text array | An array containing text values. | ARRAY TEXT($names;10) |
-| Time | A time value representing hours, minutes, and seconds. | Heure courante |
-| Time array | An array containing time values. | ARRAY TIME($times;10) |
-| Variable | A writable variable of type "any" that can receive a value (assignable). | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
+| Type | Définition | Examples of a 4D command using it |
+| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| > , <, >=, <=, #, =, \| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
+| any | A parameter that can accept any supported data type | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
+| Tableau | A variable containing a list of values of the same type. | ARRAY TEXT($arr;10) |
+| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
+| Blob | Binary large object used to store binary data. | BLOB TO DOCUMENT($blob;"file.bin") |
+| Boolean | A logical value: True or False. | If (OK=1) |
+| Boolean array | An array containing boolean values. | ARRAY BOOLEAN($flags;10) |
+| Class name (ex: 4D.File) | A reference to a class type used to create or manipulate class instances. | $file:=File("/RESOURCES/NovelCover1.jpg") |
+| Collection | An ordered list of values that can contain multiple types. | New collection("A";"B";"C") |
+| Date | A calendar date value. | $vDate:=Current date |
+| Date array | An array containing date values. | ARRAY DATE($dates;10) |
+| Expression | Can be anything | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
+| Champ | A reference to a field belonging to a table. | ORDER BY([Person];[Person]Name) |
+| Integer | A whole number without decimal part. | $Sel:=ds.Employee.newSelection(dk keep ordered) |
+| Integer array | An array containing integer values. | ARRAY INTEGER($numbers;10) |
+| Longint array | An array containing long integer values. | ARRAY LONGINT($values;10) |
+| Object array | An array containing objects. | ARRAY OBJECT($objects;10) |
+| Object | A structured data container composed of key/value pairs. | $entity.fromObject($o) |
+| Opérateur | Toujours \*. | QUERY([Person];[Person]Name="Smith";\*) |
+| Picture array | An array containing pictures. | ARRAY PICTURE($images;10) |
+| Picture | A graphical image value. | READ PICTURE FILE($pic;"image.png") |
+| Pointer array | An array containing pointers. | ARRAY POINTER($ptrs;10) |
+| Pointer | A reference to another variable, field, or object. | If(Is nil pointer($ptr)) |
+| Real array | An array containing real numbers. | ARRAY REAL($values;10) |
+| Real | A floating-point numeric value. | $vlResult:=Int(123.4) |
+| Table | A reference to a database table. | ALL RECORDS([Person]) |
+| Text | A sequence of characters representing textual data. | ALERT("Hello world") |
+| Text array | An array containing text values. | ARRAY TEXT($names;10) |
+| Time | A time value representing hours, minutes, and seconds. | Heure courante |
+| Time array | An array containing time values. | ARRAY TIME($times;10) |
+| Variable | A writable variable of type "any" that can receive a value (assignable). | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Desktop/clientServer.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Desktop/clientServer.md
index 7e466148f4406b..28107fbb30b689 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Desktop/clientServer.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Desktop/clientServer.md
@@ -131,20 +131,20 @@ In a client/server application, it is important to know where your code will be
The following table summarizes where the code is executed by default and how to switch its execution location (if allowed). Note that **local** means that the code will be executed on the machine from where it is actually called.
-| Code | Default execution | How to switch |
-| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| [ORDA data model functions](../ORDA/ordaClasses.md) | server | use `local` keyword in function definition |
-| ORDA computed attribute functions [`get()`](../ORDA/ordaClasses.md#function-get-attributename), [`set()`](../ORDA/ordaClasses.md#function-set-attributename) | server | use `local` keyword in function definition |
-| ORDA computed attribute functions [`query()`](../ORDA/ordaClasses.md#function-query-attributename), [`orderBy()`](../ORDA/ordaClasses.md#function-orderby-attributename) | server | n/a |
-| ORDA event functions [(general)](../ORDA/orda-events.md) | server | n/a |
-| ORDA event function [`constructor()`](../ORDA/ordaClasses.md#class-constructor-1) | local | n/a |
-| ORDA event function [`event touched()`](../ORDA/orda-events.md#function-event-touched) | server | use `local` keyword in function definition |
-| [User class functions](../Concepts/classes.md#function) | local | n/a |
-| [Shared or session singleton function](../Concepts/classes.md#singleton-classes) | local | use `server` keyword in function definition |
-| Trigger | server | n/a |
-| Project method called from a client | client | check [**Execute on server** option](../Project/project-method-properties.md#execute-on-server). Le code est exécuté dans le processus jumeau du [processus de session utilisateur](./sessions.md#remote-user-sessions-remote-user-sessions) |
-| | | call [`Execute on server`](../commands/execute-on-server) command. Le code est exécuté dans la [session de procédures stockées] (./sessions.md#stored-procedure-sessions-stored-procedure-sessions) |
-| Project method called from a stored procedure on the server | server | call [`EXECUTE ON CLIENT`](../commands/execute-on-client) command. The target client must have been [registered](../commands/register-client) |
-| Object method | local | n/a |
-| Database methods:- On Backup Shutdown
- On Backup Startup
- On Server Close Connection
- On Server Open Connection
- On Server Shutdown
- On Server Startup
- On SQL Authentication
- On Web Authentication
- On Web Connection
| server | n/a |
-| Database methods: | client | n/a |
+| Code | Exécution par défaut | How to switch |
+| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| [ORDA data model functions](../ORDA/ordaClasses.md) | server | use `local` keyword in function definition |
+| ORDA computed attribute functions [`get()`](../ORDA/ordaClasses.md#function-get-attributename), [`set()`](../ORDA/ordaClasses.md#function-set-attributename) | server | use `local` keyword in function definition |
+| ORDA computed attribute functions [`query()`](../ORDA/ordaClasses.md#function-query-attributename), [`orderBy()`](../ORDA/ordaClasses.md#function-orderby-attributename) | server | n/a |
+| ORDA event functions [(general)](../ORDA/orda-events.md) | server | n/a |
+| ORDA event function [`constructor()`](../ORDA/ordaClasses.md#class-constructor-1) | local | n/a |
+| ORDA event function [`event touched()`](../ORDA/orda-events.md#function-event-touched) | server | use `local` keyword in function definition |
+| [User class functions](../Concepts/classes.md#function) | local | n/a |
+| [Shared or session singleton function](../Concepts/classes.md#singleton-classes) | local | use `server` keyword in function definition |
+| Trigger | server | n/a |
+| Project method called from a client | client | check [**Execute on server** option](../Project/project-method-properties.md#execute-on-server). Le code est exécuté dans le processus jumeau du [processus de session utilisateur](./sessions.md#remote-user-sessions-remote-user-sessions) |
+| | | call [`Execute on server`](../commands/execute-on-server) command. Le code est exécuté dans la [session de procédures stockées] (./sessions.md#stored-procedure-sessions-stored-procedure-sessions) |
+| Project method called from a stored procedure on the server | server | call [`EXECUTE ON CLIENT`](../commands/execute-on-client) command. The target client must have been [registered](../commands/register-client) |
+| Object method | local | n/a |
+| Database methods:- On Backup Shutdown
- On Backup Startup
- On Server Close Connection
- On Server Open Connection
- On Server Shutdown
- On Server Startup
- On SQL Authentication
- On Web Authentication
- On Web Connection
| server | n/a |
+| Database methods: | client | n/a |
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
index 70672f53e6684a..a67cb3ec56d1cf 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
@@ -66,6 +66,47 @@ Vous pouvez ajouter ou modifier des formulaires 4D à l'aide des éléments suiv
}
```
+## Printing forms
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+### Print rendering engine
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+:::tip Article(s) de blog sur le sujet
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning Limitation
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
## Formulaire projet et formulaire table
Il existe deux catégories de formulaires :
@@ -78,7 +119,7 @@ En règle générale, vous sélectionnez la catégorie de formulaire lorsque vou
## Pages formulaire
-Chaque formulaire est composé d'au moins deux pages :
+Each form is made of at least two pages:
- une page 1 : une page principale, affichée par défaut
- une page 0 : une page de fond, dont le contenu est affiché sur une page sur deux.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
index 8ddf67afc744d5..4c4ed9c8ca9ba5 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
@@ -18,6 +18,7 @@ Lisez [**Les nouveautés de 4D 21 R3**](https://blog.4d.com/fr/whats-new-in-4d-2
- Nouvelle [page **IA**](../settings/ai.md) dans la boîte de dialogue des Propriétés, permettant de configurer des [alias de fournisseurs et de modèles](../aikit/provider-model-aliases.md) qui peuvent être appelés dans le code via le composant 4D AIKit.
- Composant 4D AIKit : nouvelle classe [Providers](../aikit/Classes/OpenAIProviders.md) pour instancier et gérer les [alias de fournisseurs et de modèles](../aikit/provider-model-aliases.md).
- Prise en charge du [mot-clé `server`](../Concepts/classes.md#server) pour les fonctions du modèle de données ORDA et les fonctions singleton partagées/session.
+- New [printing renderer](../FormEditor/forms.md#print-rendering-engine) for forms on Liquid glass and Fluent UI interfaces. New compatibility options to [enable the renderer on Classic interfaces](../FormEditor/forms.md#legacy-print-renderer).
- Dépendances : prise en charge des [composants stockés sur les dépôts GitLab](../Project/components.md#configuring-a-gitlab-repository).
- [**Liste des bugs corrigés**](https://bugs.4d.fr/fixedbugslist?version=21_R3) : liste de tous les bugs qui ont été corrigés dans 4D 21 R3.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
index 6be2333e80e6ee..c1a3aea3c26846 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
@@ -161,7 +161,7 @@ Here are the encoded characters:
| \< | %3C |
| \> | %3E |
| ? | %3F |
-| \\| | %7C |
+| \| | %7C |
| \\ | %5C |
| % | %25 |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAI.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAI.md
index 28c927f4594f94..5ebf2ed6230474 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAI.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAI.md
@@ -78,6 +78,6 @@ $client.files.create(...)
$client.model.lists(...)
```
-## Provider Model Aliases
+## Alias de modèles de fournisseurs
-The OpenAI client supports provider model aliases for easy multi-provider usage. See [Provider Model Aliases](../provider-model-aliases.md) for complete documentation.
+Le client OpenAI prend en charge les alias de modèles de fournisseurs pour faciliter l'utilisation de plusieurs fournisseurs. Voir [Alias de modèles de fournisseurs](../provider-model-aliases.md) pour une documentation complète.
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIChatCompletionsParameters.md
index c61ea26f7df83e..aa38bf8293f03b 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIChatCompletionsParameters.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIChatCompletionsParameters.md
@@ -13,20 +13,20 @@ La classe `OpenAIChatCompletionParameters` permet de gérer les paramètres requ
## Propriétés
-| Propriété | Type | Valeur par défaut | Description |
-| ----------------------- | ---------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `model` | Text | `"gpt-4o-mini"` | ID du modèle à utiliser. Supports [provider:model aliases](../provider-model-aliases.md) for multi-provider usage (e.g., `"openai:gpt-4o"`, `"anthropic:claude-3-opus"`). |
-| `stream` | Boolean | `False` | Indique si la progression partielle doit être retransmise en continu. Si cette option est activée, les tokens seront envoyés sous forme de données uniquement. Une formule de rappel est requise. |
-| `stream_options` | Object | `Null` | Propriété pour stream=True. Par exemple : `{include_usage: True}` |
-| `max_completion_tokens` | Integer | `0` | Le nombre maximum de tokens qui peuvent être générés dans la réponse. |
-| `n` | Integer | `1` | Nombre de réponses à générer pour chaque invite (prompt). |
-| `temperature` | Real | `-1` | Température d'échantillonnage à utiliser, entre 0 et 2. Les valeurs élevées rendent la sortie plus aléatoire, tandis que des valeurs faibles la rendent plus ciblée et déterministe. |
-| `store` | Boolean | `False` | Stocker ou non le résultat de cette requête de génération de réponse conversationnelle. |
-| `reasoning_effort` | Text | `Null` | Contraintes sur l'effort de raisonnement pour les modèles de raisonnement. Les valeurs actuellement prises en charge sont "low", "medium" et "high". |
-| `response_format` | Object | `Null` | Un objet spécifiant le format que le modèle doit produire. Compatible avec les sorties structurées. |
-| `tools` | Collection | `Null` | Une liste d'outils ([OpenAITool](OpenAITool.md)) que le modèle peut appeler. Seul le type "function" est pris en charge. |
-| `tool_choice` | Variant | `Null` | Contrôle l'outil (le cas échéant) qui est appelé par le modèle. Peut être `"none"`, `"auto"`, `"required"`, ou spécifier un outil particulier. |
-| `prediction` | Object | `Null` | Contenu de sortie statique, tel que le contenu d'un fichier texte en cours de régénération. |
+| Propriété | Type | Valeur par défaut | Description |
+| ----------------------- | ---------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `model` | Text | `"gpt-4o-mini"` | ID du modèle à utiliser. Prend en charge [provider:model aliases](../provider-model-aliases.md) pour une utilisation multi-fournisseurs (par exemple, `"openai:gpt-4o"`, `"anthropic:claude-3-opus"`). |
+| `stream` | Boolean | `False` | Indique si la progression partielle doit être retransmise en continu. Si cette option est activée, les tokens seront envoyés sous forme de données uniquement. Une formule de rappel est requise. |
+| `stream_options` | Object | `Null` | Propriété pour stream=True. Par exemple : `{include_usage: True}` |
+| `max_completion_tokens` | Integer | `0` | Le nombre maximum de tokens qui peuvent être générés dans la réponse. |
+| `n` | Integer | `1` | Nombre de réponses à générer pour chaque invite (prompt). |
+| `temperature` | Real | `-1` | Température d'échantillonnage à utiliser, entre 0 et 2. Les valeurs élevées rendent la sortie plus aléatoire, tandis que des valeurs faibles la rendent plus ciblée et déterministe. |
+| `store` | Boolean | `False` | Stocker ou non le résultat de cette requête de génération de réponse conversationnelle. |
+| `reasoning_effort` | Text | `Null` | Contraintes sur l'effort de raisonnement pour les modèles de raisonnement. Les valeurs actuellement prises en charge sont "low", "medium" et "high". |
+| `response_format` | Object | `Null` | Un objet spécifiant le format que le modèle doit produire. Compatible avec les sorties structurées. |
+| `tools` | Collection | `Null` | Une liste d'outils ([OpenAITool](OpenAITool.md)) que le modèle peut appeler. Seul le type "function" est pris en charge. |
+| `tool_choice` | Variant | `Null` | Contrôle l'outil (le cas échéant) qui est appelé par le modèle. Peut être `"none"`, `"auto"`, `"required"`, ou spécifier un outil particulier. |
+| `prediction` | Object | `Null` | Contenu de sortie statique, tel que le contenu d'un fichier texte en cours de régénération. |
### Propriétés du callback asynchrone
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIEmbeddingsAPI.md
index 394f2c5140db1f..581ad8f6a177ea 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIEmbeddingsAPI.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIEmbeddingsAPI.md
@@ -17,12 +17,12 @@ https://platform.openai.com/docs/api-reference/embeddings
Crée une représentation vectorielle pour l'entrée, le modèle et les paramètres fournis.
-| Argument | Type | Description |
-| ------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| *input* | Text ou Collection de textes | L'entrée à vectoriser. |
-| *model* | Text | Le [modèle à utiliser](https://platform.openai.com/docs/guides/embeddings#embedding-models). Supports [provider:model aliases](../provider-model-aliases.md). |
-| *parameters* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | Les paramètres permettant de personnaliser la requête de représentations vectorielles. |
-| Résultat | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | Les représentations vectorielles |
+| Argument | Type | Description |
+| ------------ | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| *input* | Text ou Collection de textes | L'entrée à vectoriser. |
+| *model* | Text | Le [modèle à utiliser](https://platform.openai.com/docs/guides/embeddings#embedding-models). Prend en charge [provider:model aliases](../provider-model-aliases.md). |
+| *parameters* | [OpenAIEmbeddingsParameters](OpenAIEmbeddingsParameters.md) | Les paramètres permettant de personnaliser la requête de représentations vectorielles. |
+| Résultat | [OpenAIEmbeddingsResult](OpenAIEmbeddingsResult.md) | Les représentations vectorielles |
#### Exemples d'utilisation
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIImageParameters.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIImageParameters.md
index 68a2dc88e3dce5..c41bd344be9853 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIImageParameters.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIImageParameters.md
@@ -13,13 +13,13 @@ La classe `OpenAIImageParameters` permet de configurer et gérer les paramètres
## Propriétés
-| Nom de propriété | Type | Valeur par défaut | Description |
-| ----------------- | ------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `model` | Text | "dall-e-2" | Spécifie le modèle à utiliser pour la génération d'images. Supports [provider:model aliases](../provider-model-aliases.md). |
-| `n` | Integer | 1 | Le nombre d'images à générer (doit être compris entre 1 et 10 ; seul `n=1` est supporté pour `dall-e-3`). |
-| `size` | Text | "1024x1024" | La taille des images générées. Doit être conforme aux spécifications du modèle. |
-| `style` | Text | "" | Le style des images générées (doit être soit `vivid` soit `natural`). |
-| `response_format` | Text | "url" | Le format des images retournées. Doit être `url` ou `b64_json`. |
+| Nom de propriété | Type | Valeur par défaut | Description |
+| ----------------- | ------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `model` | Text | "dall-e-2" | Spécifie le modèle à utiliser pour la génération d'images. Prend en charge [provider:model aliases](../provider-model-aliases.md). |
+| `n` | Integer | 1 | Le nombre d'images à générer (doit être compris entre 1 et 10 ; seul `n=1` est supporté pour `dall-e-3`). |
+| `size` | Text | "1024x1024" | La taille des images générées. Doit être conforme aux spécifications du modèle. |
+| `style` | Text | "" | Le style des images générées (doit être soit `vivid` soit `natural`). |
+| `response_format` | Text | "url" | Le format des images retournées. Doit être `url` ou `b64_json`. |
## Voir également
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIProviders.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIProviders.md
index 4e714401f5c59c..382936177ed516 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIProviders.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/Classes/OpenAIProviders.md
@@ -7,20 +7,20 @@ title: OpenAIProviders
## Sommaire
-The `OpenAIProviders` class manages AI provider configurations by loading configuration and handling resolution of model strings in the `provider:model` format.
+La classe `OpenAIProviders` gère les configurations de fournisseurs d'IA en chargeant la configuration et en gérant la résolution des chaînes de modèles au format `provider:model`.
-For complete usage documentation, see [Provider Model Aliases](../provider-model-aliases.md).
+Pour une documentation complète sur son utilisation, voir [Alias de modèles de fournisseurs](../provider-model-aliases.md).
## Description
-This class enables multi-provider support by:
+Cette classe permet la prise en charge de plusieurs fournisseurs via :
-- Loading provider configurations from a single JSON file
-- Loading named model aliases that map to providers and model IDs
-- Resolving `provider:model` syntax to full API configurations
-- Resolving named model aliases by bare name to full provider + model configurations
+- le chargement des configurations de fournisseurs à partir d'un seul fichier JSON
+- le chargement des alias de modèles nommés correspondant à des fournisseurs et à des identifiants de modèles
+- la résolution de la syntaxe `provider:model` en configuration complète de l'API
+- la résolution des alias de modèles nommés depuis un nom simple en nom du fournisseur complet + les configurations du modèle
-The `OpenAI` class automatically loads provider configurations when instantiated.
+La classe `OpenAI` charge automatiquement les configurations des fournisseurs lors de son instanciation.
## Constructeur
@@ -28,38 +28,38 @@ The `OpenAI` class automatically loads provider configurations when instantiated
var $providers := cs.AIKit.OpenAIProviders.new()
```
-Creates a new instance that loads provider configuration from the `AIProviders.json` file (see [**Configuration Files**](../provider-model-aliases.md#configuration-files) in the "Provider Model Aliases" page for details on file locations and format).
+Crée une nouvelle instance qui charge la configuration du fournisseur à partir du fichier `AIProviders.json` (voir [**Fichiers de configuration**](../provider-model-aliases.md#configuration-files) dans la page "Alias de fournisseurs de modèles" pour plus de détails sur l'emplacement et le format des fichiers).
**Important:**
-- Only the first existing file is loaded. There is no merging of multiple files.
-- The configuration is read once at instantiation time. If the `AIProviders.json` file is modified afterward, those changes will not be reflected in the existing instance. You must create a new instance of `OpenAIProviders` to reload the updated configuration.
+- Seul le premier fichier existant est chargé. Il n'y a pas de fusion de plusieurs fichiers.
+- La configuration est lue une fois au moment de l'instanciation. Si le fichier `AIProviders.json` est modifié par la suite, ces changements ne seront pas reflétés dans l'instance existante. Vous devez créer une nouvelle instance de `OpenAIProviders` pour recharger la configuration mise à jour.
## Utilisation
-### Integration with OpenAI Class
+### Intégration avec la classe OpenAI
```4d
var $client := cs.AIKit.OpenAI.new()
-// Use model aliases with provider:model syntax
+// Utilisation d'alias de modèles avec syntaxe provider:model
var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"})
var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"})
var $result := $client.chat.completions.create($messages; {model: "local:llama3"})
```
-### Direct Provider Access
+### Accès direct aux fournisseurs
```4d
var $providers := cs.AIKit.OpenAIProviders.new()
-// Get a specific provider configuration
+// Obtenir une configuration de fournisseur spécifique
var $config := $providers.get("openai")
-// Returns: {baseURL: "...", apiKey: "...", modelAliases: [...], ...} or Null
+// Renvoie : {baseURL : "...", apiKey : "...", modelAliases : [...], ...} ou Null
-// Get all provider names
+// Obtenir tous les noms de fournisseurs
var $names := $providers.list()
-// Returns: ["openai", "anthropic", "mistral", "local"]
+// Renvoie : ["openai", "anthropic", "mistral", "local"]
```
## Fonctions
@@ -68,21 +68,21 @@ var $names := $providers.list()
**get**(*name* : Text) : Object
-Get a provider configuration by name.
+Obtenir la configuration d'un fournisseur par son nom.
-| Paramètres | Type | Description |
-| ---------- | ------ | ----------------------------------------------------- |
-| *name* | Text | The provider name |
-| Résultat | Object | Provider configuration object, or `Null` if not found |
+| Paramètres | Type | Description |
+| ---------- | ------ | ---------------------------------------------------------------------- |
+| *name* | Text | Le nom du fournisseur |
+| Résultat | Object | Objet de configuration du fournisseur, ou `Null` s'il n'est pas trouvé |
#### Exemple
```4d
var $config := $providers.get("openai")
If ($config # Null)
- // Use $config.baseURL, $config.apiKey, etc.
+ // Utiliser $config.baseURL, $config.apiKey, etc.
- // We could build a client with it
+ // Nous pourrions construire un client avec
var $client:=cs.AIKit.OpenAI.new($config)
End if
```
@@ -91,17 +91,17 @@ End if
**list**() : Collection
-Get all provider names.
+Obtenir les noms de tous les fournisseurs.
-| Paramètres | Type | Description |
-| ---------- | ---------- | ---------------------------- |
-| Résultat | Collection | Collection of provider names |
+| Paramètres | Type | Description |
+| ---------- | ---------- | ---------------------------------- |
+| Résultat | Collection | Collection de noms de fournisseurs |
#### Exemple
```4d
var $names := $providers.list()
-// Returns: ["openai", "anthropic", ...]
+// Retourne : ["openai", "anthropic", ...]
For each ($name; $names)
var $config := $providers.get($name)
@@ -112,75 +112,75 @@ End for each
**modelAliases**() : Collection
-Get all configured model aliases.
+Récupère tous les alias de modèle configurés.
-| Paramètres | Type | Description |
-| ---------- | ---------- | --------------------------------- |
-| Résultat | Collection | Collection of model alias objects |
+| Paramètres | Type | Description |
+| ---------- | ---------- | -------------------------------------- |
+| Résultat | Collection | Collection d'objets d'alias de modèles |
-Each object in the collection contains:
+Chaque objet de la collection contient :
-| Propriété | Type | Description |
-| ------------- | ---- | --------------------------------- |
-| `name` | Text | Model alias name |
-| `fournisseur` | Text | Provider name |
-| `model` | Text | Model ID to use with the provider |
+| Propriété | Type | Description |
+| ---------- | ---- | ------------------------------------------- |
+| `name` | Text | Nom de l'alias du modèle |
+| `provider` | Text | Nom du fournisseur |
+| `model` | Text | ID du modèle à utiliser avec le fournisseur |
#### Exemple
```4d
var $models := $providers.modelAliases()
-// Returns: [{name: "my-gpt", provider: "openai", model: "gpt-5.1"}, ...]
+// Renvoie : [{name: "my-gpt", provider: "openai", model: "gpt-5.1"}, ...]
For each ($model; $models)
// $m.name, $m.provider, $m.model
End for each
```
-## Model Resolution
+## Résolution du modèle
-Two syntaxes are supported for model resolution:
+Deux syntaxes sont prises en charge pour la résolution des modèles :
-### Provider alias (`provider:model`)
+### Alias de fournisseur (`provider:model`)
-Specify the provider and model name directly:
+Spécifie directement le nom du fournisseur et du modèle :
```4d
var $client := cs.AIKit.OpenAI.new()
$client.chat.completions.create($messages; {model: "openai:gpt-5.1"})
```
-This is resolved internally to:
+Résolution en interne :
-1. Split `"openai:gpt-5.1"` into provider=`"openai"` and model=`"gpt-5.1"`
-2. Look up the `"openai"` provider configuration
-3. Extract `baseURL` and `apiKey`
-4. Make the API request using the resolved configuration
+1. Séparation `"openai:gpt-5.1"` en provider=`"openai"` et model=`"gpt-5.1"`
+2. Recherche de la configuration du fournisseur `"openai"`
+3. Extraction de `baseURL` et `apiKey`
+4. Requête API effectuée en utilisant la configuration résolue
**Exemples :**
-- `"openai:gpt-5.1"` → Use OpenAI provider with gpt-5.1 model
-- `"anthropic:claude-3-opus"` → Use Anthropic provider with claude-3-opus
-- `"local:llama3"` → Use local provider with llama3 model
+- `"openai:gpt-5.1"` → Utiliser le fournisseur OpenAI avec le modèle gpt-5.1
+- `"anthropic:claude-3-opus"` → Utiliser le fournisseur Anthropic avec claude-3-opus
+- `"local:llama3"` → Utiliser un fournisseur local avec le modèle llama3
-### Model alias (bare name)
+### Alias de modèle (nom simple)
-Use a named model by its bare name from the `models` section of the configuration:
+Utilise un modèle déclaré par son nom simple dans la section `models` de la configuration :
```4d
var $client := cs.AIKit.OpenAI.new()
$client.chat.completions.create($messages; {model: ":my-gpt"})
```
-This is resolved internally to:
+Résolution en interne :
-1. Look up `"my-gpt"` in the `models` configuration
-2. Find its `provider` (e.g., `"openai"`) and `model` (e.g., `"gpt-5.1"`)
-3. Resolve the provider to get `baseURL` and `apiKey`
-4. Make the API request using the resolved configuration
+1. Recherche de `"my-gpt"` dans la configuration `models`
+2. Récupération de son `provider` (par exemple, `"openai"`) et de son `model` (par exemple, `"gpt-5.1"`)
+3. Résolution du fournisseur pour obtenir `baseURL` et `apiKey`
+4. Requête API effectuée en utilisant la configuration résolue
**Exemples :**
-- `"my-gpt"` → Use the model alias "my-gpt" (resolves to its configured provider and model)
-- `"my-embedding"` → Use the model alias "my-embedding" for embedding operations
+- `"my-gpt"` → Utiliser l'alias de modèle "my-gpt" (résolu par le fournisseur et le modèle configurés)
+- `"my-embedding"` → Utiliser l'alias de modèle "my-embedding" pour les opérations d'embedding
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/provider-model-aliases.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/provider-model-aliases.md
index 15dc100e3b12ba..0cecf0aec7697a 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/provider-model-aliases.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/aikit/provider-model-aliases.md
@@ -1,35 +1,35 @@
---
id: provider-model-aliases
-title: Provider & Model Aliases
+title: Alias de fournisseurs et de modèles
---
-# Provider & Model Aliases
+# Alias de fournisseurs et de modèles
-The OpenAI client supports provider and model aliases, allowing you to define provider configurations and named model aliases in JSON files and reference them using simple syntaxes.
+Le client OpenAI prend en charge les alias de fournisseurs et de modèles, ce qui vous permet de définir des configurations de fournisseurs et des alias de modèles nommés dans des fichiers JSON et de les référencer à l'aide de syntaxes simples.
## Vue d’ensemble
-Instead of hard-coding API endpoints and credentials in your code, you can:
+Au lieu de coder en dur les points de terminaison et les identifiants de l'API dans votre code, vous pouvez :
-- Define provider configurations in a JSON file
-- Use the `provider:model` syntax to specify a provider and model directly
-- Define named model aliases that map to a provider and a model ID
-- Use a named model alias by bare name (e.g., `my-gpt`)
-- Switch between providers (OpenAI, Anthropic, local Ollama, etc.) easily
+- Définir les configurations des fournisseurs dans un fichier JSON
+- Utiliser la syntaxe `provider:model` pour spécifier directement un fournisseur et un modèle
+- Définir des alias de modèles nommés qui correspondent à un fournisseur et à un identifiant de modèle
+- Utiliser l'alias d'un modèle nommé par son simple nom (par exemple, `my-gpt`)
+- Passer d'un fournisseur à l'autre (OpenAI, Anthropic, Ollama local, etc.) facilement
-## Configuration Files
+## Fichiers de configuration
-The client automatically loads provider configurations from the first existing file found (in priority order):
+Le client charge automatiquement les configurations du fournisseur à partir du premier fichier existant trouvé (par ordre de priorité) :
-| Priorité | Emplacement | File Path |
+| Priorité | Emplacement | Emplacement du fichier |
| ------------------------------------- | ----------- | ------------------------------------------------- |
| 1 (le plus élevé) | userData | `/Settings/AIProviders.json` |
| 2 | user | `/Settings/AIProviders.json` |
| 3 (le plus faible) | structure | `/SOURCES/AIProviders.json` |
-**Important:** Only the **first existing file** is loaded. There is no merging of multiple files.
+**Important:** Seul le **premier fichier existant** est chargé. Il n'y a pas de fusion de plusieurs fichiers.
-### Configuration File Format
+### Format du fichier de configuration
```json
{
@@ -50,23 +50,23 @@ The client automatically loads provider configurations from the first existing f
}
```
-### Provider Fields
+### Champs du fournisseur
-| Champ | Type | Obligatoire | Description |
-| -------------- | ---- | ----------- | -------------------------------------------------------------- |
-| `baseURL` | Text | Oui | API endpoint URL |
-| `apiKey` | Text | Non | API key value |
-| `organisation` | Text | Non | Organization ID (optional, OpenAI-specific) |
-| `project` | Text | Non | Project ID (optional, OpenAI-specific) |
+| Champ | Type | Obligatoire | Description |
+| -------------- | ---- | ----------- | ------------------------------------------------------------------------- |
+| `baseURL` | Text | Oui | URL du point de terminaison de l'API |
+| `apiKey` | Text | Non | Valeur de la clé API |
+| `organisation` | Text | Non | ID de l'organisation (facultatif, spécifique à OpenAI) |
+| `project` | Text | Non | ID du projet (facultatif, spécifique à OpenAI) |
-### Model Alias Fields
+### Champs d'alias de modèle
-| Champ | Type | Obligatoire | Description |
-| ------------- | ---- | ----------- | ------------------------------------------------------------------- |
-| `fournisseur` | Text | Oui | Name of the provider (must exist in `providers`) |
-| `model` | Text | Oui | Model ID used by the provider |
+| Champ | Type | Obligatoire | Description |
+| ---------- | ---- | ----------- | --------------------------------------------------------------------- |
+| `provider` | Text | Oui | Nom du fournisseur (doit exister dans `providers`) |
+| `model` | Text | Oui | ID du modèle utilisé par le fournisseur |
-### Example Configuration
+### Exemple de configuration
```json
{
@@ -103,25 +103,25 @@ The client automatically loads provider configurations from the first existing f
}
```
-## Usage in API Calls
+## Utilisation dans les appels d'API
-### Model Parameter Formats
+### Formats de paramétrage du modèle
-Two syntaxes are supported:
+Deux syntaxes sont prises en charge :
-| Syntaxe | Description |
-| --------------------- | ---------------------------------------------------------------------------------- |
-| `provider:model_name` | Provider alias — specify provider and model directly |
-| `:model_alias` | Model alias — reference a named model from the `models` configuration by bare name |
+| Syntaxe | Description |
+| --------------------- | ------------------------------------------------------------------------------------------ |
+| `provider:model_name` | Alias de fournisseur - spécifie directement le fournisseur et le modèle |
+| `:model_alias` | Alias de modèle — référence un modèle nommé de la configuration `models` par un nom simple |
-#### Provider alias syntax
+#### Syntaxe alias de fournisseur
-Use the `provider:model_name` syntax in any API call that accepts a model parameter:
+Utilisez la syntaxe `provider:model_name` dans tout appel d'API qui accepte un modèle en paramètre :
```4d
var $client := cs.AIKit.OpenAI.new()
-// Chat completions
+// Complétions de chat
var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"})
var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"})
var $result := $client.chat.completions.create($messages; {model: "local:llama3"})
@@ -130,131 +130,131 @@ var $result := $client.chat.completions.create($messages; {model: "local:llama3"
var $result := $client.embeddings.create("text"; "openai:text-embedding-3-small")
var $result := $client.embeddings.create("text"; "local:nomic-embed-text")
-// Image generation
+// Génération d'images
var $result := $client.images.generate("prompt"; {model: "openai:dall-e-3"})
```
-#### Model alias syntax
+#### Syntaxe alias de modèle
-Use a bare model name to reference a named model defined in the `models` section of the configuration file. The provider, model ID, and credentials are resolved automatically:
+Utilisez un nom de modèle simple pour référencer un modèle nommé défini dans la section `models` du fichier de configuration. Le fournisseur, l'ID du modèle et les informations d'identification sont résolus automatiquement :
```4d
var $client := cs.AIKit.OpenAI.new()
-// Use a named model alias
+// Utiliser un alias de modèle nommé
var $result := $client.chat.completions.create($messages; {model: ":my-gpt"})
var $result := $client.chat.completions.create($messages; {model: ":my-claude"})
-// Embeddings with a named model alias
+// Embeddings avec un alias de modèle nommé
var $result := $client.embeddings.create("text"; ":my-embedding")
```
-### How It Works
+### Comment ça marche
-#### Provider alias (`provider:model`)
+#### Alias de fournisseur (`provider:model`)
-When you use the `provider:model` syntax, the client automatically:
+Lorsque vous utilisez la syntaxe `provider:model`, le client automatiquement :
-1. **Parses** the model string to extract provider name and model name
- - Example: `"openai:gpt-5.1"` → provider=`"openai"`, model=`"gpt-5.1"`
+1. **analyse** la chaîne du modèle pour extraire le nom du fournisseur et le nom du modèle
+ - Exemple : `"openai:gpt-5.1"` → provider=`"openai"`, model=`"gpt-5.1"`
-2. **Looks up** the provider configuration from the loaded JSON file
- - Retrieves `baseURL`, `apiKey`, `organization`, `project`
+2. **recherche** la configuration du fournisseur à partir du fichier JSON chargé
+ - Récupère `baseURL`, `apiKey`, `organization`, `project`
-3. **Makes the API request** using the resolved configuration
- - Sends request to the provider's `baseURL` with the correct `apiKey`
+3. **effectue la requête API** en utilisant la configuration résolue
+ - Envoie une requête à la `baseURL` du fournisseur avec la `apiKey` correcte
-#### Model alias (bare name)
+#### Alias de modèle (nom simple)
-When you use a bare model name that matches a configured alias, the client automatically:
+Lorsque vous utilisez un nom de modèle simple qui correspond à un alias configuré, le client automatiquement :
-1. **Looks up** the model alias in the `models` section of the configuration
- - Example: `":my-gpt"` → finds entry with `provider: "openai"`, `model: "gpt-5.1"`
+1. **recherche** l'alias du modèle dans la section `models` de la configuration
+ - Exemple : `":my-gpt"` → trouve une entrée avec `provider : "openai"`, `model : "gpt-5.1"`
-2. **Resolves** the associated provider to get `baseURL` and `apiKey`
+2. **résoud** le fournisseur associé pour obtenir `baseURL` et `apiKey`
-3. **Makes the API request** using the provider's endpoint and the stored model ID
+3. **effectue la requête API** en utilisant le point de terminaison du fournisseur et l'ID du modèle stocké.
-### Using Plain Model Names
+### Utiliser des noms de modèles seuls
-If you specify a model name **without** a provider prefix or `:` prefix, the client uses the configuration from its constructor:
+Si vous spécifiez un nom de modèle **sans** préfixe de fournisseur ou avec un préfixe `:`, le client utilise la configuration de son constructeur :
```4d
-// Use constructor configuration
-var $client := cs.AIKit.OpenAI.new({apiKey: "sk-..."; baseURL: "https://api.openai.com/v1"})
-var $result := $client.chat.completions.create($messages; {model: "gpt-5.1"})
+// Utiliser la configuration du constructeur
+var $client := cs.AIKit.OpenAI.new({apiKey : "sk-..." ; baseURL : "https://api.openai.com/v1"})
+var $result := $client.chat.completions.create($messages; {model : "gpt-5.1"})
-// Override with provider alias
-var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-opus"})
+// Surcharge avec l'alias du fournisseur
+var $result := $client.chat.completions.create($messages; {model : "anthropic:claude-3-opus"})
-// Override with model alias (bare name)
-var $result := $client.chat.completions.create($messages; {model: ":my-gpt"})
+// Surcharge avec l'alias du modèle (nom simple)
+var $result := $client.chat.completions.create($messages; {model : ":my-gpt"})
```
## Exemples
-### Multi-Provider Chat Application
+### Application de chat multi-fournisseurs
```4d
var $client := cs.AIKit.OpenAI.new()
var $messages := []
-$messages.push({role: "user"; content: "What is the capital of France?"})
+$messages.push({role : "user" ; content : "Quelle est la capitale de la France ?"})
-// Try OpenAI
-var $result := $client.chat.completions.create($messages; {model: "openai:gpt-5.1"})
+// On essaie OpenAI
+var $result := $client.chat.completions.create($messages; {model : "openai:gpt-5.1"})
-// Try Anthropic
-var $result := $client.chat.completions.create($messages; {model: "anthropic:claude-3-5-sonnet"})
+// On essaie Anthropic
+var $result := $client.chat.completions.create($messages; {model : "anthropic:claude-3-5-sonnet"})
-// Try local Ollama
-var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"})
+// On essaie Ollama local
+var $result := $client.chat.completions.create($messages; {model : "local:llama3.2"})
```
-### Embeddings with Multiple Providers
+### Embeddings avec plusieurs fournisseurs
```4d
var $client := cs.AIKit.OpenAI.new()
var $text := "Hello world"
-// Use OpenAI embeddings
+// Utiliser les embeddings OpenAI
var $embedding1 := $client.embeddings.create($text; "openai:text-embedding-3-small")
-// Use local embeddings
+// Utiliser les embeddings locaux
var $embedding2 := $client.embeddings.create($text; "local:nomic-embed-text")
```
-## Configuration Management
+## Gestion des configurations
-Provider configurations can be managed through [4D Settings](https://developer.4d.com/docs/settings/ai) or by directly editing JSON files.
+Les configurations de fournisseurs peuvent être gérées via les [Paramètres de 4D](https://developer.4d.com/docs/settings/ai) ou en modifiant directement les fichiers JSON.
-**To add or modify providers:**
+**Pour ajouter ou modifier des fournisseurs :**
-1. Use 4D Settings interface (recommended), or
-2. Edit the appropriate JSON file (userData, user, or structure)
-3. Restart your application or create a new OpenAI client instance to load changes
+1. Utilisez l'interface des Paramètres 4D (recommandé), ou
+2. Modifiez le fichier JSON approprié (fichier données utilisateur, utilisateur ou structure)
+3. Redémarrez votre application ou créez une nouvelle instance de client OpenAI pour tenir compte des modifications.
-**Recommended file location:**
+**Emplacement du fichier recommandé :**
-- **For user-specific configs:** `/Settings/AIProviders.json`
-- **For application defaults:** `/SOURCES/AIProviders.json`
+- **Pour les configurations spécifiques à l'utilisateur :** `/Settings/AIProviders.json`
+- **Pour les valeurs par défaut de l'application :** `/SOURCES/AIProviders.json`
-### No Reload Capability
+### Pas de capacité de rechargement
-Once a client is instantiated, it cannot reload provider configurations. To pick up configuration changes:
+Une fois qu'un client est instancié, il ne peut pas recharger les configurations de fournisseurs. Pour prendre en compte les changements de configuration :
```4d
-// Configuration changed - create new client
+// Configuration modifiée - création d'un nouveau client
var $client := cs.AIKit.OpenAI.new()
```
-## Security Considerations
+## Considérations sur la sécurité
-When using 4D in client/server mode, it is **strongly recommended** to execute AI-related code on the server side to protect API tokens and credentials from exposure to client machines.
+Lors de l'utilisation de 4D en mode client/serveur, il est **fortement recommandé** d'exécuter le code lié à l'IA côté serveur afin de protéger les tokens et les informations d'identification de l'API de l'exposition aux machines clientes.
-## Common Use Cases
+## Scénarios d'application courants
-### Local Development with Ollama
+### Développement local avec Ollama
```json
{
@@ -271,9 +271,9 @@ var $client := cs.AIKit.OpenAI.new()
var $result := $client.chat.completions.create($messages; {model: "local:llama3.2"})
```
-### Named Model Aliases
+### Alias de modèles nommés
-Define models once, use them everywhere by name:
+Définir les modèles une fois, les utiliser partout par leur nom :
```json
{
@@ -307,21 +307,21 @@ Define models once, use them everywhere by name:
```4d
var $client := cs.AIKit.OpenAI.new()
-// Use named model aliases — no need to remember provider or model ID
+// Utiliser des alias de modèles nommés — pas besoin de se souvenir du fournisseur ou de l'ID du modèle
var $result := $client.chat.completions.create($messages; {model: ":chat"})
var $result := $client.chat.completions.create($messages; {model: ":fast"})
var $embedding := $client.embeddings.create("text"; ":embedding")
```
-### List All Configured Models
+### Lister tous les modèles configurés
```4d
var $providers := cs.AIKit.OpenAIProviders.new()
var $models := $providers.modelAliases()
-// Returns: [{name: "chat", provider: "openai", model: "gpt-5.1"}, ...]
+// Renvoie : [{name: "chat", provider: "openai", model: "gpt-5.1"}, ...]
```
-### Production with Multiple Cloud Providers
+### Production avec plusieurs fournisseurs de services dans le cloud
```json
{
@@ -342,7 +342,7 @@ var $models := $providers.modelAliases()
}
```
-### Provider-Specific Organizations
+### Organisations spécifiques des fournisseurs
```json
{
@@ -360,13 +360,13 @@ var $models := $providers.modelAliases()
```
```4d
-// Route to different organizations
-var $resultA := $client.chat.completions.create($messages; {model: "openai-team-a:gpt-5.1"})
-var $resultB := $client.chat.completions.create($messages; {model: "openai-team-b:gpt-5.1"})
+// Routage vers différentes organisations
+var $resultA := $client.chat.completions.create($messages; {model : "openai-team-a:gpt-5.1"})
+var $resultB := $client.chat.completions.create($messages; {model : "openai-team-b:gpt-5.1"})
```
-## Related Documentation
+## Documentation liée
-- [OpenAI Class](Classes/OpenAI.md) - Main client class
-- [OpenAIProviders Class](Classes/OpenAIProviders.md) - Provider configuration management
-- [Compatible OpenAI APIs](compatible-openai.md) - List of compatible providers
+- [Classe OpenAI](Classes/OpenAI.md) - Classe client principale
+- [Classe OpenAIProviders](Classes/OpenAIProviders.md) - Gestion de la configuration des fournisseurs
+- [API OpenAI compatibles](compatible-openai.md) - Liste des fournisseurs compatibles
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png differ
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
index 111e858524fb36..fcbf57832e402a 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
@@ -5,7 +5,7 @@ title: IMAP New transporter
displayed_sidebar: docs
---
-**IMAP New transporter**( *server* : Object ) : 4D.IMAPTransporter
+**IMAP New transporter**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
index 264a248513dfd6..0dc399d405f1df 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
@@ -5,12 +5,16 @@ title: Page Compatibilité
La page Compatibilité regroupe les paramètres relatifs au maintien de la compatibilité avec les versions précédentes de 4D.
-> Le nombre d'options affichées dépend de la version de 4D avec laquelle la base de données/projet original a été créé, ainsi que des paramétrages modifiés dans cette base/projet.\
-> Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants.\
-> Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants.
-> Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants. Pour les options de compatibilité plus anciennes, consultez la [page Compatibilité](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) sur **doc.4d.com**.
+:::note
-- **Utiliser XPath standard :** Par défaut, cette option est désélectionnée pour les bases converties depuis une version de 4D antérieure à la 18 R3, et est cochée pour les bases créées sous une version 4D 18 R3 ou une version plus récente. A partir de la version 18 R3, l'implémentation de XPath dans 4D a été modifiée pour une meilleure conformité et pour la prise en charge d'un plus grand nombre de prédicats. Par conséquent, les fonctionnalités non standard de l'implémentation antérieure ne fonctionnent plus. Elles incluent :
+- Le nombre d'options affichées dépend de la version de 4D avec laquelle la base de données/projet original a été créé, ainsi que des paramétrages modifiés dans cette base/projet.\
+ Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants.\
+ Cette page répertorie les options de compatibilité disponibles pour les bases de données/projets convertis à partir de 4D 18 et suivants.
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. Pour les options de compatibilité plus anciennes, consultez la [page Compatibilité](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) sur **doc.4d.com**.
+
+:::
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. Par conséquent, les fonctionnalités non standard de l'implémentation antérieure ne fonctionnent plus. Elles incluent :
- le caractère "/" initial n'est pas seulement le noeud racine - l'utilisation du caractère / comme premier caractère d'une expression XPath ne déclare pas un chemin absolu à partir du noeud racine
- pas de noeud courant implicite - le noeud courant doit être intégré dans l'expression XPath
@@ -18,12 +22,14 @@ La page Compatibilité regroupe les paramètres relatifs au maintien de la compa
Même si ces fonctionnalités ne sont pas standard, vous pourriez vouloir continuer à les utiliser afin que votre code continue de fonctionner comme avant -- dans ce cas, il vous suffit de *désélectionner* l'option. On the other hand, if your code does not rely on the non-standard implementation and if you want to benefit from the extended XPath features in your databases (as described in the [`DOM Find XML element`](../commands/dom-find-xml-element) command), make sure the **Use standard XPath** option is *checked*.
-- **Utiliser LF comme caractère de fin de ligne sur macOS :** À partir de 4D 19 R2 (et 4D 19 R3 pour les fichiers XML), 4D écrit les fichiers texte avec un saut de ligne (LF) comme caractère de fin de ligne (EOL) par défaut au lieu de Retour Chariot (CR) (CRLF pour xml SAX) sur macOS dans les nouveaux projets. Si vous souhaitez bénéficier de ce nouveau comportement dans les projets convertis à partir de versions antérieures de 4D, cochez cette option. Voir [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), et [XML SET OPTIONS](../commands/xml-set-options).
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Si vous souhaitez bénéficier de ce nouveau comportement dans les projets convertis à partir de versions antérieures de 4D, cochez cette option. Voir [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), et [XML SET OPTIONS](../commands/xml-set-options).
+
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. Dans les versions antérieures, les fichiers texte étaient écrits avec un BOM par défaut. Sélectionnez cette option si vous souhaitez activer le nouveau comportement dans les projets convertis. Voir [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), et [XML SET OPTIONS](../commands/xml-set-options).
-- **Ne pas ajouter de BOM lors de l'écriture d'un fichier texte unicode par défaut :** À partir de 4D 19 R2 (et 4D 19 R3 pour les fichiers XML), 4D écrit des fichiers texte sans BOM ("Byte order mark") par défaut. Dans les versions antérieures, les fichiers texte étaient écrits avec un BOM par défaut. Sélectionnez cette option si vous souhaitez activer le nouveau comportement dans les projets convertis. Voir [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), et [XML SET OPTIONS](../commands/xml-set-options).
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. Vous pouvez appliquer ce comportement par défaut à vos bases de données converties en cochant cette option (il est recommandé de travailler avec des valeurs Null car elles sont entièrement prises en charge par [ORDA](../ORDA/overview.md)).
-- **Traduire les NULL en valeurs vides non cochée par défaut à la création d'un champ** : Pour une meilleure conformité avec les spécifications ORDA, dans les bases de données créées avec 4D 19 R4 et versions ultérieures, la propriété de champ **Traduire les NULL en valeurs vides** est non cochée par défaut lors de la création des champs. Vous pouvez appliquer ce comportement par défaut à vos bases de données converties en cochant cette option (il est recommandé de travailler avec des valeurs Null car elles sont entièrement prises en charge par [ORDA](../ORDA/overview.md)).
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Impression non-bloquante** : À partir de 4D 20 R4, chaque process a ses propres paramètres d'impression (options d'impression, imprimante courante, etc.), ce qui vous permet d'exécuter plusieurs tâches d'impression simultanément. Cochez cette option si vous souhaitez bénéficier de cette nouvelle implémentation dans vos projets 4D convertis ou dans les bases de données converties du mode binaire au mode projet. **Lorsque l'option n'est pas cochée**, l'implémentation précédente est appliquée : les paramètres d'impression 4D courants sont appliqués globalement, l'imprimante passe en mode "occupé" lorsqu'un job d'impression est en cours, vous devez appeler `CLOSE PRINTING JOB` pour que l'imprimante soit disponible pour le prochain job d'impression (consultez la documentation 4D précédente pour plus d'informations).
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) sont sauvegardées dans un fichier séparé nommé `catalog_editor.json`, stocké dans le dossier [Sources](../Project/architecture.md#sources) du projet. Cette nouvelle architecture de fichiers facilite la gestion des conflits de fusion dans les applications de gestion de versions (VCS) car le fichier `catalog.4DCatalog` ne contient désormais que les modifications cruciales de la structure de la base de données. Pour des raisons de compatibilité, cette fonctionnalité n'est pas activée par défaut dans les projets convertis à partir des versions précédentes de 4D, vous devez cocher cette option. Lorsque la fonctionnalité est activée, le fichier `catalog_editor.json` est créé lors de la première modification dans l'éditeur de structure.
-- **Sauvegarder les couleurs et les coordonnées de la structure dans un fichier catalog_editor.json séparé** : À partir de 4D 20 R5, les modifications apportées dans l'éditeur de Structure concernant l'apparence graphique des tables et des champs (couleur, position, ordre...) sont sauvegardées dans un fichier séparé nommé `catalog_editor.json`, stocké dans le dossier [Sources](../Project/architecture.md#sources) du projet. Cette nouvelle architecture de fichiers facilite la gestion des conflits de fusion dans les applications de gestion de versions (VCS) car le fichier `catalog.4DCatalog` ne contient désormais que les modifications cruciales de la structure de la base de données. Pour des raisons de compatibilité, cette fonctionnalité n'est pas activée par défaut dans les projets convertis à partir des versions précédentes de 4D, vous devez cocher cette option. Lorsque la fonctionnalité est activée, le fichier `catalog_editor.json` est créé lors de la première modification dans l'éditeur de structure.
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../../FormEditor/forms.md#legacy-print-rendering)).
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Admin/data-collect.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Admin/data-collect.md
index fbe2be68780f9e..839b8df217abde 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Admin/data-collect.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Admin/data-collect.md
@@ -3,7 +3,7 @@ id: data-collect
title: Collecte des données
---
-Pour nous aider à améliorer sans cesse nos produits, nous collectons automatiquement des données concernant les statistiques d'utilisation des applications 4D Server. Les données collectées sont transférées sans incidence sur l'expérience utilisateur. Aucune information personnelle n'est collectée. For more information on 4D policy regarding personal data protection, please visit [this page](https://us.4d.com/privacy-policy).
+Pour nous aider à améliorer sans cesse nos produits, nous collectons automatiquement des données concernant les statistiques d'utilisation des applications 4D Server. Les données collectées sont transférées sans incidence sur l'expérience utilisateur. Aucune information personnelle n'est collectée. Pour plus d'informations sur la politique de 4D en matière de protection des données personnelles, veuillez consulter [cette page](https://fr.4d.com/politique-de-protection-des-donnees-personnelles).
La section ci-dessous explique :
@@ -110,29 +110,29 @@ Certaines données sont également collectées à intervalles réguliers.
| restServer.executionTime | Number | Temps d'exécution CPU du serveur WEB REST |
| soapServer | Object | Objet contenant des informations sur le serveur SOAP |
| soapServer.bytesIn | Number | Octets reçus par le serveur SOAP |
-| soapServer.bytesOut | Number | Bytes sent by the SOAP server |
-| soapServer.hits | Number | Number of hits on the SOAP server |
-| soapServer.executionTime | Number | CPU execution time for the SOAP server |
+| soapServer.bytesOut | Number | Octets envoyés par le serveur SOAP |
+| soapServer.hits | Number | Nombre de hits du serveur SOAP |
+| soapServer.executionTime | Number | Temps d'exécution CPU du serveur SOAP |
| SQLBeginEndStatement | Number | Nombre d'utilisations de `Begin SQL` / `End SQL` |
| SQLLoginInternal | Number | Nombre d'appels à `SQL LOGIN` utilisant SQL_INTERNAL |
-| sqlServer | Object | Object containing SQL server information |
-| sqlServer.hits | Number | Number of SQL queries executed |
-| sqlServer.bytesIn | Number | Bytes received by the SQL engine |
-| sqlServer.bytesOut | Number | Bytes sent by the SQL engine |
-| sqlServer.executionTime | Number | CPU execution time for SQL queries |
+| sqlServer | Object | Objet contenant des informations sur le serveur SQL |
+| sqlServer.hits | Number | Nombre de requêtes SQL exécutées |
+| sqlServer.bytesIn | Number | Octets reçus par le moteur SQL |
+| sqlServer.bytesOut | Number | Octets envoyés par le moteur SQL |
+| sqlServer.executionTime | Number | Temps d'exécution CPU pour les requêtes SQL |
| usingQUICNetworkLayer | Boolean | True si la base de données utilise la couche réseau QUIC |
-| totalExecutionTime | Number | Total CPU execution time: sum of all request types |
-| totalRequests | Number | Total requests: sum of web, REST, SOAP, SQL, and internal traffic |
-| webServer | Object | Object containing Web server information |
-| webServer.bytesIn | Number | Bytes received by the Web server |
-| webServer.bytesOut | Number | Bytes sent by the Web server |
-| webServer.hits | Number | Number of hits on the Web server |
-| webServer.executionTime | Number | CPU execution time for the Web server |
-| webStaticServer | Object | Object containing the static Web server information |
-| webStaticServer.bytesIn | Number | Bytes received by the static Web server |
-| webStaticServer.bytesOut | Number | Bytes sent by the static Web server |
-| webStaticServer.hits | Number | Number of hits on the static Web server |
-| webStaticServer.executionTime | Number | CPU execution time for the static Web server |
+| totalExecutionTime | Number | Temps d'exécution total du CPU : somme de tous les types de requêtes |
+| totalRequests | Number | Total des requêtes : somme des requêtes web, REST, SOAP, SQL et du trafic interne |
+| webServer | Object | Objet contenant des informations sur le serveur Web |
+| webServer.bytesIn | Number | Octets reçus par le serveur Web |
+| webServer.bytesOut | Number | Octets envoyés par le serveur Web |
+| webServer.hits | Number | Nombre de hits du serveur Web |
+| webServer.executionTime | Number | Temps d'exécution CPU du serveur Web |
+| webStaticServer | Object | Objet contenant des informations sur le serveur Web statique |
+| webStaticServer.bytesIn | Number | Octets reçus par le serveur Web statique |
+| webStaticServer.bytesOut | Number | Octets envoyés par le serveur Web statique |
+| webStaticServer.hits | Number | Nombre de hits du serveur Web statique |
+| webStaticServer.executionTime | Number | Temps d'exécution CPU du serveur Web statique |
## Où sont-elles stockées et envoyées ?
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/classes.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/classes.md
index d247acbcb547ff..cfded42831d3e5 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/classes.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/classes.md
@@ -251,9 +251,9 @@ Dans le code de l'application, les fonctions de classes sont appelées comme des
- [`apply()`](API/FunctionClass.md#apply)
- [`call()`](API/FunctionClass.md#call)
-:::warning Note importante thread-safety
+:::warning Attention thread-safety
-Si une fonction de classe n'est pas thread-safe et qu'elle est appelée par une méthode avec l'attribut "Peut être exécutée dans un process preémptif" :
+Si une fonction de classe n'est pas thread-safe et qu'elle est appelée par une méthode ayant l'attribut "Peut être exécutée dans un process préemptif" :
- le compilateur ne génère pas d'erreur (ce qui est différent par rapport aux méthodes standard),
- une erreur est déclenchée par 4D uniquement au moment de l'exécution.
@@ -276,7 +276,7 @@ Si le type n'est pas fourni, le paramètre sera défini comme `Variant`.
#### Valeur retournée
-Vous déclarez le paramètre de retour d'une fonction (optionnel) en ajoutant une flèche (`->`) et la définition du paramètre de retour après la liste des paramètres d'entrée, ou les deux points (`:`) et le tye de paramètre de retour uniquement. Par exemple :
+Vous déclarez le paramètre de retour d'une fonction (optionnel) en ajoutant une flèche (`->`) et la définition du paramètre de retour après la liste des paramètres d'entrée, ou les deux points (`:`) et le type de paramètre de retour uniquement. Par exemple :
```4d
Function add($x : Variant; $y : Integer)->$result : Integer
@@ -383,7 +383,7 @@ $o:=cs.MyClass.new("John";42)
// $o = {"name" : "John" ; "age":42}
```
-### `propriété`
+### `property`
#### Syntaxe
@@ -751,7 +751,7 @@ Les singletons sont utiles pour définir des valeurs qui doivent être disponibl
- un **singleton process** a une instance unique pour le process dans lequel il est instancié,
- un **singleton partagé** a une instance unique pour tous les process sur la machine.
-- une **singleton session** est un singleton partagé, mais avec une instance unique pour tous les process de la [session](../API/SessionClass.md). Les singletons de session sont partagés au sein d'une session entière mais varient d'une session à l'autre. Dans le contexte d'un client-serveur ou d'une application web, les singletons de session permettent de créer et d'utiliser une instance différente pour chaque session, et donc pour chaque utilisateur. Les singletons de session sont particulièrement appropriés pour les [applications Qodly](https://developer.4d.com/qodly/).
+- un **singleton session** est un singleton partagé, mais avec une instance unique pour tous les process de la [session](../API/SessionClass.md). Les singletons de session sont partagés au sein d'une même session mais varient d'une session à l'autre. Dans le contexte d'une application client-serveur ou web, les singletons de session permettent de créer et d'utiliser une instance différente pour chaque session, et donc pour chaque utilisateur. Les singletons de session sont particulièrement appropriés pour les [applications Qodly](https://developer.4d.com/qodly/).
:::info
@@ -794,7 +794,7 @@ La propriété [`.isSessionSingleton`](../API/ClassClass.md#issessionsingleton)
### Fonctions singleton exposées
-Les fonctions singleton partagées et de session prennent en charge le mot-clé [`exposed`](../ORDA/ordaClasses.md#exposed-vs-non-exposed-functions). Une fonction singleton exposée peut être directement appelée par des requêtes REST. Cette fonction est utile pour la conception de [pages Qodly appelant des fonctions 4D](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#class-functions).
+Les fonctions singleton partagées et de session prennent en charge le mot-clé [`exposed`](../ORDA/ordaClasses.md#exposed-vs-non-exposed-functions). Une fonction singleton exposée peut être directement appelée par des requêtes REST. Cette fonctionnalié est utile pour la conception de [pages Qodly appelant des fonctions 4D](https://developer.4d.com/qodly/4DQodlyPro/pageLoaders/events/bindingActionToEvents#class-functions).
### Exemples
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormObjects/properties_WebArea.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormObjects/properties_WebArea.md
index 090108fb2ab397..dfb9776d8fd63c 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormObjects/properties_WebArea.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormObjects/properties_WebArea.md
@@ -85,7 +85,7 @@ Cette option vous permet de choisir entre deux moteurs de rendus pour la zone We
> Sur Windows, si Microsoft Edge WebView2 n'est pas installé, 4D utilise le moteur intégré en tant que moteur de rendu système. Pour savoir s'il est installé sur votre système, recherchez "Microsoft Edge WebView2 Runtime" dans votre panneau d'applications.
-- **coché** - `JSON value: embedded`: Dans ce cas, 4D utilise le Chromium Embedded Framework (CEF). L’utilisation d'un moteur Web intégré vous permet d’avoir l’assurance que le rendu et le fonctionnement des zones Web de votre application seront quasiment identiques, quelle que soit la plate-forme d’exécution de 4D (de légères variations de pixels ou des différences liées à l’implémentation réseau pourront toutefois être constatées). When this option is chosen, you no longer benefit from automatic updates of the Web engine performed by the operating system; however, [new versions of the engines are regularly provided through 4D](../Notes/updates.md#library-table-4d-21-lts).
+- **coché** - `JSON value: embedded`: Dans ce cas, 4D utilise le Chromium Embedded Framework (CEF). L’utilisation d'un moteur Web intégré vous permet d’avoir l’assurance que le rendu et le fonctionnement des zones Web de votre application seront quasiment identiques, quelle que soit la plate-forme d’exécution de 4D (de légères variations de pixels ou des différences liées à l’implémentation réseau pourront toutefois être constatées). Lorsque cette option est sélectionnée, vous ne bénéficiez plus des mises à jour automatiques du moteur Web effectuées par le système d'exploitation ; toutefois, [de nouvelles versions des moteurs sont régulièrement mises à disposition par 4D](../Notes/updates.md#library-table-4d-21-lts).
Le moteur CEF a les limitations suivantes :
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-document.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-document.md
index dab36a02ca4dbb..a2112102465162 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-document.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-document.md
@@ -53,7 +53,7 @@ Le paramètre optionnel *paramObj* vous permet de définir plusieurs propriété
| -------------------- | ------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| format | | text | (optional) When present, designates the exported file format: ".4vp" (default), ".csv", ".xlsx", ".pdf", or ".sjs". You can use the following constants:`vk 4D View Pro format``vk csv format``vk MS Excel format``vk pdf format``vk sjs format`4D adds the appropriate extension to the file name if needed. If the format specified doesn't correspond with the extension in *filePath*, it will be added to the end of *filePath*. If a format is not specified and no extension is provided in *filePath*, the default file format is used. |
| password | | text | Microsoft Excel uniquement (optionnel) - Mot de passe utilisé pour protéger le document MS Excel |
-| formula | | 4D.Function | Méthode callback à lancer lorsque l'export est terminé. L'utilisation d'une méthode callback est nécessaire lorsque l'export est asynchrone (ce qui est le cas pour les formats PDF et Excel) si vous avez besoin d'un code à exécuter après l'export. The callback method must be passed with the [`Formula`](../../commands/formula.md) command. See [Passing a callback method (formula)](#passing-a-callback-method-formula). |
+| formula | | 4D.Function | Méthode callback à lancer lorsque l'export est terminé. L'utilisation d'une méthode callback est nécessaire lorsque l'export est asynchrone (ce qui est le cas pour les formats PDF et Excel) si vous avez besoin d'un code à exécuter après l'export. La méthode callback doit être passée avec la commande [`Formula`](../../commands/formula.md). See [Passing a callback method (formula)](#passing-a-callback-method-formula). |
| valuesOnly | | boolean | Précise que seules les valeurs issues de formules (le cas échéant) seront exportées. |
| includeFormatInfo | | boolean | True pour inclure les informations de formatage, sinon False (True par défaut). Les informations de formatage sont utiles dans certains cas, par exemple pour un export en SVG. On the other hand, setting this property to **false** allows reducing export time. |
| includeBindingSource | | boolean | 4DVP et Microsoft Excel uniquement. True (par défaut) pour exporter les valeurs du contexte de données courant en tant que valeurs de cellule dans le document exporté (les contextes de données eux-mêmes ne sont pas exportés). Sinon Faux. La liaison de cellule est toujours exportée. For data context and cell binding management, see [VP SET DATA CONTEXT](vp-set-data-context.md) and [VP SET BINDING PATH](vp-set-binding-path.md). |
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
index 7e7ac49c199ff2..9eea295b3fbe96 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md
@@ -164,4 +164,4 @@ Pour exporter la première page d'un 4D Write Pro en SVG dans une variable Texte
[Blog post - 4D Write Pro : Export au format PDF avec pièces jointes](https://blog.4d.com/fr/4d-write-pro-export-to-pdf-with-enclosures)
[Exporter aux formats HTML et MIME HTML](../user-legacy/exporting-to-html-and-mime-html-formats.md)
[Importer et exporter au format docx](../user-legacy/importing-and-exporting-in-docx-format.md)
-[WP EXPORT DOCUMENT](../commands/wp-export-document)
+[WP EXPORT DOCUMENT](../commands/wp-export-document)
\ No newline at end of file
diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/commands/compile-project.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/commands/compile-project.md
index 12fb41a081434a..3973f4a9972eb0 100644
--- a/i18n/fr/docusaurus-plugin-content-docs/version-21/commands/compile-project.md
+++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/commands/compile-project.md
@@ -88,7 +88,7 @@ L'objet renvoyé par **Compile project** possède jusqu'à trois propriétés :
| \[\].code | Object | [objet code](#code-object) |
| \[\].line | Number | Numéro de ligne de l'erreur dans le code. Pour les méthodes de classe, le numéro de ligne dans la fonction |
| \[\].lineInFile | Number | Numéro de ligne dans le fichier (différent de "line" pour les méthodes de classe, et prend en compte la ligne de préfixe %attributes) |
-| symbols | Object | **Disponible uniquement si l'option generateSymbols est fixée à True :** |
+| symboles | Object | **Disponible uniquement si l'option generateSymbols est fixée à True :** |
| symbols.interprocessVariables | Object | Liste de toutes les variables interprocessus |
| symbols.interprocessVariables.variables | Collection | Collection d'[objets variables](#objets-variables) |
| symbols.interprocessVariables.size | Number | |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
index ce6de2c72c75a7..f0267b9fa2c7d0 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
@@ -45,7 +45,7 @@ IMAP Transporter オブジェクトは [IMP New transporter](../commands/imap-ne
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md b/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
index 5e578d1bf308b5..1196d3de91129d 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
@@ -438,36 +438,36 @@ End for
4D ランゲージドキュメンテーションでは、以下の引数の型が使用できます。
-| 型 | 定義 | それを使用する4D コマンドの例 |
-| ------------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| > , <, >=, <=, #, =, \\| , % | クエリ条件や式に使用される比較、論理演算子または記号。 | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
-| any | サポートされるあらゆるデータ型を受け付ける引数 | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
-| 配列 | 同じ型の複数の値を格納する変数。 | ARRAY TEXT($arr;10) |
-| BLOB 配列 | BLOB 値を格納した配列。 | ARRAY BLOB($data;10) |
-| BLOB | バイナリデータを保存するために使用される、バイナリーラージオブジェクト。 | BLOB TO DOCUMENT($blob;"file.bin") |
-| Boolean | 論理値: True または False。 | If (OK=1) |
-| ブール配列 | ブール値を格納した配列。 | ARRAY BOOLEAN($flags;10) |
-| クラス名(例: 4D.File) | クラスインスタンスを作成または操作するために使用されるクラス型への参照。 | $file:=File("/RESOURCES/NovelCover1.jpg") |
-| Collection | 複数の型を格納可能な、順番付きの値のリスト。 | New collection("A";"B";"C") |
-| Date | カレンダーの日付値。 | $vDate:=Current date |
-| 日付配列 | 日付値を格納した配列。 | ARRAY DATE($dates;10) |
-| 式 | 式の形であればなんでも可能 | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
-| フィールド | テーブルに属しているフィールドへの参照。 | ORDER BY([Person];[Person]Name) |
-| Integer | 小数部分を除いた整数。 | $Sel:=ds.Employee.newSelection(dk keep ordered) |
-| 整数配列 | 整数値を格納した配列。 | ARRAY INTEGER($numbers;10) |
-| 倍長整数配列 | 倍長整数値を格納した配列。 | ARRAY LONGINT($values;10) |
-| オブジェクト配列 | オブジェクト型を格納した配列。 | ARRAY OBJECT($objects;10) |
-| Object | キー/値のペアで構成された構造化されたデータコンテナ。 | $entity.fromObject($o) |
-| 演算子 | 必ず \* 。 | QUERY([Person];[Person]Name="Smith";\*) |
-| ピクチャー配列 | ピクチャーを格納した配列。 | ARRAY PICTURE($images;10) |
-| Picture | グラフィカルな画像の値。 | READ PICTURE FILE($pic;"image.png") |
-| ポインター配列 | ポインターを格納した配列。 | ARRAY POINTER($ptrs;10) |
-| Pointer | 他の変数、フィールド、オブジェクトへの参照。 | If(Is nil pointer($ptr)) |
-| 実数配列 | 実数を格納した配列。 | ARRAY REAL($values;10) |
-| Real | 浮動小数点数値。 | $vlResult:=Int(123.4) |
-| Table | データベーステーブルへの参照。 | ALL RECORDS([Person]) |
-| Text | テキストデータを表現する一連の文字列。 | ALERT("Hello world") |
-| テキスト配列 | テキスト値を格納した配列。 | ARRAY TEXT($names;10) |
-| Time | 時間、分、秒を表した時間値。 | Current time |
-| 時間配列 | 時間値を格納した配列。 | ARRAY TIME($times;10) |
-| 変数 | 値を受け取り可能(代入可能)な、"任意"の型の書き込み可能な変数。 | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
+| 型 | 定義 | それを使用する4D コマンドの例 |
+| ----------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| > , <, >=, <=, #, =, \| , % | クエリ条件や式に使用される比較、論理演算子または記号。 | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
+| any | サポートされるあらゆるデータ型を受け付ける引数 | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
+| 配列 | 同じ型の複数の値を格納する変数。 | ARRAY TEXT($arr;10) |
+| BLOB 配列 | BLOB 値を格納した配列。 | ARRAY BLOB($data;10) |
+| BLOB | バイナリデータを保存するために使用される、バイナリーラージオブジェクト。 | BLOB TO DOCUMENT($blob;"file.bin") |
+| Boolean | 論理値: True または False。 | If (OK=1) |
+| ブール配列 | ブール値を格納した配列。 | ARRAY BOOLEAN($flags;10) |
+| クラス名(例: 4D.File) | クラスインスタンスを作成または操作するために使用されるクラス型への参照。 | $file:=File("/RESOURCES/NovelCover1.jpg") |
+| Collection | 複数の型を格納可能な、順番付きの値のリスト。 | New collection("A";"B";"C") |
+| Date | カレンダーの日付値。 | $vDate:=Current date |
+| 日付配列 | 日付値を格納した配列。 | ARRAY DATE($dates;10) |
+| 式 | 式の形であればなんでも可能 | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
+| フィールド | テーブルに属しているフィールドへの参照。 | ORDER BY([Person];[Person]Name) |
+| Integer | 小数部分を除いた整数。 | $Sel:=ds.Employee.newSelection(dk keep ordered) |
+| 整数配列 | 整数値を格納した配列。 | ARRAY INTEGER($numbers;10) |
+| 倍長整数配列 | 倍長整数値を格納した配列。 | ARRAY LONGINT($values;10) |
+| オブジェクト配列 | オブジェクト型を格納した配列。 | ARRAY OBJECT($objects;10) |
+| Object | キー/値のペアで構成された構造化されたデータコンテナ。 | $entity.fromObject($o) |
+| 演算子 | 必ず \* 。 | QUERY([Person];[Person]Name="Smith";\*) |
+| ピクチャー配列 | ピクチャーを格納した配列。 | ARRAY PICTURE($images;10) |
+| Picture | グラフィカルな画像の値。 | READ PICTURE FILE($pic;"image.png") |
+| ポインター配列 | ポインターを格納した配列。 | ARRAY POINTER($ptrs;10) |
+| Pointer | 他の変数、フィールド、オブジェクトへの参照。 | If(Is nil pointer($ptr)) |
+| 実数配列 | 実数を格納した配列。 | ARRAY REAL($values;10) |
+| Real | 浮動小数点数値。 | $vlResult:=Int(123.4) |
+| Table | データベーステーブルへの参照。 | ALL RECORDS([Person]) |
+| Text | テキストデータを表現する一連の文字列。 | ALERT("Hello world") |
+| テキスト配列 | テキスト値を格納した配列。 | ARRAY TEXT($names;10) |
+| Time | 時間、分、秒を表した時間値。 | Current time |
+| 時間配列 | 時間値を格納した配列。 | ARRAY TIME($times;10) |
+| 変数 | 値を受け取り可能(代入可能)な、"任意"の型の書き込み可能な変数。 | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Desktop/clientServer.md b/i18n/ja/docusaurus-plugin-content-docs/current/Desktop/clientServer.md
index f156c6e5a7c614..aaea001a20fc0d 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/Desktop/clientServer.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/Desktop/clientServer.md
@@ -147,4 +147,4 @@ title: クライアント/サーバー管理
| サーバー上のストアドプロシージャから呼び出されたプロジェクトメソッド | server | [`EXECUTE ON CLIENT`](../commands/execute-on-client) コマンドを呼び出す。 ターゲットとなるクライアントは [登録されている](../commands/register-client) 必要があります。 |
| オブジェクトメソッド | ローカル | n/a |
| 以下のデータベースメソッド:- On Backup Shutdown
- On Backup Startup
- On Server Close Connection
- On Server Open Connection
- On Server Shutdown
- On Server Startup
- On SQL Authentication
- On Web Authentication
- On Web Connection
| server | n/a |
-| 以下のデータベースメソッド: | client | n/a |
+| 以下のデータベースメソッド: | client | n/a |
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Develop/async.md b/i18n/ja/docusaurus-plugin-content-docs/current/Develop/async.md
index bb9e352e37c85d..c84fac634e1626 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/Develop/async.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/Develop/async.md
@@ -64,7 +64,7 @@ Asynchronous execution is **event-driven** and allows other operations to comple
### イベントリスニング
-イベント駆動型の開発において、一部のコードが、入ってくるイベントを聞ける(リッスンできる)状態でなければならい事は明らかです。 イベントは、ユーザーインターフェース(オブジェクトのマウスクリックやキーボードのキーが押されたなど)や、HTTP リクエストや他のアクションの完了などのその他のインタラクションによって生成され得ます。 例えば、フォームが`DIALOG` コマンドを使用して表示されている場合、ユーザーアクションによってイベントがトリガーされ、それをコードで処理することが可能です。 ボタンをクリックした場合はボタンに割り当てられたコードがトリガーされることになります。
+イベント駆動型の開発において、一部のコードが、入ってくるイベントを聞ける(リッスンできる)状態でなければならい事は明らかです。 イベントは、ユーザーインターフェース(オブジェクトのマウスクリックやキーボードのキーが押されたなど)や、HTTP リクエストや他のアクションの完了などのその他のインタラクションによって生成され得ます。 For example, when a form is displayed using the [`DIALOG`](../commands/dialog) command, user actions can trigger events that your code can process. ボタンをクリックした場合はボタンに割り当てられたコードがトリガーされることになります。
非同期実行のコンテキストにおいては、以下の機能がリスニングモード内でコードを配置します:
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/forms.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/forms.md
index d3a57ce3e53bc6..939642c4b1a04d 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/forms.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/forms.md
@@ -66,6 +66,173 @@ title: Forms
}
```
+## Using forms
+
+Forms are called using specific commands of the 4D Language. In your 4D desktop applications, forms can be used in various ways, depending on their status within your interface needs. A form can be:
+
+- used in its own window for data viewing, processing, editing, or to display on-screen information to the user,
+- used embedded in another form (subform),
+- used as template for printing,
+- or called by specific features like the Label editor.
+
+### Using a project form in a window
+
+When you want to use a form as on-screen dialog, you need to (1) create a window and (2) load the form within the window, along with an event loop to process user actions. The straighforward steps to display a form on screen are:
+
+1. Call the [`Open form window`](../commands/open-form-window) command to create and preconfigure a window tailored for your form. Note that the command only draw aan empty window, it does not display anything.
+2. In the same method, call the [`DIALOG`](../commands/dialog) command to actually load the form in the opened form window, ready for user interaction. [`DIALOG`](../commands/dialog) loads form data and places your code in listening mode to user events. When you call this command without asterisk (\*), the dialog will stay on screen and the code execution is frozen until an event occurs (see also ["Event listening" paragraph](../Develop/async.md#event-listening)).
+3. (optional) Use the [`Form`](../commands/form) command from within the form context to access form data.
+
+::note 互換性
+
+All-in-one commands such as [`ADD RECORD`](../commands/add-record) or [`MODIFY RECORD`](../commands/add-record) merge all steps in a single call. These legacy commands can still be used for prototyping or basic developments but are not adapted to modern, fully controlled interfaces. They directly rely on the 4D database and legacy features such as [table forms](#project-form-and-table-form) and do not benefit from the power and flexibility of [ORDA features](../ORDA/overview.md). Unless specific needs, it is recommended to use project forms for your 4D desktop application interfaces.
+
+:::
+
+#### Simple example
+
+You create the following basic form in the [Form editor](./formEditor.md):
+
+
+
+The form is [associated with a "myForm" class](./properties_FormProperties.md#form-class), defined as follow:
+
+```4d
+ //cs.myForm
+property name : Text
+property age : Integer
+
+Class constructor
+ This.name:=""
+ This.age:=0
+```
+
+The form class is automatically instantiated by 4D once the form is loaded. If you execute the following project method:
+
+```4d
+ // Instantiate a form object that will host form data and UI logic
+var $formObject:=cs.myForm.new()
+
+ //Prepare default value within the form object
+$formObject.name:="Smith"
+$formObject.age:=42
+
+ // Create an empty window with ad-hoc settings that fits the desired form dimensions, resizing properties,
+ // and window type (this does not render the form)
+var $win:=Open form window("myForm"; Movable form dialog box; Horizontally centered; Vertically centered)
+
+ //Render the form, and provide $formObject's data. Dialog also activates the form event loop
+DIALOG("myForm"; $formObject)
+
+ //Without asterisk to Dialog statement, the form waits for a closing action from the user
+ //before executing the rest of the code. Calling Close window is just a good practice
+CLOSE WINDOW($win) //releases reference
+
+ //Display data modified by the user, if any/
+ALERT($formObject.name+" is "+String($formObject.age)+" years old!")
+
+```
+
+4D displays:
+
+
+
+### Using forms as subforms
+
+A form can be embedded within another form, in which case it becomes a [subform object](../FormObjects/subform_overview.md) which follows specific rules. A subform is automatically used when its parent form is [displayed in a window](#using-a-project-form-in-a-window).
+
+In the same way that you pass an object to a form with the [`DIALOG`](../commands/dialog) command, you can also pass an object to a subform area using the property list. Then, you can use it in the subform with the [`Form`](../commands/form) command. In this example, the "InvoiceAddress" object is bound to the subform:
+
+
+
+### Using forms to be printed
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+#### 例題
+
+You can use forms to print data, either as page or as list.
+
+- To simply print some part of a form, use the [`Print form`](../commands/print-form) command. 例:
+
+```4d
+var $formData:={}
+$formData.lastname:="Smith"
+$formData.firstname:="john"
+$formData.request:="I need more COFFEE"
+var $h:=Print form("Request_var";$formData;Form detail)
+```
+
+- To print a form within a printing job to process data during printing, use [`FORM LOAD`](../commands/form-load) and [`Print object`](../commands/print-object) commands. 例:
+
+```4d
+ var $formData : Object
+ var $over : Boolean
+ var $full : Boolean
+
+ OPEN PRINTING JOB
+ $formData:={}
+ $formData.LBcollection:=[]
+ ... //fill the collection with data
+
+ FORM LOAD("GlobalForm";$formData)
+ $over:=False
+ Repeat
+ $full:=Print object(*;"LB") // the datasource of this "LB" listbox is Form.LBcollection
+ LISTBOX GET PRINT INFORMATION(*;"LB";lk printing is over;$over)
+ If(Not($over))
+ PAGE BREAK
+ End if
+ Until($over)
+ FORM UNLOAD
+ CLOSE PRINTING JOB
+```
+
+#### 印刷レンダリングエンジン
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+:::tip 関連したblog 記事
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+#### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning 制限
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
+### Other form usages
+
+There are several other ways to use forms in the 4D applications, including:
+
+- a form can be [inherited](#inherited-forms) from another form,
+- a form can be [associated to a listbox](../FormObjects/properties_ListBox.md#detail-form-name) in response to a user action to display a row using an edit button or a double-click,
+- the [label editor can use a form](../Desktop/labels.md#form-to-use) as template to print labels.
+
## プロジェクトフォームとテーブルフォーム
2つのカテゴリーのフォームが存在します:
@@ -78,7 +245,7 @@ title: Forms
## フォームのページ
-各フォームは、少なくとも 2つのページで構成されています:
+Each form is made of at least two pages:
- ページ1: デフォルトで表示されるメインページ
- ページ0: 背景ページ。このページ上に置かれたオブジェクトはすべてのページで表示されます
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
index 3802e4d8a95a77..9703de00e01be9 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
@@ -7,7 +7,7 @@ title: 印刷
フォーム毎に用紙設定をおこなうことができます。 この機能は、フォームエディターで印刷ページの境界を表示するのに便利です。
-> **互換性に関する注意:** アプリケーションモードでフォームを印刷するときにこれらの設定が考慮されたとしても、プラットフォームおよびドライバー依存性に関する制約から、フォームの印刷設定を保存するのにこの機能を使用することは推奨されません。 より強力な `Print settings to BLOB` / `BLOB to print settings` を使用することが強く推奨されています。
+> **互換性に関する注意:** アプリケーションモードでフォームを印刷するときにこれらの設定が考慮されたとしても、プラットフォームおよびドライバー依存性に関する制約から、フォームの印刷設定を保存するのにこの機能を使用することは推奨されません。 It is highly recommended to use the 4D commands [`Print settings to BLOB`](../commands/print-settings-to-blob)/[`BLOB to print settings`](../commands/blob-to-print-settings) which are more powerful.
次の印刷設定が変更できます:
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Object.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Object.md
index 4149e2f68dead0..3ba6495ddf49f4 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Object.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Object.md
@@ -19,7 +19,31 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Picture Button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) -[Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Text Area](text.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[テキストエリア](text.md)
---
@@ -41,7 +65,32 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Picture Button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Radio Button](radio_overview.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Text Area](text.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[ラジオボタン](radio_overview.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[テキストエリア](text.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -120,7 +169,28 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Header](listbox-header-footer.md#headers) - [List Box Footer](listbox-header-footer.md#footers) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -130,14 +200,14 @@ title: オブジェクト
## 式の型/式タイプ
-> This property is called [**Data Type**](properties_DataSource.md#data-type-expression-type) in the Property List for [selection](FormObjects/listbox-object.md#selection-list-boxes) and [collection](../FormObjects/listbox-object.md#collection-or-entity-selection-list-boxes) type list box columns and for [Drop-down Lists](dropdownList_Overview.md) associated to an [object](FormObjects/dropdownList_Overview.md#using-an-object) or an [array](FormObjects/dropdownList_Overview.md#using-an-array).
+> [セレクション型](FormObjects/listbox-object.md#セレクションリストボックス) および [コレクション型](FormObjects/listbox-object.md#コレクションまたはエンティティセレクションリストボックス) のリストボックスカラムや、[オブジェクト](FormObjects/dropdownList_Overview.md#オブジェクトの使用) や [配列](FormObjects/dropdownList_Overview.md#配列の使用) に関連付けられた[ドロップダウンリスト](dropdownList_Overview.md) のプロパティリストでは、このプロパティは、[**データタイプ**](properties_DataSource.md#データタイプ-式の型) と呼ばれています。
オブジェクトに関連付けられた式または変数のデータ型を指定します。 この設定の主な目的は、プロパティリスト内で提供されるテーマとオプションが、データの型と対応するようにするためです。 つまり、実際に変数の型そのものを決めるわけではありません。 プロジェクトをコンパイルするには、[変数を宣言](Concepts/variables.md#変数の宣言) する必要があります。
ただし、次の特定の場合には、このプロパティは型宣言の機能を持ちえます:
- **[ダイナミック変数](#ダイナミック変数)**: このプロパティを使って、ダイナミック変数の型を宣言することができます。
-- **[List Box Columns](listbox-column.md)**: this property is used to associate a display format with the column data. 提供されるフォーマットは変数型 (配列型のリストボックス) またはデータ/フィールド型 (セレクションおよびコレクション型のリストボックス) により異なります。 使用できる標準の 4D フォーマットはテキスト、数値、整数、日付、時間、ピクチャー、そしてブールです。 テキストの場合は専用の表示フォーマットがありません。 標準フォーマットのほかに、定義したカスタムフォーマットも選択することができます。
+- **[リストボックスカラム](listbox-column.md)**: このプロパティは列データに表示フォーマットを関連づけるのに使用されます。 提供されるフォーマットは変数型 (配列型のリストボックス) またはデータ/フィールド型 (セレクションおよびコレクション型のリストボックス) により異なります。 使用できる標準の 4D フォーマットはテキスト、数値、整数、日付、時間、ピクチャー、そしてブールです。 テキストの場合は専用の表示フォーマットがありません。 標準フォーマットのほかに、定義したカスタムフォーマットも選択することができます。
- **[ピクチャー変数](input_overview.md)**: このプロパティを使うと、インタープリタモードにおいてフォームロード前に変数を宣言することができます。 フォーム上のピクチャー変数にピクチャーを表示する際には特別なメカニズムが使用されます。 そのため、他の型の変数とは違って、ピクチャー変数の宣言は、フォームロード前 (`On Load` フォームイベントよりも先) におこなう必要があります。 これを行うためには、フォームのロードより前に`var varName : Picture` 宣言を実行するか(通常、`DIALOG` コマンドを呼び出したメソッド内で行います)、変数をフォームレベルで式タイププロパティを使用して型指定する必要があります。
このいずれかをおこなわない場合、ピクチャー変数はピクチャーを正しく表示できません (インタープリターモードのみ)。
@@ -149,7 +219,20 @@ title: オブジェクト
#### 対象オブジェクト
-[Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Input](input_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Spinner](spinner.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab Control](tabControl.md)
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[入力](input_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[スピナー](spinner.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md)
---
@@ -292,7 +375,7 @@ title: オブジェクト
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) - [チェックボックス](checkbox_overview.md) - [リストボックスヘッダー](listbox-header-footer.md#ヘッダー) - [ラジオボタン](radio_overview.md) - [テキストエリア](text.md)
#### コマンド
@@ -302,9 +385,9 @@ title: オブジェクト
## 変数の計算
-This property sets the type of calculation to be done in a [column footer](listbox-header-footer.md#footers) area.
+このプロパティは、[リストボックスフッター](listbox-header-footer.md#フッター) エリアに適用される計算タイプを設定します。
-> The calculation for footers can also be set using the [`LISTBOX SET FOOTER CALCULATION`](../commands/listbox-set-footer-calculation) 4D command.
+> フッターでの計算は、[`LISTBOX SET FOOTER CALCULATION`](../commands/listbox-set-footer-calculation) 4D コマンドを使用することでも設定することができます。
様々な自動計算が利用可能です。 以下の表は、列のデータ型に応じて使用することのできる計算と、(コードで明示的に宣言されていないとき) 4D によってフッター変数に自動で割り当てられる型を示しています:
@@ -349,7 +432,7 @@ This property sets the type of calculation to be done in a [column footer](listb
#### 対象オブジェクト
-[List Box Footer](listbox-header-footer.md#footers)
+[リストボックスフッター](listbox-header-footer.md#フッター)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_RangeOfValues.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_RangeOfValues.md
index fc25fd4c0c6511..77b0e1ce37f403 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_RangeOfValues.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_RangeOfValues.md
@@ -54,7 +54,7 @@ title: 値の範囲
#### 対象オブジェクト
-[Combo Box](comboBox_overview.md) - [List Box Column](listbox-column.md) - [Input](input_overview.md)
+[コンボボックス](comboBox_overview.md) - [リストボックスカラム](listbox-column.md) - [入力](input_overview.md)
#### コマンド
@@ -79,7 +79,7 @@ title: 値の範囲
#### 対象オブジェクト
-[Combo Box](comboBox_overview.md) - [List Box Column](listbox-column.md) - [Input](input_overview.md)
+[コンボボックス](comboBox_overview.md) - [リストボックスカラム](listbox-column.md) - [入力](input_overview.md)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_ResizingOptions.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_ResizingOptions.md
index 84afe846266ac9..db4055de8c06bd 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_ResizingOptions.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_ResizingOptions.md
@@ -67,7 +67,34 @@ title: リサイズオプション
#### 対象オブジェクト
-[4D View Pro Area](viewProArea_overview.md) - [4D Write Pro Area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Dropdown list](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [Line](shapes_overview.md#line) - [List Box Column](listbox-column.md) - [Oval](shapes_overview.md#oval) - [Picture Button](pictureButton_overview.md) - [Picture Pop up menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress Indicators](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Rectangle](shapes_overview.md#rectangle) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[線](shapes_overview.md#線) -
+[リストボックスカラム](listbox-column.md) -
+[楕円](shapes_overview.md#楕円) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[四角](shapes_overview.md#四角) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -97,7 +124,34 @@ title: リサイズオプション
#### 対象オブジェクト
-[4D View Pro Area](viewProArea_overview.md) - [4D Write Pro Area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Dropdown list](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [Line](shapes_overview.md#line) - [List Box Column](listbox-column.md) - [Oval](shapes_overview.md#oval) - [Picture Button](pictureButton_overview.md) - [Picture Pop up menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress Indicators](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Rectangle](shapes_overview.md#rectangle) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[線](shapes_overview.md#線) -
+[リストボックスカラム](listbox-column.md) -
+[楕円](shapes_overview.md#楕円) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[四角](shapes_overview.md#四角) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Text.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Text.md
index bb99064225ab9f..67b977cfaf67e6 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Text.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Text.md
@@ -38,7 +38,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -63,7 +75,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -83,7 +107,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -124,7 +160,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -149,7 +197,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -167,7 +227,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -197,7 +269,21 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Progress Indicators](progressIndicator.md) - [Ruler](ruler.md) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[進捗インジケーター](progressIndicator.md) -
+[ルーラー](ruler.md) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -293,7 +379,18 @@ Choose([Companies]ID;Bold;Plain;Italic;Underline)
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) (all styles except Regular and Flat) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Header](listbox-header-footer.md#headers) - [List Box Footer](listbox-header-footer.md#footers) - [Radio Button](radio_overview.md) (all styles except Regular and Flat) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) (通常とフラット以外のスタイル) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[ラジオボタン](radio_overview.md) (通常とフラット以外のスタイル) -
+[テキストエリア](text.md)
#### コマンド
@@ -320,7 +417,7 @@ Choose([Companies]ID;Bold;Plain;Italic;Underline)
#### 対象オブジェクト
-[List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers)
+[リストボックス](listbox_overview.md) - [リストボックスカラム](listbox-column.md) - [リストボックスフッター](listbox-header-footer.md#footers) - [リストボックスヘッダー](listbox-header-footer.md#headers)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_TextAndPicture.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_TextAndPicture.md
index 8ee351e7c155a9..f5d980a94652e5 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_TextAndPicture.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_TextAndPicture.md
@@ -86,7 +86,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[List Box Header](listbox-header-footer.md#headers)
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー)
#### コマンド
@@ -171,7 +171,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[Button](button_overview.md) (all styles except [Help](button_overview.md#help)) - [Check Box](checkbox_overview.md) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md)
+[ボタン](button_overview.md) ([ヘルプ](button_overview.md#ヘルプ)ボタンを除く) - [チェックボックス](checkbox_overview.md) - [リストボックスヘッダー](listbox-header-footer.md#ヘッダー) - [ラジオボタン](radio_overview.md)
#### コマンド
@@ -300,7 +300,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[Toolbar Button](button_overview.md#toolbar) - [Bevel Button](button_overview.md#bevel) - [Rounded Bevel Button](button_overview.md#rounded-bevel) - [OS X Gradient Button](button_overview.md#os-x-gradient) - [OS X Textured Button](button_overview.md#os-x-textured) - [Office XP Button](button_overview.md#office-xp) - [Custom](button_overview.md#custom)
+[ツールバーボタン](button_overview.md#ツールバー) - [ベベルボタン](button_overview.md#ベベル) - [角の丸いべべルボタン](button_overview.md#角の丸いベベル) - [OS X グラデーションボタン](button_overview.md#os-x-グラデーション) - [OS X テクスチャーボタン](button_overview.md#os-x-テクスチャー) - [Office XP ボタン](button_overview.md#office-xp) - [カスタムボタン](button_overview.md#カスタム)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md
index 06265dd125789f..8b4996d8cf69fe 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md
@@ -13,12 +13,13 @@ title: リリースノート
- 4D Write Pro は[階層リストスタイルシート](../WritePro/user-legacy/stylesheets.md#hierarchical-list-style-sheets) サポートするようになり、これにより自動ナンバリングつきの、構造化された[マルチレベルのリスト](../WritePro/user-legacy/using-a-4d-write-pro-area.md#multi-level-lists) の作成と管理が可能になりました。
- [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) および [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew) クラスにおいて、ローカル証明書フォルダの代わりにmacOS キーチェーンからのカスタムの証明書を使用できるようになりました。
- テキストソースから4D メソッドを作成し実行するための[`4D.Method` クラス](../API/MethodClass.md)。 [`METHOD Get path`](../commands/method-get-path) および [`METHOD RESOLVE PATH`](../commands/method-resolve-path) コマンドは新しい`path volatile method` 定数 (128) をサポートするようになりました。
-- IMAP transporter now supports mailbox event notifications using the IDLE protocol through a [notifier object](../API/IMAPTransporterClass.md#notifier) of the [4D.IMAPNotifier](../API/IMAPNotifierClass.md) class, configurable via the `listener` property of [IMAP New transporter](../commands/imap-new-transporter).
+- IMAP transporter は、[4D.IMAPNotifier](../API/IMAPNotifierClass.md) クラスの、[notifier オブジェクト](../API/IMAPTransporterClass.md#notifier) を通して、IDLE プロトコルを使用したメールボックスイベント通知イベントをサポートするようになりました。またこのクラスは [IMAP New transporter](../commands/imap-new-transporter) の `listener` プロパティを通して設定することができます。
- リモートの[session](../API/SessionClass.md) オブジェクトは、[クライアント側でも利用可能](../Desktop/sessions.md#availability) になりました。
-- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component.
-- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md).
-- Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions.
-- Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository).
+- 新しい[データベース設定の新しい **AI** ページ](../settings/ai.md) を使うことで、4D AIKit コンポーネントを使用したコード内から呼び出し可能な、 [プロバイダーモデルエイリアス](../aikit/provider-model-aliases.md) を設定することができるようになりました。
+- 4D AIKit コンポーネント: 新しい[Providers](../aikit/Classes/OpenAIProviders.md) クラスを使用して [プロバイダーとモデルエイリアス](../aikit/provider-model-aliases.md) をインスタンス化して管理することができます。
+- ORDA データモデル関数および共有/セッションシングルトン関数における [`server` キーワード](../Concepts/classes.md#server) のサポート。
+- Liquid glass および Fluent UI インターフェースのフォーム用の新しい[印刷レンダラー](../FormEditor/forms.md#印刷レンダリングエンジン)。 [クラシックインターフェースのレンダラーを有効化する](../FormEditor/forms.md#旧式印刷レンダラー) ための新しい互換性オプション。
+- 依存関係: [GitLab レポジトリ上に保存されたコンポーネント](../Project/components.md#configuring-a-gitlab-repository) のサポート。
- [**修正リスト**](https://bugs.4d.fr/fixedbugslist?version=21_R3): 4D 21 R3 で修正されたバグのリストです ([日本語版はこちら](https://4d-jp.github.io/2023/269/release-note-version-20r3/))。
#### macOS におけるLiquid glass のサポート
@@ -32,8 +33,8 @@ title: リリースノート
- [`JSON Validate`](../commands/json-validate) コマンドは *$schema* キーを考慮するようになり、スキーマ内でサポートされていないバージョンが宣言されたときにはエラーを生成するようになりました。
- 分かりやすさのために、フォーミュラオブジェクトは、汎用的な [`4D.Function`](../API/FunctionClass.md) クラスを継承する [`4D.Formula`](../API/FormulaClass.md) クラスの新しいインスタンスになりました。
- 4D 21 R3 では、[コードライブチェッカー](../code-editor/write-class-method.md#警告とエラー) にもたらされた新しい改良が、ランゲージコマンドに対しても適用されます([こちらのblog 記事](https://blog.4d.com/enhancement-of-command-syntax-checking-in-the-editor)を参照してください)。 以前は検知されなかったシンタックスエラーがコード内でフラグ付けされるようになりました。
-- [設定ダイアログボックス](../settings/overview.md) から、"PHP" ページが削除されました。 Use the [PHP selectors with the `SET DATABASE PARAMETER`](../commands/set-database-parameter#php-interpreter-ip-address-55) command to configure a PHP interpreter.
-- The **Legacy** network layer is no longer supported. 旧式ネットワークレイヤーを使用していたプロジェクトまたはバイナリーデータベースは、4D 21 R3 以降にアップグレードした際に自動的に[**ServerNet**](../settings/client-server.md#ネットワークレイヤー) へと設定されます。
+- [設定ダイアログボックス](../settings/overview.md) から、"PHP" ページが削除されました。 PHP インタープリターを設定するためには、[`SET DATABASE PARAMETER` のPHP セレクター](../commands/set-database-parameter#php-interpreter-ip-address-55) を使用してください。
+- \**旧式* ネットワークレイヤーはサポートされなくなりました。 旧式ネットワークレイヤーを使用していたプロジェクトまたはバイナリーデータベースは、4D 21 R3 以降にアップグレードした際に自動的に[**ServerNet**](../settings/client-server.md#ネットワークレイヤー) へと設定されます。
## 4D 21 R2
@@ -65,7 +66,7 @@ title: リリースノート
| ライブラリ | 現在のバージョン | 更新された 4D バージョン | 説明 |
| --------- | -------------------------------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
-| BoringSSL | 9b86817 | 21 | QUIC に使用 |
+| BoringSSL | 664a985 | **21 R4** | QUIC に使用 |
| CEF | 7258 | 21 | Chromium 139 |
| Hunspell | 1.7.2 | 20 | 4D フォームと 4D Write Pro でスペルチェックに使用されます。 |
| ICU | 77.1 | 21 | このアップグレードにより、英数字とテキスト、オブジェクトのインデックスが自動的に再構築されます。 |
@@ -75,7 +76,7 @@ title: リリースノート
| Libuv | 1.51.0 | 21 | QUIC に使用 |
| libZip | 1.11.4 | 21 | Zip クラス、4D Write Pro、svg および serverNet コンポーネントによって使用。 |
| LZMA | 5.8.1 | 21 | |
-| ngtcp2 | 1.18.0 | 21 | QUIC に使用 |
+| ngtcp2 | 1.22.1 | **21 R4** | QUIC に使用 |
| OpenSSL | 3.5.2 | 21 | |
| PDFWriter | 4.7.0 | 21 | [`WP Export document`](../WritePro/commands/wp-export-document.md) および [`WP Export variable`](../WritePro/commands/wp-export-variable.md) において使用されます |
| SpreadJS | 18.2.0 | 21 R2 | 新機能の概要については、 [このブログ記事](https://blog.4d.com/4d-view-pro-whats-new-in-4d-21-r2/) を参照してください。 |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/client-server-optimization.md b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/client-server-optimization.md
index 48d3ec1a2a1235..15af0cc9863e7a 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/client-server-optimization.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/client-server-optimization.md
@@ -143,13 +143,13 @@ title: クライアント/サーバーの最適化
### `local` キーワードの使用
-By default, [ORDA data model functions](../ORDA/ordaClasses.md) are executed on the server, which usually provides the best performance since only the function request and the result are sent over the network. However, it could happen that a function processes data that's already in the local cache and is fully executable on the client side. In this case, you can save requests to the server and thus, enhance the application performance by [using the `local` keyword in the function definition](../Concepts/classes.md#local).
+デフォルトで、[ORDA データモデル関数](../ORDA/ordaClasses.md) はサーバー上で実行されます。これは関数リクエストと結果のみがネットワーク越しで送信されるため、一般的にはベストパフォーマンスを提供するとされています。 しかしながら、関数がローカルキャッシュ内に既にあるデータを処理するために、クライアント側だけで完全に完結可能な場合もあります。 この場合、[関数定義内で `local` キーワードを使用する](../Concepts/classes.md#local) ことによって、サーバーへのリクエスト回数をおさえ、結果としてアプリケーションのパフォーマンスを改善することができます。
最終的にサーバーへのアクセスが必要になっても (ORDAキャッシュが有効期限切れになった場合など) 関数は動作します。 もっとも、それではローカル実行によるパフォーマンスの向上は見込めないため、ローカル関数がサーバー上のデータにアクセスしないことを確認しておくことが推奨されます。 サーバーに対して複数のリクエストをおこなうローカル関数は、サーバー上で実行されて結果だけを返す関数よりも非効率的です。 たとえば、Schools Entityクラスの次の関数を考えます:
```4d
-// Get the youngest students
-// Inappropriate use of local keyword
+// 最も若い生徒を取得する
+// local キーワードの不適切な使用例
local Function getYoungest() : Object
return This.students.query("birthDate >= :1"; !2000-01-01!).orderBy("birthDate desc").slice(0; 5)
```
@@ -157,7 +157,7 @@ local Function getYoungest() : Object
- `local` キーワードを **使わない** 場合、1つのリクエストで結果が得られます。
- `local` キーワードを **使う** 場合、4つのリクエストが必要になります: Schools エンティティの students エンティティセレクションの取得、`query()` の実行、`orderBy()` の実行、`slice()` の実行。 この例では、`local` キーワードを使用するのは適切ではありません。
-#### Example: Checking attributes
+#### 例: 属性のチェック
クライアントにロードされ、ユーザーによって更新されたエンティティの属性について、サーバーへ保存リクエストを出すまえに、それらの一貫性を検査します。
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md
index 04507178bdf936..d83c25fad24b1f 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/orda-events.md
@@ -48,7 +48,7 @@ title: エンティティイベント
:::note
-ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed locally.
+ORDA [`constructor()`](./ordaClasses.md#class-constructor) 関数は必ずローカルで実行されます。
:::
@@ -58,7 +58,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always
以下の表は、ORDA イベントの一覧とそのルールをまとめたものです。
-| イベント | レベル | 関数名 | (C/S) Execution | エラーを返すことでアクションを停止できる |
+| イベント | レベル | 関数名 | (C/S の場合) 実行される場所 | エラーを返すことでアクションを停止できる |
| :------------------------------------ | :----- | :------------------------------------------------------ | :----------------------------------------------: | -------------------- |
| エンティティのインスタンス化 | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | ローカル | × |
| 属性がタッチされた | 属性 | `event touched ()` | [`local`](../Concepts/classes.md#local) キーワードによる | × |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Project/code-overview.md b/i18n/ja/docusaurus-plugin-content-docs/current/Project/code-overview.md
index d52239d1488e2c..00e97256801bba 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/Project/code-overview.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/Project/code-overview.md
@@ -160,7 +160,7 @@ Here are the encoded characters:
| \< | %3C |
| \> | %3E |
| ? | %3F |
-| \\| | %7C |
+| \| | %7C |
| \\ | %5C |
| % | %25 |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png
new file mode 100644
index 00000000000000..7e1cd6b7e973b8
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png
new file mode 100644
index 00000000000000..ce157014371ec1
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png
new file mode 100644
index 00000000000000..592ae7d506e652
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png
new file mode 100644
index 00000000000000..7cbec84055b1d3
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png
new file mode 100644
index 00000000000000..d78a6f5f3c1a48
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png
new file mode 100644
index 00000000000000..95e6603575d8a3
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png
new file mode 100644
index 00000000000000..5b09f52d9fa16c
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md b/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
index 8fea20a7e99a31..b70983c4cbf0d3 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
@@ -40,3 +40,80 @@ slug: /commands/theme/System-Documents
| [](../../commands/text-to-document)
|
| [](../../commands/volume-attributes)
|
| [](../../commands/volume-list)
|
+
+:::info 互換性
+
+Legacy commands from this theme can usually be usefully replaced by commands of the [*File and Folder*](./File_and_Folder.md) theme and their associated [File](../../API/FileClass.md), [Folder](../../API/FolderClass.md), [ZipFile](../../API/ZipFileClass.md) and [ZipFolder](../../API/ZipFolderClass.md) classes, allowing you to handle files and folders as objects.
+
+:::
+
+## Document reference number
+
+You open a document with the [`Open document`](../../commands/open-document), [`Create document`](../../commands/create-document) and [`Append document`](../../commands/append-document) commands. Once a document is open, you can read and write characters from and to the document using commands such as [`RECEIVE PACKET`](../../commands/receive-packet) and [`SEND PACKET`](../../commands/send-packet). When you are finished with the document, you usually close it using the `CLOSE DOCUMENT` command.
+
+All open documents returned by these commands are referred to using a **document reference number** (*DocRef*). A *DocRef* uniquely identifies an open document. It is formally an expression of the **Time** type. All commands working with open documents expect *DocRef* as a parameter. If you pass an incorrect *DocRef* to one of these commands, a file manager error occurs.
+
+A document can be opened in **read/write** mode by only one process at a time. In **read-only** mode, one process can open several documents, several processes can open multiple documents, you can open the same document as many times as necessary, but you cannot open the same document in read/write mode twice at a time. The `Create document` and `Append document` commands automatically open documents in read/write mode. Only the `Open document` command lets you choose the opening mode.
+
+:::note
+
+When it is called from a [preemptive process](../../Develop/preemptive.md), a *DocRef* reference can only be used from this preemptive process. When it is called from a cooperative process, a *DocRef* reference can be used from any other cooperative process.
+
+:::
+
+## The Document system variable
+
+`Open document`, `Create document`, `Append document` and `Select document` enable you to access a document using the standard Open or Save file dialog boxes. When you access a document through a standard dialog, 4D returns the full pathname of the document in the [`Document` system variable](../../Concepts/variables.md#system-variables). This system variable has to be distinguished from the *document* parameter that appears in the parameter list of the commands.
+
+## Absolute or relative pathname
+
+Most of the routines of this section accept document names, relative pathnames or absolute pathnames:
+
+Relative pathnames define a location with respect to a folder located on disk. Passing only a document name is considered as using a relative pathname. In 4D, a relative pathname is usually expressed with respect to the database folder, i.e. the folder containing the structure file. Relative pathnames are especially useful when deploying applications in heterogenous environments.
+Absolute pathnames define a location with respect to the root of the volume and so they do not depend on the current location of the database folder.
+To determine whether a pathname passed to a command must be interpreted as absolute or relative, 4D applies a specific algorithm on each platform.
+
+Windows
+If the parameter contains only two characters and if the second one is a ':',
+or if the text contains ':' and '\' as the second and third character,
+or if the text starts with "\\",
+then the pathname is absolute.
+
+In all other cases, the pathname is relative.
+
+Examples with the CREATE FOLDER command:
+
+CREATE FOLDER("lundi") // relative path
+CREATE FOLDER("\Monday") // relative path
+CREATE FOLDER("\Monday\Tuesday") // relative path
+CREATE FOLDER("c:") // absolute path
+CREATE FOLDER("d:\Monday") // absolute path
+CREATE FOLDER("\\srv-Internal\temp") // absolute path
+
+macOS
+If the text starts with a folder separator ':',
+or if does not contain any,
+then the path is relative.
+
+In all other cases, it is absolute.
+
+Examples with the CREATE FOLDER command:
+
+CREATE FOLDER("Monday") // relative path
+CREATE FOLDER("macintosh hd:") // absolute path
+CREATE FOLDER("Monday:Tuesday") // absolute path (a volume must be called Monday)
+CREATE FOLDER(":Monday:Tuesday") // relative path
+
+:::note
+
+See also [**Absolute and relative pathnames** in the Concepts section](../../Concepts/paths.md#absolute-and-relative-pathnames).
+
+:::
+
+## Extracting pathname contents
+
+You can handle pathname contents using the Path to object and Object to path commands. In particular, using these commands, you can extract from a pathname:
+
+a file name,
+the parent folder path,
+the file or folder extension.
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML.md b/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML.md
index 52a6c948f3d4f6..54fc67be87e6d3 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML.md
@@ -11,3 +11,61 @@ slug: /commands/theme/XML
| [](../../commands/xml-get-error)
|
| [](../../commands/xml-get-options)
|
| [](../../commands/xml-set-options)
|
+
+## Overview of XML Commands
+
+:::note
+
+For XML support, 4D uses a library named Xerces.dll developed by the Apache Foundation company.
+
+:::
+
+### XML, DOM, and SAX
+
+The **XML** theme groups together the generic XML "utilities" commands of 4D. These are option- and error-management commands.
+
+4D also offers two separate sets of XML commands: [**DOM**](../theme/XML_DOM.md) (Document Object Model) and [**SAX**](../theme/XML_SAX.md) (Simple API XML) are two different parsing modes for XML documents.
+
+- The DOM mode parses an XML source and builds its structure (its "tree") in memory. Because of this, access to each element of the source is extremely fast. However, since the entire tree structure is stored in memory, the processing of large XML documents may lead to the memory capacity being exceeded and thus provoke errors.
+- The SAX mode does not build a tree structure in memory. In this mode, "events" (such as the start and end of an element) are generated when parsing the source. This mode lets you parse XML documents of any size, regardless of the amount of memory available.
+
+#### 参照
+
+http://www.saxproject.org/?selected=event
+http://www.w3schools.com/xml/
+
+### プリエンプティブモード
+
+XML references created by a [preemptive process](../../Develop/preemptive.md) can only be used in that specific process. Conversely, XML references created by a cooperative process can be used by any other cooperative process, but cannot be used by any preemptive process.
+
+### Character Sets
+
+The following character sets are supported by the XML DOM and XML SAX commands of 4D:
+
+- ASCII
+- UTF-8
+- UTF-16 (Big/Small Endian)
+- UCS4 (Big/Small Endian)
+- EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings,
+- ISO-8859-1 (or Latin1)
+- Windows-1252.
+
+### 用語集
+
+This non-exhaustive list details the main XML concepts used by the commands and functions of 4D.
+
+- **Attribute**: an XML sub-tag associated with an element. An attribute always contains a name and a value.
+- **Child**: In an XML structure, an element in a level directly below another.
+- **DTD**: *Document Type Declaration*. The DTD records the set of specific rules and properties that the XML must follow. These rules define, more particularly, the name and content of each tag as well as its context. This formalization of the elements can be used to check whether an XML document is in compliance (in which case, it is declared “valid”). The DTD may be included in the XML document (internal DTD) or in a separate document (external DTD). Note that the DTD is not mandatory.
+- **Element**: an XML tag. An element always contains a name and a value. Optionally, an element may contain attributes.
+- **ElementRef**: XML reference used by the 4D XML commands to specify an XML structure. This reference is made up of 8 coded characters in hexadecimal form, which means that its length is 32 characters on a 64-bit system. It is recommended to declare XML references as Text.
+- **Parent**: In an XML structure, an element in a level directly above another.
+- **Parsing, parser**: The act of analyzing the contents of a structured object in order to extract useful information.
+- **Root**: An element located at the first level of an XML structure.
+- **Sibling**: An element at the same level as another.
+- **Structure**: structured XML object. This object can be a document, a variable, or an element.
+- **Validation**: An XML document is “validated” by the parser when it is “well-formed” and in compliance with the DTD specifications.
+- **Well-formed**: An XML document is declared “well-formed” by the parser when it complies with the generic XML specifications.
+- **XML**: eXtensible Markup Language. A computerized data exchange standard enabling the transfer of data as well as their structure. The XML language is based on the use of tags and a specific syntax, in keeping with the HTML language. However, unlike the latter, the XML language allows the definition of customized tags.
+- **XSL**: eXtensible Stylesheet Language. A language permitting the definition of style sheets used to process and display the contents of an XSL document.
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md b/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
index 9e8ccda3e66b95..06de43ea8b87a1 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
@@ -42,3 +42,64 @@ slug: /commands/theme/XML-DOM
| [](../../commands/dom-set-xml-declaration)
|
| [](../../commands/dom-set-xml-element-name)
|
| [](../../commands/dom-set-xml-element-value)
|
+
+## Overview of XML DOM Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML DOM.
+
+### Creating, opening and closing XML documents via DOM
+
+Objects created, modified or parsed by the 4D DOM commands can be text, URLs, documents or BLOBs. The DOM commands used for opening XML objects in 4D are [`DOM Parse XML source`](../../commands/dom-parse-xml-source) and [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable).
+
+Many commands then let you read, parse and write the elements and attributes. Errors are recovered using the [`XML GET ERROR`](../../commands/xml-get-error) command. Do not forget to call the [`DOM CLOSE XML`](../../commands/dom-close-xml) command to close the source in the end.
+
+Note about use of XML BLOB parameters: For historical reasons, XML commands such as [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable) accept BLOB type parameters. However, it is highly recommended to store XML structures as Text. The use of BLOBs is reserved for processing binary data. In conformity with XML specifications, binary data are automatically encoded in Base64, even when the BLOB contains text.
+
+### Support of XPath notation
+
+Several XML DOM commands ([`DOM Create XML element`](../../commands/dom-create-xml-element), [`DOM Find XML element`](../../commands/dom-find-xml-element), [`DOM Create XML element arrays`](../../commands/dom-create-xml-element-arrays) and [`DOM SET XML ELEMENT VALUE`](../../commands/dom-set-xml-element-value)) support some XPath expressions for accessing XML elements.
+
+XPath notation comes from the XPath language, designed to navigate within XML structures. It allows the setting of elements directly within an XML structure via a "pathname" type syntax, without necessarily having to indicate the complete pathname in order to reach it.
+
+For example, given the following structure:
+
+```xml
+
+
+
+
+
+
+
+```
+
+XPath notation allows you to access element 3 using the */RootElement/Elem1/Elem2/Elem3* syntax.
+
+4D also accepts indexed XPath elements using the *Element[ElementNum]* syntax. For example, given the following structure:
+
+```xml
+
+
+ aaa
+ bbb
+ ccc
+
+
+```
+
+XPath notation allows you to access the "ccc" value using the */RootElement/Elem1/Elem2[3]* syntax.
+
+For a comprehensive list of supported XPath expressions, refer to the [`DOM Find XML element`](../../commands/dom-find-xml-element) command description.
+
+:::note 互換性
+
+Starting with 4D 18 R3, the XPath implementation has been modified to be more compliant and to support a wider set of expressions. If you want to benefit from the extended features in your converted databases, you need to select the **Use standard XPath** option of the [Compatibility page](../../settings/compatibility.md).
+
+:::
+
+### Error Handling
+
+Many functions in this theme return an XML element reference. If an error occurs during function execution (for example, if the root element reference is not valid), the *OK* variable is set to 0 and an error is generated.
+
+In addition, the reference returned in this case is a sequence of 32 zero "0" characters.
+
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md b/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
index c550c3ea8541e7..fca5aa2d2f9792 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
@@ -24,3 +24,34 @@ slug: /commands/theme/XML-SAX
| [](../../commands/sax-open-xml-element)
|
| [](../../commands/sax-open-xml-element-arrays)
|
| [](../../commands/sax-set-xml-declaration)
|
+
+## Overview of XML SAX Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML SAX.
+
+### Creating, opening and closing XML documents via SAX
+
+The SAX commands work with the standard document references of 4D (**DocRef**, a Time type reference). It is therefore possible to use these commands jointly with the 4D commands used to manage documents, such as [`SEND PACKET`](../../commands/send-packet) or [`Append document`](../../commands/append-document).
+
+The creation and opening of XML documents by programming is carried out using the [`Create document`](../../commands/create-document) and [`Open document`](../../commands/open-document) commands. Subsequently, the use of an XML command with these documents will cause the automatic activation of XML mechanisms such as encoding. For instance, the `` header will be written automatically in the document.
+
+:::note
+
+Documents read by SAX commands must be opened in read-only mode by the [`Open document`](../../commands/open-document) command. This avoids any conflict between 4D and the Xerces library when you open "regular" and XML documents simultaneously. If you execute a SAX parsing command with a document open in read-write mode, an alert message is displayed and parsing is impossible.
+
+:::
+
+Closing an XML document must be carried out using the [`CLOSE DOCUMENT`](../../commands/close-document) command. If any XML elements were open, they will be closed automatically.
+
+### About end-of-line characters and BOM management
+
+When writing SAX documents, 4D uses the following default settings for end-of-line characters and BOM (byte order mask) usage:
+
+- CRLF characters on Windows and LF on macOS for end-of-line characters
+- files are written without BOM.
+
+:::note 互換性
+
+In projects created with 4D versions up to 19.x, by default 4D uses CRLF as end-of-line characters on macOS for SAX and a BOM. You can control the `XML line ending` and `XML BOM` management using the [`XML SET OPTIONS`](../../commands/xml-set-options) command and a [Compatibility setting](../../settings/compatibility.md). Important: Since SAX file lines are written directly at each statement, if you need to set the BOM and/or end-of-line options, you must call the [`XML SET OPTIONS`](../../commands/xml-set-options) command before the first SAX writing command.
+
+:::
diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/settings/compatibility.md b/i18n/ja/docusaurus-plugin-content-docs/current/settings/compatibility.md
index c01d15e195f70a..19be2ac27b1f06 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/current/settings/compatibility.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/current/settings/compatibility.md
@@ -5,23 +5,29 @@ title: 互換性ページ
互換性ページには、以前の 4Dバージョンとの互換性を管理するためのパラメーターがまとめられています。
-> 表示されるオプションの数は、元のデータベース/プロジェクトが作成されたバージョンや、そのデータベース/プロジェクトでおこなわれた設定の変更により異なります。
-> このページでは、v18以降のバージョンから変換された 4Dデータベース/プロジェクトで利用可能な互換性オプションのみを説明します。 それ以前のバージョンから引引き継がれる互換性オプションについては **doc.4d.com** の [互換性ページ](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.ja.html) を参照ください。
+:::note
-- **標準のXPathを使用:** デフォルトでは、v18 R3 より前のバージョンの 4D から変換されたデータベースではチェックが外されており、4D v18 R3 以降で作成されたデータベースではチェックされています。 v18 R3 以降、4D の XPath 実装は、より多くの述語に対応しサポートするために変更されました。 結果的に、以前の標準でない一部の機能は動作しなくなります。 これには以下のような機能が含まれます:
+- 表示されるオプションの数は、元のデータベース/プロジェクトが作成されたバージョンや、そのデータベース/プロジェクトでおこなわれた設定の変更により異なります。
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. それ以前のバージョンから引引き継がれる互換性オプションについては **doc.4d.com** の [互換性ページ](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.ja.html) を参照ください。
+
+:::
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. 結果的に、以前の標準でない一部の機能は動作しなくなります。 これには以下のような機能が含まれます:
- 最初の "/" はルートノードに限らない - "/" を XPath 式の最初の文字として使用しても、ルートノードからの絶対パスの宣言にはなりません。
- 暗示的なカレントノードはなし - カレントノードは XPath 式の中に含められていなければなりません。
- 繰り返された構造内の再帰的な検索は不可 - 最初の要素のみが解析されます。
- 標準的なものでなくとも、コードが以前と同じように動くように以前の機能を保ちたい場合もあるかもしれません。その場合、この *チェックを外して* ください。 その一方で、これらの非標準の実装をコード内で使用しておらず、拡張された XPath 機能 ([DOM Find XML element](../commands/dom-find-xml-element) コマンドの説明参照) をデータベース内で利用したい場合、この **標準のXPathを使用** オプションが *チェックされている* ことを確認してください。
+ 標準的なものでなくとも、コードが以前と同じように動くように以前の機能を保ちたい場合もあるかもしれません。その場合、この *チェックを外して* ください。 標準的なものでなくとも、コードが以前と同じように動くように以前の機能を保ちたい場合もあるかもしれません。その場合、この *チェックを外して* ください。 その一方で、これらの非標準の実装をコード内で使用しておらず、拡張された XPath 機能 ([DOM Find XML element](../commands/dom-find-xml-element) コマンドの説明参照) をデータベース内で利用したい場合、この **標準のXPathを使用** オプションが *チェックされている* ことを確認してください。
+
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. 以前の 4D のバージョンから変換されたデータベースにおいてこの新しい振る舞いを利用したい場合には、このオプションをチェックしてください。 [`TEXT TO DOCUMENT`](../commands/text-to-document)、[`Document to text`](../commands/document-to-text)、および [XML SET OPTIONS](../commands/xml-set-options) コマンドの詳細を参照してください。
-- **macOSにて改行コードとしてLFを使用する:** 4D v19 R2 以降 (XMLファイルについては 4D v19 R3 以降) の新規プロジェクトにおいて、4D は macOS でデフォルトの改行コード (EOL) として CR (xml SAX では CRLF) ではなくラインフィード (LF) をテキストファイルに書き込みます。 以前の 4D のバージョンから変換されたデータベースにおいてこの新しい振る舞いを利用したい場合には、このオプションをチェックしてください。 [`TEXT TO DOCUMENT`](../commands/text-to-document)、[`Document to text`](../commands/document-to-text)、および [XML SET OPTIONS](../commands/xml-set-options) コマンドの詳細を参照してください。
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. 以前のバージョンでは、テキストファイルはデフォルトでBOM 付きで書き込まれていました。 変換されたプロジェクトでこの新しい振る舞いを有効化するには、このオプションを選択します。 [`TEXT TO DOCUMENT`](../commands/text-to-document)、[`Document to text`](../commands/document-to-text)、および [XML SET OPTIONS](../commands/xml-set-options) コマンドの詳細を参照してください。
-- **Unicodeテキストファイルに書き込んでいる際にデフォルトでBOMを追加しない:** 4D v19 R2 以降 (XMLファイルについては 4D v19 R3 以降)、4D はデフォルトでバイトオーダーマーク (BOM) なしでテキストファイルに書き込みます。 以前のバージョンでは、テキストファイルはデフォルトでBOM 付きで書き込まれていました。 変換されたプロジェクトでこの新しい振る舞いを有効化するには、このオプションを選択します。 [`TEXT TO DOCUMENT`](../commands/text-to-document)、[`Document to text`](../commands/document-to-text)、および [XML SET OPTIONS](../commands/xml-set-options) コマンドの詳細を参照してください。
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. このオプションにチェックを入れることで、変換されたデータベースにおいてもこのデフォルトの振る舞いを適用することができます ([ORDA](../ORDA/overview.md) で NULL値がサポートされるようになったため、今後は空値ではなく NULL値の使用が推奨されます)。
-- **フィールド作成時にデフォルトで"ヌル値を空値にマップ"オプションのチェックを外す:** ORDA の仕様により合致するために、4D v19 R4 以降で作成されたデータベースにおいては、フィールド作成時に **ヌル値を空値にマップ** フィールドプロパティがデフォルトでチェックされなくなります。 このオプションにチェックを入れることで、変換されたデータベースにおいてもこのデフォルトの振る舞いを適用することができます ([ORDA](../ORDA/overview.md) で NULL値がサポートされるようになったため、今後は空値ではなく NULL値の使用が推奨されます)。
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **ノンブロッキング印刷**: 4D v20 R4以降、各プロセスには独自の印刷設定 (印刷オプション、カレントプリンターなど) を持つようになりました。これにより、複数の印刷ジョブを同時に実行できます。 このオプションをチェックすると、アップグレード変換された 4Dプロジェクトや、バイナリモードから変換されたプロジェクトデータベースで、この新しい機能を有効化できます。 **チェックしない場合**、以前の実装が適用されます: カレントの 4D印刷設定がグローバルに適用され、印刷ジョブ実行中はプリンターが "ビジー" 状態になります。次の印刷ジョブのためにプリンターを利用可能にするには、`CLOSE PRINTING JOB` を呼び出す必要があります (詳細は以前の4Dドキュメントを参照ください)。
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) に加えた変更は、catalog_editor.json という個別ファイルに保存されます。このファイルはプロジェクトの [Sourcesフォルダー](../Project/architecture.md#sources) に保存されます。 この新しいファイルアーキテクチャーにより、`catalog.4DCatalog` ファイルは重要なデータベースストラクチャーの変更のみを含むようになるため、VCSアプリケーションでマージの競合を管理しやすくなります。 互換性のため、この機能は以前の 4Dバージョンから変換されたプロジェクトではデフォルトで有効になっていません。有効にするには、このオプションをチェックする必要があります。 この機能が有効になっている場合、ストラクチャーエディターで初めて編集した時に `catalog_editor.json` ファイルが作成されます。
-- **ストラクチャーのカラーと座標を個別の catalog_editor.json ファイルに保存する**: 4D 20 R5以降、ストラクチャーエディターでテーブルやフィールドのグラフィカルな表示 (色、位置、順序など) に加えた変更は、catalog_editor.json という個別ファイルに保存されます。このファイルはプロジェクトの [Sourcesフォルダー](../Project/architecture.md#sources) に保存されます。 この新しいファイルアーキテクチャーにより、`catalog.4DCatalog` ファイルは重要なデータベースストラクチャーの変更のみを含むようになるため、VCSアプリケーションでマージの競合を管理しやすくなります。 互換性のため、この機能は以前の 4Dバージョンから変換されたプロジェクトではデフォルトで有効になっていません。有効にするには、このオプションをチェックする必要があります。 この機能が有効になっている場合、ストラクチャーエディターで初めて編集した時に `catalog_editor.json` ファイルが作成されます。
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../../FormEditor/forms.md#legacy-print-rendering)).
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/Admin/data-collect.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/Admin/data-collect.md
index 7b368ffc4aa6f1..e7969cdc4a341b 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/Admin/data-collect.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/Admin/data-collect.md
@@ -3,7 +3,7 @@ id: data-collect
title: データ収集
---
-4D製品を改善し続けるために、実行中の 4D Server アプリケーションの使用状況データを自動的に収集します。 収集されたデータは、ユーザーエクスペリエンスに影響を与えない形で送信されます。 個人データは収集されません。 For more information on 4D policy regarding personal data protection, please visit [this page](https://us.4d.com/privacy-policy).
+4D製品を改善し続けるために、実行中の 4D Server アプリケーションの使用状況データを自動的に収集します。 収集されたデータは、ユーザーエクスペリエンスに影響を与えない形で送信されます。 個人データは収集されません。 個人データ保護に関する4D ポリシーの詳細については、[こちらのページ](https://us.4d.com/privacy-policy)を参照してください。
以下の章では次のようなことを説明しています:
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_Object.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_Object.md
index 2be916cc600e3e..5e7f5cbbaf27f5 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_Object.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_Object.md
@@ -19,7 +19,31 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Picture Button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) -[Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Text Area](text.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[テキストエリア](text.md)
---
@@ -41,7 +65,32 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Picture Button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Radio Button](radio_overview.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Text Area](text.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[ラジオボタン](radio_overview.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[テキストエリア](text.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -120,7 +169,28 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Header](listbox-header-footer.md#headers) - [List Box Footer](listbox-header-footer.md#footers) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -130,14 +200,14 @@ title: オブジェクト
## 式の型/式タイプ
-> This property is called [**Data Type**](properties_DataSource.md#data-type-expression-type) in the Property List for [selection](FormObjects/listbox-object.md#selection-list-boxes) and [collection](../FormObjects/listbox-object.md#collection-or-entity-selection-list-boxes) type list box columns and for [Drop-down Lists](dropdownList_Overview.md) associated to an [object](FormObjects/dropdownList_Overview.md#using-an-object) or an [array](FormObjects/dropdownList_Overview.md#using-an-array).
+> [セレクション型](FormObjects/listbox-object.md#セレクションリストボックス) および [コレクション型](FormObjects/listbox-object.md#コレクションまたはエンティティセレクションリストボックス) のリストボックスカラムや、[オブジェクト](FormObjects/dropdownList_Overview.md#オブジェクトの使用) や [配列](FormObjects/dropdownList_Overview.md#配列の使用) に関連付けられた[ドロップダウンリスト](dropdownList_Overview.md) のプロパティリストでは、このプロパティは、[**データタイプ**](properties_DataSource.md#データタイプ-式の型) と呼ばれています。
オブジェクトに関連付けられた式または変数のデータ型を指定します。 この設定の主な目的は、プロパティリスト内で提供されるテーマとオプションが、データの型と対応するようにするためです。 つまり、実際に変数の型そのものを決めるわけではありません。 プロジェクトをコンパイルするには、[変数を宣言](Concepts/variables.md#変数の宣言) する必要があります。
ただし、次の特定の場合には、このプロパティは型宣言の機能を持ちえます:
- **[ダイナミック変数](#ダイナミック変数)**: このプロパティを使って、ダイナミック変数の型を宣言することができます。
-- **[List Box Columns](listbox-column.md)**: this property is used to associate a display format with the column data. 提供されるフォーマットは変数型 (配列型のリストボックス) またはデータ/フィールド型 (セレクションおよびコレクション型のリストボックス) により異なります。 使用できる標準の 4D フォーマットはテキスト、数値、整数、日付、時間、ピクチャー、そしてブールです。 テキストの場合は専用の表示フォーマットがありません。 標準フォーマットのほかに、定義したカスタムフォーマットも選択することができます。
+- **[リストボックスカラム](listbox-column.md)**: このプロパティは列データに表示フォーマットを関連づけるのに使用されます。 提供されるフォーマットは変数型 (配列型のリストボックス) またはデータ/フィールド型 (セレクションおよびコレクション型のリストボックス) により異なります。 使用できる標準の 4D フォーマットはテキスト、数値、整数、日付、時間、ピクチャー、そしてブールです。 テキストの場合は専用の表示フォーマットがありません。 標準フォーマットのほかに、定義したカスタムフォーマットも選択することができます。
- **[ピクチャー変数](input_overview.md)**: このプロパティを使うと、インタープリタモードにおいてフォームロード前に変数を宣言することができます。 フォーム上のピクチャー変数にピクチャーを表示する際には特別なメカニズムが使用されます。 そのため、他の型の変数とは違って、ピクチャー変数の宣言は、フォームロード前 (`On Load` フォームイベントよりも先) におこなう必要があります。 これを行うためには、フォームのロードより前に`var varName : Picture` 宣言を実行するか(通常、`DIALOG` コマンドを呼び出したメソッド内で行います)、変数をフォームレベルで式タイププロパティを使用して型指定する必要があります。
このいずれかをおこなわない場合、ピクチャー変数はピクチャーを正しく表示できません (インタープリターモードのみ)。
@@ -149,7 +219,20 @@ title: オブジェクト
#### 対象オブジェクト
-[Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Input](input_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Spinner](spinner.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab Control](tabControl.md)
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[入力](input_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[スピナー](spinner.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md)
---
@@ -292,7 +375,7 @@ title: オブジェクト
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) - [チェックボックス](checkbox_overview.md) - [リストボックスヘッダー](listbox-header-footer.md#ヘッダー) - [ラジオボタン](radio_overview.md) - [テキストエリア](text.md)
#### コマンド
@@ -302,7 +385,7 @@ title: オブジェクト
## 変数の計算
-This property sets the type of calculation to be done in a [column footer](listbox-header-footer.md#footers) area.
+このプロパティは、[リストボックスフッター](listbox-header-footer.md#フッター) エリアに適用される計算タイプを設定します。
> フッターでの計算は、[`LISTBOX SET FOOTER CALCULATION`](../commands-legacy/listbox-set-footer-calculation.md) 4D コマンドを使用することでも設定することができます。
@@ -349,7 +432,7 @@ This property sets the type of calculation to be done in a [column footer](listb
#### 対象オブジェクト
-[List Box Footer](listbox-header-footer.md#footers)
+[リストボックスフッター](listbox-header-footer.md#フッター)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_RangeOfValues.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_RangeOfValues.md
index 3a82d8ed45b4b1..02809e3e731c65 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_RangeOfValues.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_RangeOfValues.md
@@ -54,7 +54,7 @@ title: 値の範囲
#### 対象オブジェクト
-[Combo Box](comboBox_overview.md) - [List Box Column](listbox-column.md) - [Input](input_overview.md)
+[コンボボックス](comboBox_overview.md) - [リストボックスカラム](listbox-column.md) - [入力](input_overview.md)
#### コマンド
@@ -79,7 +79,7 @@ title: 値の範囲
#### 対象オブジェクト
-[Combo Box](comboBox_overview.md) - [List Box Column](listbox-column.md) - [Input](input_overview.md)
+[コンボボックス](comboBox_overview.md) - [リストボックスカラム](listbox-column.md) - [入力](input_overview.md)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_ResizingOptions.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_ResizingOptions.md
index 12032c3f07fdfd..5cd780d6ae2a47 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_ResizingOptions.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_ResizingOptions.md
@@ -67,7 +67,34 @@ title: リサイズオプション
#### 対象オブジェクト
-[4D View Pro Area](viewProArea_overview.md) - [4D Write Pro Area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Dropdown list](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [Line](shapes_overview.md#line) - [List Box Column](listbox-column.md) - [Oval](shapes_overview.md#oval) - [Picture Button](pictureButton_overview.md) - [Picture Pop up menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress Indicators](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Rectangle](shapes_overview.md#rectangle) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[線](shapes_overview.md#線) -
+[リストボックスカラム](listbox-column.md) -
+[楕円](shapes_overview.md#楕円) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[四角](shapes_overview.md#四角) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -97,7 +124,34 @@ title: リサイズオプション
#### 対象オブジェクト
-[4D View Pro Area](viewProArea_overview.md) - [4D Write Pro Area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Dropdown list](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [Line](shapes_overview.md#line) - [List Box Column](listbox-column.md) - [Oval](shapes_overview.md#oval) - [Picture Button](pictureButton_overview.md) - [Picture Pop up menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress Indicators](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Rectangle](shapes_overview.md#rectangle) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[線](shapes_overview.md#線) -
+[リストボックスカラム](listbox-column.md) -
+[楕円](shapes_overview.md#楕円) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[四角](shapes_overview.md#四角) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_Text.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_Text.md
index 78e7746760a32b..2916c92958464a 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_Text.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_Text.md
@@ -38,7 +38,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -63,7 +75,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -83,7 +107,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -124,7 +160,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -149,7 +197,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -167,7 +227,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -197,7 +269,21 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Progress Indicators](progressIndicator.md) - [Ruler](ruler.md) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[進捗インジケーター](progressIndicator.md) -
+[ルーラー](ruler.md) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -293,7 +379,18 @@ Choose([Companies]ID;Bold;Plain;Italic;Underline)
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) (all styles except Regular and Flat) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Header](listbox-header-footer.md#headers) - [List Box Footer](listbox-header-footer.md#footers) - [Radio Button](radio_overview.md) (all styles except Regular and Flat) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) (通常とフラット以外のスタイル) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[ラジオボタン](radio_overview.md) (通常とフラット以外のスタイル) -
+[テキストエリア](text.md)
#### コマンド
@@ -320,7 +417,7 @@ Choose([Companies]ID;Bold;Plain;Italic;Underline)
#### 対象オブジェクト
-[List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers)
+[リストボックス](listbox_overview.md) - [リストボックスカラム](listbox-column.md) - [リストボックスフッター](listbox-header-footer.md#footers) - [リストボックスヘッダー](listbox-header-footer.md#headers)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_TextAndPicture.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_TextAndPicture.md
index 25e5e15749761b..64716fbb391759 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_TextAndPicture.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R2/FormObjects/properties_TextAndPicture.md
@@ -86,7 +86,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[List Box Header](listbox-header-footer.md#headers)
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー)
#### コマンド
@@ -171,7 +171,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[Button](button_overview.md) (all styles except [Help](button_overview.md#help)) - [Check Box](checkbox_overview.md) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md)
+[ボタン](button_overview.md) ([ヘルプ](button_overview.md#ヘルプ)ボタンを除く) - [チェックボックス](checkbox_overview.md) - [リストボックスヘッダー](listbox-header-footer.md#ヘッダー) - [ラジオボタン](radio_overview.md)
#### コマンド
@@ -300,7 +300,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[Toolbar Button](button_overview.md#toolbar) - [Bevel Button](button_overview.md#bevel) - [Rounded Bevel Button](button_overview.md#rounded-bevel) - [OS X Gradient Button](button_overview.md#os-x-gradient) - [OS X Textured Button](button_overview.md#os-x-textured) - [Office XP Button](button_overview.md#office-xp) - [Custom](button_overview.md#custom)
+[ツールバーボタン](button_overview.md#ツールバー) - [ベベルボタン](button_overview.md#ベベル) - [角の丸いべべルボタン](button_overview.md#角の丸いベベル) - [OS X グラデーションボタン](button_overview.md#os-x-グラデーション) - [OS X テクスチャーボタン](button_overview.md#os-x-テクスチャー) - [Office XP ボタン](button_overview.md#office-xp) - [カスタムボタン](button_overview.md#カスタム)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
index 8d67bca2fbaff9..fe77deaed53255 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
@@ -45,7 +45,7 @@ IMAP Transporter オブジェクトは [IMP New transporter](../commands/imap-ne
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
index 0616d027afaea5..1b86e94cc30760 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
@@ -438,36 +438,36 @@ End for
4D ランゲージドキュメンテーションでは、以下の引数の型が使用できます。
-| 型 | 定義 | それを使用する4D コマンドの例 |
-| ------------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| > , <, >=, <=, #, =, \\| , % | クエリ条件や式に使用される比較、論理演算子または記号。 | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
-| any | サポートされるあらゆるデータ型を受け付ける引数 | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
-| 配列 | 同じ型の複数の値を格納する変数。 | ARRAY TEXT($arr;10) |
-| BLOB 配列 | BLOB 値を格納した配列。 | ARRAY BLOB($data;10) |
-| BLOB | バイナリデータを保存するために使用される、バイナリーラージオブジェクト。 | BLOB TO DOCUMENT($blob;"file.bin") |
-| Boolean | 論理値: True または False。 | If (OK=1) |
-| ブール配列 | ブール値を格納した配列。 | ARRAY BOOLEAN($flags;10) |
-| クラス名(例: 4D.File) | クラスインスタンスを作成または操作するために使用されるクラス型への参照。 | $file:=File("/RESOURCES/NovelCover1.jpg") |
-| Collection | 複数の型を格納可能な、順番付きの値のリスト。 | New collection("A";"B";"C") |
-| Date | カレンダーの日付値。 | $vDate:=Current date |
-| 日付配列 | 日付値を格納した配列。 | ARRAY DATE($dates;10) |
-| 式 | 式の形であればなんでも可能 | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
-| フィールド | テーブルに属しているフィールドへの参照。 | ORDER BY([Person];[Person]Name) |
-| Integer | 小数部分を除いた整数。 | $Sel:=ds.Employee.newSelection(dk keep ordered) |
-| 整数配列 | 整数値を格納した配列。 | ARRAY INTEGER($numbers;10) |
-| 倍長整数配列 | 倍長整数値を格納した配列。 | ARRAY LONGINT($values;10) |
-| オブジェクト配列 | オブジェクト型を格納した配列。 | ARRAY OBJECT($objects;10) |
-| Object | キー/値のペアで構成された構造化されたデータコンテナ。 | $entity.fromObject($o) |
-| 演算子 | 必ず \* 。 | QUERY([Person];[Person]Name="Smith";\*) |
-| ピクチャー配列 | ピクチャーを格納した配列。 | ARRAY PICTURE($images;10) |
-| Picture | グラフィカルな画像の値。 | READ PICTURE FILE($pic;"image.png") |
-| ポインター配列 | ポインターを格納した配列。 | ARRAY POINTER($ptrs;10) |
-| Pointer | 他の変数、フィールド、オブジェクトへの参照。 | If(Is nil pointer($ptr)) |
-| 実数配列 | 実数を格納した配列。 | ARRAY REAL($values;10) |
-| Real | 浮動小数点数値。 | $vlResult:=Int(123.4) |
-| Table | データベーステーブルへの参照。 | ALL RECORDS([Person]) |
-| Text | テキストデータを表現する一連の文字列。 | ALERT("Hello world") |
-| テキスト配列 | テキスト値を格納した配列。 | ARRAY TEXT($names;10) |
-| Time | 時間、分、秒を表した時間値。 | 現在の時刻 |
-| 時間配列 | 時間値を格納した配列。 | ARRAY TIME($times;10) |
-| 変数 | 値を受け取り可能(代入可能)な、"任意"の型の書き込み可能な変数。 | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
+| 型 | 定義 | それを使用する4D コマンドの例 |
+| ----------------------------------------------------------------------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| > , <, >=, <=, #, =, \| , % | クエリ条件や式に使用される比較、論理演算子または記号。 | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
+| any | サポートされるあらゆるデータ型を受け付ける引数 | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
+| 配列 | 同じ型の複数の値を格納する変数。 | ARRAY TEXT($arr;10) |
+| BLOB 配列 | BLOB 値を格納した配列。 | ARRAY BLOB($data;10) |
+| BLOB | バイナリデータを保存するために使用される、バイナリーラージオブジェクト。 | BLOB TO DOCUMENT($blob;"file.bin") |
+| Boolean | 論理値: True または False。 | If (OK=1) |
+| ブール配列 | ブール値を格納した配列。 | ARRAY BOOLEAN($flags;10) |
+| クラス名(例: 4D.File) | クラスインスタンスを作成または操作するために使用されるクラス型への参照。 | $file:=File("/RESOURCES/NovelCover1.jpg") |
+| Collection | 複数の型を格納可能な、順番付きの値のリスト。 | New collection("A";"B";"C") |
+| Date | カレンダーの日付値。 | $vDate:=Current date |
+| 日付配列 | 日付値を格納した配列。 | ARRAY DATE($dates;10) |
+| 式 | 式の形であればなんでも可能 | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
+| フィールド | テーブルに属しているフィールドへの参照。 | ORDER BY([Person];[Person]Name) |
+| Integer | 小数部分を除いた整数。 | $Sel:=ds.Employee.newSelection(dk keep ordered) |
+| 整数配列 | 整数値を格納した配列。 | ARRAY INTEGER($numbers;10) |
+| 倍長整数配列 | 倍長整数値を格納した配列。 | ARRAY LONGINT($values;10) |
+| オブジェクト配列 | オブジェクト型を格納した配列。 | ARRAY OBJECT($objects;10) |
+| Object | キー/値のペアで構成された構造化されたデータコンテナ。 | $entity.fromObject($o) |
+| 演算子 | 必ず \* 。 | QUERY([Person];[Person]Name="Smith";\*) |
+| ピクチャー配列 | ピクチャーを格納した配列。 | ARRAY PICTURE($images;10) |
+| Picture | グラフィカルな画像の値。 | READ PICTURE FILE($pic;"image.png") |
+| ポインター配列 | ポインターを格納した配列。 | ARRAY POINTER($ptrs;10) |
+| Pointer | 他の変数、フィールド、オブジェクトへの参照。 | If(Is nil pointer($ptr)) |
+| 実数配列 | 実数を格納した配列。 | ARRAY REAL($values;10) |
+| Real | 浮動小数点数値。 | $vlResult:=Int(123.4) |
+| Table | データベーステーブルへの参照。 | ALL RECORDS([Person]) |
+| Text | テキストデータを表現する一連の文字列。 | ALERT("Hello world") |
+| テキスト配列 | テキスト値を格納した配列。 | ARRAY TEXT($names;10) |
+| Time | 時間、分、秒を表した時間値。 | 現在の時刻 |
+| 時間配列 | 時間値を格納した配列。 | ARRAY TIME($times;10) |
+| 変数 | 値を受け取り可能(代入可能)な、"任意"の型の書き込み可能な変数。 | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
index d3a57ce3e53bc6..3260cd04078a5a 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
@@ -66,6 +66,47 @@ title: Forms
}
```
+## Printing forms
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+### 印刷レンダリングエンジン
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+:::tip 関連したblog 記事
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning 制限
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
## プロジェクトフォームとテーブルフォーム
2つのカテゴリーのフォームが存在します:
@@ -78,7 +119,7 @@ title: Forms
## フォームのページ
-各フォームは、少なくとも 2つのページで構成されています:
+Each form is made of at least two pages:
- ページ1: デフォルトで表示されるメインページ
- ページ0: 背景ページ。このページ上に置かれたオブジェクトはすべてのページで表示されます
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_Object.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_Object.md
index 2ece2cb7600b08..f3893e68329e7d 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_Object.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_Object.md
@@ -19,7 +19,31 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Picture Button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) -[Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Text Area](text.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[テキストエリア](text.md)
---
@@ -41,7 +65,32 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Picture Button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Radio Button](radio_overview.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Text Area](text.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[ラジオボタン](radio_overview.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[テキストエリア](text.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -120,7 +169,28 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Header](listbox-header-footer.md#headers) - [List Box Footer](listbox-header-footer.md#footers) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -130,14 +200,14 @@ title: オブジェクト
## 式の型/式タイプ
-> This property is called [**Data Type**](properties_DataSource.md#data-type-expression-type) in the Property List for [selection](FormObjects/listbox-object.md#selection-list-boxes) and [collection](../FormObjects/listbox-object.md#collection-or-entity-selection-list-boxes) type list box columns and for [Drop-down Lists](dropdownList_Overview.md) associated to an [object](FormObjects/dropdownList_Overview.md#using-an-object) or an [array](FormObjects/dropdownList_Overview.md#using-an-array).
+> [セレクション型](FormObjects/listbox-object.md#セレクションリストボックス) および [コレクション型](FormObjects/listbox-object.md#コレクションまたはエンティティセレクションリストボックス) のリストボックスカラムや、[オブジェクト](FormObjects/dropdownList_Overview.md#オブジェクトの使用) や [配列](FormObjects/dropdownList_Overview.md#配列の使用) に関連付けられた[ドロップダウンリスト](dropdownList_Overview.md) のプロパティリストでは、このプロパティは、[**データタイプ**](properties_DataSource.md#データタイプ-式の型) と呼ばれています。
オブジェクトに関連付けられた式または変数のデータ型を指定します。 この設定の主な目的は、プロパティリスト内で提供されるテーマとオプションが、データの型と対応するようにするためです。 つまり、実際に変数の型そのものを決めるわけではありません。 プロジェクトをコンパイルするには、[変数を宣言](Concepts/variables.md#変数の宣言) する必要があります。
ただし、次の特定の場合には、このプロパティは型宣言の機能を持ちえます:
- **[ダイナミック変数](#ダイナミック変数)**: このプロパティを使って、ダイナミック変数の型を宣言することができます。
-- **[List Box Columns](listbox-column.md)**: this property is used to associate a display format with the column data. 提供されるフォーマットは変数型 (配列型のリストボックス) またはデータ/フィールド型 (セレクションおよびコレクション型のリストボックス) により異なります。 使用できる標準の 4D フォーマットはテキスト、数値、整数、日付、時間、ピクチャー、そしてブールです。 テキストの場合は専用の表示フォーマットがありません。 標準フォーマットのほかに、定義したカスタムフォーマットも選択することができます。
+- **[リストボックスカラム](listbox-column.md)**: このプロパティは列データに表示フォーマットを関連づけるのに使用されます。 提供されるフォーマットは変数型 (配列型のリストボックス) またはデータ/フィールド型 (セレクションおよびコレクション型のリストボックス) により異なります。 使用できる標準の 4D フォーマットはテキスト、数値、整数、日付、時間、ピクチャー、そしてブールです。 テキストの場合は専用の表示フォーマットがありません。 標準フォーマットのほかに、定義したカスタムフォーマットも選択することができます。
- **[ピクチャー変数](input_overview.md)**: このプロパティを使うと、インタープリタモードにおいてフォームロード前に変数を宣言することができます。 フォーム上のピクチャー変数にピクチャーを表示する際には特別なメカニズムが使用されます。 そのため、他の型の変数とは違って、ピクチャー変数の宣言は、フォームロード前 (`On Load` フォームイベントよりも先) におこなう必要があります。 これを行うためには、フォームのロードより前に`var varName : Picture` 宣言を実行するか(通常、`DIALOG` コマンドを呼び出したメソッド内で行います)、変数をフォームレベルで式タイププロパティを使用して型指定する必要があります。
このいずれかをおこなわない場合、ピクチャー変数はピクチャーを正しく表示できません (インタープリターモードのみ)。
@@ -149,7 +219,20 @@ title: オブジェクト
#### 対象オブジェクト
-[Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Input](input_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Spinner](spinner.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab Control](tabControl.md)
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[入力](input_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[スピナー](spinner.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md)
---
@@ -292,7 +375,7 @@ title: オブジェクト
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) - [チェックボックス](checkbox_overview.md) - [リストボックスヘッダー](listbox-header-footer.md#ヘッダー) - [ラジオボタン](radio_overview.md) - [テキストエリア](text.md)
#### コマンド
@@ -302,9 +385,9 @@ title: オブジェクト
## 変数の計算
-This property sets the type of calculation to be done in a [column footer](listbox-header-footer.md#footers) area.
+このプロパティは、[リストボックスフッター](listbox-header-footer.md#フッター) エリアに適用される計算タイプを設定します。
-> The calculation for footers can also be set using the [`LISTBOX SET FOOTER CALCULATION`](../commands/listbox-set-footer-calculation) 4D command.
+> フッターでの計算は、[`LISTBOX SET FOOTER CALCULATION`](../commands/listbox-set-footer-calculation) 4D コマンドを使用することでも設定することができます。
様々な自動計算が利用可能です。 以下の表は、列のデータ型に応じて使用することのできる計算と、(コードで明示的に宣言されていないとき) 4D によってフッター変数に自動で割り当てられる型を示しています:
@@ -349,7 +432,7 @@ This property sets the type of calculation to be done in a [column footer](listb
#### 対象オブジェクト
-[List Box Footer](listbox-header-footer.md#footers)
+[リストボックスフッター](listbox-header-footer.md#フッター)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_RangeOfValues.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_RangeOfValues.md
index fc25fd4c0c6511..77b0e1ce37f403 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_RangeOfValues.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_RangeOfValues.md
@@ -54,7 +54,7 @@ title: 値の範囲
#### 対象オブジェクト
-[Combo Box](comboBox_overview.md) - [List Box Column](listbox-column.md) - [Input](input_overview.md)
+[コンボボックス](comboBox_overview.md) - [リストボックスカラム](listbox-column.md) - [入力](input_overview.md)
#### コマンド
@@ -79,7 +79,7 @@ title: 値の範囲
#### 対象オブジェクト
-[Combo Box](comboBox_overview.md) - [List Box Column](listbox-column.md) - [Input](input_overview.md)
+[コンボボックス](comboBox_overview.md) - [リストボックスカラム](listbox-column.md) - [入力](input_overview.md)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_ResizingOptions.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_ResizingOptions.md
index 84afe846266ac9..db4055de8c06bd 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_ResizingOptions.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_ResizingOptions.md
@@ -67,7 +67,34 @@ title: リサイズオプション
#### 対象オブジェクト
-[4D View Pro Area](viewProArea_overview.md) - [4D Write Pro Area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Dropdown list](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [Line](shapes_overview.md#line) - [List Box Column](listbox-column.md) - [Oval](shapes_overview.md#oval) - [Picture Button](pictureButton_overview.md) - [Picture Pop up menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress Indicators](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Rectangle](shapes_overview.md#rectangle) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[線](shapes_overview.md#線) -
+[リストボックスカラム](listbox-column.md) -
+[楕円](shapes_overview.md#楕円) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[四角](shapes_overview.md#四角) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -97,7 +124,34 @@ title: リサイズオプション
#### 対象オブジェクト
-[4D View Pro Area](viewProArea_overview.md) - [4D Write Pro Area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Dropdown list](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [Line](shapes_overview.md#line) - [List Box Column](listbox-column.md) - [Oval](shapes_overview.md#oval) - [Picture Button](pictureButton_overview.md) - [Picture Pop up menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress Indicators](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Rectangle](shapes_overview.md#rectangle) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[線](shapes_overview.md#線) -
+[リストボックスカラム](listbox-column.md) -
+[楕円](shapes_overview.md#楕円) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[四角](shapes_overview.md#四角) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_Text.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_Text.md
index bb99064225ab9f..67b977cfaf67e6 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_Text.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_Text.md
@@ -38,7 +38,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -63,7 +75,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -83,7 +107,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -124,7 +160,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -149,7 +197,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -167,7 +227,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -197,7 +269,21 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Progress Indicators](progressIndicator.md) - [Ruler](ruler.md) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[進捗インジケーター](progressIndicator.md) -
+[ルーラー](ruler.md) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -293,7 +379,18 @@ Choose([Companies]ID;Bold;Plain;Italic;Underline)
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) (all styles except Regular and Flat) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Header](listbox-header-footer.md#headers) - [List Box Footer](listbox-header-footer.md#footers) - [Radio Button](radio_overview.md) (all styles except Regular and Flat) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) (通常とフラット以外のスタイル) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[ラジオボタン](radio_overview.md) (通常とフラット以外のスタイル) -
+[テキストエリア](text.md)
#### コマンド
@@ -320,7 +417,7 @@ Choose([Companies]ID;Bold;Plain;Italic;Underline)
#### 対象オブジェクト
-[List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers)
+[リストボックス](listbox_overview.md) - [リストボックスカラム](listbox-column.md) - [リストボックスフッター](listbox-header-footer.md#footers) - [リストボックスヘッダー](listbox-header-footer.md#headers)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_TextAndPicture.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_TextAndPicture.md
index 8ee351e7c155a9..f5d980a94652e5 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_TextAndPicture.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/FormObjects/properties_TextAndPicture.md
@@ -86,7 +86,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[List Box Header](listbox-header-footer.md#headers)
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー)
#### コマンド
@@ -171,7 +171,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[Button](button_overview.md) (all styles except [Help](button_overview.md#help)) - [Check Box](checkbox_overview.md) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md)
+[ボタン](button_overview.md) ([ヘルプ](button_overview.md#ヘルプ)ボタンを除く) - [チェックボックス](checkbox_overview.md) - [リストボックスヘッダー](listbox-header-footer.md#ヘッダー) - [ラジオボタン](radio_overview.md)
#### コマンド
@@ -300,7 +300,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[Toolbar Button](button_overview.md#toolbar) - [Bevel Button](button_overview.md#bevel) - [Rounded Bevel Button](button_overview.md#rounded-bevel) - [OS X Gradient Button](button_overview.md#os-x-gradient) - [OS X Textured Button](button_overview.md#os-x-textured) - [Office XP Button](button_overview.md#office-xp) - [Custom](button_overview.md#custom)
+[ツールバーボタン](button_overview.md#ツールバー) - [ベベルボタン](button_overview.md#ベベル) - [角の丸いべべルボタン](button_overview.md#角の丸いベベル) - [OS X グラデーションボタン](button_overview.md#os-x-グラデーション) - [OS X テクスチャーボタン](button_overview.md#os-x-テクスチャー) - [Office XP ボタン](button_overview.md#office-xp) - [カスタムボタン](button_overview.md#カスタム)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
index 06265dd125789f..5c9346ec9f140d 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
@@ -13,12 +13,13 @@ title: リリースノート
- 4D Write Pro は[階層リストスタイルシート](../WritePro/user-legacy/stylesheets.md#hierarchical-list-style-sheets) サポートするようになり、これにより自動ナンバリングつきの、構造化された[マルチレベルのリスト](../WritePro/user-legacy/using-a-4d-write-pro-area.md#multi-level-lists) の作成と管理が可能になりました。
- [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) および [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew) クラスにおいて、ローカル証明書フォルダの代わりにmacOS キーチェーンからのカスタムの証明書を使用できるようになりました。
- テキストソースから4D メソッドを作成し実行するための[`4D.Method` クラス](../API/MethodClass.md)。 [`METHOD Get path`](../commands/method-get-path) および [`METHOD RESOLVE PATH`](../commands/method-resolve-path) コマンドは新しい`path volatile method` 定数 (128) をサポートするようになりました。
-- IMAP transporter now supports mailbox event notifications using the IDLE protocol through a [notifier object](../API/IMAPTransporterClass.md#notifier) of the [4D.IMAPNotifier](../API/IMAPNotifierClass.md) class, configurable via the `listener` property of [IMAP New transporter](../commands/imap-new-transporter).
+- IMAP transporter は、[4D.IMAPNotifier](../API/IMAPNotifierClass.md) クラスの、[notifier オブジェクト](../API/IMAPTransporterClass.md#notifier) を通して、IDLE プロトコルを使用したメールボックスイベント通知イベントをサポートするようになりました。またこのクラスは [IMAP New transporter](../commands/imap-new-transporter) の `listener` プロパティを通して設定することができます。
- リモートの[session](../API/SessionClass.md) オブジェクトは、[クライアント側でも利用可能](../Desktop/sessions.md#availability) になりました。
-- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component.
-- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md).
-- Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions.
-- Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository).
+- 新しい[データベース設定の新しい **AI** ページ](../settings/ai.md) を使うことで、4D AIKit コンポーネントを使用したコード内から呼び出し可能な、 [プロバイダーモデルエイリアス](../aikit/provider-model-aliases.md) を設定することができるようになりました。
+- 4D AIKit コンポーネント: 新しい[Providers](../aikit/Classes/OpenAIProviders.md) クラスを使用して [プロバイダーとモデルエイリアス](../aikit/provider-model-aliases.md) をインスタンス化して管理することができます。
+- ORDA データモデル関数および共有/セッションシングルトン関数における [`server` キーワード](../Concepts/classes.md#server) のサポート。
+- Liquid glass および Fluent UI インターフェースのフォーム用の新しい[印刷レンダラー](../FormEditor/forms.md#印刷レンダリングエンジン)。 [クラシックインターフェースのレンダラーを有効化する](../FormEditor/forms.md#旧式印刷レンダラー) ための新しい互換性オプション。
+- 依存関係: [GitLab レポジトリ上に保存されたコンポーネント](../Project/components.md#configuring-a-gitlab-repository) のサポート。
- [**修正リスト**](https://bugs.4d.fr/fixedbugslist?version=21_R3): 4D 21 R3 で修正されたバグのリストです ([日本語版はこちら](https://4d-jp.github.io/2023/269/release-note-version-20r3/))。
#### macOS におけるLiquid glass のサポート
@@ -32,8 +33,8 @@ title: リリースノート
- [`JSON Validate`](../commands/json-validate) コマンドは *$schema* キーを考慮するようになり、スキーマ内でサポートされていないバージョンが宣言されたときにはエラーを生成するようになりました。
- 分かりやすさのために、フォーミュラオブジェクトは、汎用的な [`4D.Function`](../API/FunctionClass.md) クラスを継承する [`4D.Formula`](../API/FormulaClass.md) クラスの新しいインスタンスになりました。
- 4D 21 R3 では、[コードライブチェッカー](../code-editor/write-class-method.md#警告とエラー) にもたらされた新しい改良が、ランゲージコマンドに対しても適用されます([こちらのblog 記事](https://blog.4d.com/enhancement-of-command-syntax-checking-in-the-editor)を参照してください)。 以前は検知されなかったシンタックスエラーがコード内でフラグ付けされるようになりました。
-- [設定ダイアログボックス](../settings/overview.md) から、"PHP" ページが削除されました。 Use the [PHP selectors with the `SET DATABASE PARAMETER`](../commands/set-database-parameter#php-interpreter-ip-address-55) command to configure a PHP interpreter.
-- The **Legacy** network layer is no longer supported. 旧式ネットワークレイヤーを使用していたプロジェクトまたはバイナリーデータベースは、4D 21 R3 以降にアップグレードした際に自動的に[**ServerNet**](../settings/client-server.md#ネットワークレイヤー) へと設定されます。
+- [設定ダイアログボックス](../settings/overview.md) から、"PHP" ページが削除されました。 PHP インタープリターを設定するためには、[`SET DATABASE PARAMETER` のPHP セレクター](../commands/set-database-parameter#php-interpreter-ip-address-55) を使用してください。
+- \**旧式* ネットワークレイヤーはサポートされなくなりました。 旧式ネットワークレイヤーを使用していたプロジェクトまたはバイナリーデータベースは、4D 21 R3 以降にアップグレードした際に自動的に[**ServerNet**](../settings/client-server.md#ネットワークレイヤー) へと設定されます。
## 4D 21 R2
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/ORDA/client-server-optimization.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/ORDA/client-server-optimization.md
index 48d3ec1a2a1235..15af0cc9863e7a 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/ORDA/client-server-optimization.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/ORDA/client-server-optimization.md
@@ -143,13 +143,13 @@ title: クライアント/サーバーの最適化
### `local` キーワードの使用
-By default, [ORDA data model functions](../ORDA/ordaClasses.md) are executed on the server, which usually provides the best performance since only the function request and the result are sent over the network. However, it could happen that a function processes data that's already in the local cache and is fully executable on the client side. In this case, you can save requests to the server and thus, enhance the application performance by [using the `local` keyword in the function definition](../Concepts/classes.md#local).
+デフォルトで、[ORDA データモデル関数](../ORDA/ordaClasses.md) はサーバー上で実行されます。これは関数リクエストと結果のみがネットワーク越しで送信されるため、一般的にはベストパフォーマンスを提供するとされています。 しかしながら、関数がローカルキャッシュ内に既にあるデータを処理するために、クライアント側だけで完全に完結可能な場合もあります。 この場合、[関数定義内で `local` キーワードを使用する](../Concepts/classes.md#local) ことによって、サーバーへのリクエスト回数をおさえ、結果としてアプリケーションのパフォーマンスを改善することができます。
最終的にサーバーへのアクセスが必要になっても (ORDAキャッシュが有効期限切れになった場合など) 関数は動作します。 もっとも、それではローカル実行によるパフォーマンスの向上は見込めないため、ローカル関数がサーバー上のデータにアクセスしないことを確認しておくことが推奨されます。 サーバーに対して複数のリクエストをおこなうローカル関数は、サーバー上で実行されて結果だけを返す関数よりも非効率的です。 たとえば、Schools Entityクラスの次の関数を考えます:
```4d
-// Get the youngest students
-// Inappropriate use of local keyword
+// 最も若い生徒を取得する
+// local キーワードの不適切な使用例
local Function getYoungest() : Object
return This.students.query("birthDate >= :1"; !2000-01-01!).orderBy("birthDate desc").slice(0; 5)
```
@@ -157,7 +157,7 @@ local Function getYoungest() : Object
- `local` キーワードを **使わない** 場合、1つのリクエストで結果が得られます。
- `local` キーワードを **使う** 場合、4つのリクエストが必要になります: Schools エンティティの students エンティティセレクションの取得、`query()` の実行、`orderBy()` の実行、`slice()` の実行。 この例では、`local` キーワードを使用するのは適切ではありません。
-#### Example: Checking attributes
+#### 例: 属性のチェック
クライアントにロードされ、ユーザーによって更新されたエンティティの属性について、サーバーへ保存リクエストを出すまえに、それらの一貫性を検査します。
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/ORDA/orda-events.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/ORDA/orda-events.md
index 04507178bdf936..d83c25fad24b1f 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/ORDA/orda-events.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/ORDA/orda-events.md
@@ -48,7 +48,7 @@ title: エンティティイベント
:::note
-ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed locally.
+ORDA [`constructor()`](./ordaClasses.md#class-constructor) 関数は必ずローカルで実行されます。
:::
@@ -58,7 +58,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always
以下の表は、ORDA イベントの一覧とそのルールをまとめたものです。
-| イベント | レベル | 関数名 | (C/S) Execution | エラーを返すことでアクションを停止できる |
+| イベント | レベル | 関数名 | (C/S の場合) 実行される場所 | エラーを返すことでアクションを停止できる |
| :------------------------------------ | :----- | :------------------------------------------------------ | :----------------------------------------------: | -------------------- |
| エンティティのインスタンス化 | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | ローカル | × |
| 属性がタッチされた | 属性 | `event touched ()` | [`local`](../Concepts/classes.md#local) キーワードによる | × |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
index 469fa48d223c37..c403c6a73c6a46 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
@@ -160,7 +160,7 @@ Here are the encoded characters:
| \< | %3C |
| \> | %3E |
| ? | %3F |
-| \\| | %7C |
+| \| | %7C |
| \\ | %5C |
| % | %25 |
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png differ
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
index 2f910ded41ecbc..7bf2fe3ffb30bb 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
@@ -5,7 +5,7 @@ slug: /commands/imap-new-transporter
displayed_sidebar: docs
---
-**IMAP New transporter**( *server* : Object ) : 4D.IMAPTransporter
+**IMAP New transporter**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
index c01d15e195f70a..19be2ac27b1f06 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
@@ -5,23 +5,29 @@ title: 互換性ページ
互換性ページには、以前の 4Dバージョンとの互換性を管理するためのパラメーターがまとめられています。
-> 表示されるオプションの数は、元のデータベース/プロジェクトが作成されたバージョンや、そのデータベース/プロジェクトでおこなわれた設定の変更により異なります。
-> このページでは、v18以降のバージョンから変換された 4Dデータベース/プロジェクトで利用可能な互換性オプションのみを説明します。 それ以前のバージョンから引引き継がれる互換性オプションについては **doc.4d.com** の [互換性ページ](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.ja.html) を参照ください。
+:::note
-- **標準のXPathを使用:** デフォルトでは、v18 R3 より前のバージョンの 4D から変換されたデータベースではチェックが外されており、4D v18 R3 以降で作成されたデータベースではチェックされています。 v18 R3 以降、4D の XPath 実装は、より多くの述語に対応しサポートするために変更されました。 結果的に、以前の標準でない一部の機能は動作しなくなります。 これには以下のような機能が含まれます:
+- 表示されるオプションの数は、元のデータベース/プロジェクトが作成されたバージョンや、そのデータベース/プロジェクトでおこなわれた設定の変更により異なります。
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. それ以前のバージョンから引引き継がれる互換性オプションについては **doc.4d.com** の [互換性ページ](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.ja.html) を参照ください。
+
+:::
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. 結果的に、以前の標準でない一部の機能は動作しなくなります。 これには以下のような機能が含まれます:
- 最初の "/" はルートノードに限らない - "/" を XPath 式の最初の文字として使用しても、ルートノードからの絶対パスの宣言にはなりません。
- 暗示的なカレントノードはなし - カレントノードは XPath 式の中に含められていなければなりません。
- 繰り返された構造内の再帰的な検索は不可 - 最初の要素のみが解析されます。
- 標準的なものでなくとも、コードが以前と同じように動くように以前の機能を保ちたい場合もあるかもしれません。その場合、この *チェックを外して* ください。 その一方で、これらの非標準の実装をコード内で使用しておらず、拡張された XPath 機能 ([DOM Find XML element](../commands/dom-find-xml-element) コマンドの説明参照) をデータベース内で利用したい場合、この **標準のXPathを使用** オプションが *チェックされている* ことを確認してください。
+ 標準的なものでなくとも、コードが以前と同じように動くように以前の機能を保ちたい場合もあるかもしれません。その場合、この *チェックを外して* ください。 標準的なものでなくとも、コードが以前と同じように動くように以前の機能を保ちたい場合もあるかもしれません。その場合、この *チェックを外して* ください。 その一方で、これらの非標準の実装をコード内で使用しておらず、拡張された XPath 機能 ([DOM Find XML element](../commands/dom-find-xml-element) コマンドの説明参照) をデータベース内で利用したい場合、この **標準のXPathを使用** オプションが *チェックされている* ことを確認してください。
+
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. 以前の 4D のバージョンから変換されたデータベースにおいてこの新しい振る舞いを利用したい場合には、このオプションをチェックしてください。 [`TEXT TO DOCUMENT`](../commands/text-to-document)、[`Document to text`](../commands/document-to-text)、および [XML SET OPTIONS](../commands/xml-set-options) コマンドの詳細を参照してください。
-- **macOSにて改行コードとしてLFを使用する:** 4D v19 R2 以降 (XMLファイルについては 4D v19 R3 以降) の新規プロジェクトにおいて、4D は macOS でデフォルトの改行コード (EOL) として CR (xml SAX では CRLF) ではなくラインフィード (LF) をテキストファイルに書き込みます。 以前の 4D のバージョンから変換されたデータベースにおいてこの新しい振る舞いを利用したい場合には、このオプションをチェックしてください。 [`TEXT TO DOCUMENT`](../commands/text-to-document)、[`Document to text`](../commands/document-to-text)、および [XML SET OPTIONS](../commands/xml-set-options) コマンドの詳細を参照してください。
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. 以前のバージョンでは、テキストファイルはデフォルトでBOM 付きで書き込まれていました。 変換されたプロジェクトでこの新しい振る舞いを有効化するには、このオプションを選択します。 [`TEXT TO DOCUMENT`](../commands/text-to-document)、[`Document to text`](../commands/document-to-text)、および [XML SET OPTIONS](../commands/xml-set-options) コマンドの詳細を参照してください。
-- **Unicodeテキストファイルに書き込んでいる際にデフォルトでBOMを追加しない:** 4D v19 R2 以降 (XMLファイルについては 4D v19 R3 以降)、4D はデフォルトでバイトオーダーマーク (BOM) なしでテキストファイルに書き込みます。 以前のバージョンでは、テキストファイルはデフォルトでBOM 付きで書き込まれていました。 変換されたプロジェクトでこの新しい振る舞いを有効化するには、このオプションを選択します。 [`TEXT TO DOCUMENT`](../commands/text-to-document)、[`Document to text`](../commands/document-to-text)、および [XML SET OPTIONS](../commands/xml-set-options) コマンドの詳細を参照してください。
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. このオプションにチェックを入れることで、変換されたデータベースにおいてもこのデフォルトの振る舞いを適用することができます ([ORDA](../ORDA/overview.md) で NULL値がサポートされるようになったため、今後は空値ではなく NULL値の使用が推奨されます)。
-- **フィールド作成時にデフォルトで"ヌル値を空値にマップ"オプションのチェックを外す:** ORDA の仕様により合致するために、4D v19 R4 以降で作成されたデータベースにおいては、フィールド作成時に **ヌル値を空値にマップ** フィールドプロパティがデフォルトでチェックされなくなります。 このオプションにチェックを入れることで、変換されたデータベースにおいてもこのデフォルトの振る舞いを適用することができます ([ORDA](../ORDA/overview.md) で NULL値がサポートされるようになったため、今後は空値ではなく NULL値の使用が推奨されます)。
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **ノンブロッキング印刷**: 4D v20 R4以降、各プロセスには独自の印刷設定 (印刷オプション、カレントプリンターなど) を持つようになりました。これにより、複数の印刷ジョブを同時に実行できます。 このオプションをチェックすると、アップグレード変換された 4Dプロジェクトや、バイナリモードから変換されたプロジェクトデータベースで、この新しい機能を有効化できます。 **チェックしない場合**、以前の実装が適用されます: カレントの 4D印刷設定がグローバルに適用され、印刷ジョブ実行中はプリンターが "ビジー" 状態になります。次の印刷ジョブのためにプリンターを利用可能にするには、`CLOSE PRINTING JOB` を呼び出す必要があります (詳細は以前の4Dドキュメントを参照ください)。
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) に加えた変更は、catalog_editor.json という個別ファイルに保存されます。このファイルはプロジェクトの [Sourcesフォルダー](../Project/architecture.md#sources) に保存されます。 この新しいファイルアーキテクチャーにより、`catalog.4DCatalog` ファイルは重要なデータベースストラクチャーの変更のみを含むようになるため、VCSアプリケーションでマージの競合を管理しやすくなります。 互換性のため、この機能は以前の 4Dバージョンから変換されたプロジェクトではデフォルトで有効になっていません。有効にするには、このオプションをチェックする必要があります。 この機能が有効になっている場合、ストラクチャーエディターで初めて編集した時に `catalog_editor.json` ファイルが作成されます。
-- **ストラクチャーのカラーと座標を個別の catalog_editor.json ファイルに保存する**: 4D 20 R5以降、ストラクチャーエディターでテーブルやフィールドのグラフィカルな表示 (色、位置、順序など) に加えた変更は、catalog_editor.json という個別ファイルに保存されます。このファイルはプロジェクトの [Sourcesフォルダー](../Project/architecture.md#sources) に保存されます。 この新しいファイルアーキテクチャーにより、`catalog.4DCatalog` ファイルは重要なデータベースストラクチャーの変更のみを含むようになるため、VCSアプリケーションでマージの競合を管理しやすくなります。 互換性のため、この機能は以前の 4Dバージョンから変換されたプロジェクトではデフォルトで有効になっていません。有効にするには、このオプションをチェックする必要があります。 この機能が有効になっている場合、ストラクチャーエディターで初めて編集した時に `catalog_editor.json` ファイルが作成されます。
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../../FormEditor/forms.md#legacy-print-rendering)).
\ No newline at end of file
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/Admin/data-collect.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/Admin/data-collect.md
index 7b368ffc4aa6f1..e7969cdc4a341b 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21/Admin/data-collect.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/Admin/data-collect.md
@@ -3,7 +3,7 @@ id: data-collect
title: データ収集
---
-4D製品を改善し続けるために、実行中の 4D Server アプリケーションの使用状況データを自動的に収集します。 収集されたデータは、ユーザーエクスペリエンスに影響を与えない形で送信されます。 個人データは収集されません。 For more information on 4D policy regarding personal data protection, please visit [this page](https://us.4d.com/privacy-policy).
+4D製品を改善し続けるために、実行中の 4D Server アプリケーションの使用状況データを自動的に収集します。 収集されたデータは、ユーザーエクスペリエンスに影響を与えない形で送信されます。 個人データは収集されません。 個人データ保護に関する4D ポリシーの詳細については、[こちらのページ](https://us.4d.com/privacy-policy)を参照してください。
以下の章では次のようなことを説明しています:
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Object.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Object.md
index 2be916cc600e3e..5e7f5cbbaf27f5 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Object.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Object.md
@@ -19,7 +19,31 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Picture Button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) -[Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Text Area](text.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[テキストエリア](text.md)
---
@@ -41,7 +65,32 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Picture Button](pictureButton_overview.md) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Radio Button](radio_overview.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Text Area](text.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[ラジオボタン](radio_overview.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[テキストエリア](text.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -120,7 +169,28 @@ title: オブジェクト
#### 対象オブジェクト
-[4D View Pro area](viewProArea_overview.md) - [4D Write Pro area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Hierarchical List](list_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Header](listbox-header-footer.md#headers) - [List Box Footer](listbox-header-footer.md#footers) - [Picture Pop-up Menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[階層リスト](list_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -130,14 +200,14 @@ title: オブジェクト
## 式の型/式タイプ
-> This property is called [**Data Type**](properties_DataSource.md#data-type-expression-type) in the Property List for [selection](FormObjects/listbox-object.md#selection-list-boxes) and [collection](../FormObjects/listbox-object.md#collection-or-entity-selection-list-boxes) type list box columns and for [Drop-down Lists](dropdownList_Overview.md) associated to an [object](FormObjects/dropdownList_Overview.md#using-an-object) or an [array](FormObjects/dropdownList_Overview.md#using-an-array).
+> [セレクション型](FormObjects/listbox-object.md#セレクションリストボックス) および [コレクション型](FormObjects/listbox-object.md#コレクションまたはエンティティセレクションリストボックス) のリストボックスカラムや、[オブジェクト](FormObjects/dropdownList_Overview.md#オブジェクトの使用) や [配列](FormObjects/dropdownList_Overview.md#配列の使用) に関連付けられた[ドロップダウンリスト](dropdownList_Overview.md) のプロパティリストでは、このプロパティは、[**データタイプ**](properties_DataSource.md#データタイプ-式の型) と呼ばれています。
オブジェクトに関連付けられた式または変数のデータ型を指定します。 この設定の主な目的は、プロパティリスト内で提供されるテーマとオプションが、データの型と対応するようにするためです。 つまり、実際に変数の型そのものを決めるわけではありません。 プロジェクトをコンパイルするには、[変数を宣言](Concepts/variables.md#変数の宣言) する必要があります。
ただし、次の特定の場合には、このプロパティは型宣言の機能を持ちえます:
- **[ダイナミック変数](#ダイナミック変数)**: このプロパティを使って、ダイナミック変数の型を宣言することができます。
-- **[List Box Columns](listbox-column.md)**: this property is used to associate a display format with the column data. 提供されるフォーマットは変数型 (配列型のリストボックス) またはデータ/フィールド型 (セレクションおよびコレクション型のリストボックス) により異なります。 使用できる標準の 4D フォーマットはテキスト、数値、整数、日付、時間、ピクチャー、そしてブールです。 テキストの場合は専用の表示フォーマットがありません。 標準フォーマットのほかに、定義したカスタムフォーマットも選択することができます。
+- **[リストボックスカラム](listbox-column.md)**: このプロパティは列データに表示フォーマットを関連づけるのに使用されます。 提供されるフォーマットは変数型 (配列型のリストボックス) またはデータ/フィールド型 (セレクションおよびコレクション型のリストボックス) により異なります。 使用できる標準の 4D フォーマットはテキスト、数値、整数、日付、時間、ピクチャー、そしてブールです。 テキストの場合は専用の表示フォーマットがありません。 標準フォーマットのほかに、定義したカスタムフォーマットも選択することができます。
- **[ピクチャー変数](input_overview.md)**: このプロパティを使うと、インタープリタモードにおいてフォームロード前に変数を宣言することができます。 フォーム上のピクチャー変数にピクチャーを表示する際には特別なメカニズムが使用されます。 そのため、他の型の変数とは違って、ピクチャー変数の宣言は、フォームロード前 (`On Load` フォームイベントよりも先) におこなう必要があります。 これを行うためには、フォームのロードより前に`var varName : Picture` 宣言を実行するか(通常、`DIALOG` コマンドを呼び出したメソッド内で行います)、変数をフォームレベルで式タイププロパティを使用して型指定する必要があります。
このいずれかをおこなわない場合、ピクチャー変数はピクチャーを正しく表示できません (インタープリターモードのみ)。
@@ -149,7 +219,20 @@ title: オブジェクト
#### 対象オブジェクト
-[Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Input](input_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [Plug-in Area](pluginArea_overview.md) - [Progress indicator](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Spinner](spinner.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab Control](tabControl.md)
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[入力](input_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[スピナー](spinner.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md)
---
@@ -292,7 +375,7 @@ title: オブジェクト
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) - [チェックボックス](checkbox_overview.md) - [リストボックスヘッダー](listbox-header-footer.md#ヘッダー) - [ラジオボタン](radio_overview.md) - [テキストエリア](text.md)
#### コマンド
@@ -302,7 +385,7 @@ title: オブジェクト
## 変数の計算
-This property sets the type of calculation to be done in a [column footer](listbox-header-footer.md#footers) area.
+このプロパティは、[リストボックスフッター](listbox-header-footer.md#フッター) エリアに適用される計算タイプを設定します。
> フッターでの計算は、[`LISTBOX SET FOOTER CALCULATION`](../commands-legacy/listbox-set-footer-calculation.md) 4D コマンドを使用することでも設定することができます。
@@ -349,7 +432,7 @@ This property sets the type of calculation to be done in a [column footer](listb
#### 対象オブジェクト
-[List Box Footer](listbox-header-footer.md#footers)
+[リストボックスフッター](listbox-header-footer.md#フッター)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_RangeOfValues.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_RangeOfValues.md
index 3a82d8ed45b4b1..02809e3e731c65 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_RangeOfValues.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_RangeOfValues.md
@@ -54,7 +54,7 @@ title: 値の範囲
#### 対象オブジェクト
-[Combo Box](comboBox_overview.md) - [List Box Column](listbox-column.md) - [Input](input_overview.md)
+[コンボボックス](comboBox_overview.md) - [リストボックスカラム](listbox-column.md) - [入力](input_overview.md)
#### コマンド
@@ -79,7 +79,7 @@ title: 値の範囲
#### 対象オブジェクト
-[Combo Box](comboBox_overview.md) - [List Box Column](listbox-column.md) - [Input](input_overview.md)
+[コンボボックス](comboBox_overview.md) - [リストボックスカラム](listbox-column.md) - [入力](input_overview.md)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_ResizingOptions.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_ResizingOptions.md
index 5701d4b136cb4b..7b73d7648e758c 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_ResizingOptions.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_ResizingOptions.md
@@ -67,7 +67,34 @@ title: リサイズオプション
#### 対象オブジェクト
-[4D View Pro Area](viewProArea_overview.md) - [4D Write Pro Area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Dropdown list](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [Line](shapes_overview.md#line) - [List Box Column](listbox-column.md) - [Oval](shapes_overview.md#oval) - [Picture Button](pictureButton_overview.md) - [Picture Pop up menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress Indicators](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Rectangle](shapes_overview.md#rectangle) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[線](shapes_overview.md#線) -
+[リストボックスカラム](listbox-column.md) -
+[楕円](shapes_overview.md#楕円) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[四角](shapes_overview.md#四角) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
@@ -97,7 +124,34 @@ title: リサイズオプション
#### 対象オブジェクト
-[4D View Pro Area](viewProArea_overview.md) - [4D Write Pro Area](writeProArea_overview.md) - [Button](button_overview.md) - [Button Grid](buttonGrid_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Dropdown list](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [Line](shapes_overview.md#line) - [List Box Column](listbox-column.md) - [Oval](shapes_overview.md#oval) - [Picture Button](pictureButton_overview.md) - [Picture Pop up menu](picturePopupMenu_overview.md) - [Plug-in Area](pluginArea_overview.md) - [Progress Indicators](progressIndicator.md) - [Radio Button](radio_overview.md) - [Ruler](ruler.md) - [Rectangle](shapes_overview.md#rectangle) - [Spinner](spinner.md) - [Splitter](splitters.md) - [Static Picture](staticPicture.md) - [Stepper](stepper.md) - [Subform](subform_overview.md) - [Tab control](tabControl.md) - [Web Area](webArea_overview.md)
+[4D View Pro エリア](viewProArea_overview.md) -
+[4D Write Pro エリア](writeProArea_overview.md) -
+[ボタン](button_overview.md) -
+[ボタングリッド](buttonGrid_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[線](shapes_overview.md#線) -
+[リストボックスカラム](listbox-column.md) -
+[楕円](shapes_overview.md#楕円) -
+[ピクチャーボタン](pictureButton_overview.md) -
+[ピクチャーポップアップメニュー](picturePopupMenu_overview.md) -
+[プラグインエリア](pluginArea_overview.md) -
+[進捗インジケーター](progressIndicator.md) -
+[ラジオボタン](radio_overview.md) -
+[ルーラー](ruler.md) -
+[四角](shapes_overview.md#四角) -
+[スピナー](spinner.md) -
+[スプリッター](splitters.md) -
+[スタティックピクチャー](staticPicture.md) -
+[ステッパー](stepper.md) -
+[サブフォーム](subform_overview.md) -
+[タブコントロール](tabControl.md) -
+[Web エリア](webArea_overview.md)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Text.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Text.md
index 78e7746760a32b..2916c92958464a 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Text.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Text.md
@@ -38,7 +38,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -63,7 +75,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -83,7 +107,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -124,7 +160,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -149,7 +197,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -167,7 +227,19 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックス列](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -197,7 +269,21 @@ title: Text
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Hierarchical List](list_overview.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers) - [Progress Indicators](progressIndicator.md) - [Ruler](ruler.md) - [Radio Button](radio_overview.md) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[階層リスト](list_overview.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[進捗インジケーター](progressIndicator.md) -
+[ルーラー](ruler.md) -
+[ラジオボタン](radio_overview.md) -
+[テキストエリア](text.md)
#### コマンド
@@ -293,7 +379,18 @@ Choose([Companies]ID;Bold;Plain;Italic;Underline)
#### 対象オブジェクト
-[Button](button_overview.md) - [Check Box](checkbox_overview.md) (all styles except Regular and Flat) - [Combo Box](comboBox_overview.md) - [Drop-down List](dropdownList_Overview.md) - [Group Box](groupBox.md) - [Input](input_overview.md) - [List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Header](listbox-header-footer.md#headers) - [List Box Footer](listbox-header-footer.md#footers) - [Radio Button](radio_overview.md) (all styles except Regular and Flat) - [Text Area](text.md)
+[ボタン](button_overview.md) -
+[チェックボックス](checkbox_overview.md) (通常とフラット以外のスタイル) -
+[コンボボックス](comboBox_overview.md) -
+[ドロップダウンリスト](dropdownList_Overview.md) -
+[グループボックス](groupBox.md) -
+[入力](input_overview.md) -
+[リストボックス](listbox_overview.md) -
+[リストボックスカラム](listbox-column.md) -
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー) -
+[リストボックスフッター](listbox-header-footer.md#フッター) -
+[ラジオボタン](radio_overview.md) (通常とフラット以外のスタイル) -
+[テキストエリア](text.md)
#### コマンド
@@ -320,7 +417,7 @@ Choose([Companies]ID;Bold;Plain;Italic;Underline)
#### 対象オブジェクト
-[List Box](listbox_overview.md) - [List Box Column](listbox-column.md) - [List Box Footer](listbox-header-footer.md#footers) - [List Box Header](listbox-header-footer.md#headers)
+[リストボックス](listbox_overview.md) - [リストボックスカラム](listbox-column.md) - [リストボックスフッター](listbox-header-footer.md#footers) - [リストボックスヘッダー](listbox-header-footer.md#headers)
#### コマンド
diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_TextAndPicture.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_TextAndPicture.md
index 25e5e15749761b..64716fbb391759 100644
--- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_TextAndPicture.md
+++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_TextAndPicture.md
@@ -86,7 +86,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[List Box Header](listbox-header-footer.md#headers)
+[リストボックスヘッダー](listbox-header-footer.md#ヘッダー)
#### コマンド
@@ -171,7 +171,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[Button](button_overview.md) (all styles except [Help](button_overview.md#help)) - [Check Box](checkbox_overview.md) - [List Box Header](listbox-header-footer.md#headers) - [Radio Button](radio_overview.md)
+[ボタン](button_overview.md) ([ヘルプ](button_overview.md#ヘルプ)ボタンを除く) - [チェックボックス](checkbox_overview.md) - [リストボックスヘッダー](listbox-header-footer.md#ヘッダー) - [ラジオボタン](radio_overview.md)
#### コマンド
@@ -300,7 +300,7 @@ title: テキスト、ピクチャー
#### 対象オブジェクト
-[Toolbar Button](button_overview.md#toolbar) - [Bevel Button](button_overview.md#bevel) - [Rounded Bevel Button](button_overview.md#rounded-bevel) - [OS X Gradient Button](button_overview.md#os-x-gradient) - [OS X Textured Button](button_overview.md#os-x-textured) - [Office XP Button](button_overview.md#office-xp) - [Custom](button_overview.md#custom)
+[ツールバーボタン](button_overview.md#ツールバー) - [ベベルボタン](button_overview.md#ベベル) - [角の丸いべべルボタン](button_overview.md#角の丸いベベル) - [OS X グラデーションボタン](button_overview.md#os-x-グラデーション) - [OS X テクスチャーボタン](button_overview.md#os-x-テクスチャー) - [Office XP ボタン](button_overview.md#office-xp) - [カスタムボタン](button_overview.md#カスタム)
#### コマンド
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md b/i18n/pt/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
index 689ecf96284a8e..00126a104f30d9 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/API/IMAPTransporterClass.md
@@ -45,7 +45,7 @@ Os objetos IMAP Transporter são instanciados com o comando [IMAP New transporte
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md b/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
index 7999942faccf76..2fb749afafee42 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/quick-tour.md
@@ -432,36 +432,36 @@ The following conventions are used in the 4D language documentation:
In the 4D language documentation, the following parameter types can be used.
-| Tipo | Definição | Examples of a 4D command using it |
-| ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| > , <, >=, <=, #, =, \\| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
-| any | A parameter that can accept any supported data type | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
-| Array | A variable containing a list of values of the same type. | ARRAY TEXT($arr;10) |
-| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
-| Blob | Binary large object used to store binary data. | BLOB TO DOCUMENT($blob;"file.bin") |
-| Parâmetros | A logical value: True or False. | If (OK=1) |
-| Boolean array | An array containing boolean values. | ARRAY BOOLEAN($flags;10) |
-| Class name (ex: 4D.File) | A reference to a class type used to create or manipulate class instances. | $file:=File("/RESOURCES/NovelCover1.jpg") |
-| Collection | An ordered list of values that can contain multiple types. | New collection("A";"B";"C") |
-| Date | A calendar date value. | $vDate:=Current date |
-| Date array | An array containing date values. | ARRAY DATE($dates;10) |
-| Expression | Can be anything | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
-| Campo | A reference to a field belonging to a table. | ORDER BY([Person];[Person]Name) |
-| Integer | A whole number without decimal part. | $Sel:=ds.Employee.newSelection(dk keep ordered) |
-| Integer array | An array containing integer values. | ARRAY INTEGER($numbers;10) |
-| Longint array | An array containing long integer values. | ARRAY LONGINT($values;10) |
-| Object array | An array containing objects. | ARRAY OBJECT($objects;10) |
-| Object | A structured data container composed of key/value pairs. | $entity.fromObject($o) |
-| Operador | Sempre \*. | QUERY([Person];[Person]Name="Smith";\*) |
-| Picture array | An array containing pictures. | ARRAY PICTURE($images;10) |
-| Imagem | A graphical image value. | READ PICTURE FILE($pic;"image.png") |
-| Pointer array | An array containing pointers. | ARRAY POINTER($ptrs;10) |
-| Ponteiro | A reference to another variable, field, or object. | If(Is nil pointer($ptr)) |
-| Real array | An array containing real numbers. | ARRAY REAL($values;10) |
-| Real | A floating-point numeric value. | $vlResult:=Int(123.4) |
-| Tabela | A reference to a database table. | ALL RECORDS([Person]) |
-| Text | A sequence of characters representing textual data. | ALERT("Hello world") |
-| Text array | An array containing text values. | ARRAY TEXT($names;10) |
-| Hora | A time value representing hours, minutes, and seconds. | Hora actual |
-| Time array | An array containing time values. | ARRAY TIME($times;10) |
-| Variável | A writable variable of type "any" that can receive a value (assignable). | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
+| Tipo | Definição | Examples of a 4D command using it |
+| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| > , <, >=, <=, #, =, \| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
+| any | A parameter that can accept any supported data type | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
+| Array | A variable containing a list of values of the same type. | ARRAY TEXT($arr;10) |
+| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
+| Blob | Binary large object used to store binary data. | BLOB TO DOCUMENT($blob;"file.bin") |
+| Parâmetros | A logical value: True or False. | If (OK=1) |
+| Boolean array | An array containing boolean values. | ARRAY BOOLEAN($flags;10) |
+| Class name (ex: 4D.File) | A reference to a class type used to create or manipulate class instances. | $file:=File("/RESOURCES/NovelCover1.jpg") |
+| Collection | An ordered list of values that can contain multiple types. | New collection("A";"B";"C") |
+| Date | A calendar date value. | $vDate:=Current date |
+| Date array | An array containing date values. | ARRAY DATE($dates;10) |
+| Expression | Can be anything | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
+| Campo | A reference to a field belonging to a table. | ORDER BY([Person];[Person]Name) |
+| Integer | A whole number without decimal part. | $Sel:=ds.Employee.newSelection(dk keep ordered) |
+| Integer array | An array containing integer values. | ARRAY INTEGER($numbers;10) |
+| Longint array | An array containing long integer values. | ARRAY LONGINT($values;10) |
+| Object array | An array containing objects. | ARRAY OBJECT($objects;10) |
+| Object | A structured data container composed of key/value pairs. | $entity.fromObject($o) |
+| Operador | Sempre \*. | QUERY([Person];[Person]Name="Smith";\*) |
+| Picture array | An array containing pictures. | ARRAY PICTURE($images;10) |
+| Imagem | A graphical image value. | READ PICTURE FILE($pic;"image.png") |
+| Pointer array | An array containing pointers. | ARRAY POINTER($ptrs;10) |
+| Ponteiro | A reference to another variable, field, or object. | If(Is nil pointer($ptr)) |
+| Real array | An array containing real numbers. | ARRAY REAL($values;10) |
+| Real | A floating-point numeric value. | $vlResult:=Int(123.4) |
+| Tabela | A reference to a database table. | ALL RECORDS([Person]) |
+| Text | A sequence of characters representing textual data. | ALERT("Hello world") |
+| Text array | An array containing text values. | ARRAY TEXT($names;10) |
+| Hora | A time value representing hours, minutes, and seconds. | Hora actual |
+| Time array | An array containing time values. | ARRAY TIME($times;10) |
+| Variável | A writable variable of type "any" that can receive a value (assignable). | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Develop/async.md b/i18n/pt/docusaurus-plugin-content-docs/current/Develop/async.md
index bbba933912d148..d3ba6437647a07 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/Develop/async.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/Develop/async.md
@@ -64,7 +64,7 @@ The calling process posts a message then the worker executes it. The worker can
### Event listening
-In event-driven development, it is obvious that some code must be able to listen for incoming events. Events can be generated by the user interface (such as a mouse click on an object or a keyboard key pressed) or by any other interaction such as an http request or the end of another action. For example, when a form is displayed using the `DIALOG` command, user actions can trigger events that your code can process. A click on a button will trigger the code associated to the button.
+In event-driven development, it is obvious that some code must be able to listen for incoming events. Events can be generated by the user interface (such as a mouse click on an object or a keyboard key pressed) or by any other interaction such as an http request or the end of another action. For example, when a form is displayed using the [`DIALOG`](../commands/dialog) command, user actions can trigger events that your code can process. A click on a button will trigger the code associated to the button.
In the context of asynchronous execution, the following features place your code in listening mode:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/forms.md b/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/forms.md
index 2a288a49a433af..722d592ac075b3 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/forms.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/forms.md
@@ -66,6 +66,173 @@ Os formulários também podem conter outros formulários através das seguintes
}
```
+## Using forms
+
+Forms are called using specific commands of the 4D Language. In your 4D desktop applications, forms can be used in various ways, depending on their status within your interface needs. A form can be:
+
+- used in its own window for data viewing, processing, editing, or to display on-screen information to the user,
+- used embedded in another form (subform),
+- used as template for printing,
+- or called by specific features like the Label editor.
+
+### Using a project form in a window
+
+When you want to use a form as on-screen dialog, you need to (1) create a window and (2) load the form within the window, along with an event loop to process user actions. The straighforward steps to display a form on screen are:
+
+1. Call the [`Open form window`](../commands/open-form-window) command to create and preconfigure a window tailored for your form. Note that the command only draw aan empty window, it does not display anything.
+2. In the same method, call the [`DIALOG`](../commands/dialog) command to actually load the form in the opened form window, ready for user interaction. [`DIALOG`](../commands/dialog) loads form data and places your code in listening mode to user events. When you call this command without asterisk (\*), the dialog will stay on screen and the code execution is frozen until an event occurs (see also ["Event listening" paragraph](../Develop/async.md#event-listening)).
+3. (optional) Use the [`Form`](../commands/form) command from within the form context to access form data.
+
+::note Compatibility
+
+All-in-one commands such as [`ADD RECORD`](../commands/add-record) or [`MODIFY RECORD`](../commands/add-record) merge all steps in a single call. These legacy commands can still be used for prototyping or basic developments but are not adapted to modern, fully controlled interfaces. They directly rely on the 4D database and legacy features such as [table forms](#project-form-and-table-form) and do not benefit from the power and flexibility of [ORDA features](../ORDA/overview.md). Unless specific needs, it is recommended to use project forms for your 4D desktop application interfaces.
+
+:::
+
+#### Simple example
+
+You create the following basic form in the [Form editor](./formEditor.md):
+
+
+
+The form is [associated with a "myForm" class](./properties_FormProperties.md#form-class), defined as follow:
+
+```4d
+ //cs.myForm
+property name : Text
+property age : Integer
+
+Class constructor
+ This.name:=""
+ This.age:=0
+```
+
+The form class is automatically instantiated by 4D once the form is loaded. If you execute the following project method:
+
+```4d
+ // Instantiate a form object that will host form data and UI logic
+var $formObject:=cs.myForm.new()
+
+ //Prepare default value within the form object
+$formObject.name:="Smith"
+$formObject.age:=42
+
+ // Create an empty window with ad-hoc settings that fits the desired form dimensions, resizing properties,
+ // and window type (this does not render the form)
+var $win:=Open form window("myForm"; Movable form dialog box; Horizontally centered; Vertically centered)
+
+ //Render the form, and provide $formObject's data. Dialog also activates the form event loop
+DIALOG("myForm"; $formObject)
+
+ //Without asterisk to Dialog statement, the form waits for a closing action from the user
+ //before executing the rest of the code. Calling Close window is just a good practice
+CLOSE WINDOW($win) //releases reference
+
+ //Display data modified by the user, if any/
+ALERT($formObject.name+" is "+String($formObject.age)+" years old!")
+
+```
+
+4D displays:
+
+
+
+### Using forms as subforms
+
+A form can be embedded within another form, in which case it becomes a [subform object](../FormObjects/subform_overview.md) which follows specific rules. A subform is automatically used when its parent form is [displayed in a window](#using-a-project-form-in-a-window).
+
+In the same way that you pass an object to a form with the [`DIALOG`](../commands/dialog) command, you can also pass an object to a subform area using the property list. Then, you can use it in the subform with the [`Form`](../commands/form) command. In this example, the "InvoiceAddress" object is bound to the subform:
+
+
+
+### Using forms to be printed
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+#### Exemplos
+
+You can use forms to print data, either as page or as list.
+
+- To simply print some part of a form, use the [`Print form`](../commands/print-form) command. Por exemplo:
+
+```4d
+var $formData:={}
+$formData.lastname:="Smith"
+$formData.firstname:="john"
+$formData.request:="I need more COFFEE"
+var $h:=Print form("Request_var";$formData;Form detail)
+```
+
+- To print a form within a printing job to process data during printing, use [`FORM LOAD`](../commands/form-load) and [`Print object`](../commands/print-object) commands. Por exemplo:
+
+```4d
+ var $formData : Object
+ var $over : Boolean
+ var $full : Boolean
+
+ OPEN PRINTING JOB
+ $formData:={}
+ $formData.LBcollection:=[]
+ ... //fill the collection with data
+
+ FORM LOAD("GlobalForm";$formData)
+ $over:=False
+ Repeat
+ $full:=Print object(*;"LB") // the datasource of this "LB" listbox is Form.LBcollection
+ LISTBOX GET PRINT INFORMATION(*;"LB";lk printing is over;$over)
+ If(Not($over))
+ PAGE BREAK
+ End if
+ Until($over)
+ FORM UNLOAD
+ CLOSE PRINTING JOB
+```
+
+#### Print rendering engine
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+:::tip Related blog post
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+#### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning Limitação
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
+### Other form usages
+
+There are several other ways to use forms in the 4D applications, including:
+
+- a form can be [inherited](#inherited-forms) from another form,
+- a form can be [associated to a listbox](../FormObjects/properties_ListBox.md#detail-form-name) in response to a user action to display a row using an edit button or a double-click,
+- the [label editor can use a form](../Desktop/labels.md#form-to-use) as template to print labels.
+
## Formulário projeto e formulário tabela
Existem duas categorias de formulários:
@@ -78,7 +245,7 @@ Normalmente, você seleciona a categoria do formulário quando o cria, mas pode
## Páginas formulário
-Cada formulário é composto por, pelo menos, duas páginas:
+Each form is made of at least two pages:
- uma página 1: uma página principal, exibida por defeito
- uma página 0: uma página de fundo, cujo conteúdo é exibido em todas as outras páginas.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md b/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
index 4b47eefa681737..4d9d05d24fb61a 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/properties_Print.md
@@ -7,7 +7,7 @@ title: Imprimir
Permite definir os parâmetros de impressão específicos para o formulário. Esta funcionalidade é útil para visualizar os limites da página de impressão no editor de formulários.
-> **Compatibilidad:** aunque estos parámetros se tengan en cuenta cuando se imprime el formulario en modo Aplicación, se desaconseja confiar en esta funcionalidad para almacenar los parámetros de impresión del formulario, debido a las limitaciones relativas Es muy recomendable utilizar los comandos 4D `Print settings to BLOB`/`BLOB to print settings` que son más poderosos.
+> **Compatibilidad:** aunque estos parámetros se tengan en cuenta cuando se imprime el formulario en modo Aplicación, se desaconseja confiar en esta funcionalidad para almacenar los parámetros de impresión del formulario, debido a las limitaciones relativas It is highly recommended to use the 4D commands [`Print settings to BLOB`](../commands/print-settings-to-blob)/[`BLOB to print settings`](../commands/blob-to-print-settings) which are more powerful.
Pode modificar os seguintes parâmetros de impressão:
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md b/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md
index b1307dd17c0497..7d99ef1ee309dd 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md
@@ -18,6 +18,7 @@ Leia [**O que há de novo no 4D v21 R3**](https://blog.4d.com/whats-new-in-4d-21
- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component.
- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md).
- Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions.
+- New [printing renderer](../FormEditor/forms.md#print-rendering-engine) for forms on Liquid glass and Fluent UI interfaces. New compatibility options to [enable the renderer on Classic interfaces](../FormEditor/forms.md#legacy-print-renderer).
- Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository).
- [**Lista de erros corrigida**](https://bugs.4d.fr/fixedbugslist?version=21_R3): lista de todos os bugs corrigidos em 4D 21 R3.
@@ -65,7 +66,7 @@ Leia [**O que há de novo no 4D v21 R2**](https://blog.4d.com/whats-new-in-4d-21
| Biblioteca | Versão atual | Atualizado em 4D | Comentário |
| ---------- | -------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
-| BoringSSL | 9b86817 | 21 | Usado para QUIC |
+| BoringSSL | 664a985 | **21 R4** | Usado para QUIC |
| CEF | 7258 | 21 | Chromium 139 |
| Hunspell | 7.3.27 | 20 | Usado para verificação ortográfica em formulários 4D e 4D Write Pro |
| ICU | 77.1 | 21 | This upgrade forces an automatic rebuild of alphanumeric, text and object indexes. |
@@ -75,7 +76,7 @@ Leia [**O que há de novo no 4D v21 R2**](https://blog.4d.com/whats-new-in-4d-21
| Libuv | 1.51.0 | 21 | Usado para QUIC |
| libZip | 1.11.4 | 21 | Utilizado pelos componentes zip class, 4D Write Pro, svg e serverNet |
| LZMA | 5.8.1 | 21 | |
-| ngtcp2 | 1.18.0 | 21 | Usado para QUIC |
+| ngtcp2 | 1.22.1 | **21 R4** | Usado para QUIC |
| OpenSSL | 3.5.2 | 21 | |
| PDFWriter | 4.7.0 | 21 | Used for [`WP Export document`](../WritePro/commands/wp-export-document.md) and [`WP Export variable`](../WritePro/commands/wp-export-variable.md) |
| SpreadJS | 18.2.0 | 21 R2 | Veja [este post de blog](https://blog.4d.com/4d-view-pro-whats-new-in-4d-21-r2/) para uma visão geral dos novos recursos |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Project/code-overview.md b/i18n/pt/docusaurus-plugin-content-docs/current/Project/code-overview.md
index 2e402e8b92f193..b0fa257bc09190 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/Project/code-overview.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/Project/code-overview.md
@@ -161,7 +161,7 @@ Here are the encoded characters:
| \< | %3C |
| \> | %3E |
| ? | %3F |
-| \\| | %7C |
+| \| | %7C |
| \\ | %5C |
| % | %25 |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png
new file mode 100644
index 00000000000000..7e1cd6b7e973b8
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/Subform-example.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png
new file mode 100644
index 00000000000000..ce157014371ec1
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-1.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png
new file mode 100644
index 00000000000000..592ae7d506e652
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/example-form-2.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/print_rendering.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/screen_rendering.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png
new file mode 100644
index 00000000000000..7cbec84055b1d3
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/form-print1.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png
new file mode 100644
index 00000000000000..d78a6f5f3c1a48
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/form-print2.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png
new file mode 100644
index 00000000000000..95e6603575d8a3
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection1.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png
new file mode 100644
index 00000000000000..5b09f52d9fa16c
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/commands/print-selection2.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
index 5a542c66bd8c13..7eecfc4a014833 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/System_Documents.md
@@ -40,3 +40,80 @@ slug: /commands/theme/System-Documents
| [](../../commands/text-to-document)
|
| [](../../commands/volume-attributes)
|
| [](../../commands/volume-list)
|
+
+:::info Compatibidade
+
+Legacy commands from this theme can usually be usefully replaced by commands of the [*File and Folder*](./File_and_Folder.md) theme and their associated [File](../../API/FileClass.md), [Folder](../../API/FolderClass.md), [ZipFile](../../API/ZipFileClass.md) and [ZipFolder](../../API/ZipFolderClass.md) classes, allowing you to handle files and folders as objects.
+
+:::
+
+## Document reference number
+
+You open a document with the [`Open document`](../../commands/open-document), [`Create document`](../../commands/create-document) and [`Append document`](../../commands/append-document) commands. Once a document is open, you can read and write characters from and to the document using commands such as [`RECEIVE PACKET`](../../commands/receive-packet) and [`SEND PACKET`](../../commands/send-packet). When you are finished with the document, you usually close it using the `CLOSE DOCUMENT` command.
+
+All open documents returned by these commands are referred to using a **document reference number** (*DocRef*). A *DocRef* uniquely identifies an open document. It is formally an expression of the **Time** type. All commands working with open documents expect *DocRef* as a parameter. If you pass an incorrect *DocRef* to one of these commands, a file manager error occurs.
+
+A document can be opened in **read/write** mode by only one process at a time. In **read-only** mode, one process can open several documents, several processes can open multiple documents, you can open the same document as many times as necessary, but you cannot open the same document in read/write mode twice at a time. The `Create document` and `Append document` commands automatically open documents in read/write mode. Only the `Open document` command lets you choose the opening mode.
+
+:::note
+
+When it is called from a [preemptive process](../../Develop/preemptive.md), a *DocRef* reference can only be used from this preemptive process. When it is called from a cooperative process, a *DocRef* reference can be used from any other cooperative process.
+
+:::
+
+## The Document system variable
+
+`Open document`, `Create document`, `Append document` and `Select document` enable you to access a document using the standard Open or Save file dialog boxes. When you access a document through a standard dialog, 4D returns the full pathname of the document in the [`Document` system variable](../../Concepts/variables.md#system-variables). This system variable has to be distinguished from the *document* parameter that appears in the parameter list of the commands.
+
+## Absolute or relative pathname
+
+Most of the routines of this section accept document names, relative pathnames or absolute pathnames:
+
+Relative pathnames define a location with respect to a folder located on disk. Passing only a document name is considered as using a relative pathname. In 4D, a relative pathname is usually expressed with respect to the database folder, i.e. the folder containing the structure file. Relative pathnames are especially useful when deploying applications in heterogenous environments.
+Absolute pathnames define a location with respect to the root of the volume and so they do not depend on the current location of the database folder.
+To determine whether a pathname passed to a command must be interpreted as absolute or relative, 4D applies a specific algorithm on each platform.
+
+Windows
+If the parameter contains only two characters and if the second one is a ':',
+or if the text contains ':' and '\' as the second and third character,
+or if the text starts with "\\",
+then the pathname is absolute.
+
+In all other cases, the pathname is relative.
+
+Examples with the CREATE FOLDER command:
+
+CREATE FOLDER("lundi") // relative path
+CREATE FOLDER("\Monday") // relative path
+CREATE FOLDER("\Monday\Tuesday") // relative path
+CREATE FOLDER("c:") // absolute path
+CREATE FOLDER("d:\Monday") // absolute path
+CREATE FOLDER("\\srv-Internal\temp") // absolute path
+
+macOS
+If the text starts with a folder separator ':',
+or if does not contain any,
+then the path is relative.
+
+In all other cases, it is absolute.
+
+Examples with the CREATE FOLDER command:
+
+CREATE FOLDER("Monday") // relative path
+CREATE FOLDER("macintosh hd:") // absolute path
+CREATE FOLDER("Monday:Tuesday") // absolute path (a volume must be called Monday)
+CREATE FOLDER(":Monday:Tuesday") // relative path
+
+:::note
+
+See also [**Absolute and relative pathnames** in the Concepts section](../../Concepts/paths.md#absolute-and-relative-pathnames).
+
+:::
+
+## Extracting pathname contents
+
+You can handle pathname contents using the Path to object and Object to path commands. In particular, using these commands, you can extract from a pathname:
+
+a file name,
+the parent folder path,
+the file or folder extension.
\ No newline at end of file
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML.md
index 52a6c948f3d4f6..67cef9e74fef7d 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML.md
@@ -11,3 +11,61 @@ slug: /commands/theme/XML
| [](../../commands/xml-get-error)
|
| [](../../commands/xml-get-options)
|
| [](../../commands/xml-set-options)
|
+
+## Overview of XML Commands
+
+:::note
+
+For XML support, 4D uses a library named Xerces.dll developed by the Apache Foundation company.
+
+:::
+
+### XML, DOM, and SAX
+
+The **XML** theme groups together the generic XML "utilities" commands of 4D. These are option- and error-management commands.
+
+4D also offers two separate sets of XML commands: [**DOM**](../theme/XML_DOM.md) (Document Object Model) and [**SAX**](../theme/XML_SAX.md) (Simple API XML) are two different parsing modes for XML documents.
+
+- The DOM mode parses an XML source and builds its structure (its "tree") in memory. Because of this, access to each element of the source is extremely fast. However, since the entire tree structure is stored in memory, the processing of large XML documents may lead to the memory capacity being exceeded and thus provoke errors.
+- The SAX mode does not build a tree structure in memory. In this mode, "events" (such as the start and end of an element) are generated when parsing the source. This mode lets you parse XML documents of any size, regardless of the amount of memory available.
+
+#### Veja também
+
+http://www.saxproject.org/?selected=event
+http://www.w3schools.com/xml/
+
+### Modo preventivo
+
+XML references created by a [preemptive process](../../Develop/preemptive.md) can only be used in that specific process. Conversely, XML references created by a cooperative process can be used by any other cooperative process, but cannot be used by any preemptive process.
+
+### Character Sets
+
+The following character sets are supported by the XML DOM and XML SAX commands of 4D:
+
+- ASCII
+- UTF-8
+- UTF-16 (Big/Small Endian)
+- UCS4 (Big/Small Endian)
+- EBCDIC code pages IBM037, IBM1047 and IBM1140 encodings,
+- ISO-8859-1 (or Latin1)
+- Windows-1252.
+
+### Glossary
+
+This non-exhaustive list details the main XML concepts used by the commands and functions of 4D.
+
+- **Attribute**: an XML sub-tag associated with an element. An attribute always contains a name and a value.
+- **Child**: In an XML structure, an element in a level directly below another.
+- **DTD**: *Document Type Declaration*. The DTD records the set of specific rules and properties that the XML must follow. These rules define, more particularly, the name and content of each tag as well as its context. This formalization of the elements can be used to check whether an XML document is in compliance (in which case, it is declared “valid”). The DTD may be included in the XML document (internal DTD) or in a separate document (external DTD). Note that the DTD is not mandatory.
+- **Element**: an XML tag. An element always contains a name and a value. Optionally, an element may contain attributes.
+- **ElementRef**: XML reference used by the 4D XML commands to specify an XML structure. This reference is made up of 8 coded characters in hexadecimal form, which means that its length is 32 characters on a 64-bit system. It is recommended to declare XML references as Text.
+- **Parent**: In an XML structure, an element in a level directly above another.
+- **Parsing, parser**: The act of analyzing the contents of a structured object in order to extract useful information.
+- **Root**: An element located at the first level of an XML structure.
+- **Sibling**: An element at the same level as another.
+- **Structure**: structured XML object. This object can be a document, a variable, or an element.
+- **Validation**: An XML document is “validated” by the parser when it is “well-formed” and in compliance with the DTD specifications.
+- **Well-formed**: An XML document is declared “well-formed” by the parser when it complies with the generic XML specifications.
+- **XML**: eXtensible Markup Language. A computerized data exchange standard enabling the transfer of data as well as their structure. The XML language is based on the use of tags and a specific syntax, in keeping with the HTML language. However, unlike the latter, the XML language allows the definition of customized tags.
+- **XSL**: eXtensible Stylesheet Language. A language permitting the definition of style sheets used to process and display the contents of an XSL document.
+
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
index 9e8ccda3e66b95..f310f2624c084d 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML_DOM.md
@@ -42,3 +42,64 @@ slug: /commands/theme/XML-DOM
| [](../../commands/dom-set-xml-declaration)
|
| [](../../commands/dom-set-xml-element-name)
|
| [](../../commands/dom-set-xml-element-value)
|
+
+## Overview of XML DOM Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML DOM.
+
+### Creating, opening and closing XML documents via DOM
+
+Objects created, modified or parsed by the 4D DOM commands can be text, URLs, documents or BLOBs. The DOM commands used for opening XML objects in 4D are [`DOM Parse XML source`](../../commands/dom-parse-xml-source) and [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable).
+
+Many commands then let you read, parse and write the elements and attributes. Errors are recovered using the [`XML GET ERROR`](../../commands/xml-get-error) command. Do not forget to call the [`DOM CLOSE XML`](../../commands/dom-close-xml) command to close the source in the end.
+
+Note about use of XML BLOB parameters: For historical reasons, XML commands such as [`DOM Parse XML variable`](../../commands/dom-parse-xml-variable) accept BLOB type parameters. However, it is highly recommended to store XML structures as Text. The use of BLOBs is reserved for processing binary data. In conformity with XML specifications, binary data are automatically encoded in Base64, even when the BLOB contains text.
+
+### Support of XPath notation
+
+Several XML DOM commands ([`DOM Create XML element`](../../commands/dom-create-xml-element), [`DOM Find XML element`](../../commands/dom-find-xml-element), [`DOM Create XML element arrays`](../../commands/dom-create-xml-element-arrays) and [`DOM SET XML ELEMENT VALUE`](../../commands/dom-set-xml-element-value)) support some XPath expressions for accessing XML elements.
+
+XPath notation comes from the XPath language, designed to navigate within XML structures. It allows the setting of elements directly within an XML structure via a "pathname" type syntax, without necessarily having to indicate the complete pathname in order to reach it.
+
+For example, given the following structure:
+
+```xml
+
+
+
+
+
+
+
+```
+
+XPath notation allows you to access element 3 using the */RootElement/Elem1/Elem2/Elem3* syntax.
+
+4D also accepts indexed XPath elements using the *Element[ElementNum]* syntax. For example, given the following structure:
+
+```xml
+
+
+ aaa
+ bbb
+ ccc
+
+
+```
+
+XPath notation allows you to access the "ccc" value using the */RootElement/Elem1/Elem2[3]* syntax.
+
+For a comprehensive list of supported XPath expressions, refer to the [`DOM Find XML element`](../../commands/dom-find-xml-element) command description.
+
+:::note Compatibidade
+
+Starting with 4D 18 R3, the XPath implementation has been modified to be more compliant and to support a wider set of expressions. If you want to benefit from the extended features in your converted databases, you need to select the **Use standard XPath** option of the [Compatibility page](../../settings/compatibility.md).
+
+:::
+
+### Error Handling
+
+Many functions in this theme return an XML element reference. If an error occurs during function execution (for example, if the root element reference is not valid), the *OK* variable is set to 0 and an error is generated.
+
+In addition, the reference returned in this case is a sequence of 32 zero "0" characters.
+
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
index c550c3ea8541e7..75402862bba7de 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/commands/theme/XML_SAX.md
@@ -24,3 +24,34 @@ slug: /commands/theme/XML-SAX
| [](../../commands/sax-open-xml-element)
|
| [](../../commands/sax-open-xml-element-arrays)
|
| [](../../commands/sax-set-xml-declaration)
|
+
+## Overview of XML SAX Commands
+
+See [XML, DOM, and SAX](../theme/XML.md#xml-dom-and-sax) section for a definition of XML SAX.
+
+### Creating, opening and closing XML documents via SAX
+
+The SAX commands work with the standard document references of 4D (**DocRef**, a Time type reference). It is therefore possible to use these commands jointly with the 4D commands used to manage documents, such as [`SEND PACKET`](../../commands/send-packet) or [`Append document`](../../commands/append-document).
+
+The creation and opening of XML documents by programming is carried out using the [`Create document`](../../commands/create-document) and [`Open document`](../../commands/open-document) commands. Subsequently, the use of an XML command with these documents will cause the automatic activation of XML mechanisms such as encoding. For instance, the `` header will be written automatically in the document.
+
+:::note
+
+Documents read by SAX commands must be opened in read-only mode by the [`Open document`](../../commands/open-document) command. This avoids any conflict between 4D and the Xerces library when you open "regular" and XML documents simultaneously. If you execute a SAX parsing command with a document open in read-write mode, an alert message is displayed and parsing is impossible.
+
+:::
+
+Closing an XML document must be carried out using the [`CLOSE DOCUMENT`](../../commands/close-document) command. If any XML elements were open, they will be closed automatically.
+
+### About end-of-line characters and BOM management
+
+When writing SAX documents, 4D uses the following default settings for end-of-line characters and BOM (byte order mask) usage:
+
+- CRLF characters on Windows and LF on macOS for end-of-line characters
+- files are written without BOM.
+
+:::note Compatibidade
+
+In projects created with 4D versions up to 19.x, by default 4D uses CRLF as end-of-line characters on macOS for SAX and a BOM. You can control the `XML line ending` and `XML BOM` management using the [`XML SET OPTIONS`](../../commands/xml-set-options) command and a [Compatibility setting](../../settings/compatibility.md). Important: Since SAX file lines are written directly at each statement, if you need to set the BOM and/or end-of-line options, you must call the [`XML SET OPTIONS`](../../commands/xml-set-options) command before the first SAX writing command.
+
+:::
diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/settings/compatibility.md b/i18n/pt/docusaurus-plugin-content-docs/current/settings/compatibility.md
index 8d5fb3d290185b..4d7d3f3d98e6c9 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/current/settings/compatibility.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/current/settings/compatibility.md
@@ -5,23 +5,29 @@ title: Página de compatibilidade
Os grupos de páginas de compatibilidade juntam parâmetros relacionados com a manutenção da compatibilidade com versões anteriores do 4D.
-> The number of options displayed depends on the version of 4D with which the original database/project was created, as well as the settings modified in this database/project.
-> This page lists the compatibility options available for database/projects converted from 4D v18 onwards. Para opções de compatibilidade mais antigas, consulte a [Página de compatibilidade](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) em **doc.4d.com**.
+:::note
-- **Usar XPath padrão:** oor padrão, essa opção está desmarcada para bancos de dados convertidos de uma versão 4D anterior à v18 R3 e marcada para bancos de dados criados com 4D v18 R3 e superior. A partir da v18 R3, a implementação do XPath no 4D foi modificada para ser mais compatível e suportar mais previsões. Consequentemente, as características não convencionais da anterior implementação já não funcionam. Estes incluem:
+- O número de opções exibidas depende da versão 4D com a qual o banco de dados/projeto original foi criado. bem como as configurações modificadas neste banco de dados/projeto.
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. Para opções de compatibilidade mais antigas, consulte a [Página de compatibilidade](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) em **doc.4d.com**.
+
+:::
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. Consequentemente, as características não convencionais da anterior implementação já não funcionam. Estes incluem:
- inicial "/" não é apenas o nó raiz - usar um / como primeiro caractere em uma expressão XPath não declara um caminho absoluto do nó raiz
- não há nó atual implícito - o nó atual tem que ser incluído na expressão XPath
- não há pesquisa recursiva em estruturas repetidas - apenas o primeiro elemento é analisado.\
- Although not standard, you might want to keep using these features so that your code continues to work as before -- in this case, just set the option *unchecked*. Por outro lado, se seu código não depender da implementação não padrão e se você quiser se beneficiar dos recursos estendidos do XPath em seus bancos de dados (como descrito no [`elemento DOM Find XML`](../commands/dom-find-xml-element) comando), certifique-se que a opção **Use XPath** padrão está *marcada*.
+ Embora não seja padrão, você pode querer continuar usando essas funções para que seu código continue a funcionar como antes -- nesse caso, apenas defina a opção *desmarcada*. Por outro lado, se seu código não depender da implementação não padrão e se você quiser se beneficiar dos recursos estendidos do XPath em seus bancos de dados (como descrito no [`elemento DOM Find XML`](../commands/dom-find-xml-element) comando), certifique-se que a opção **Use XPath** padrão está *marcada*.
+
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Se você deseja se beneficiar deste novo comportamento em projetos convertidos de versões anteriores da 4D, marque esta opção. Veja [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Documento ao texto`](../commands/document-to-text), e [XML SET OPTIONS](../commands/xml-set-options).
-- **Use LF for end of line on macOS:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Se você deseja se beneficiar deste novo comportamento em projetos convertidos de versões anteriores da 4D, marque esta opção. Veja [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Documento ao texto`](../commands/document-to-text), e [XML SET OPTIONS](../commands/xml-set-options).
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. Nas versões anteriores, os arquivos texto eram gravados com um BOM por padrão. Selecione esta opção se quiser ativar o novo comportamento nos projetos convertidos. Veja [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Documento ao texto`](../commands/document-to-text), e [XML SET OPTIONS](../commands/xml-set-options).
-- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. Nas versões anteriores, os arquivos texto eram gravados com um BOM por padrão. Selecione esta opção se quiser ativar o novo comportamento nos projetos convertidos. Veja [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Documento ao texto`](../commands/document-to-text), e [XML SET OPTIONS](../commands/xml-set-options).
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. Você pode aplicar esse comportamento padrão aos seus bancos de dados convertidos marcando esta opção (trabalhar com valores Null é recomendado, uma vez que são totalmente suportados por [ORDA](../ORDA/overview.md).
-- **Map NULL values to blank values unchecked by default a field creation**: For better compliance with ORDA specifications, in databases created with 4D v19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. Você pode aplicar esse comportamento padrão aos seus bancos de dados convertidos marcando esta opção (trabalhar com valores Null é recomendado, uma vez que são totalmente suportados por [ORDA](../ORDA/overview.md).
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Non-blocking printing**: Starting with 4D v20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call `CLOSE PRINTING JOB` for the printer to be available for the next print job (check previous 4D documentations for more information).
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) são salvos em um arquivo separado chamado `catalog_editor.json`, armazenado na [pasta de códigos](../Project/architecture.md#sources). Esta nova arquitetura de arquivos torna mais fácil gerenciar conflitos de merge em aplicações VCS desde o arquivo `catalog.4DCatalog` agora contém apenas alterações cruciais na estrutura da base de dados. Por razões de compatibilidade, este recurso não está habilitado por padrão em projetos convertidos de versões 4D anteriores, você precisa marcar esta opção. Quando o recurso estiver ativado, o arquivo `catalog_editor.json` é criado na primeira modificação no editor de estruturas.
-- **Salvar cores da estrutura e coordenadas em um arquivo catalog_editor.json file**: começando com 4D v20 R5, alterações feitas no editor de estrutura sobre a aparência gráfica das tabelas e campos (cor, posição, ordem...) são salvos em um arquivo separado chamado `catalog_editor.json`, armazenado na [pasta de códigos](../Project/architecture.md#sources). Esta nueva arquitectura de archivos facilita la gestión de conflictos en aplicaciones VCS, ya que el archivo `catalog.4DCatalog` ahora contiene sólo cambios cruciales en la estructura de la base de datos. For compatibility reasons, this feature is not enabled by default in projects converted from previous 4D versions, you need to check this option. Cuando la función está habilitada, el archivo `catalog_editor.json` se crea en la primera modificación en el editor de estructuras.
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../../FormEditor/forms.md#legacy-print-rendering)).
\ No newline at end of file
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R2/settings/compatibility.md b/i18n/pt/docusaurus-plugin-content-docs/version-21-R2/settings/compatibility.md
index bb202f65a5dfe4..abfe89ae829b58 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21-R2/settings/compatibility.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21-R2/settings/compatibility.md
@@ -5,7 +5,7 @@ title: Página de compatibilidade
Os grupos de páginas de compatibilidade juntam parâmetros relacionados com a manutenção da compatibilidade com versões anteriores do 4D.
-> The number of options displayed depends on the version of 4D with which the original database/project was created, as well as the settings modified in this database/project.
+> O número de opções exibidas depende da versão 4D com a qual o banco de dados/projeto original foi criado. bem como as configurações modificadas neste banco de dados/projeto.
> This page lists the compatibility options available for database/projects converted from 4D v18 onwards. Para opções de compatibilidade mais antigas, consulte a [Página de compatibilidade](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) em **doc.4d.com**.
- **Use legacy network layer**: Starting with 4D v15, 4D applications propose a new network layer, named *ServerNet*, to handle communications between 4D Server and remote 4D machines (clients). A antiga camada de rede tornou-se obsoleta, mas é mantida para garantir a compatibilidade com as bases de dados existentes. Usando esta opção, você pode ativar a antiga camada de rede a qualquer momento nos seus aplicativos do servidor 4D dependendo das suas necessidades. *ServerNet* é usado automaticamente para novos bancos de dados e bancos de dados convertidos a partir de uma versão v15 ou posterior. Observe que, em caso de modificação, você precisa reiniciar o aplicativo para que a mudança seja levada em conta. Todos os aplicativos clientes que foram conectados também devem ser reiniciados para poderem se conectar à nova camada de rede.
@@ -17,7 +17,7 @@ Os grupos de páginas de compatibilidade juntam parâmetros relacionados com a m
- não há nó atual implícito - o nó atual tem que ser incluído na expressão XPath
- não há pesquisa recursiva em estruturas repetidas - apenas o primeiro elemento é analisado.\
- Although not standard, you might want to keep using these features so that your code continues to work as before -- in this case, just set the option *unchecked*. Por outro lado, se seu código não depender da implementação não padrão e se você quiser se beneficiar dos recursos estendidos do XPath em seus bancos de dados (como descrito no [`elemento DOM Find XML`](../commands-legacy/dom-find-xml-element.md) comando), certifique-se que a opção **Use XPath** padrão está *marcada*.
+ Embora não seja padrão, você pode querer continuar usando essas funções para que seu código continue a funcionar como antes -- nesse caso, apenas defina a opção *desmarcada*. Por outro lado, se seu código não depender da implementação não padrão e se você quiser se beneficiar dos recursos estendidos do XPath em seus bancos de dados (como descrito no [`elemento DOM Find XML`](../commands-legacy/dom-find-xml-element.md) comando), certifique-se que a opção **Use XPath** padrão está *marcada*.
- **Use LF for end of line on macOS:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Se você deseja se beneficiar deste novo comportamento em projetos convertidos de versões anteriores da 4D, marque esta opção. Consulte [`TEXT TO DOCUMENT`](../commands-legacy/text-to-document.md), [`Document to text`](../commands-legacy/document-to-text.md) e [XML SET OPTIONS](../commands-legacy/xml-set-options.md).
@@ -27,4 +27,4 @@ Os grupos de páginas de compatibilidade juntam parâmetros relacionados com a m
- **Non-blocking printing**: Starting with 4D v20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call `CLOSE PRINTING JOB` for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Salvar cores da estrutura e coordenadas em um arquivo catalog_editor.json file**: começando com 4D v20 R5, alterações feitas no editor de estrutura sobre a aparência gráfica das tabelas e campos (cor, posição, ordem...) são salvos em um arquivo separado chamado `catalog_editor.json`, armazenado na [pasta de códigos](../Project/architecture.md#sources). Esta nueva arquitectura de archivos facilita la gestión de conflictos en aplicaciones VCS, ya que el archivo `catalog.4DCatalog` ahora contiene sólo cambios cruciales en la estructura de la base de datos. For compatibility reasons, this feature is not enabled by default in projects converted from previous 4D versions, you need to check this option. Cuando la función está habilitada, el archivo `catalog_editor.json` se crea en la primera modificación en el editor de estructuras.
\ No newline at end of file
+- **Salvar cores da estrutura e coordenadas em um arquivo catalog_editor.json file**: começando com 4D v20 R5, alterações feitas no editor de estrutura sobre a aparência gráfica das tabelas e campos (cor, posição, ordem...) são salvos em um arquivo separado chamado `catalog_editor.json`, armazenado na [pasta de códigos](../Project/architecture.md#sources). Esta nova arquitetura de arquivos torna mais fácil gerenciar conflitos de merge em aplicações VCS desde o arquivo `catalog.4DCatalog` agora contém apenas alterações cruciais na estrutura da base de dados. Por razões de compatibilidade, este recurso não está habilitado por padrão em projetos convertidos de versões 4D anteriores, você precisa marcar esta opção. Quando o recurso estiver ativado, o arquivo `catalog_editor.json` é criado na primeira modificação no editor de estruturas.
\ No newline at end of file
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
index ba26d279857276..e5e0467d16fe4c 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/API/IMAPTransporterClass.md
@@ -45,7 +45,7 @@ Os objetos IMAP Transporter são instanciados com o comando [IMAP New transporte
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
index 7999942faccf76..2fb749afafee42 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Concepts/quick-tour.md
@@ -432,36 +432,36 @@ The following conventions are used in the 4D language documentation:
In the 4D language documentation, the following parameter types can be used.
-| Tipo | Definição | Examples of a 4D command using it |
-| ------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
-| > , <, >=, <=, #, =, \\| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
-| any | A parameter that can accept any supported data type | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
-| Array | A variable containing a list of values of the same type. | ARRAY TEXT($arr;10) |
-| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
-| Blob | Binary large object used to store binary data. | BLOB TO DOCUMENT($blob;"file.bin") |
-| Parâmetros | A logical value: True or False. | If (OK=1) |
-| Boolean array | An array containing boolean values. | ARRAY BOOLEAN($flags;10) |
-| Class name (ex: 4D.File) | A reference to a class type used to create or manipulate class instances. | $file:=File("/RESOURCES/NovelCover1.jpg") |
-| Collection | An ordered list of values that can contain multiple types. | New collection("A";"B";"C") |
-| Date | A calendar date value. | $vDate:=Current date |
-| Date array | An array containing date values. | ARRAY DATE($dates;10) |
-| Expression | Can be anything | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
-| Campo | A reference to a field belonging to a table. | ORDER BY([Person];[Person]Name) |
-| Integer | A whole number without decimal part. | $Sel:=ds.Employee.newSelection(dk keep ordered) |
-| Integer array | An array containing integer values. | ARRAY INTEGER($numbers;10) |
-| Longint array | An array containing long integer values. | ARRAY LONGINT($values;10) |
-| Object array | An array containing objects. | ARRAY OBJECT($objects;10) |
-| Object | A structured data container composed of key/value pairs. | $entity.fromObject($o) |
-| Operador | Sempre \*. | QUERY([Person];[Person]Name="Smith";\*) |
-| Picture array | An array containing pictures. | ARRAY PICTURE($images;10) |
-| Imagem | A graphical image value. | READ PICTURE FILE($pic;"image.png") |
-| Pointer array | An array containing pointers. | ARRAY POINTER($ptrs;10) |
-| Ponteiro | A reference to another variable, field, or object. | If(Is nil pointer($ptr)) |
-| Real array | An array containing real numbers. | ARRAY REAL($values;10) |
-| Real | A floating-point numeric value. | $vlResult:=Int(123.4) |
-| Tabela | A reference to a database table. | ALL RECORDS([Person]) |
-| Text | A sequence of characters representing textual data. | ALERT("Hello world") |
-| Text array | An array containing text values. | ARRAY TEXT($names;10) |
-| Hora | A time value representing hours, minutes, and seconds. | Hora actual |
-| Time array | An array containing time values. | ARRAY TIME($times;10) |
-| Variável | A writable variable of type "any" that can receive a value (assignable). | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
+| Tipo | Definição | Examples of a 4D command using it |
+| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| > , <, >=, <=, #, =, \| , % | Comparison, logical operators or symbols used in query conditions or expressions. | ORDER BY([Products];[Products]Type;<)
PRINT RECORD([Employees];>) |
+| any | A parameter that can accept any supported data type | JSON Stringify($value)
$col.push(6;New object("firstname";"John")) |
+| Array | A variable containing a list of values of the same type. | ARRAY TEXT($arr;10) |
+| BLOB array | An array containing BLOB values. | ARRAY BLOB($data;10) |
+| Blob | Binary large object used to store binary data. | BLOB TO DOCUMENT($blob;"file.bin") |
+| Parâmetros | A logical value: True or False. | If (OK=1) |
+| Boolean array | An array containing boolean values. | ARRAY BOOLEAN($flags;10) |
+| Class name (ex: 4D.File) | A reference to a class type used to create or manipulate class instances. | $file:=File("/RESOURCES/NovelCover1.jpg") |
+| Collection | An ordered list of values that can contain multiple types. | New collection("A";"B";"C") |
+| Date | A calendar date value. | $vDate:=Current date |
+| Date array | An array containing date values. | ARRAY DATE($dates;10) |
+| Expression | Can be anything | SET PROCESS VARIABLE($vlProcess;vtCurStatus;"") |
+| Campo | A reference to a field belonging to a table. | ORDER BY([Person];[Person]Name) |
+| Integer | A whole number without decimal part. | $Sel:=ds.Employee.newSelection(dk keep ordered) |
+| Integer array | An array containing integer values. | ARRAY INTEGER($numbers;10) |
+| Longint array | An array containing long integer values. | ARRAY LONGINT($values;10) |
+| Object array | An array containing objects. | ARRAY OBJECT($objects;10) |
+| Object | A structured data container composed of key/value pairs. | $entity.fromObject($o) |
+| Operador | Sempre \*. | QUERY([Person];[Person]Name="Smith";\*) |
+| Picture array | An array containing pictures. | ARRAY PICTURE($images;10) |
+| Imagem | A graphical image value. | READ PICTURE FILE($pic;"image.png") |
+| Pointer array | An array containing pointers. | ARRAY POINTER($ptrs;10) |
+| Ponteiro | A reference to another variable, field, or object. | If(Is nil pointer($ptr)) |
+| Real array | An array containing real numbers. | ARRAY REAL($values;10) |
+| Real | A floating-point numeric value. | $vlResult:=Int(123.4) |
+| Tabela | A reference to a database table. | ALL RECORDS([Person]) |
+| Text | A sequence of characters representing textual data. | ALERT("Hello world") |
+| Text array | An array containing text values. | ARRAY TEXT($names;10) |
+| Hora | A time value representing hours, minutes, and seconds. | Hora actual |
+| Time array | An array containing time values. | ARRAY TIME($times;10) |
+| Variável | A writable variable of type "any" that can receive a value (assignable). | SET PICTURE METADATA(vPicture;IPTC keywords;$arrTkeywords) |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
index 2a288a49a433af..3c047e706fb262 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/FormEditor/forms.md
@@ -66,6 +66,47 @@ Os formulários também podem conter outros formulários através das seguintes
}
```
+## Printing forms
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+### Print rendering engine
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+:::tip Related blog post
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning Limitação
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
## Formulário projeto e formulário tabela
Existem duas categorias de formulários:
@@ -78,7 +119,7 @@ Normalmente, você seleciona a categoria do formulário quando o cria, mas pode
## Páginas formulário
-Cada formulário é composto por, pelo menos, duas páginas:
+Each form is made of at least two pages:
- uma página 1: uma página principal, exibida por defeito
- uma página 0: uma página de fundo, cujo conteúdo é exibido em todas as outras páginas.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
index b1307dd17c0497..cf1d39d1674b03 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Notes/updates.md
@@ -18,6 +18,7 @@ Leia [**O que há de novo no 4D v21 R3**](https://blog.4d.com/whats-new-in-4d-21
- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component.
- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md).
- Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions.
+- New [printing renderer](../FormEditor/forms.md#print-rendering-engine) for forms on Liquid glass and Fluent UI interfaces. New compatibility options to [enable the renderer on Classic interfaces](../FormEditor/forms.md#legacy-print-renderer).
- Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository).
- [**Lista de erros corrigida**](https://bugs.4d.fr/fixedbugslist?version=21_R3): lista de todos os bugs corrigidos em 4D 21 R3.
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
index 25e569606a45ee..a0efa0dac954ef 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/Project/code-overview.md
@@ -161,7 +161,7 @@ Here are the encoded characters:
| \< | %3C |
| \> | %3E |
| ? | %3F |
-| \\| | %7C |
+| \| | %7C |
| \\ | %5C |
| % | %25 |
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/print_rendering.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/assets/en/FormEditor/screen_rendering.png differ
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
index 42a586c2742fad..29a23bd419e052 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
@@ -5,7 +5,7 @@ slug: /commands/imap-new-transporter
displayed_sidebar: docs
---
-**IMAP New transporter**( *server* : Object ) : 4D.IMAPTransporter
+**IMAP New transporter**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
index 8d5fb3d290185b..4d7d3f3d98e6c9 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21-R3/settings/compatibility.md
@@ -5,23 +5,29 @@ title: Página de compatibilidade
Os grupos de páginas de compatibilidade juntam parâmetros relacionados com a manutenção da compatibilidade com versões anteriores do 4D.
-> The number of options displayed depends on the version of 4D with which the original database/project was created, as well as the settings modified in this database/project.
-> This page lists the compatibility options available for database/projects converted from 4D v18 onwards. Para opções de compatibilidade mais antigas, consulte a [Página de compatibilidade](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) em **doc.4d.com**.
+:::note
-- **Usar XPath padrão:** oor padrão, essa opção está desmarcada para bancos de dados convertidos de uma versão 4D anterior à v18 R3 e marcada para bancos de dados criados com 4D v18 R3 e superior. A partir da v18 R3, a implementação do XPath no 4D foi modificada para ser mais compatível e suportar mais previsões. Consequentemente, as características não convencionais da anterior implementação já não funcionam. Estes incluem:
+- O número de opções exibidas depende da versão 4D com a qual o banco de dados/projeto original foi criado. bem como as configurações modificadas neste banco de dados/projeto.
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. Para opções de compatibilidade mais antigas, consulte a [Página de compatibilidade](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) em **doc.4d.com**.
+
+:::
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. Consequentemente, as características não convencionais da anterior implementação já não funcionam. Estes incluem:
- inicial "/" não é apenas o nó raiz - usar um / como primeiro caractere em uma expressão XPath não declara um caminho absoluto do nó raiz
- não há nó atual implícito - o nó atual tem que ser incluído na expressão XPath
- não há pesquisa recursiva em estruturas repetidas - apenas o primeiro elemento é analisado.\
- Although not standard, you might want to keep using these features so that your code continues to work as before -- in this case, just set the option *unchecked*. Por outro lado, se seu código não depender da implementação não padrão e se você quiser se beneficiar dos recursos estendidos do XPath em seus bancos de dados (como descrito no [`elemento DOM Find XML`](../commands/dom-find-xml-element) comando), certifique-se que a opção **Use XPath** padrão está *marcada*.
+ Embora não seja padrão, você pode querer continuar usando essas funções para que seu código continue a funcionar como antes -- nesse caso, apenas defina a opção *desmarcada*. Por outro lado, se seu código não depender da implementação não padrão e se você quiser se beneficiar dos recursos estendidos do XPath em seus bancos de dados (como descrito no [`elemento DOM Find XML`](../commands/dom-find-xml-element) comando), certifique-se que a opção **Use XPath** padrão está *marcada*.
+
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Se você deseja se beneficiar deste novo comportamento em projetos convertidos de versões anteriores da 4D, marque esta opção. Veja [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Documento ao texto`](../commands/document-to-text), e [XML SET OPTIONS](../commands/xml-set-options).
-- **Use LF for end of line on macOS:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Se você deseja se beneficiar deste novo comportamento em projetos convertidos de versões anteriores da 4D, marque esta opção. Veja [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Documento ao texto`](../commands/document-to-text), e [XML SET OPTIONS](../commands/xml-set-options).
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. Nas versões anteriores, os arquivos texto eram gravados com um BOM por padrão. Selecione esta opção se quiser ativar o novo comportamento nos projetos convertidos. Veja [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Documento ao texto`](../commands/document-to-text), e [XML SET OPTIONS](../commands/xml-set-options).
-- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. Nas versões anteriores, os arquivos texto eram gravados com um BOM por padrão. Selecione esta opção se quiser ativar o novo comportamento nos projetos convertidos. Veja [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Documento ao texto`](../commands/document-to-text), e [XML SET OPTIONS](../commands/xml-set-options).
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. Você pode aplicar esse comportamento padrão aos seus bancos de dados convertidos marcando esta opção (trabalhar com valores Null é recomendado, uma vez que são totalmente suportados por [ORDA](../ORDA/overview.md).
-- **Map NULL values to blank values unchecked by default a field creation**: For better compliance with ORDA specifications, in databases created with 4D v19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. Você pode aplicar esse comportamento padrão aos seus bancos de dados convertidos marcando esta opção (trabalhar com valores Null é recomendado, uma vez que são totalmente suportados por [ORDA](../ORDA/overview.md).
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Non-blocking printing**: Starting with 4D v20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call `CLOSE PRINTING JOB` for the printer to be available for the next print job (check previous 4D documentations for more information).
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) são salvos em um arquivo separado chamado `catalog_editor.json`, armazenado na [pasta de códigos](../Project/architecture.md#sources). Esta nova arquitetura de arquivos torna mais fácil gerenciar conflitos de merge em aplicações VCS desde o arquivo `catalog.4DCatalog` agora contém apenas alterações cruciais na estrutura da base de dados. Por razões de compatibilidade, este recurso não está habilitado por padrão em projetos convertidos de versões 4D anteriores, você precisa marcar esta opção. Quando o recurso estiver ativado, o arquivo `catalog_editor.json` é criado na primeira modificação no editor de estruturas.
-- **Salvar cores da estrutura e coordenadas em um arquivo catalog_editor.json file**: começando com 4D v20 R5, alterações feitas no editor de estrutura sobre a aparência gráfica das tabelas e campos (cor, posição, ordem...) são salvos em um arquivo separado chamado `catalog_editor.json`, armazenado na [pasta de códigos](../Project/architecture.md#sources). Esta nueva arquitectura de archivos facilita la gestión de conflictos en aplicaciones VCS, ya que el archivo `catalog.4DCatalog` ahora contiene sólo cambios cruciales en la estructura de la base de datos. For compatibility reasons, this feature is not enabled by default in projects converted from previous 4D versions, you need to check this option. Cuando la función está habilitada, el archivo `catalog_editor.json` se crea en la primera modificación en el editor de estructuras.
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../../FormEditor/forms.md#legacy-print-rendering)).
\ No newline at end of file
diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/settings/compatibility.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/settings/compatibility.md
index bb202f65a5dfe4..abfe89ae829b58 100644
--- a/i18n/pt/docusaurus-plugin-content-docs/version-21/settings/compatibility.md
+++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/settings/compatibility.md
@@ -5,7 +5,7 @@ title: Página de compatibilidade
Os grupos de páginas de compatibilidade juntam parâmetros relacionados com a manutenção da compatibilidade com versões anteriores do 4D.
-> The number of options displayed depends on the version of 4D with which the original database/project was created, as well as the settings modified in this database/project.
+> O número de opções exibidas depende da versão 4D com a qual o banco de dados/projeto original foi criado. bem como as configurações modificadas neste banco de dados/projeto.
> This page lists the compatibility options available for database/projects converted from 4D v18 onwards. Para opções de compatibilidade mais antigas, consulte a [Página de compatibilidade](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) em **doc.4d.com**.
- **Use legacy network layer**: Starting with 4D v15, 4D applications propose a new network layer, named *ServerNet*, to handle communications between 4D Server and remote 4D machines (clients). A antiga camada de rede tornou-se obsoleta, mas é mantida para garantir a compatibilidade com as bases de dados existentes. Usando esta opção, você pode ativar a antiga camada de rede a qualquer momento nos seus aplicativos do servidor 4D dependendo das suas necessidades. *ServerNet* é usado automaticamente para novos bancos de dados e bancos de dados convertidos a partir de uma versão v15 ou posterior. Observe que, em caso de modificação, você precisa reiniciar o aplicativo para que a mudança seja levada em conta. Todos os aplicativos clientes que foram conectados também devem ser reiniciados para poderem se conectar à nova camada de rede.
@@ -17,7 +17,7 @@ Os grupos de páginas de compatibilidade juntam parâmetros relacionados com a m
- não há nó atual implícito - o nó atual tem que ser incluído na expressão XPath
- não há pesquisa recursiva em estruturas repetidas - apenas o primeiro elemento é analisado.\
- Although not standard, you might want to keep using these features so that your code continues to work as before -- in this case, just set the option *unchecked*. Por outro lado, se seu código não depender da implementação não padrão e se você quiser se beneficiar dos recursos estendidos do XPath em seus bancos de dados (como descrito no [`elemento DOM Find XML`](../commands-legacy/dom-find-xml-element.md) comando), certifique-se que a opção **Use XPath** padrão está *marcada*.
+ Embora não seja padrão, você pode querer continuar usando essas funções para que seu código continue a funcionar como antes -- nesse caso, apenas defina a opção *desmarcada*. Por outro lado, se seu código não depender da implementação não padrão e se você quiser se beneficiar dos recursos estendidos do XPath em seus bancos de dados (como descrito no [`elemento DOM Find XML`](../commands-legacy/dom-find-xml-element.md) comando), certifique-se que a opção **Use XPath** padrão está *marcada*.
- **Use LF for end of line on macOS:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. Se você deseja se beneficiar deste novo comportamento em projetos convertidos de versões anteriores da 4D, marque esta opção. Consulte [`TEXT TO DOCUMENT`](../commands-legacy/text-to-document.md), [`Document to text`](../commands-legacy/document-to-text.md) e [XML SET OPTIONS](../commands-legacy/xml-set-options.md).
@@ -27,4 +27,4 @@ Os grupos de páginas de compatibilidade juntam parâmetros relacionados com a m
- **Non-blocking printing**: Starting with 4D v20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call `CLOSE PRINTING JOB` for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Salvar cores da estrutura e coordenadas em um arquivo catalog_editor.json file**: começando com 4D v20 R5, alterações feitas no editor de estrutura sobre a aparência gráfica das tabelas e campos (cor, posição, ordem...) são salvos em um arquivo separado chamado `catalog_editor.json`, armazenado na [pasta de códigos](../Project/architecture.md#sources). Esta nueva arquitectura de archivos facilita la gestión de conflictos en aplicaciones VCS, ya que el archivo `catalog.4DCatalog` ahora contiene sólo cambios cruciales en la estructura de la base de datos. For compatibility reasons, this feature is not enabled by default in projects converted from previous 4D versions, you need to check this option. Cuando la función está habilitada, el archivo `catalog_editor.json` se crea en la primera modificación en el editor de estructuras.
\ No newline at end of file
+- **Salvar cores da estrutura e coordenadas em um arquivo catalog_editor.json file**: começando com 4D v20 R5, alterações feitas no editor de estrutura sobre a aparência gráfica das tabelas e campos (cor, posição, ordem...) são salvos em um arquivo separado chamado `catalog_editor.json`, armazenado na [pasta de códigos](../Project/architecture.md#sources). Esta nova arquitetura de arquivos torna mais fácil gerenciar conflitos de merge em aplicações VCS desde o arquivo `catalog.4DCatalog` agora contém apenas alterações cruciais na estrutura da base de dados. Por razões de compatibilidade, este recurso não está habilitado por padrão em projetos convertidos de versões 4D anteriores, você precisa marcar esta opção. Quando o recurso estiver ativado, o arquivo `catalog_editor.json` é criado na primeira modificação no editor de estruturas.
\ No newline at end of file
diff --git a/src/pages/searchAPI.html.js b/src/pages/searchAPI.html.js
index 0e6b41321675bf..5096ea599e14df 100644
--- a/src/pages/searchAPI.html.js
+++ b/src/pages/searchAPI.html.js
@@ -33,7 +33,7 @@ export default function RedirectAPI() {
let versionToGo = ""
//Match version
- for (let i = 0; i < versions.length; i++) {
+ for (let i = 1; i < versions.length; i++) { // start at one to skip first version
const version = versions[i].replace('-','');
if(version === versionWanted) {
versionToGo = versions[i] + "/"
@@ -70,4 +70,4 @@ export default function RedirectAPI() {
}}
/>
);
-}
\ No newline at end of file
+}
diff --git a/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.js b/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.js
new file mode 100644
index 00000000000000..89abc514e2027c
--- /dev/null
+++ b/src/theme/NavbarItem/DocsVersionDropdownNavbarItem.js
@@ -0,0 +1,202 @@
+/**
+ * Swizzled DocsVersionDropdownNavbarItem
+ *
+ * Reason: Docusaurus matches alternate version docs by `doc.id` only.
+ * When a doc file is moved/renamed across versions (different id but same slug),
+ * the version dropdown can't find the equivalent page in other versions.
+ *
+ * Fix: after the standard id-based lookup, fall back to matching by path suffix
+ * (the slug portion of the URL after stripping the version path prefix).
+ */
+
+import React from 'react';
+import { useLocation } from '@docusaurus/router';
+import {
+ useVersions,
+ useActiveDocContext,
+ useDocsVersionCandidates,
+ useDocsPreferredVersion,
+} from '@docusaurus/plugin-content-docs/client';
+import { translate } from '@docusaurus/Translate';
+import { useHistorySelector } from '@docusaurus/theme-common';
+import DefaultNavbarItem from '@theme/NavbarItem/DefaultNavbarItem';
+import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
+
+function getVersionItems(versions, configs) {
+ if (configs) {
+ const versionMap = new Map(
+ versions.map((version) => [version.name, version]),
+ );
+ const toVersionItem = (name, config) => {
+ const version = versionMap.get(name);
+ if (!version) {
+ throw new Error(
+ `No docs version exist for name '${name}', please verify your 'docsVersionDropdown' navbar item versions config.\nAvailable version names:\n- ${versions.map((v) => `${v.name}`).join('\n- ')}`,
+ );
+ }
+ return { version, label: config?.label ?? version.label };
+ };
+ if (Array.isArray(configs)) {
+ return configs.map((name) => toVersionItem(name, undefined));
+ } else {
+ return Object.entries(configs).map(([name, config]) =>
+ toVersionItem(name, config),
+ );
+ }
+ } else {
+ return versions.map((version) => ({ version, label: version.label }));
+ }
+}
+
+function useVersionItems({ docsPluginId, configs }) {
+ const versions = useVersions(docsPluginId);
+ return getVersionItems(versions, configs);
+}
+
+function getVersionMainDoc(version) {
+ return version.docs.find((doc) => doc.id === version.mainDocId);
+}
+
+/**
+ * Extract the slug portion of a doc path by stripping the version path prefix.
+ * e.g. doc.path="/docs/20/commands/foo", version.path="/docs/20" => "/commands/foo"
+ */
+function getDocSlug(doc, version) {
+ let slug = doc.path;
+ if (slug.startsWith(version.path)) {
+ slug = slug.slice(version.path.length);
+ }
+ // Normalize: strip leading slash for consistent comparison
+ // (version.path may or may not have a trailing slash)
+ return slug.replace(/^\//, '');
+}
+
+/**
+ * Enhanced version of getVersionTargetDoc that adds a path-suffix fallback.
+ * 1. First tries the standard id-based alternateDocVersions lookup
+ * 2. If not found, computes the current doc's slug (path minus version prefix)
+ * and searches for a doc with the same slug in the target version
+ * 3. Falls back to the version's main doc
+ */
+function getVersionTargetDoc(version, activeDocContext, versions, pathname) {
+ const activeDoc = activeDocContext.activeDoc;
+ const activeVersion = activeDocContext.activeVersion;
+
+ // Standard id-based match (original Docusaurus behavior)
+ const idMatch = activeDocContext.alternateDocVersions[version.name];
+ if (idMatch) {
+ return idMatch;
+ }
+
+ // Path-suffix fallback for moved/renamed docs
+ // Compute slug from activeDoc if available, otherwise from pathname
+ let currentSlug;
+ if (activeDoc && activeVersion) {
+ currentSlug = getDocSlug(activeDoc, activeVersion);
+ } else if (activeVersion) {
+ // activeDoc is missing but we know the version — extract slug from pathname
+ currentSlug = pathname.startsWith(activeVersion.path)
+ ? pathname.slice(activeVersion.path.length).replace(/^\//, '')
+ : pathname.replace(/^\//, '');
+ }
+
+ if (currentSlug) {
+ const slugMatch = version.docs.find(
+ (doc) => getDocSlug(doc, version) === currentSlug,
+ );
+ if (slugMatch) {
+ return slugMatch;
+ }
+ }
+
+ // Ultimate fallback: main doc of the version
+ return getVersionMainDoc(version);
+}
+
+function useDisplayedVersionItem({ docsPluginId, versionItems }) {
+ const candidates = useDocsVersionCandidates(docsPluginId);
+ const candidateItems = candidates
+ .map((candidate) => versionItems.find((vi) => vi.version === candidate))
+ .filter((vi) => vi !== undefined);
+ return candidateItems[0] ?? versionItems[0];
+}
+
+export default function DocsVersionDropdownNavbarItem({
+ mobile,
+ docsPluginId,
+ dropdownActiveClassDisabled,
+ dropdownItemsBefore,
+ dropdownItemsAfter,
+ versions: configs,
+ ...props
+}) {
+ const { pathname } = useLocation();
+ const search = useHistorySelector((history) => history.location.search);
+ const hash = useHistorySelector((history) => history.location.hash);
+ const activeDocContext = useActiveDocContext(docsPluginId);
+ const { savePreferredVersionName } = useDocsPreferredVersion(docsPluginId);
+ const versionItems = useVersionItems({ docsPluginId, configs });
+ const allVersions = useVersions(docsPluginId);
+ const displayedVersionItem = useDisplayedVersionItem({
+ docsPluginId,
+ versionItems,
+ });
+
+ function versionItemToLink({ version, label }) {
+ const targetDoc = getVersionTargetDoc(version, activeDocContext, allVersions, pathname);
+ return {
+ label,
+ // preserve ?search#hash suffix on version switches
+ to: `${targetDoc.path}${search}${hash}`,
+ isActive: () => version === activeDocContext.activeVersion,
+ onClick: () => savePreferredVersionName(version.name),
+ };
+ }
+
+ const items = [
+ ...dropdownItemsBefore,
+ ...versionItems.map(versionItemToLink),
+ ...dropdownItemsAfter,
+ ];
+
+ const dropdownLabel =
+ mobile && items.length > 1
+ ? translate({
+ id: 'theme.navbar.mobileVersionsDropdown.label',
+ message: 'Versions',
+ description:
+ 'The label for the navbar versions dropdown on mobile view',
+ })
+ : displayedVersionItem.label;
+ const dropdownTo =
+ mobile && items.length > 1
+ ? undefined
+ : getVersionTargetDoc(
+ displayedVersionItem.version,
+ activeDocContext,
+ allVersions,
+ pathname,
+ ).path;
+
+ if (items.length <= 1) {
+ return (
+ false : undefined}
+ />
+ );
+ }
+ return (
+ false : undefined}
+ />
+ );
+}
diff --git a/versioned_docs/version-21-R2/WritePro/user/user-new.md b/versioned_docs/version-21-R2/WritePro/user/user-new.md
index adfe7625707427..780d944c15dc77 100644
--- a/versioned_docs/version-21-R2/WritePro/user/user-new.md
+++ b/versioned_docs/version-21-R2/WritePro/user/user-new.md
@@ -17,7 +17,7 @@ to import
They can be created using:
* the toolbar or sidebar of the [4D Write Pro interface](https://doc.4d.com/4Dv20/4D/20.2/Entry-areas.300-6750367.en.html#5865253)
-* the `listStyleType` or `listStyleImage` [standard actions](./standard-actions.md) ,
+* the `listStyleType` or `listStyleImage` [standard actions](../user-legacy/standard-actions.md) ,
* or [programmatically](../commands-legacy/4d-write-pro-attributes.md#lists) using [WP SET ATTRIBUTE](./commands/wp-set-attributes).
When a list is created using a standard action (`listStyleType` or `listStyleImage`) or the toolbar/sidebar, 4D Write Pro automatically inserts a margin before the text so that the marker is positioned inside it. The value of the inserted margin corresponds to the offset of the default tab (`wk tab default`).
diff --git a/versioned_docs/version-21-R3/API/IMAPTransporterClass.md b/versioned_docs/version-21-R3/API/IMAPTransporterClass.md
index 22bb9f7daf6b7a..81906240b8dc75 100644
--- a/versioned_docs/version-21-R3/API/IMAPTransporterClass.md
+++ b/versioned_docs/version-21-R3/API/IMAPTransporterClass.md
@@ -46,7 +46,7 @@ IMAP Transporter objects are instantiated with the [IMAP New transporter](../com
## 4D.IMAPTransporter.new()
-**4D.IMAPTransporter.new**( *server* : Object ) : 4D.IMAPTransporter
+**4D.IMAPTransporter.new**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/versioned_docs/version-21-R3/FormEditor/forms.md b/versioned_docs/version-21-R3/FormEditor/forms.md
index 22df991dd74b48..b756749a41d5a6 100644
--- a/versioned_docs/version-21-R3/FormEditor/forms.md
+++ b/versioned_docs/version-21-R3/FormEditor/forms.md
@@ -67,6 +67,50 @@ You can add or modify 4D forms using the following elements:
}
```
+## Printing forms
+
+In 4D desktop applications, forms can be printed using the various [commands of the **Printing** theme](../commands/theme/Printing).
+
+### Print rendering engine
+
+4D uses a dedicated print rendering engine to generate outputs with a design adapted for printing. It includes the following main features:
+
+- Interactive widgets such as buttons, toggles, dropdowns, etc. and modern UI effects such as glass, blur, transparency, or shadow effects are converted into adapted static representations and flattened into printable styles, so that the document remains readable and professional once printed.
+- Layout structure, spacing, and alignment, are preserved so that the printed document reflects the logical structure of the on-screen form.
+- The same output is produced, whether the form is printed from macOS or Windows.
+
+For example, the following form:
+
+
+
+... will be printed with this rendering:
+
+
+
+
+:::tip Related blog post
+
+[Printing Modern Interfaces with Clean, Consistent Output](https://blog.4d.com/printing-modern-interfaces-with-clean-consistent-output)
+
+:::
+
+### Legacy print renderer
+
+In releases prior to 4D 21 R3, another print renderer was used. This legacy renderer simply draws widgets as they appear on the screen. For compatibility, the legacy renderer is **enabled by default** in projects or databases converted from versions prior to 4D 21 R3, so that forms designed with this renderer continue to be printed as expected.
+
+You can however enable the modern print rendering engine at any moment by:
+
+- unchecking the **Use legacy print rendering** option in the [Compatibility page of the Settings dialog box](../settings/compatibility.md) (permanent setting),
+- or executing [`SET DATABASE PARAMETER`](../commands/set-database-parameter) command with `Use legacy print rendering` selector set to 1 (volatile setting).
+
+:::warning Limitation
+
+For technical reasons, the legacy print renderer is not available with forms displayed with [Fluent UI](#fluent-ui-rendering) on Windows or [Liquid Glass](../Notes/updates.md#support-of-liquid-glass-on-macos) on macOS. In these contexts, forms are **always printed with the modern print rendering engine**, whatever the compatibility option.
+
+:::
+
+
+
## Project form and Table form
There are two categories of forms:
@@ -79,7 +123,7 @@ Typically, you select the form category when you create the form, but you can ch
## Form pages
-Each form has is made of at least two pages:
+Each form is made of at least two pages:
- a page 1: a main page, displayed by default
- a page 0: a background page, whose contents is displayed on every other page.
@@ -98,6 +142,8 @@ There are no restrictions on the number of pages a form can have. The same field
A multi-page form has both a background page and several display pages. Objects that are placed on the background page may be visible on all display pages, but can be selected and edited only on the background page. In multi-page forms, you should put your button palette on the background page. You also need to include one or more objects on the background page that provide page navigation tools for the user.
+
+
## Fluent UI rendering
:::caution Developer Preview
diff --git a/versioned_docs/version-21-R3/Notes/updates.md b/versioned_docs/version-21-R3/Notes/updates.md
index 6cb1588fc85486..d559cde17643c6 100644
--- a/versioned_docs/version-21-R3/Notes/updates.md
+++ b/versioned_docs/version-21-R3/Notes/updates.md
@@ -18,6 +18,7 @@ Read [**What’s new in 4D 21 R3**](https://blog.4d.com/whats-new-in-4d-21-r3/),
- New [**AI** page in Settings](../settings/ai.md), allowing to configure [Provider model aliases](../aikit/provider-model-aliases.md) that can be called in the code using 4D AIKit component.
- 4D AIKit component: new [Providers](../aikit/Classes/OpenAIProviders.md) class to instantiate and handle [Provider and model aliases](../aikit/provider-model-aliases.md).
- Support of [`server` keyword](../Concepts/classes.md#server) for ORDA data model functions and shared/session singleton functions.
+- New [printing renderer](../FormEditor/forms.md#print-rendering-engine) for forms on Liquid glass and Fluent UI interfaces. New compatibility options to [enable the renderer on Classic interfaces](../FormEditor/forms.md#legacy-print-renderer).
- Dependencies: support of [components stored on GitLab repositories](../Project/components.md#configuring-a-gitlab-repository).
- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=21_R3): list of all bugs that have been fixed in 4D 21 R3.
@@ -39,6 +40,7 @@ Read [**What’s new in 4D 21 R3**](https://blog.4d.com/whats-new-in-4d-21-r3/),
- The **Legacy** network layer is no longer supported. Projects and binary databases that were using the Legacy network layer are automatically set to [**ServerNet**](../settings/client-server.md#network-layer) when upgraded to 4D 21 R3 and higher.
+
## 4D 21 R2
Read [**What’s new in 4D 21 R2**](https://blog.4d.com/whats-new-in-4d-21-r2/), the blog post that lists all new features and enhancements in 4D 21 R2.
diff --git a/versioned_docs/version-21-R3/WritePro/user/user-new.md b/versioned_docs/version-21-R3/WritePro/user/user-new.md
index 0db04f1ad883ee..77f1d00da79f72 100644
--- a/versioned_docs/version-21-R3/WritePro/user/user-new.md
+++ b/versioned_docs/version-21-R3/WritePro/user/user-new.md
@@ -38,7 +38,7 @@ When the list is created using [the WP SET ATTRIBUTE command](../commands-legacy
### Multi-level lists
-Multi-level lists are based on [hierarchical list style sheets](stylesheets.md#hierarchical-list-style-sheets). Multi-level lists contain a root-level style sheet and one or more sub-level style sheet(s). Each level is attached to a hierarchical list style sheet and represents a depth in the list (level 1, level 2, level 3, etc.).
+Multi-level lists are based on [hierarchical list style sheets](../user-legacy/stylesheets.md#hierarchical-list-style-sheets). Multi-level lists contain a root-level style sheet and one or more sub-level style sheet(s). Each level is attached to a hierarchical list style sheet and represents a depth in the list (level 1, level 2, level 3, etc.).
When a new sub-level is created, the level numbering restarts at 1. When you add or remove an element in your multi-level list, the numbers are automatically adjusted.
@@ -48,7 +48,7 @@ Multi-level lists are created with command [WP New style sheet](../commands/wp-n
Multi-level lists can be managed using:
-* paragraph [style sheet attributes](../commands/4d-write-pro-attributes.md#style-sheets) (such as `wk list level index`, `wk list level count`, and `wk list concat string format`)
+* paragraph [style sheet attributes](../commands-legacy/4d-write-pro-attributes.md#style-sheets) (such as `wk list level index`, `wk list level count`, and `wk list concat string format`)
* dedicated [standard actions](../user-legacy/standard-actions.md) for level management (`listLevelAppend`, `listLevelInc`, `listLevelDec`)
* dedicated standard actions for numbering marker management (`listConcatStringFormat`, `listNumberFormat`).
@@ -64,11 +64,11 @@ Multi-level lists can be managed using:
## Hierarchical list style sheets
-Hierarchical list style sheets are used to create [multi-level lists](using-a-4d-write-pro-area.md#multi-level-lists).
+Hierarchical list style sheets are used to create [multi-level lists](../user-legacy/using-a-4d-write-pro-area.md#multi-level-lists).
To create a hierarchical list style sheet, use [WP New style sheet](../commands/wp-new-style-sheet.md) and pass in *listLevelCount* the desired number of levels. You then define a hierarchy of related paragraph style sheets: one **root-level** style sheet and one or more **sub-level** style sheets linked to it. Each level represents a depth in the list (level 1, level 2, level 3, etc.) and is automatically named "root-level name + lvl + index", for example "Mylist lvl 2".
-To customize hierarchical list styles, the paragraph style sheet object can be customized using [style sheet attributes](../commands/4d-write-pro-attributes.md#style-sheets).
+To customize hierarchical list styles, the paragraph style sheet object can be customized using [style sheet attributes](../commands-legacy/4d-write-pro-attributes.md#style-sheets).
Hierarchical list style sheets are fully supported by the following commands: [`WP Get style sheet`](../commands/wp-get-style-sheet.md), [`WP SET ATTRIBUTES`](../commands/wp-set-attributes.md), [`WP DELETE STYLE SHEET`](../commands/wp-delete-style-sheet.md).
diff --git a/versioned_docs/version-21-R3/assets/en/FormEditor/print_rendering.png b/versioned_docs/version-21-R3/assets/en/FormEditor/print_rendering.png
new file mode 100644
index 00000000000000..d2a28e9dda474d
Binary files /dev/null and b/versioned_docs/version-21-R3/assets/en/FormEditor/print_rendering.png differ
diff --git a/versioned_docs/version-21-R3/assets/en/FormEditor/screen_rendering.png b/versioned_docs/version-21-R3/assets/en/FormEditor/screen_rendering.png
new file mode 100644
index 00000000000000..b219623b061d96
Binary files /dev/null and b/versioned_docs/version-21-R3/assets/en/FormEditor/screen_rendering.png differ
diff --git a/versioned_docs/version-21-R3/language-legacy/4D Environment/get-database-parameter.md b/versioned_docs/version-21-R3/language-legacy/4D Environment/get-database-parameter.md
index 504871add223f1..e0e6a41d8d2626 100644
--- a/versioned_docs/version-21-R3/language-legacy/4D Environment/get-database-parameter.md
+++ b/versioned_docs/version-21-R3/language-legacy/4D Environment/get-database-parameter.md
@@ -23,7 +23,7 @@ displayed_sidebar: docs
|Release|Changes|
|---|---|
-|21 R3|Removed support of *Use legacy network layer*|
+|21 R3|Removed support of *Use legacy network layer*, added *Use legacy print rendering*|
|20 R6|Modified|
|19 R5|Modified|
|16 R4|Modified|
@@ -1428,6 +1428,15 @@ In previous releases, time values were converted and stored as number of millise
Note that this parameter sets all 4D tips, i.e. form help messages and Design mode editor's tips.
+### Use legacy print rendering (136)
+
+**Scope:** 4D application
+
+**Kept between two sessions:** No
+
+**Possible values:** 0 = legacy print rendering disabled, 1 = legacy print rendering enabled
+
+**Description:** Sets or gets the current status of the [legacy print renderer](../../FormEditor/forms.md#legacy-print-rendering) on macOS or Windows. When the legacy print renderer is *disabled*, 4D’s [modern print rendering engine](../../FormEditor/forms.md) is used. Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this selector is ignored (in such contexts forms are always printed using the modern print renderer, see [this section](../../FormEditor/forms.md#legacy-print-rendering)). In converted projects, this parameter can also be set permanently using a [compatibility setting](../../settings/compatibility.md).
diff --git a/versioned_docs/version-21-R3/language-legacy/4D Environment/set-database-parameter.md b/versioned_docs/version-21-R3/language-legacy/4D Environment/set-database-parameter.md
index 643a6609541ec3..8123a5d0ca4297 100644
--- a/versioned_docs/version-21-R3/language-legacy/4D Environment/set-database-parameter.md
+++ b/versioned_docs/version-21-R3/language-legacy/4D Environment/set-database-parameter.md
@@ -22,7 +22,7 @@ displayed_sidebar: docs
|Release|Changes|
|---|---|
-|21 R3|Removed support of *Use legacy network layer*|
+|21 R3|Removed support of *Use legacy network layer*, added *Use legacy print rendering* |
|20 R6|Modified|
|20 R3|Modified|
|19 R5|Modified|
@@ -1035,6 +1035,15 @@ In previous releases, time values were converted and stored as number of millise
Note that this parameter sets all 4D tips, i.e. form help messages and Design mode editor's tips.
+### Use legacy print rendering (136)
+
+**Scope:** 4D application
+
+**Kept between two sessions:** No
+
+**Possible values:** 0 = legacy print rendering disabled, 1 = legacy print rendering enabled
+
+**Description:** Sets or gets the current status of the [legacy print renderer](../../FormEditor/forms.md#legacy-print-rendering) on macOS or Windows. When the legacy print renderer is *disabled*, 4D’s [modern print rendering engine](../../FormEditor/forms.md) is used. Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this selector is ignored (in such contexts forms are always printed using the modern print renderer, see [this section](../../FormEditor/forms.md#legacy-print-rendering)). In converted projects, this parameter can also be set permanently using a [compatibility setting](../../settings/compatibility.md).
### User param value (108)
@@ -1047,7 +1056,9 @@ In previous releases, time values were converted and stored as number of millise
**Description:** Custom string passed from one session to the next one when the 4D application is restarted. This selector is useful in the context of automated unit tests that require applications to restart with different parameters.
-When used with [SET DATABASE PARAMETER](../commands/set-database-parameter), defines a new value that will be available within the next opened database after 4D is restarted manually or using the [OPEN DATABASE](../commands/open-database)(\*), [OPEN DATA FILE](../commands/open-data-file), or [RESTART 4D](../commands/restart-4d) commands. When used with [Get database parameter](../commands/get-database-parameter), gets the currently available user parameter value, defined using a command line (see *Command Line Interface*), the .4DLink file (see *Using a 4DLink file*), or a call to [SET DATABASE PARAMETER](../commands/set-database-parameter) during the previous session. (\*) If [SET DATABASE PARAMETER](../commands/set-database-parameter) sets a User param value before a call to [OPEN DATABASE](../commands/open-database) with a .4DLink file that also contains a user-param xml attribute, 4D takes into account only the parameter provided by [SET DATABASE PARAMETER](../commands/set-database-parameter).
+When used with [SET DATABASE PARAMETER](../commands/set-database-parameter), defines a new value that will be available within the next opened database after 4D is restarted manually or using the [OPEN DATABASE](../commands/open-database)(\*), [OPEN DATA FILE](../commands/open-data-file), or [RESTART 4D](../commands/restart-4d) commands. When used with [Get database parameter](../commands/get-database-parameter), gets the currently available user parameter value, defined using a command line (see [Command Line Interface](../../Admin/cli.md)), the .4DLink file (see [Using a 4DLink file](../../GettingStarted/creating.md#opening-a-project-with-a-4dlink-file)), or a call to [SET DATABASE PARAMETER](../commands/set-database-parameter) during the previous session.
+
+(\*) If [SET DATABASE PARAMETER](../commands/set-database-parameter) sets a User param value before a call to [OPEN DATABASE](../commands/open-database) with a .4DLink file that also contains a user-param xml attribute, 4D takes into account only the parameter provided by [SET DATABASE PARAMETER](../commands/set-database-parameter).
diff --git a/versioned_docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md b/versioned_docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
index 93a6a4f23574d7..f4380ce0055512 100644
--- a/versioned_docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
+++ b/versioned_docs/version-21-R3/language-legacy/Mail/imap-new-transporter.md
@@ -5,7 +5,7 @@ slug: /commands/imap-new-transporter
displayed_sidebar: docs
---
-**IMAP New transporter**( *server* : Object ) : 4D.IMAPTransporter
+**IMAP New transporter**( *parameter* : Object ) : 4D.IMAPTransporter
diff --git a/versioned_docs/version-21-R3/language-legacy/Printing/print-form.md b/versioned_docs/version-21-R3/language-legacy/Printing/print-form.md
index 9bca02115665c2..17539ff363293f 100644
--- a/versioned_docs/version-21-R3/language-legacy/Printing/print-form.md
+++ b/versioned_docs/version-21-R3/language-legacy/Printing/print-form.md
@@ -34,7 +34,9 @@ displayed_sidebar: docs
## Description
-The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process. **Print form** does not do any record processing, break processing or page breaks. These operations are your responsibility. **Print form** prints fields and variables in a fixed size frame only.
+The **Print form** command simply prints *form* with the current values of fields and variables of *aTable*. It is usually used to print very complex reports that require complete control over the printing process.
+
+**Print form** does not do any record processing, break processing or page breaks. These operations are your responsibility.
In the *form* parameter, you can pass:
@@ -44,9 +46,11 @@ In the *form* parameter, you can pass:
Since **Print form** does not issue a page break after printing the form, it is easy to combine different forms on the same page. Thus, **Print form** is perfect for complex printing tasks that involve different tables and different forms. To force a page break between forms, use the [PAGE BREAK](../commands/page-break) command. In order to carry printing over to the next page for a form whose height is greater than the available space, call the [CANCEL](../commands/cancel) command before the [PAGE BREAK](../commands/page-break) command.
+### Syntaxes
+
Three different syntaxes may be used:
-* **Detail area printing**
+#### Detail area printing
Syntax:
@@ -56,7 +60,7 @@ Syntax:
In this case, **Print form** only prints the Detail area (the area between the Header line and the Detail line) of the form.
-* **Form area printing**
+#### Form area printing
Syntax:
@@ -92,7 +96,7 @@ In this case, the command will print the section designated by the *marker*. Pas
| Form header8 | Integer | 208 |
| Form header9 | Integer | 209 |
-* **Section printing**
+#### Section printing
Syntax:
@@ -102,37 +106,50 @@ Syntax:
In this case, the command will print the section included between the *areaStart* and *areaEnd* parameters. The values entered must be expressed in pixels.
-**formData**
+#### formData
Optionally, you can pass parameters to the *form* using either the *formData* object or the form class object automatically instantiated by 4D if you have [associated a user class to the form](../../FormEditor/properties_FormProperties.md#form-class). Any properties of the form data object will then be available from within the form context through the [Form](../commands/form) command. The form data object is available in the [`On Printing Detail` form event](../../Events/onPrintingDetail.md).
For detailed information on the form data object, please refer to the [`DIALOG`](../commands/dialog) command.
-**Return value**
+#### Return value
The value returned by **Print form** indicates the height of the printable area. This value will be automatically taken into account by the [Get printed height](../commands/get-printed-height) command.
+
+### Print settings
+
The printer dialog boxes do not appear when you use **Print form**. The report does not use the print settings that were assigned to the form in the Design environment. There are two ways to specify the print settings before issuing a series of calls to **Print form**:
* Call [PRINT SETTINGS](../commands/print-settings). In this case, you let the user choose the settings.
* Call [SET PRINT OPTION](../commands/set-print-option) and [GET PRINT OPTION](../commands/get-print-option). In this case, print settings are specified programmatically.
+### Page breaks
+
**Print form** builds each printed page in memory. Each page is printed when the page in memory is full or when you call [PAGE BREAK](../commands/page-break). To ensure the printing of the last page after any use of **Print form**, you must conclude with the [PAGE BREAK](../commands/page-break) command (except in the context of an [OPEN PRINTING JOB](../commands/open-printing-job), see note). Otherwise, if the last page is not full, it stays in memory and is not printed.
**Warning:** If the command is called in the context of a printing job opened with [OPEN PRINTING JOB](../commands/open-printing-job), you must NOT call [PAGE BREAK](../commands/page-break) for the last page because it is automatically printed by the [CLOSE PRINTING JOB](../commands/close-printing-job) command. If you call [PAGE BREAK](../commands/page-break) in this case, a blank page is printed.
-This command prints external areas and objects (for example, 4D Write or 4D View areas). The area is reset for each execution of the command.
+### Support of form events and form objects
-**Warning:** Subforms are not printed with **Print form**. To print only one form with such objects, use [PRINT RECORD](../commands/print-record) instead.
+**Print form** only generates the [`On Printing Detail` event](../../Events/onPrintingDetail.md) in the form method.
-**Print form** generates only one [`On Printing Detail` event](../../Events/onPrintingDetail.md) for the form method.
+**Print form** prints fields and variables in a [fixed size frame](../../FormObjects/properties_Print.md#print-frame) only.
-**4D Server:** This command can be executed on 4D Server within the framework of a stored procedure. In this context:
+**Print form** prints external areas and objects (for example, 4D Write or 4D View areas). The area is reset for each execution of the command.
+
+[Subforms](../../FormObjects/subform_overview.md) are not printed with **Print form**. To print only one form with such objects, use [PRINT RECORD](../commands/print-record) instead.
+
+:::note 4D Server
+
+This command can be executed on 4D Server within the framework of a stored procedure. In this context:
* Make sure that no dialog box appears on the server machine (except for a specific requirement).
* In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated.
+:::
+
## Example 1
The following example performs as a [PRINT SELECTION](../commands/print-selection) command would. However, the report uses one of two different forms, depending on whether the record is for a check or a deposit:
@@ -190,6 +207,78 @@ The code that calls the dialog then prints its body:
$h:=Print form("Request_var";$formData;Form detail)
```
+## Example 4
+
+You want to print a report with data coming from an entity selection (ORDA) in a project form, using breaks and subtotals.
+
+The form template is the following:
+
+
+
+The method that calls the form:
+
+```4d
+var $es : cs.SalesSelection
+var $e : cs.SalesEntity
+
+$es:=ds.Sales.all().orderBy("Region asc, Seller asc")
+$breakRegion:=""
+$breakSeller:=""
+
+
+// Global report header (printed once)
+Print form("testPrintForm1"; $e; Form header)
+For each ($e; $es)
+
+ // Region break (level 1): close previous seller and region totals, then open new region
+ If ($breakRegion#$e.Region)
+ If ($breakRegion#"")
+ Print form("testPrintForm1"; {totalQuantity: $filteredSeller.sum("Quantity"); totalPrice: $filteredSeller.sum("UnitPrice")}; Form break2)
+ Print form("testPrintForm1"; {totalQuantity: $filtered.sum("Quantity"); totalPrice: $filtered.sum("UnitPrice")}; Form break1)
+ End if
+ $breakRegion:=$e.Region
+ // Reset seller break so header2 is printed for first seller in this region
+ $breakSeller:=""
+ $filtered:=$es.query("Region=:1"; $breakRegion)
+ Print form("testPrintForm1"; {Region: $e.Region}; Form header1)
+ End if
+
+ // Seller break (level 2) inside current region
+ If (($breakSeller#$e.Seller))
+ If ($breakSeller#"")
+ Print form("testPrintForm1"; {totalQuantity: $filteredSeller.sum("Quantity"); totalPrice: $filteredSeller.sum("UnitPrice")}; Form break2)
+ End if
+ $breakSeller:=$e.Seller
+ // Seller subtotal must be scoped by Region + Seller
+ $filteredSeller:=$es.query("Region=:1 and Seller=:2"; $breakRegion; $breakSeller)
+ Print form("testPrintForm1"; {Seller: $e.Seller}; Form header2)
+ End if
+
+
+ // Detail line
+ Print form("testPrintForm1"; $e; Form detail)
+End for each
+
+// Close the last seller and region groups after loop
+Print form("testPrintForm1"; {totalQuantity: $filteredSeller.sum("Quantity"); totalPrice: $filteredSeller.sum("UnitPrice")}; Form break2)
+Print form("testPrintForm1"; {totalQuantity: $filtered.sum("Quantity"); totalPrice: $filtered.sum("UnitPrice")}; Form break1)
+
+// Grand totals for the full selection
+Print form("testPrintForm1"; \
+{totalQuantity: $es.sum("Quantity"); totalPrice: $es.sum("UnitPrice"); \
+minQuantity: $es.min("Quantity"); minPrice: $es.min("UnitPrice"); \
+maxQuantity: $es.max("Quantity"); maxPrice: $es.max("UnitPrice")}; \
+Form break0)
+
+// Global report footer (printed once)
+Print form("testPrintForm1"; $e; Form footer)
+```
+
+The resulting printed report:
+
+
+
+
## See also
[CANCEL](../commands/cancel)
diff --git a/versioned_docs/version-21-R3/language-legacy/Printing/print-selection.md b/versioned_docs/version-21-R3/language-legacy/Printing/print-selection.md
index 21d9038a0823e1..cdb67cdb61b56e 100644
--- a/versioned_docs/version-21-R3/language-legacy/Printing/print-selection.md
+++ b/versioned_docs/version-21-R3/language-legacy/Printing/print-selection.md
@@ -49,16 +49,25 @@ You can check whether **PRINT SELECTION** is printing the first header by testin
To print a sorted selection with subtotals or breaks using **PRINT SELECTION**, you must first sort the selection. Then, in each Break area of the report, include a variable with an object method that assigns the subtotal to the variable. You can also use statistical and arithmetical functions like [Sum](../commands/sum) and [Average](../commands/average) to assign values to variables. For more information, see the descriptions of [Subtotal](../commands/subtotal), [BREAK LEVEL](../commands/break-level) and [ACCUMULATE](../commands/accumulate).
-**Warning:** Do not use the [PAGE BREAK](../commands/page-break) command with the **PRINT SELECTION** command. [PAGE BREAK](../commands/page-break) is to be used with the [Print form](../commands/print-form) command.
+:::warning
+
+ Do not use the [PAGE BREAK](../commands/page-break) command with the **PRINT SELECTION** command. [PAGE BREAK](../commands/page-break) is to be used with the [Print form](../commands/print-form) command.
+
+:::
After a call to **PRINT SELECTION**, the OK variable is set to 1 if the printing has been completed. If the printing was interrupted, the OK variable is set to 0 (zero) (i.e., the user clicked Cancel in the printing dialog box).
-**4D Server:** This command can be executed on 4D Server in a stored procedure. In this context:
+:::note 4D Server
+
+This command can be executed on 4D Server in a stored procedure. In this context:
* Make sure that no dialog box appears on the server machine (except for a specific requirement). To do this, it is necessary to call the command with the *\** or *\>* parameter.
* In the case of a problem concerning the printer (out of paper, printer disconnected, etc.), no error message is generated.
-## Example
+:::
+
+
+## Example 1
The following example selects all the records in the \[People\] table. It then uses the [DISPLAY SELECTION](../commands/display-selection) command to display the records and allows the user to highlight the records to print. Finally, it uses the selected records with the [USE SET](../commands/use-set) command, and prints them with **PRINT SELECTION**:
@@ -69,11 +78,54 @@ The following example selects all the records in the \[People\] table. It then u
PRINT SELECTION([People]) // Print the records that the user picked
```
+## Example 2
+
+You want to print a report with breaks and subtotals, using the following form template:
+
+
+
+The method called to build the report:
+
+```4d
+ALL RECORDS([Sales])
+ORDER BY([Sales]Region; <; [Sales]Seller; <)
+BREAK LEVEL(2)
+ACCUMULATE([Sales]Quantity; [Sales]UnitPrice)
+PRINT SELECTION([Sales])
+```
+
+In the form method, you calculate the subtotal values thanks to the built-in **PRINT SELECTION** command features, i.e. values processed in the `On printing break` event can be directly evaluated by [`Subtotal`](../commands/subtotal):
+
+```4d
+ //form method
+Case of
+ : (FORM Event.code=On Printing Break)
+ vBreak:=[Sales]Region
+ //Subtotal uses currently processed values
+ //it can be used in break variables
+ vTotalQuantity:=Subtotal([Sales]Quantity)
+ vTotalPrice:=Subtotal([Sales]UnitPrice)
+
+ //Min and Max use current selection
+ //they are valid at the final break
+ vMinQuantity:=Min([Sales]Quantity)
+ vMinPrice:=Min([Sales]UnitPrice)
+ vMaxQuantity:=Max([Sales]Quantity)
+ vMaxPrice:=Max([Sales]UnitPrice)
+End case
+```
+
+The resulting printed report:
+
+
+
+
## See also
[ACCUMULATE](../commands/accumulate)
[BREAK LEVEL](../commands/break-level)
[Level](../commands/level)
+[Print form](../commands/print-form)
[Subtotal](../commands/subtotal)
## Properties
diff --git a/versioned_docs/version-21-R3/settings/compatibility.md b/versioned_docs/version-21-R3/settings/compatibility.md
index 2706580697dde2..900493351b8d30 100644
--- a/versioned_docs/version-21-R3/settings/compatibility.md
+++ b/versioned_docs/version-21-R3/settings/compatibility.md
@@ -5,23 +5,29 @@ title: Compatibility page
The Compatibility page groups together parameters related to maintaining compatibility with previous versions of 4D.
-> The number of options displayed depends on the version of 4D with which the original database/project was created, as well as the settings modified in this database/project.
-> This page lists the compatibility options available for database/projects converted from 4D v18 onwards. For older compatibility options, refer to the [Compatibility page](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) on **doc.4d.com**.
+:::note
+- The number of options displayed depends on the version of 4D with which the original database/project was created, as well as the settings modified in this database/project.
+- This page lists the compatibility options available for database/projects converted from 4D 18 onwards. For older compatibility options, refer to the [Compatibility page](https://doc.4d.com/4Dv20/4D/20.2/Compatibility-page.300-6750362.en.html) on **doc.4d.com**.
-- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to v18 R3, and checked for databases created with 4D v18 R3 and higher. Starting with v18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. As a consequence, non-standard features of the previous implementation no longer work. They include:
+:::
+
+
+- **Use standard XPath:** By default this option is unchecked for databases converted from a 4D version prior to 18 R3, and checked for databases created with 4D 18 R3 and higher. Starting with 18 R3, the XPath implementation in 4D has been modified to be more compliant and to support more predicates. As a consequence, non-standard features of the previous implementation no longer work. They include:
* initial "/" is not the root node only - using a / as first character in a XPath expression does not declare an absolute path from the root node
* no implicit current node - the current node has to be included in the XPath expression
* no recursive searches in repeated structures - only the first element is parsed.\
Although not standard, you might want to keep using these features so that your code continues to work as before -- in this case, just set the option *unchecked*. On the other hand, if your code does not rely on the non-standard implementation and if you want to benefit from the extended XPath features in your databases (as described in the [`DOM Find XML element`](../commands/dom-find-xml-element) command), make sure the **Use standard XPath** option is *checked*.
-- **Use LF for end of line on macOS:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. If you want to benefit from this new behavior on projects converted from previous 4D versions, check this option. See [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), and [XML SET OPTIONS](../commands/xml-set-options).
+- **Use LF for end of line on macOS:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files with line feed (LF) as default end of line (EOL) character instead of CR (CRLF for xml SAX) on macOS in new projects. If you want to benefit from this new behavior on projects converted from previous 4D versions, check this option. See [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), and [XML SET OPTIONS](../commands/xml-set-options).
+
+- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D 19 R2 (and 4D 19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. In previous versions, text files were written with a BOM by default. Select this option if you want to enable the new behavior in converted projects. See [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), and [XML SET OPTIONS](../commands/xml-set-options).
-- **Don't add a BOM when writing a unicode text file by default:** Starting with 4D v19 R2 (and 4D v19 R3 for XML files), 4D writes text files without a byte order mark (BOM) by default. In previous versions, text files were written with a BOM by default. Select this option if you want to enable the new behavior in converted projects. See [`TEXT TO DOCUMENT`](../commands/text-to-document), [`Document to text`](../commands/document-to-text), and [XML SET OPTIONS](../commands/xml-set-options).
+- **Map NULL values to blank values unchecked by default at field creation**: For better compliance with ORDA specifications, in databases created with 4D 19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. You can apply this default behavior to your converted databases by checking this option (working with Null values is recommended since they are fully supported by [ORDA](../ORDA/overview.md).
-- **Map NULL values to blank values unchecked by default a field creation**: For better compliance with ORDA specifications, in databases created with 4D v19 R4 and higher the **Map NULL values to blank values** field property is unchecked by default when you create fields. You can apply this default behavior to your converted databases by checking this option (working with Null values is recommended since they are fully supported by [ORDA](../ORDA/overview.md).
+- **Non-blocking printing**: Starting with 4D 20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or your databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call [`CLOSE PRINTING JOB`](../commands/close-printing-job) for the printer to be available for the next print job (check previous 4D documentations for more information).
-- **Non-blocking printing**: Starting with 4D v20 R4, each process has its own printing settings (print options, current printer, etc.), thus allowing you to run multiple printing jobs simultaneously. Check this option if you want to benefit from this new implementation in your converted 4D projects or databases converted from binary mode to project mode. **When left unchecked**, the previous implementation is applied: the current 4D printing settings are applied globally, the printer is placed in "busy" mode when one printing job is running, you must call `CLOSE PRINTING JOB` for the printer to be available for the next print job (check previous 4D documentations for more information).
+- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D 20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) are saved in a separate file named `catalog_editor.json`, stored in the project's [Sources folder](../Project/architecture.md#sources). This new file architecture makes it easier to manage merge conflicts in VCS applications since the `catalog.4DCatalog` file now contains only crucial database structure changes. For compatibility reasons, this feature is not enabled by default in projects converted from previous 4D versions, you need to check this option. When the feature is enabled, the `catalog_editor.json` file is created at the first modification in the Structure editor.
-- **Save structure color and coordinates in separate catalog_editor.json file**: Starting with 4D v20 R5, changes made in the Structure editor regarding graphical appearance of tables and fields (color, position, order...) are saved in a separate file named `catalog_editor.json`, stored in the project's [Sources folder](../Project/architecture.md#sources). This new file architecture makes it easier to manage merge conflicts in VCS applications since the `catalog.4DCatalog` file now contains only crucial database structure changes. For compatibility reasons, this feature is not enabled by default in projects converted from previous 4D versions, you need to check this option. When the feature is enabled, the `catalog_editor.json` file is created at the first modification in the Structure editor.
+- **Use legacy print rendering**: Starting with 4D 21 R3, 4D uses a new, unified print rendering engine to print forms on macOS and Windows. To make sure forms designed with the [legacy screen-based print renderer](../FormEditor/forms.md#legacy-print-renderer) continue to be printed as expected, this option is checked by default in converted projects or databases created with 4D 21 R2 and before. You can uncheck this option to benefit from the [modern print rendering engine](../FormEditor/forms.md#print-rendering-engine). Note that when forms are rendered under Liquid Glass (macOS) or Fluent UI (Windows) interfaces, this option is ignored: in such contexts forms are always printed using the modern print renderer (see [this section](../FormEditor/forms.md#legacy-print-renderer)).
\ No newline at end of file