diff --git a/README.md b/README.md index 68116eb4ad00ca..8112949d623586 100644 --- a/README.md +++ b/README.md @@ -154,6 +154,13 @@ banner: 'none', 3. Aller dans i18n\en\code.json, à la fin du fichier : liens de la page Home (vers extensions) à mettre à jour +### Mettre à jour le lien vers les versions Notes précédentes dans notes + +Lien main : +`See [**Release Notes for 4D 20.x LTS**](../../20/Notes/updates)`.
+à transformer en +`See [**Release Notes for 4D 20.x LTS**](../20/Notes/updates)`. + ### Si problème de traduction avec cmfcmf: 1. Faire `git restore --rebase --autostash` @@ -180,11 +187,16 @@ Forcer une synchro globale de main sur Crowdin Tester : Faire npm run build ### Builder -Sur github, faire une PR de docs4d/docs/main sur 4d/docs/main +voir ["mise à jour prod"](#mise-a-jour-prod) ci dessous ### Algolia (4D only) Aller dans l'interface Algolia et lancer un reindex de la doc +## Mise à jour 4D NetKit +1. Synchro avec prod (4D/4DNetKit) +2. Pull request vers prod : Main pour version en ligne +3. Pull request vers prod : version qui shippe pour doc embedded + ## Mise à jour prod 1. Créer une nouvelle branche en local nommée par exemple Tempo 2. faire git fetch upstream (met à jour la preprod avec la prod) diff --git a/docs/API/DataClassClass.md b/docs/API/DataClassClass.md index c6d6cb00f6fbbb..edcd003a94a757 100644 --- a/docs/API/DataClassClass.md +++ b/docs/API/DataClassClass.md @@ -1185,7 +1185,7 @@ In this case, the *value* parameter must be a **comparison vector object** conta |Property|Type|Description| |---|---|---| |vector|[4D.Vector](../API/VectorClass.md)|Mandatory. The vector to be compared| -|metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine distance between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors.| +|metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors.| |threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.| Only a subset of **comparator** symbols are supported. Note that they compare results to the threshold value: diff --git a/docs/API/EntityClass.md b/docs/API/EntityClass.md index 13cba5842aa523..2b84626000140f 100644 --- a/docs/API/EntityClass.md +++ b/docs/API/EntityClass.md @@ -992,7 +992,6 @@ The object returned by `.lock()` contains the following properties: |---|---|---| |`dk status entity does not exist anymore`| 5 |The entity no longer exists in the data. This error can occur in the following cases:
  • the entity has been dropped (the stamp has changed and the memory space is now free)
  • the entity has been dropped and replaced by another one with another primary key (the stamp has changed and a new entity now uses the memory space). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. When using `.lock()`, this error can be returned when `dk reload if stamp changed` option is used

  • **Associated statusText**: "Entity does not exist anymore"| |`dk status locked`| 3 |The entity is locked by a pessimistic lock.**Associated statusText**: "Already locked" -|`dk status mild validation error`|7|Can be returned by the developer only in validate events and do not require| |`dk status serious error`| 4 |A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **Associated statusText**: "Other error"| |`dk status stamp has changed`|2|The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed"| diff --git a/docs/API/SessionClass.md b/docs/API/SessionClass.md index ed2886e8de489f..fc6823efe170e6 100644 --- a/docs/API/SessionClass.md +++ b/docs/API/SessionClass.md @@ -99,7 +99,7 @@ This function does not remove **promoted privileges** from the web process, whet ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). #### Example @@ -409,7 +409,7 @@ This function returns True for the *privilege* if called from a function that wa ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. diff --git a/docs/Concepts/components.md b/docs/Concepts/components.md index 2aff64fb665de5..2295ba0c354992 100644 --- a/docs/Concepts/components.md +++ b/docs/Concepts/components.md @@ -9,7 +9,7 @@ A 4D component is a set of 4D code and forms representing one or more functional Installation and loading of components in your 4D projects are handled through the [4D Dependency manager](../Project/components.md). -Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Additionnally, you can [develop your own 4D components](../Extensions/develop-components.md). +Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Additionnally, you can [develop your own 4D components](../Extensions/develop-components.md). ## Using components diff --git a/docs/Concepts/parameters.md b/docs/Concepts/parameters.md index b4064c48667cb3..163b6f2017e26f 100644 --- a/docs/Concepts/parameters.md +++ b/docs/Concepts/parameters.md @@ -313,12 +313,6 @@ The legacy syntax for declaring variadic parameters (`C_TEXT(${4})`) is deprecat ::: -## Triggers and On Drag Over - -Some contexts do not support declaration in a "Compiler_" method, thus they are handled specifically: - -- Triggers - The $0 parameter (Longint), which is the result of a trigger, will be typed by the compiler if the parameter has not been explicitly declared. Nevertheless, if you want to declare it, you must do so in the trigger itself. - diff --git a/docs/Develop-legacy/transactions.md b/docs/Develop-legacy/transactions.md index ec3fc9d7f4065d..39380e9e23e4a7 100644 --- a/docs/Develop-legacy/transactions.md +++ b/docs/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/docs/Develop-legacy/triggers.md b/docs/Develop-legacy/triggers.md new file mode 100644 index 00000000000000..c79d5bcdeabaee --- /dev/null +++ b/docs/Develop-legacy/triggers.md @@ -0,0 +1,292 @@ +--- +id: triggers +title: Triggers +slug: /Develop/triggers +displayed_sidebar: docs +--- + + +A **trigger** is a method attached to a table. It is a property of a table. You do not call triggers; they are automatically invoked by the 4D database engine each time you manipulate table records (add, delete and modify). You can write very simple triggers, and then make them more sophisticated. + +Triggers can prevent "illegal" operations on the records of your database. They are a very powerful tool for restricting operations on a table, as well as preventing accidental data loss or tampering. For example, in an invoicing system, you can prevent anyone from adding an invoice without specifying the customer to whom the invoice is billed. + + + + + +## Activating and Creating a Trigger + +By default, when you create a table in the Design Environment, it has no trigger. + +To use a trigger for a table, you need to: + +- Activate the trigger and tell 4D when it has to be invoked. +- Write the code for the trigger. + +Activating a trigger that is not yet written or writing a trigger without activating it will not affect the operations performed on a table. + +1. To activate a trigger for a table, you must select one of the **Triggers** options (database events) for the table in the Inspector window of the structure: + +![](../assets/en/Develop/triggers-set.png) + +2. Creating a Trigger. + +To create a trigger for a table, click on the **Edit...** button in the Inspector window or press **Alt** (Windows)/**Option** (macOS) and double-click on the table title in the Structure window ans write the code corresponding to the trigger that you want to create. + + + +## Description of the triggers + +### On saving an existing record + +If this option is selected, the trigger will be invoked each time a record of the table is modified. This happens when: + +- Modifying a record in data entry (Design environment, [`MODIFY RECORD`](../commands/modify-record) command or the SQL `UPDATE` command). +- Saving an already existing record using [`SAVE RECORD`](../commands/save-record). +- Calling any other commands that save existing records (i.e., [`ARRAY TO SELECTION`](../commands/array-to-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), etc.). +- Using an ORDA function that saves the entity. + +:::note + +For optimization reasons, the trigger is not called when the record is saved by the user or via the [`SAVE RECORD`](../commands/save-record) command if no field in the table has been modified in the record. If you want to "force" the calling of the trigger in this case, you can simply assign a field to itself: + +```4d +[thetable]thefield:=[thetable]thefield +``` + +::: + +### On deleting a record + +If this option is selected, the trigger will be invoked each time a record of the table is deleted. This happens when: + +- Deleting a record (Design environment or calling [`DELETE RECORD`](../commands/delete-record), [`DELETE SELECTION`](../commands/delete-selection) or the SQL `DELETE` command). +- Performing any operation that provokes deletion of related records through the deletion control options of a relation. +- Using an ORDA function that deletes the entity. + +:::note + +The [`TRUNCATE TABLE`](../commands/trucate-table) command does NOT call the trigger. + +::: + +### On saving a new record + +If this option is selected, the trigger will be invoked each time a record is added to the table. This happens when: + +- Adding a record in data entry (Design environment, [`ADD RECORD`](../commands/add-record) command or the SQL `INSERT` command). +- Creating and saving a record with [`CREATE RECORD`](../commands/create-record) and [`SAVE RECORD`](../commands/save-record). Note that the trigger is invoked at the moment you call [`SAVE RECORD`](../commands/save-record), not when it is created. +- Importing records (Design environment or using an import command). +- Calling any other commands that create and/or save new records (i.e., [`ARRAY TO SELECTION`](../commands/array-to-selection), [`SAVE RELATED ONE`](../commands/save-related-one), etc.). +- Using ORDA functions such as [`ds.dataclass.new()`](../API/DataClassClass.md#new) and [`entity.save()`](../API/EntityClass.md#save). + + +## Database events + +A trigger can be invoked for one of the three database events described above. Within the trigger, you detect which event is occurring by calling the [`Trigger event`](../commands/trigger-event) command. This function returns a numeric value that denotes the database event. + +Typically, you write a trigger with a [`Case of` structure](../Concepts/flow-control.md#case-ofelseend-case) on the result returned by [`Trigger event`](../commands/trigger-event). + +```4d + //Trigger for [anyTable] +#DECLARE -> $result : Integer +$result:=0 // Assume the database request will be granted + Case of + :(Trigger event=On Saving New Record Event) + // Perform appropriate actions for the saving of a newly created record + :(Trigger event=On Saving Existing Record Event) + // Perform appropriate actions for the saving of an already existing record + :(Trigger event=On Deleting Record Event) + // Perform appropriate actions for the deletion of a record + End case + ``` + + +## Triggers are Functions + +A trigger has two purposes: + +- Performing actions on the record just before it is saved or deleted. +- Granting or rejecting a database operation. + + +### Performing Actions + +Each time a record is saved (added or modified) to a [Documents] table, you want to "mark" the record with a time stamp for creation and another one for the most recent modification. You can write the following trigger: + +```4d + // Trigger for table [Documents] + Case of + :(Trigger event=On Saving New Record Event) + [Documents]CreationStamp:=myTimeStamp + [Documents]ModificationStamp:=myTimeStamp + :(Trigger event=On Saving Existing Record Event) + [Documents]ModificationStamp:=myTimeStamp + End case +``` + +:::note + +The *myTimeStamp* function used in this example is a small project method that returns the number of seconds elapsed since a fixed date was chosen arbitrarily. + +::: + +After this trigger has been written and activated, no matter what way you add or modify a record to the [Documents] table (data entry, import, project method, ORDA function), the fields [Documents]CreationStamp and [Documents]ModificationStamp will automatically be assigned by the trigger before the record is eventually written to the disk. + +### Granting or rejecting the database operation + +To grant or reject a database operation, the trigger must **return a trigger error code** in the function result. + +#### Example + +Let's take the case of an [Employees] table. During data entry, you enforce a rule on the social security number field for the [Employees] table. When you click the validation button, you check the field using the object method of the button: + +```4d + // bAccept button object method + If(GoodSSnumber([Employees]SSNumber)) + ACCEPT + Else + BEEP + ALERT("Enter a Social Security Number then click OK again.") + End if +``` + +If the field value is valid, you accept the data entry; if the field value is not valid, you display an alert and you stay in data entry. + +If you also create [Employees] records programmatically, the following piece of code would be programmatically valid, but would violate the rule expressed in the previous object method: + +```4d + // Extract from a project method + // ... + CREATE RECORD([Employees]) + [Employees]Name:="DOE" + SAVE RECORD([Employees]) // <-- DB rule violation! The SS number has not been assigned! + // ... +``` + +Using a trigger for the [Employees] table, you can enforce the [Employees]SSNumber rule at all the levels of the database. The trigger would look like this: + +```4d + // Trigger for [Employees] + #DECLARE -> $result : Integer + var $dbEvent : Integer + $result:=0 + $dbEvent:=Trigger event + Case of + :(($dbEvent=On Saving New Record Event)|($dbEvent=On Saving Existing Record Event)) + If(Not(GoodSSnumber([Employees]SSNumber))) + $result:=-15050 + Else + // ... + End if + // ... + End case +``` + +Once this trigger is written and activated, the line `SAVE RECORD([Employees])` will generate a database engine error -15050, and the record will NOT be saved. + +Similarly, if a 4D Plug-in attempted to save an [Employees] record with an invalid social security number, the trigger will generate the same error and the record will not be saved. + +The trigger guarantees that nobody (user, database designer, plug-in) can violate the social security number rule, either deliberately or accidentally. + +Note that even if you do not have a trigger for a table, you can get database engine errors while attempting to save or delete a record. For example, if you attempt to save a record with a duplicated value in a unique indexed field, the error -9998 is returned. + +Therefore, triggers returning errors add database engine errors to your application: + +- 4D manages the "regular" errors: unique index, relational data control, and so on. +- Using triggers, you manage the custom errors unique to your application. + +**Important:** You can return an error code value of your choice. However, do NOT use error codes already taken by the 4D database engine. We strongly recommend that you use error codes between -32000 and -15000. We reserve error codes above -15000 for the database engine. + +At the process level, you handle trigger errors the same way you handle database engine errors: + +- You can let 4D display the standard error dialog box, then the method is halted. +- You can use an [error-handling method](../Concepts/error-handling.md) and recover the error the appropriate way (except for commands acting on a selection of records, see the note below). + +:::note Notes + +- During data entry, if a trigger error is returned while attempting to validate or delete a record, the error is handled like a unique indexed error. The error dialog is displayed, and you stay in data entry. Even if you use a database in the Design environment (not in the Application environment), you have the benefit of using triggers. +- When an error is generated by a trigger for a record within the framework of a command acting on a selection of records ([`DELETE SELECTION`](../commands/delete-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), [`ARRAY TO SELECTION`](../commands/array-to-selection)...), the record is not processed but is automatically registered in the [`LockedSet` of the process](../Develop/processes.md#elements-of-a-process). The command continues its execution until the end and no error can be catched. The error-handling method, if any, is not called. To know if errors have been generated in this context, you need to test the `LockedSet` just after the command call. Also, in the trigger, you have to store error codes, for example in a collection, and handle them afterwards. + +::: + +Even when a trigger returns no error ($result=0), this does not mean that a database operation will be successful—a unique index violation may occur. If the operation is the update of a record, the record may be locked, an I/O error may occur, and so on. The checking is done after the execution of the trigger. However, at the higher level of the executing process, errors returned by the database engine or a trigger are the same—a trigger error is a database engine error. + + + +## Triggers and the 4D Architecture + +Triggers execute at the database engine level. This is summarized in the following diagram: + +![](../assets/en/Develop/triggers-architecture.png) + +Triggers are executed on the machine where the database engine is actually located. This is obvious with a 4D single-user version. On 4D Server, triggers are executed within the acting process on the server machine (in the "twinned" process of the process that set off the trigger), not on the client machine. + +When a trigger is invoked, it executes within the context of the process that attempts the database operation. This process, which invokes the trigger execution, is called the **invoking process**. The elements included in this context differ according to whether the database is executed with 4D in local mode or with 4D Server : + +- With 4D in local mode, the trigger works with the current selections, current records, table read/write states, record locking operations, etc., of the invoking process. +- With 4D Server, only the context of the database of the invoking client process is preserved (locked records and transactional states). 4D Server also (and only) guarantees that the current record of the table of the trigger is correctly positioned. The other elements of the context (current selections for example) are those of the trigger process. + +Be careful about using other database or language objects of the 4D environment, because a trigger may execute on a machine other than that of the invoking process—this is the case with 4D Server! + +- **Process variables**: Each trigger has its own table of process variables. A trigger has no access to the process variables of the invoking process. +- **Local variables**: You can use local variables in a trigger. Their scope is the trigger execution; they are created/deleted at each execution. +- **Semaphores**: A trigger can test or set global semaphores as well as local semaphores (on the machine where it executes). However, a trigger must execute quickly, so you must be very careful when testing or setting semaphores from within triggers. +- **Sets and Named selections**: If you use a set or a named selection from within a trigger, you work on the machine where the trigger executes. In client/server mode, "process" sets and named selections (whose names do not begin with a $ nor with \<>) that are created on the client machine are visible in a trigger. +- **User Interface**: Do NOT use user interface elements in a trigger (no alerts, no messages, no dialog boxes). Accordingly, you should limit any tracing of triggers in the [Debugging window](../Debugging/debugger.md). Remember that in Client/Server, triggers execute on the 4D Server machine. An alert message on the server machine does not help a user on a client machine. Let the invoking process handle the user interface. + +Note that in client-server mode, if you use 4D's password system, you can execute the [`Current user`](../commands/current-user) command in the trigger in order, for example, to save the name of the user at the origin of the trigger call in a journaled table. + + +## Triggers and Transactions + +[Transactions](./transactions.md) must be handled at the invoking process level. They must not be managed at the trigger level. During one trigger execution, if you have to add, modify or delete multiple records (see the following case study), you must first use the [`In transaction`](../commands/in-transaction) command from within the trigger to test if the invoking process is currently in transaction. If this is not the case, the trigger may potentially encounter a locked record. Therefore, if the invoking process is not in transaction, do not even start the operations on the records. Just return an error in the trigger $result in order to signal to the invoking process that the database operation it is trying to perform must be executed in a transaction. Otherwise, if locked records are met, the invoking process will have no means to roll back the actions of the trigger. + + +:::note + +In order to optimize the combined operation of triggers and transactions, 4D does not call triggers after the execution of [`VALIDATE TRANSACTION`](../commands/validate-transaction). This prevents the triggers from being executed twice. + +::: + +## Cascading Triggers + +Given the following example structure: + +![](../assets/en/Develop/triggers-cascade.png) + + +Note: The tables have been collapsed; they have more fields than shown here. + +Let's say that the database "authorizes" the deletion of an invoice. We can examine how such an operation would be handled at the trigger level (because you could also perform deletions at the process level). + +In order to maintain the relational integrity of the data, deleting an invoice requires the following actions to be performed in the trigger for [Invoices]: + +- In the [Customer] record, decrement the Gross Sales field by the amount of the invoice. +- Delete all the [Line Items] records related to the invoice. +- This also implies that the [Line Items] trigger decrements the Quantity Sold field of the [Products] record related to the line item to be deleted. +- Delete all the [Payments] records related to the deleted invoice. + +First, the trigger for [Invoices] must perform these actions only if the invoking process is in transaction, so that a roll-back is possible if a locked record is met. + +Second, the trigger for [Line Items] is **cascading** with the trigger for [Invoices]. The [Line Items] trigger executes "within" the execution of the [Invoices] trigger, because the deletion of the list items are consequent to a call to `DELETE SELECTION` from within the [Invoices] trigger. + +Consider that all tables in this example have triggers activated for all database events. The cascade of triggers will be: + +- [Invoices] trigger is invoked because the invoking process deletes an invoice + - [Customers] trigger is invoked because the [Invoices] trigger updates the Gross Sales field + - [Line Items] trigger is invoked because the [Invoices] trigger deletes a line item (repeated) + - [Products] trigger is invoked because the [Line Items] trigger updates the Quantity Sold fiel + - [Payments] trigger is invoked because the [Invoices] trigger deletes a payment (repeated) + +In this cascade relationship, the [Invoices] trigger is said to be executing at level 1, the [Customers], [Line Items], and [Payments] triggers at level 2, and the [Products] trigger at level 3. + +From within the triggers, you can use the [`Trigger level`](../commands/trigger-level) command to detect the level at which a trigger is executed. In addition, you can use the [`TRIGGER PROPERTIES`](../commands/trigger-properties) command to get information about the other levels. + +For example, if a [Products] record is being deleted at a process level, the [Products] trigger would be executed at level 1, not at level 3. + +Using [`Trigger level`](../commands/trigger-level) and [`TRIGGER PROPERTIES`](../commands/trigger-properties), you can detect the cause of an action. In our example, an invoice is deleted at a process level. If we delete a [Customers] record at a process level, then the [Customers] trigger should attempt to delete all the invoices related to that customer. This means that the [Invoices] trigger will be invoked as above, but for another reason. From within the [Invoices] trigger, you can detect if it executed at level 1 or 2. If it did execute at level 2, you can then check whether or not it is because the [Customers] record is deleted. If this is the case, you do not even need to bother updating the Gross Sales field. + + + + diff --git a/docs/Develop/field-properties.md b/docs/Develop/field-properties.md index 5815691e0f4bc4..09d937dfc69136 100644 --- a/docs/Develop/field-properties.md +++ b/docs/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Field properties --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/docs/Develop/triggers-new.md b/docs/Develop/triggers-new.md new file mode 100644 index 00000000000000..4b2e9ac1246669 --- /dev/null +++ b/docs/Develop/triggers-new.md @@ -0,0 +1,20 @@ +--- +id: triggers-new +title: Triggers +--- + +to import + + + +## Triggers vs ORDA entity events + +**Triggers** (aka database events) and [**ORDA entity events**](../ORDA/orda-events.md) have similar purposes: they establish rules to control fundamental operations on the data (create, edit, or delete). However, they do not operate at the same level: +- triggers are handled at the database level, which is the lowest level, +- ORDA entity events are handled at the [datastore](../ORDA/dsMapping.md#datastore) level, which is related to your business logic. + +Actions on data executed through the datastore, such as [`.save()`](../API/EntityClass.md#save) or [`.drop`](../API/EntityClass.md#drop), will call the triggers, if any. + +On the other hand, actions triggered at the 4D database level using the 4D classic language commands, such as [`SAVE RECORD`](../commands/save-record) or [standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html#3371159) will NOT trigger ORDA entity events. + + diff --git a/docs/Extensions/overview.md b/docs/Extensions/overview.md index 6f74a3a5cb9786..ec72c63dc68945 100644 --- a/docs/Extensions/overview.md +++ b/docs/Extensions/overview.md @@ -119,3 +119,31 @@ A subset of these components is listed by default in the [Dependency Manager](.. +- [**System workers**](../API/SystemWorkerClass.md) allow the 4D code to call any external process (a shell command, PHP, any script, etc.) and monitor its execution. +- [**SQL commands**](../commands/theme/SQL) allow you to connect and use various SQL data sources. +- The [**built-in HTTP client**](../API/HTTPRequestClass.md) can request any HTTP server and process data. +- [**Web Areas**](../FormObjects/webArea_overview.md) can give access to web pages or various HTML contents within your forms. +- [**Components**](Concepts/components.md). Components are made of 4D code. 4D proposes a set of utility components (see below) that you can install and use depending on your needs. You can also [develop your own 4D components](develop-components.md), or use third-party components. Many developers from the 4D community have shared 4D components (browse Github to have a list of public 4D components gathered with the [`4d-component`](https://github.com/topics/4d-component) topic). +- [**Plug-ins**](../Concepts/plug-ins.md). Plug-ins can be built using any language. Plugins do things that 4D does not natively (e.g., specific platform technology), or would be very hard to write just using 4D. As described in [this page](develop-plug-ins.md), you can develop your own plug-ins. A lot of functionnalities are covered by the existing 4D plug-ins. Browse Github to have a list of public 4D plugins gathered with the [`4d-plugin`](https://github.com/topics/4d-plugin) topic. + + +## Components developed by 4D + +4D proposes various components to the 4D community, covering many development needs. All 4D components can be found on the [**4D github repository**](https://github.com/4d). + +A subset of these components is listed by default in the [Dependency Manager](../Project/components.md), including: + +|Component|Github repository|Description|Main Features| +|---|---|---|---| +|4D AIKit|https://github.com/4d/4D-AIKit|Set of classes to connect to third-party OpenAI APIs|`OpenAIChat`, `OpenAIImage`...| +|4D NetKit|https://github.com/4d/4D-NetKit|Set of web service tools to connect to third-party APIs|`OAuth2Provider` class, `New OAuth2 provider`, `OAuth2ProviderObject.getToken()` | +|4D Progress|https://github.com/4d/4D-Progress|Open one or more progress bars in the same window|`Progress New`, `Progress SET ON STOP METHOD`, `Progress SET PROGRESS`, ... | +|4D QPDF|https://github.com/4d/4D-QPDF|Extract attachments from PDF/A-3 files|`PDF Get attachments` | +|4D SVG|https://github.com/4d/4D-SVG|Create and manipulate common svg graphic objects|`SVGTool_Display_viewer`, multiple `SVG_` methods | +|4D ViewPro|https://github.com/4d/4d-view-pro|Spreadsheet features in your forms|See [4D View Pro documentation](ViewPro/getting-started.md)| +|4D Widgets|https://github.com/4d/4D-Widgets|Manage DatePicker, TimePicker, SearchPicker 4D widgets|`DatePicker calendar`, `DateEntry area`, `TimeEntry`, `SearchPicker SET HELP TEXT`, ...| +|4D WritePro Interface|https://github.com/4d/4D-WritePro-Interface|Manage 4D Write Pro palettes and [table wizard](../WritePro/writeprointerface.md)|`WP PictureSettings`, `WP ShowTabPages`, `WP SwitchToolbar`, `WP UpdateWidget`| +|Build4D|https://github.com/4d-depot/Build4D|Compile, build, and sign projects|CI/CD | + + + diff --git a/docs/FormEditor/formEditor.md b/docs/FormEditor/formEditor.md index faa838ac35febc..b633180ffedb88 100644 --- a/docs/FormEditor/formEditor.md +++ b/docs/FormEditor/formEditor.md @@ -56,7 +56,7 @@ The toolbar contains the following elements: |Icon |Name|Description | |---|---|---| |![](../assets/en/FormEditor/execute.png)| Execute the form| Used to test the execution of the form. When you click on this button, 4D opens a new window and displays the form in its context (list of records for a list form and current record page for a detail form). The form is executed in the main process.| -|![](../assets/en/FormEditor/selection.png)| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +|![](../assets/en/FormEditor/selection.png)| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.| |![](../assets/en/FormEditor/zOrder.png)| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. | |![](../assets/en/FormEditor/moving.png)| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.| |![](../assets/en/FormEditor/zoom.png)| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.| @@ -148,18 +148,18 @@ Before you can perform any operation on an object (such as changing a line width To select an object using the toolbar: -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Click the object you want to select. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Click the object you want to select. Resizing handles identify the selected object.
    ![](../assets/en/FormEditor/selectResize.png) To select an object using the Property List: 1. Choose the object’s name from the Object List drop-down list located at the top of the Property List. Using these two methods, you can select an object that is hidden by other objects or located outside the visible area of the current window. To deselect an object, click outside the object’s boundary or **Shift+click** the object. ->It is also possible to select objects by double-clicking them in the result window of ""Find in design" operation. +>It is also possible to select objects by double-clicking them in the result window of "Find in design" operation. ### Selecting multiple objects @@ -243,13 +243,13 @@ To group objects: 1. Select the objects that you want to group. 2. Choose **Group** from the Object menu. OR -Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    +Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group. To ungroup an object: 1. Select the grouped object that you want to ungroup. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marks the boundaries of the individual objects with handles. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles. ### Aligning objects @@ -277,9 +277,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    The example area displays the results of your selection. + +- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered. -- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:

    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.

    You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment. @@ -316,7 +317,8 @@ To distribute objects with equal spacing: 1. Select three or more objects and click the desired Distribute tool. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. +4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. To distribute objects using the Align and Distribute dialog box: @@ -324,9 +326,9 @@ To distribute objects using the Align and Distribute dialog box: 2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:![](../assets/en/FormEditor/alignmentAssistant.png) -3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Standard horizontal distribution icon)

    The example area displays the results of your selection. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
    - Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects. - Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects. @@ -349,7 +351,13 @@ To move an object to another level, select it and choose: ![](../assets/en/FormEditor/level2.png) ->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. +When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. + +:::note + +In binary databases, use **Ctrl+Click / Command+Click** to perform the same action. + +::: When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form. @@ -381,11 +389,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr To view or change the entry order: -1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
    ![](../assets/en/FormEditor/zOrder.png)
    The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repeat step 2 as many times as necessary to set the data entry order you want. diff --git a/docs/FormEditor/forms.md b/docs/FormEditor/forms.md index 53565e921469e0..1bb9f5f24bc3ac 100644 --- a/docs/FormEditor/forms.md +++ b/docs/FormEditor/forms.md @@ -102,6 +102,14 @@ A multi-page form has both a background page and several display pages. Objects On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. + +|Light theme|Dark theme| +|---|---| +|![](../assets/en/FormEditor/fluent.png)|![](../assets/en/FormEditor/fluent-dark.png)| + + + :::caution Developer Preview Fluent UI support is currently in the Developer Preview phase. It should not be used in production. @@ -114,21 +122,18 @@ This feature can only be used on Windows. On macOS, it is ignored. ::: +:::tip Related blog post -### Fluent UI rendering availability +[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -The Fluent UI rendering is available in the following execution environments only: +::: -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- Merged [stand-alone](../Desktop/building.md#build-stand-alone-application) or [client](../Desktop/building.md#build-client-application) 4D application -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +### Requirements -:::note +The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms. If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. -::: - ### Enabling the Fluent UI rendering You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. @@ -152,21 +157,23 @@ Each form can define its own rendering via the **Widget appearance** property. T The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". -### Features and limitations - -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. - +### Specific behaviors When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. +- The new `FORM Windows theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. - If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). - [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). - [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). - [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). - The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). + +:::info Limitations +This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: diff --git a/docs/FormObjects/listbox_overview.md b/docs/FormObjects/listbox_overview.md index 3c1b6e116e8d3b..9657a607cb73bb 100644 --- a/docs/FormObjects/listbox_overview.md +++ b/docs/FormObjects/listbox_overview.md @@ -291,7 +291,7 @@ You can set standard properties (text, background color, etc.) for each column o ### Column Specific Properties {#column-specific-properties} -[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) +[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) ### Supported Form Events {#supported-form-events-1} diff --git a/docs/FormObjects/properties_Action.md b/docs/FormObjects/properties_Action.md index 3b80539ec0b30d..5793adcc03fd57 100644 --- a/docs/FormObjects/properties_Action.md +++ b/docs/FormObjects/properties_Action.md @@ -15,7 +15,7 @@ Two drag modes are available: In custom mode, basically the whole drag-and-drop operation is handled by the programmer. This mode lets you implement any interface based upon drag-on-drop, including interfaces that do not necessarily transport data, but can perform any action like opening files or triggering a calculation. This mode is based upon a combination of specific properties, events, and commands from the `Pasteboard` theme. - **Automatic**: In this mode, 4D **copies** text or pictures directly from the form object. It can then be used in the same 4D area, between two 4D areas, or between 4D and another application. For example, automatic drag (and drop) lets you copy a value between two fields without using programming: ![](../assets/en/FormObjects/property_automaticDragDrop.png) -![](../assets/en/FormObjects/property_automaticDragDrop2.png) +![](../assets/en/FormObjects/property_automaticDragDrop2.png)
    In this mode, the `On Begin Drag` form event is NOT generated. If you want to "force" the use of the custom drag while automatic drag is enabled, hold down the **Alt** (Windows) or **Option** (macOS) key during the action. This option is not available for pictures. For more information, refer to [Drag and Drop](https://doc.4d.com/4Dv20/4D/20.6/Drag-and-Drop.300-7487471.en.html) in the *4D Language Reference* manual. @@ -205,7 +205,7 @@ In other cases (list boxes based on named selections, columns associated with ex --- ## Standard action -Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*. +Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). You can assign both a standard action and a project method to an object. In this case, the standard action is usually executed after the method and 4D uses this action to enable/disable the object according to the current context. When an object is deactivated, the associated project method cannot be executed. @@ -214,7 +214,7 @@ You can assign both a standard action and a project method to an object. In this |Name|Data Type|Possible Values| |---|---|---| -|action|string |The name of a [valid standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html).| +|action|string |The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objects Supported diff --git a/docs/FormObjects/properties_Entry.md b/docs/FormObjects/properties_Entry.md index 92f23435d1a346..8d14b110eaa75a 100644 --- a/docs/FormObjects/properties_Entry.md +++ b/docs/FormObjects/properties_Entry.md @@ -32,7 +32,7 @@ Allows the user access to a standard context menu in the object when the form is For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display.md#picture-format) using this menu is temporary; it is not saved with the record. -For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands: +For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands: - **Fonts...**: displays the font system dialog box - **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands. @@ -49,7 +49,7 @@ For a [Web Area](webArea_overview.md), the contents of the menu depend of the re #### Objects Supported -[Input](input_overview.md) - [Web Area](webArea_overview.md) - [4D Write Pro areas](writeProArea_overview.md) +[Input](input_overview.md) - [List Box Column](listbox_overview.md#list-box-columns) - [Web Area](webArea_overview.md) - [4D Write Pro areas](writeProArea_overview.md) #### Commands diff --git a/docs/Notes/updates.md b/docs/Notes/updates.md index 9f1ecc3abb3426..521bcda5b7e450 100644 --- a/docs/Notes/updates.md +++ b/docs/Notes/updates.md @@ -91,6 +91,35 @@ In binary databases, you need to select the required components in the 4D instal [**Fluent UI** rendering for 4D forms](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) is proposed in Developer Preview during the beta test program. +#### Behavior changes + +:::caution Index rebuild + +4D 21 includes an ICU library update ([see below](#library-table)) which will force an automatic rebuild of indexes of type alpha, text, and object. Depending on the size of the data file, this operation can take a while and may require to be planned. + +::: + +- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. +- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. +- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). +- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. +- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    +![alt-text](../assets/en/getStart/convert.png)
    + - **Import**: import automatically 4D components as dependencies to the project
    + - **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    + - **Ask later**: do not import components and display the dialog at the next project opening. + +:::note + +In binary databases, you need to select the required components in the 4D installer or download them from the [4D Product Download portal](https://product-download.4d.com/?type=components). + +::: + +#### Developer Preview + +[**Fluent UI** rendering for 4D forms](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) is proposed in Developer Preview during the beta test program. + + #### Behavior changes :::caution Index rebuild @@ -377,7 +406,7 @@ If your 4D applications use TLS connections, it is recommended that you upgrade ## 4D 20.x LTS -See [**Release Notes for 4D 20.x LTS**](../../versioned_docs/version-20/Notes/updates.md). +See [**Release Notes for 4D 20.x LTS**](../../20/Notes/updates). diff --git a/docs/ORDA/entities.md b/docs/ORDA/entities.md index a1c8f8cca61cba..164a77b603b698 100644 --- a/docs/ORDA/entities.md +++ b/docs/ORDA/entities.md @@ -477,7 +477,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection This function is called whenever an entity selection or an entity of the dataclass is requested. The filter is run once, when the entity selection is created. -The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`], etc. +The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/docs/ORDA/orda-events.md b/docs/ORDA/orda-events.md index 51552b941fda8c..f661164ca4e23c 100644 --- a/docs/ORDA/orda-events.md +++ b/docs/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: Events +title: Entity Events ---
    History @@ -12,7 +12,7 @@ title: Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. @@ -20,7 +20,7 @@ You cannot directly trigger event function execution. Events are called automati :::tip Related blog post -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: @@ -29,7 +29,7 @@ You cannot directly trigger event function execution. Events are called automati :::info Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -60,7 +60,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). ### Summary table @@ -122,7 +122,7 @@ When an error occurs in an event, the other events are stopped at the first rais |errCode|Integer|Same as for [`Last errors`](../commands/last-errors.md) command|Yes| |message|Text|Same as for [`Last errors`](../commands/last-errors.md) command|Yes| |extraDescription|Object|Free information to set up|Yes| -|seriousError|Boolean|Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • |Yes (default is false)| +|seriousError|Boolean|Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • `False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • |Yes (default is false)| |componentSignature|Text|Always "DBEV"|No| - [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. @@ -159,7 +159,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi - the user sets a value on a 4D form, - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. +- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) @@ -379,26 +379,21 @@ It is not recommended to update the entity within this function (using `This`). #### Example -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -441,32 +436,35 @@ To stop the action, the code of the function must return an [error object](#erro #### Example -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` @@ -490,30 +488,25 @@ The function receives an [*event* object](#event-parameter) as parameter. - Throwing an [error object](#error-object) is **not supported** by this function. -#### Example 1 - -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +#### Example +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` @@ -546,44 +539,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### Example 1 +#### Example -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### Example 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` @@ -620,54 +593,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### Example 1 +#### Example -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### Example 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -694,50 +644,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### Example 1 +#### Example -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### Example 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/docs/Project/components.md b/docs/Project/components.md index 25af5e563a0232..77a729af060bfe 100644 --- a/docs/Project/components.md +++ b/docs/Project/components.md @@ -5,7 +5,7 @@ title: Dependencies The 4D [project architecture](../Project/architecture.md) is modular. You can provide additional functionalities to your 4D projects by installing [**components**](Concepts/components.md) and [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md). -You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). +You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/topics/4d-component). Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties. @@ -366,7 +366,7 @@ When you add or update a component (whether [local](#local-components) or [from The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. :::note diff --git a/docs/REST/$filter.md b/docs/REST/$filter.md index 29bf2c20c502e8..50623cde869c9e 100644 --- a/docs/REST/$filter.md +++ b/docs/REST/$filter.md @@ -101,9 +101,9 @@ The *vectorComparison* parameter is a collection of the following elements: |Property|Type|Description| |---|---|---| -|[].vector|Collection of objects)|Mandatory. A collection that represents the vector to compare| -|[].metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors.| -||[].threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.| +|[].vector|Collection of numbers|Mandatory. A collection that represents the vector to compare| +|[].metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors.| +|[].threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.| Only a subset of **comparator** symbols are supported with vector comparisons. Note that they compare results to the threshold value: diff --git a/docs/WebServer/sessions.md b/docs/WebServer/sessions.md index 44314a3c4fd8da..d0a2bd033577be 100644 --- a/docs/WebServer/sessions.md +++ b/docs/WebServer/sessions.md @@ -209,9 +209,9 @@ Else End if ``` -:::note +:::tips Related blog posts -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: diff --git a/docs/WritePro/user-legacy/defining-a-4d-write-pro-area.md b/docs/WritePro/user-legacy/defining-a-4d-write-pro-area.md index c00f2fc291c7e2..360595e057011e 100644 --- a/docs/WritePro/user-legacy/defining-a-4d-write-pro-area.md +++ b/docs/WritePro/user-legacy/defining-a-4d-write-pro-area.md @@ -244,7 +244,7 @@ The following standard actions are available with 4D Write Pro areas. ### Other actions -Several other standard actions are available in 4D forms and can be used in 4D Write Pro areas: +[Several other standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) are available in 4D forms and can be used in 4D Write Pro areas: * *Edit actions*, such as copy/paste actions. * *Font* actions, such as fontBold or fontSize. diff --git a/docs/aikit/Classes/OpenAI.md b/docs/aikit/Classes/OpenAI.md index 3d1dcd75409a18..8e88ba360ad3cd 100644 --- a/docs/aikit/Classes/OpenAI.md +++ b/docs/aikit/Classes/OpenAI.md @@ -11,8 +11,8 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. | Property Name | Type | Description | Optional | |-------------------|-------|-----------------------------------|----------| -| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | No for OpenAI | -| `baseURL` | Text | Base URL for OpenAI API requests. | Yes | +| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider| +| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI Platform)| | `organization` | Text | Your OpenAI Organization ID. | Yes | | `project` | Text | Your OpenAI Project ID. | Yes | diff --git a/docs/aikit/compatible-openai.md b/docs/aikit/compatible-openai.md index 48db88a10f7216..847aec12b412c1 100644 --- a/docs/aikit/compatible-openai.md +++ b/docs/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Providers Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +To do so you just have to set the `baseURL` to the provider one and use their api key if needed. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Some of them ## Remote -|Provider|Base url| +|Provider|baseURL| |-|-| |https://mistral.ai/|https://api.mistral.ai/v1| |https://www.deepseek.com/|https://api.deepseek.com| @@ -31,7 +31,7 @@ Some of them ## Local -| Provider | Default base url | Doc | +| Provider | Default baseURL | Doc | |------------------ |---------------------------|-----------------------------------------------| |https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | |https://lmstudio.ai/| http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/docs/aikit/overview.md b/docs/aikit/overview.md index eb664c46d783e6..e9772f39bc5ba5 100644 --- a/docs/aikit/overview.md +++ b/docs/aikit/overview.md @@ -22,7 +22,7 @@ First of all, initialize the OpenAI client using your API key var $client:=cs.AIKit.OpenAI.new("your api key") ``` -For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -44,7 +44,7 @@ var $result:=$client..() The `$result` contains the `HTTPRequest`, a `success` status, a collection of `errors` and more. See [OpenAIResult](Classes/OpenAIResult.md) -See some examples bellow. +See some examples below. #### Chat diff --git a/docs/assets/en/Develop/triggers-architecture.png b/docs/assets/en/Develop/triggers-architecture.png new file mode 100644 index 00000000000000..7c9d523d0372f1 Binary files /dev/null and b/docs/assets/en/Develop/triggers-architecture.png differ diff --git a/docs/assets/en/Develop/triggers-cascade.png b/docs/assets/en/Develop/triggers-cascade.png new file mode 100644 index 00000000000000..8a4a075fd1f5d3 Binary files /dev/null and b/docs/assets/en/Develop/triggers-cascade.png differ diff --git a/docs/assets/en/Develop/triggers-set.png b/docs/assets/en/Develop/triggers-set.png new file mode 100644 index 00000000000000..b339a988df6172 Binary files /dev/null and b/docs/assets/en/Develop/triggers-set.png differ diff --git a/docs/assets/en/FormEditor/fluent-dark.png b/docs/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/docs/assets/en/FormEditor/fluent-dark.png differ diff --git a/docs/assets/en/FormEditor/fluent.png b/docs/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/docs/assets/en/FormEditor/fluent.png differ diff --git a/docs/commands-legacy/array-to-list.md b/docs/commands-legacy/array-to-list.md index d3247a29055ca8..0464e9802e30fd 100644 --- a/docs/commands-legacy/array-to-list.md +++ b/docs/commands-legacy/array-to-list.md @@ -27,7 +27,7 @@ The optional *itemRefs* parameter, if specified, must be a numeric array synchro * This command only lets you set first-level items of the list. * When you use this command with a choice list, it modifies the structure of the application (lists are saved in the structure file), so any modifications made locally are lost when the structure file is updated in production. -* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project or a component. +* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project (which includes [remote projects](../Desktop/clientServer.md)) or a component. You can use ARRAY TO LIST to build a list based on the elements of an array. However, to free yourself from these restrictions and make full use of the lists of values, we recommend using the commands of the *Hierarchical Lists* theme. diff --git a/docs/commands-legacy/on-server-open-connection-database-method.md b/docs/commands-legacy/on-server-open-connection-database-method.md index 5a16cc653a0813..2a254f1ab88314 100644 --- a/docs/commands-legacy/on-server-open-connection-database-method.md +++ b/docs/commands-legacy/on-server-open-connection-database-method.md @@ -125,7 +125,11 @@ The following example prevents any new connection from 2 to 4 A.M.   // On Server Open Connection Database Method  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time:`mk cosine` (por defecto si se omite): calcula la distancia coseno entre vectores.
  • `mk dot`: calcula la similitud punto de los vectores.
  • `mk euclidean`: calcula la distancia euclideana entre vectores. | -| threshold | Real | Opcional (por defecto: 0,5). Un valor umbral utilizado para filtrar las comparaciones de vectores en función de su puntuación de similitud coseno, punto o euclídea según la "métrica" seleccionada. Es altamente recomendable elegir una similitud que se adapte mejor a su caso de uso específico para obtener resultados óptimos. | +| Propiedad | Tipo | Descripción | +| --------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| vector | [4D.Vector](../API/VectorClass.md) | Obligatorio. El vector a comparar | +| metric | Text | Opcional. [Cálculo vectorial](../API/VectorClass.md#understanding-the-different-vector-computations) a utilizar para la consulta. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | +| threshold | Real | Opcional (por defecto: 0,5). Un valor umbral utilizado para filtrar las comparaciones de vectores en función de su puntuación de similitud coseno, punto o euclídea según la "métrica" seleccionada. Es altamente recomendable elegir una similitud que se adapte mejor a su caso de uso específico para obtener resultados óptimos. | Sólo se admite un subconjunto de símbolos **comparadores**. Tenga en cuenta que comparan los resultados con el valor umbral: diff --git a/i18n/es/docusaurus-plugin-content-docs/current/API/EntityClass.md b/i18n/es/docusaurus-plugin-content-docs/current/API/EntityClass.md index 4fbea5520fbe57..06060c9cade538 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/API/EntityClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/API/EntityClass.md @@ -338,10 +338,10 @@ vCompareResult1 (se devuelven todas las diferencias):
    Historia -| Lanzamiento | Modificaciones | -| ----------- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | Añadidos | +| Lanzamiento | Modificaciones | +| ----------- | -------------------------- | +| 21 | Añadidos los estados 7 y 8 | +| 17 | Añadidos |
    @@ -368,7 +368,7 @@ De lo contrario, puede pasar la opción `dk force drop if stamp changed` en el p **Resultado** -The object returned by `.drop()` contains the following properties: +El objeto devuelto por `.drop()` contiene las siguientes propiedades: | Propiedad | | Tipo | Descripción | | --------------------------------- | ----------------------------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -1015,13 +1015,12 @@ El objeto devuelto por `.lock()` contiene las siguientes propiedades: (\*) Los siguientes valores pueden ser devueltos en las propiedades *status* y *statusText* del objeto *Result* en caso de error: -| Constante | Valor | Comentario | -| ----------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status entity does not exist anymore` | 5 | La entidad ya no existe en los datos. Este error puede ocurrir en los siguientes casos:
  • la entidad ha sido eliminada (el marcador ha cambiado y ahora el espacio de memoria está libre)
  • la entidad ha sido eliminada y reemplazada por otra con otra clave primaria (el marcador ha cambiado y una nueva entidad ahora utiliza el espacio memoria). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. Cuando se utiliza `.lock()`, este error puede ser devuelto cuando se utiliza la opción `dk reload if stamp changed`

  • **statusText asociado**: "Entity does not exist anymore" | -| `dk status locked` | 3 | La entidad está bloqueada por un bloqueo pesimista. **statusText asociado**: "Already locked" | -| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require | -| `dk status serious error` | 4 | Un error grave es un error de base de datos de bajo nivel (por ejemplo, una llave duplicada), un error de hardware, etc.
    **statusText asociado**: "Other error" | -| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | +| Constante | Valor | Comentario | +| ----------------------------------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | La entidad ya no existe en los datos. Este error puede ocurrir en los siguientes casos:
  • la entidad ha sido eliminada (el marcador ha cambiado y ahora el espacio de memoria está libre)
  • la entidad ha sido eliminada y reemplazada por otra con otra clave primaria (el marcador ha cambiado y una nueva entidad ahora utiliza el espacio memoria). Cuando se utiliza `.drop()`, este error puede devolverse cuando se utiliza la opción dk force drop if stamp changed. Cuando se utiliza `.lock()`, este error puede ser devuelto cuando se utiliza la opción `dk reload if stamp changed`

  • **statusText asociado**: "Entity does not exist anymore" | +| `dk status locked` | 3 | La entidad está bloqueada por un bloqueo pesimista. **statusText asociado**: "Already locked" | +| `dk status serious error` | 4 | Un error grave es un error de base de datos de bajo nivel (por ejemplo, una llave duplicada), un error de hardware, etc.
    **statusText asociado**: "Other error" | +| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | #### Ejemplo 1 @@ -1215,10 +1214,10 @@ El objeto devuelto por `.reload( )` contiene las siguientes propiedades:
    Historia -| Lanzamiento | Modificaciones | -| ----------- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | Añadidos | +| Lanzamiento | Modificaciones | +| ----------- | -------------------------- | +| 21 | Añadidos los estados 7 y 8 | +| 17 | Añadidos |
    diff --git a/i18n/es/docusaurus-plugin-content-docs/current/API/SessionClass.md b/i18n/es/docusaurus-plugin-content-docs/current/API/SessionClass.md index 7b9392b7d194f3..b58fb0cca06e51 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/API/SessionClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/API/SessionClass.md @@ -89,7 +89,7 @@ Esta función no elimina los **privilegios promovidos** del proceso web, tanto s ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). #### Ejemplo @@ -388,7 +388,7 @@ Esta función devuelve True para el *privilegio* si se llama desde una función ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/API/TCPEventClass.md b/i18n/es/docusaurus-plugin-content-docs/current/API/TCPEventClass.md index 1bd070ea6af91a..6d9eb04f026eba 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/API/TCPEventClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/API/TCPEventClass.md @@ -16,7 +16,7 @@ The `TCPEvent` class provides information about events occurring during the life ### Objeto TCPEvent -A `TCPEvent` object is immutable and non-streamable. +Un objeto `TCPEvent` es inmutable y no se puede transmitir. Las siguientes propiedades están disponibles: @@ -81,9 +81,9 @@ La propiedad `.type` contiene el tipo del eve - `"connection"`: Indicates that a TCPConnection was successfully established. - `"data"`: indica que los datos han sido recibidos. -- `"error"`: Indicates that an error occurred during the TCPConnection. -- `"close"`: Indicates that the TCPConnection has been properly closed. -- `"terminate"`: Indicates that the TCPConnection is about to be released. +- `"error"`: indica que se ha producido un error durante la TCPConnection. +- `"close"`: indica que la TCPConnection ha sido correctamente cerrada. +- `"terminate"`: indica que el TCPConnection está a punto de ser liberado. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/components.md b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/components.md index 16edac0f404e2c..fe6ae7e719caec 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/components.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/components.md @@ -9,7 +9,7 @@ Un componente 4D es un conjunto de código y de formularios 4D que representan u Installation and loading of components in your 4D projects are handled through the [4D Dependency manager](../Project/components.md). -Varios componentes son [desarrollados por 4D](../Extensions/overview.md#components-developed-by-4d), pero muchos componentes 4D de la comunidad 4D [se pueden encontrar en GitHub](https://github.com/search?q=4d-component&type=Repositories). Adicionalmente, puede [desarrollar sus propios componentes 4D](../Extensions/develop-components.md). +Varios componentes son [desarrollados por 4D](../Extensions/overview.md#components-developed-by-4d), pero muchos componentes 4D de la comunidad 4D [se pueden encontrar en GitHub](https://github.com/topics/4d-component). Adicionalmente, puede [desarrollar sus propios componentes 4D](../Extensions/develop-components.md). ## Utilización de los componentes diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/error-handling.md b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/error-handling.md index 706dcbef348f6c..7e8ff6cf13490d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/error-handling.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/error-handling.md @@ -23,7 +23,7 @@ Es muy recomendable instalar un método global de gestión de errores en 4D Serv ## Predictable vs unpredictable errors -Many 4D class functions, such as [`entity.save()`](../API/EntityClass.md#save) or [`transporter.send()`](../API/SMTPTransporterClass.md#send), return a object containing *status* information. This object is used to store **predictable** errors in the runtime context, e.g. invalid password, locked entity, etc., that do not require to stop program execution. This category of errors, also named **silent errors** errors, can be handled by regular code. When such errors occur in an error handling context, i.e. a [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or an [error-handling method](#installing-an-error-handling-method), they do not interrupt the execution and do not trigger the error handling (e.g. the `Catch` part of the [`Try/Catch`](#trycatchend-try) is not executed). They are not listed in the [`Last errors`](../commands/last-errors.md) collection. The error is only returned in the `status` and `statusText` properties of the returned object. It can be processed according to your business logic. +Many 4D class functions, such as [`entity.save()`](../API/EntityClass.md#save) or [`transporter.send()`](../API/SMTPTransporterClass.md#send), return a object containing *status* information. This object is used to store **predictable** errors in the runtime context, e.g. invalid password, locked entity, etc., that do not require to stop program execution. This category of errors, also named **silent errors** errors, can be handled by regular code. When such errors occur in an error handling context, i.e. a [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or an [error-handling method](#installing-an-error-handling-method), they do not interrupt the execution and do not trigger the error handling (e.g. the `Catch` part of the [`Try/Catch`](#trycatchend-try) is not executed). They are not listed in the [`Last errors`](../commands/last-errors.md) collection. El error sólo se devuelve en las propiedades `status` y `statusText` del objeto devuelto. It can be processed according to your business logic. The other category of errors are **unpredictable** errors, also named **serious errors**. They include disk write error, network failure, or in general any unexpected interruption. This category of errors generates exceptions defined by [a *code*, a *message* and a *signature*](#error-codes). They interrupt the execution and trigger the error processing of the [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or [error-handling method](#installing-an-error-handling-method) features. They are listed in the [`Last errors`](../commands/last-errors.md) collection. Note that serious errors can also return values in the `status` and `statusText` properties, e.g. `dk status serious error` - "Other error". diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/parameters.md b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/parameters.md index 3a78e87c6b82f8..8f1aa078d11999 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Concepts/parameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Concepts/parameters.md @@ -295,12 +295,6 @@ La sintaxis heredada para declarar parámetros variadicos (`C_TEXT(${4})`) está ::: -## Triggers y On Drag Over - -Algunos contextos no soportan la declaración en un método "Compiler_", por lo que se tratan de forma específica: - -- Triggers - El parámetro $0 (Entero largo), que es el resultado de un trigger, será digitado por el compilador si el parámetro no ha sido declarado explícitamente. Sin embargo, si quiere declararlo, debe hacerlo en el propio trigger. - ## Tipo de parámetro equivocado Llamar a un parámetro con un tipo incorrecto o una clase incorrecta (para parámetros de objeto) es un [error](error-handling.md) que impide la correcta ejecución. Por ejemplo, si escribe los siguientes métodos: diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Desktop/clientServer.md b/i18n/es/docusaurus-plugin-content-docs/current/Desktop/clientServer.md index 3fb97a773f2ad5..b0ce1345a5fbe2 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Desktop/clientServer.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Desktop/clientServer.md @@ -97,7 +97,7 @@ En el servidor, el comando [`Session`](../commands/session.md) devuelve un objet ### Utilización -The `session` object allows you to handle information and privileges for the remote user session. +El objeto `session` permite manejar la información y los privilegios de la sesión del usuario remoto. Puede compartir datos entre todos los procesos de la sesión del usuario utilizando el objeto compartido [`session.storage`](../API/SessionClass.md#storage). Por ejemplo, puede iniciar un procedimiento de autenticación y verificación de usuario cuando un cliente se conecta al servidor, que involucra ingresar un código enviado por correo electrónico o SMS en la aplicación. A continuación, añada la información de usuario al almacenamiento de sesión, permitiendo al servidor identificar al usuario. De este modo, el servidor 4D puede acceder a la información del usuario para todos los procesos del cliente, lo que permite escribir código personalizado según el rol del usuario. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Desktop/labels.md b/i18n/es/docusaurus-plugin-content-docs/current/Desktop/labels.md index 9f39573be56933..a7ff4816cc015b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Desktop/labels.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Desktop/labels.md @@ -166,7 +166,7 @@ You can use dedicated table forms and project methods to print labels with calcu Here, in a table form named "label", we added the *myVar* variable: ![](../assets/en/Desktop/label-example1.png) -2. Create a `setMyVar` project method with the following code: +2. Crea un método proyecto llamado `setMyVar` con el siguiente código: ```4d var myVar+=1 diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md b/i18n/es/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md index 84adbd9996a1cd..fd68d3056cb3bb 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md b/i18n/es/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md new file mode 100644 index 00000000000000..9b6a74baf7ac34 --- /dev/null +++ b/i18n/es/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md @@ -0,0 +1,301 @@ +--- +id: triggers +title: Triggers +slug: /Develop/triggers +displayed_sidebar: docs +--- + + +Un **trigger** es un método asociado a una tabla. Es una propiedad de una tabla. Usted no llama a los triggers; los triggers son llamados automáticamente por el motor de 4D cada vez que manipula registros de la tabla (adición, eliminación, modificación, y carga). Puede escribir triggers muy simples, y luego volverlos más sofisticados. + +Los triggers pueden evitar operaciones “ilegales” en los registros de su base. Son una herramienta muy poderosa que permite controlar las operaciones en tablas, como también evitar perdidas de datos accidentales. Por ejemplo, en un sistema de facturación, puede evitar que un usuario cree una factura sin especificar el cliente al que debe facturarse. + + + + + +## Activar y crear un trigger + +Por defecto, cuando crea una tabla en el entorno Diseño, la tabla no tiene trigger. + +Para utilizar un trigger para una tabla, necesita: + +- Activar el trigger e indicar a 4D cuando llamarlo. +- Escribir el código para el trigger. + + +Activar un trigger que no está escrito o escribir un trigger sin activarlo no afecta las operaciones efectuadas en una tabla. + + +1. Para activar un trigger, seleccione las opciones **Triggers** para la tabla en la ventana de propiedades de la tabla:: + +![](../assets/en/Develop/triggers-set.png) + +2. Para crear un trigger para una tabla, utilice la ventana de propiedades de la tabla, haga clic en el botón **Editar** o presione **Alt** (Windows)/**Opción** (macOS) y doble clic en la tabla en la ventana de estructura. + + +## Descripción de los triggers + +### Al guardar un registro existente + +Si se selecciona esta opción, el trigger se llamará cada vez que se modifique un registro de la tabla. Esto sucede cuando: + +- se modifica un registro en la entrada de datos (entorno Diseño, comando [`MODIFY RECORD`](../commands/modify-record) o el comando SQL `UPDATE`). +- se guarda un registro existente utilizando [`SAVE RECORD`](../commands/save-record). +- se llama un comando que guarda registros existentes (por ejemplo, [`ARRAY TO SELECTION`](../commands/array-to-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), etc.). +- se utiliza función ORDA que guarda la entidad. + +:::note + +Por razones de optimización, el trigger no se llama cuando el registro es guardado por el usuario o vía el comando [`SAVE RECORD`](../commands/save-record) si ningún campo de la tabla ha sido modificado en el registro. Si quiere "forzar" el llamado del trigger en este caso, simplemente puede asignar un campo: + +```4d +[thetable]thefield:=[thetable]thefield +``` + +::: + +### Al borrar un registro + +Si selecciona esta opción, el trigger se llamará cada vez que se borre un registro de la tabla. Esto sucede cuando: + +- Cuando se borra un registro (entorno Diseño o llamando a los comandos [`DELETE RECORD`](../commands/delete-record), [`DELETE SELECTION`](../commands/delete-selection) o al comando SQL `DELETE`). +- Cuando se efectúan operaciones que provocan la eliminación de un registro relacionado por intermedio de las opciones de control de eliminación de una relación +- Cuando se utiliza una función ORDA que elimina la entidad. + +:::note + +El comando [`TRUNCATE TABLE`](../commands/trucate-table) no llama al trigger. + +::: + +### Al guardar un nuevo registro + +Si esta opción se selecciona, el trigger se llamará cada vez que un registro se cree en la tabla, es decir en las siguientes circunstancias: + +- Cuando se añade un registro en la entrada de datos (entorno Diseño, comando [`ADD RECORD`](../commands/add-record) o comando SQL `INSERT`). +- Cuando se crea y guarda un registro con [`CREATE RECORD`](../commands/create-record) y [`SAVE RECORD`](../commands/save-record). Note que el trigger se llama en el momento en que llama [`SAVE RECORD`](../commands/save-record), no cuando se crea. +- Cuando se importan registros (entorno Diseño o utilizando un comando de importación). +- Cuando se llaman otros comandos que crean y/o guardan nuevos registros (por ejemplo, [`ARRAY TO SELECTION`](../commands/array-to-selection), [`SAVE RELATED ONE`](../commands/save-related-one), etc.). +- Cuando se utiliza funciones ORDA como [`ds.dataclass.new()`](../API/DataClassClass.md#new) y [`entity.save()`](../API/EntityClass.md#save). + + +## Eventos de base + +Un trigger puede ser llamado por uno de los cuatro eventos de base descritos anteriormente. En el trigger, puede detectar qué evento está ocurriendo llamando la función [`Trigger event`](../commands/trigger-event). Esta función devuelve un valor numérico que indica el evento de base. + +Generalmente, se escribe un trigger con una estructura de tipo [`Case of`](../Concepts/flow-control.md#case-ofelseend-case) sobre el resultado devuelto por [`Trigger event`](../commands/trigger-event). + + +```4d + //Trigger for [anyTable] +#DECLARE -> $result : Integer +$result:=0 // Asume que la petición será aceptada + Case of + :(Trigger event=On Saving New Record Event) + // Realizar las acciones apropiadas para guardar el nuevo registro creado + :(Trigger event=On Saving Existing Record Event) + // Realizar las acciones apropiadas para guardar un registro existente + :(Trigger event=On Deleting Record Event) + // Realizar las acciones apropiadas para borrar un registro + End case + ``` + + +## Los triggers son funciones + +Un trigger tiene dos propósitos: + +- Efectuar acciones sobre el registro justo antes de que se guarde o borre, o justo después de ser cargado. +- Aceptar o rechazar una operación de base de datos. + + +### Efectuar las acciones + +Cada vez que se guarda un registro (añadido o modificado) a una tabla [Documentos], usted quiere “marcar” el registro con los marcadores de creación y modificación. Puede escribir el siguiente trigger: + +```4d + // Trigger for table [Documents] + Case of + :(Trigger event=On Saving New Record Event) + [Documents]CreationStamp:=myTimeStamp + [Documents]ModificationStamp:=myTimeStamp + :(Trigger event=On Saving Existing Record Event) + [Documents]ModificationStamp:=myTimeStamp + End case +``` + +:::note + +La función *myTimeStamp* utilizada en este ejemplo es un pequeño método de proyecto que devuelve el número de segundos transcurridos desde una fecha elegida arbitrariamente. + +::: + +Una vez este trigger ha sido escrito y activado, no importa de que manera añada o modifique un registro en la tabla de la tabla [Documents] (entrada de datos, importación, método de proyecto, ORDA function), los campos [Documents]CreationStamp y [Documents]ModificationStamp serán asignados automáticamente por el trigger antes de que el registro se escriba en el disco. + + +### Aceptar o rechazar la operación de una base + +Para aceptar o rechazar una operación de la base, el trigger debe devolver un **código de error de trigger** en el resultado de la función. + + +#### ExEjemplo mple + +Tomemos el caso de una tabla [Empleados]. Durante la entrada de datos, usted controla el campo [Empleados]Numero_Seguridad_Social. Por ejemplo, cuando el usuario hace clic en el botón de validación, usted verifica el campo utilizando el método objeto del botón: + + +```4d + // Método objeto bAccept + If(Good SS number([Empleados]Numero_Seguridad_Social)) + ACCEPT + Else + BEEP + ALERT("Introduzca un número de seguridad social y haga clic de nuevo en OK.") + End if +``` + +Si el valor del campo es correcto, acepta la entrada de datos; si el valor del campo no es correcto, muestra una alerta y permanece en entrada de datos. + +Si también crea registros para la tabla [Empleados] por programación, el siguiente código sería válido pero violaría la regla expresada en el método objeto creado anteriormente: + +```4d + // Extracción de un método proyecto + // ... + CREATE RECORD([Empleados]) + [Empleados]Name:="DOE" + SAVE RECORD([Empleados]) // <-- ¡Violación de la regla! El número de seguridad social no ha sido asignado + // ... +``` + +Utilizando un trigger para la tabla [Empleados], puede implementar la regla [Empleados]Numero_Seguridad_Social en todos los niveles de la base. El trigger se vería así: + +```4d + // Trigger for [Empleados] + #DECLARE -> $result : Integer + var $dbEvent : Integer + $result:=0 + $dbEvent:=Trigger event + Case of + :(($dbEvent=On Saving New Record Event)|($dbEvent=On Saving Existing Record Event)) + If(Not(Good SS number([Empleados]Numero_Seguridad_Social))) + $0:=-15050 + Else + // ... + End if + // ... + End case +``` + +Una vez este trigger está escrito y activado, la línea `SAVE RECORD([Empleados])` del método proyecto generará un error base -15050, y el registro NO se guardará. + +De la misma forma, si un plug-in 4D intenta guardar un registro en [Empleados] con un número de seguridad social incorrecto, el trigger generará el mismo error y el registro no se guardará. + +El trigger garantiza que nadie (usuario, desarrollador, plug-in...) pueda violar la regla del número de seguridad social (bien sea deliberada o accidentalmente). + +Note que incluso si no tiene un trigger para una tabla, la base puede devolver errores base cuando se trata de guardar o borrar un registro. Por ejemplo, si intenta guardar un registro con un valor duplicado en un campo indexado único, se devuelve el error -9998. + +Los triggers devuelven nuevos tipos de errores en 4D: + +- 4D administra los errores “normales”: índice único, control de datos relacionales, etc. +- Utilizando triggers, puede crear códigos de errores propios al contenido de su aplicación. + +**Importante**: puede devolver el código de error de su elección. Sin embargo, NO utilice códigos de errores ya utilizados por el motor de 4D. Recomendamos utilizar códigos de error entre -32 000 y -15 000. Nos reservamos los errores superiores a -15 000 para el motor de 4D. + +A nivel del proceso, usted administra los errores trigger de la misma manera que los errores de motor de base de datos: + +- Puede permitir a 4D mostrar la caja de diálogo estándar de error, luego se interrumpe el método. +- Puede utilizar un [método de gestión de errores](../Concepts/error-handling.md) y recuperar el error de la manera apropiada. + + +:::note Notas + +- Durante la entrada de datos, si un error trigger es devuelto mientras intenta validar o borrar un registro, el error se trata como un error de índice único. La caja de diálogo de error se muestra, y permanece en la entrada de datos. Incluso si utiliza una base en el entorno Diseño (no en el entorno Aplicación), usted se beneficia del uso de triggers. +- Cuando se genera un error por un trigger para un registro en el marco de un comando que actúa sobre una selección de registros ([`DELETE SELECTION`](../commands/delete-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), [`ARRAY TO SELECTION`](../commands/array-to-selection)...), el registro no es procesado pero se registra automáticamente en el Locke[`LockedSet`](../Develop/processes.md#elements-of-a-process). El comando continúa su ejecución hasta el final y no se detecta ningún error. No se llama al método de manejo de errores, si lo hay. Para saber si se han generado errores en este contexto, debe probar `LockedSet` justo después de la llamada al comando. Además, en el trigger, debe almacenar códigos de error, en una colección por ejemplo y manejarlos después. + +::: + + +Incluso si un trigger no devuelve un error ($result=0), esto no significa que una operación de la base se efectuará correctamente, puede ocurrir una violación de índice único. Si la operación es la actualización de un registro, el registro puede estar bloqueado, se puede producir un error de entrada/salida puede ocurrir, etc. Estas verificaciones son efectuadas después de la ejecución del trigger. Sin embargo, desde el punto de vista del nivel superior del proceso en ejecución, los errores devueltos por el motor de la base de datos o por un trigger son de la misma naturaleza, un error trigger es un error del motor de la base de datos. + + + +## Triggers y la arquitectura 4D + +Los triggers funcionan al nivel del motor de la base de datos. Este punto se resume en el siguiente diagrama: + +![](../assets/en/Develop/triggers-architecture.png) + +Los triggers se ejecutan en el equipo donde está el motor de la base de datos. Esto es evidente en el caso de 4D en local. En 4D Server, los triggers se ejecutan en el equipo servidor (en el proceso activo) y no en el equipo cliente. + +Cuando se llama un trigger, se ejecuta dentro del contexto del proceso que intenta la operación. Este proceso, invoca la ejecución del trigger y se llama **proceso llamante**.** + +Los elementos incluidos en este contexto difieren si la base se ejecuta con 4D en modo local o con 4D Server: + +- Con 4D en modo local, el trigger funciona con las selecciones actuales, registros actuales, estados de lectura/escritura de las tablas, operaciones de bloqueos de registros, etc., del proceso llamante. +- Con 4D Server, sólo el contexto de base de datos del proceso cliente llamante se conserva (bloqueo de registros, estados transaccionales). +4D Server igualmente garantiza que el registro actual de la tabla del trigger esté correctamente posicionado. +Los otros elementos contextuales (selecciones actuales por ejemplo) son las del proceso del trigger. + +Tenga cuidado cuando utilice otros objetos de la base y del lenguaje del entorno 4D, porque un trigger podría ejecutarse en una maquina diferente de la del proceso que lo llama ¡Este es el caso con 4D Server! + +- **Variables proceso**: cada trigger tiene su propia tabla de variables proceso. Un trigger no tiene acceso a las variables proceso del proceso llamante. +- **Variables locales**: puede utilizar las variables locales en un trigger. Su alcance es la ejecución del trigger; se crean/eliminan en cada ejecución. +- **Semáforos**: un trigger puede probar o fijar semáforos globales y locales (en el equipo donde se ejecuta). Sin embargo, un trigger debe ejecutar rápidamente, de manera que debe ser muy cuidadoso cuando pruebe o defina semáforos dentro de triggers. +- **Conjuntos y selecciones temporales**: si utiliza un conjunto o una selección temporal en un trigger, trabaja en el equipo donde los triggers se ejecutan. +- **Interfaz del usuario**: NO utilice elementos de la interfaz del usuario en un trigger (alertas, mensajes o cajas de diálogo). De la misma forma, debe limitar todo seguimiento de triggers en la [ventana del **Depurador**](../Debugging/debugger.md). Recuerde que en Cliente/Servidor, los triggers se ejecutan en el equipo 4D Server. Un mensaje de alerta en el equipo servidor no ayuda al usuario en un equipo cliente. Deje al proceso llamante administrar la interfaz del usuario. + +Tenga en cuenta que si utiliza el sistema de contraseñas de 4D, puede ejecutar el comando [`Current user`](../commands/current-user) en el trigger con el fin, por ejemplo, de guardar el nombre del usuario en el origen de la llamada del trigger en una tabla con historial, incluso en modo cliente-servidor. + + + +## Triggers y transacciones + +Las [transacciones](./transactions.md) deben administrarse en el nivel del proceso llamante. No deben administrarse a nivel del trigger. Si durante la ejecución del trigger, tiene que añadir, modificar o borrar varios registros, primero debe utilizar el comando [`In transaction`](../commands/in-transaction) desde el trigger para probar si el proceso llamante está en transacción actualmente. Si no es el caso, el trigger podría encontrarse con un registro bloqueado. Por lo tanto, si el proceso llamante no está en transacción, no comienzan las operaciones en los registros y devuelve un error en $0 para indicar al proceso llamante que la operación de la base de datos debe ejecutarse en una transacción. Por otra parte, si encuentra registros bloqueados, el proceso llamante no podrá deshacer las acciones del trigger. + +:::note + +Con el fin de optimizar el funcionamiento combinado de los triggers y transacciones, 4D no llama triggers después de la ejecución de [`VALIDATE TRANSACTION`](../commands/validate-transaction). Esto evita que los triggers se ejecuten dos veces. + +::: + +## Triggers en cascada + +Dada la siguiente estructura de ejemplo: + +![](../assets/en/Develop/triggers-cascade.png) + +Nota: las tablas han sido contraídas; tienen más campos de los que se muestran. + +Supongamos que la base de datos “autoriza” la eliminación de una factura. Podemos examinar cómo sería tratada tal operación a nivel del trigger (porque también podría realizar eliminaciones a nivel del proceso). + +Para conservar la integridad relacional de los datos, la eliminación de una factura requiere las siguientes acciones de parte del trigger de [Facturas]: + +- Disminuir el campo Ventas de la tabla [Clientes], en la cantidad de la factura. +- Borrar todos los registros de [Linea_Factura] relacionados con la factura. +- Esto también implica que el trigger de [Linea_Factura] disminuya el campo Cantidad vendida de los registros [Productos] relacionados con la línea de factura a eliminar. +- Borrar todos los registros de [Pagos] relacionados con la factura borrada. + +Primero, el trigger de [Facturas] debe efectuar estas acciones sólo si el proceso llamante está en transacción, de manera que sea posible deshacer en caso de encontrar un registro bloqueado. + +Segundo, el trigger de [Linea_Factura] está en **cascada** con el trigger de [Facturas]. El trigger [Linea_Factura] se ejecuta dentro de la ejecución del trigger [Facturas], porque la eliminación de los elementos de la lista es consecutiva a una llamada a `DELETE SELECTION` desde el trigger de [Facturas]. + +Imagine que todas las tablas en este ejemplo tienen triggers activados para todos los eventos de la base de datos. La cascada de triggers será: + +- El trigger de [Facturas] se llama porque el proceso llamante borra una factura + - El trigger de [Clientes] se llama porque el trigger de [Facturas] trigger actualiza el campo Ventas_Brutas + - El trigger de [Linea_Factura] se llama porque el trigger [Facturas] borra una línea(repetida) + - El trigger de [Productos] se llama porque el trigger de [Linea_Factura] actualiza el campo Cantidad_Vendida + - El trigger de [Pagos] se llama porque el trigger de [Facturas] borra un pago(repetido) + +En esta cascada, el trigger de [Facturas] se ejecuta en el nivel 1, los triggers de [Clientes], [Linea_Factura], y [Pagos] en el nivel 2 y el trigger de [Productos] en el nivel 3. + +Desde dentro de los triggers, puede utilizar el comando [`Trigger level`](../commands/trigger-level) para detectar el nivel en el cual se ejecuta un trigger. Además, puede utilizar el comando [`TRIGGER PROPERTIES`](../commands/trigger-properties) para obtener información sobre los otros niveles. + +Por ejemplo, si borra un registro de [Productos] a nivel del proceso, el trigger de [Productos] se ejecutará en el nivel 1, no en el nivel 3. + +Con [`Trigger level`](../commands/trigger-level) y [`TRIGGER PROPERTIES`](../commands/trigger-properties), puede identificar la causa de una acción. En nuestro ejemplo, una factura se borra al nivel del proceso. Si borramos un registro de [Clientes] a nivel del proceso, el trigger de [Clientes] debe intentar borrar todas las facturas relacionadas con ese cliente. Esto significa que el trigger [Facturas] será llamado como se llamó anteriormente, pero por otra razón. Desde el trigger de [Facturas], puede detectar si se ejecuta en el nivel 1 ó 2. Si se ejecutó en el nivel 2, puede verificar si fue porque se borro el registro de [Clientes]. Si este es el caso, no tiene que preocuparse en actualizar el campo Ventas_Brutas. + + + + + diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Develop/field-properties.md b/i18n/es/docusaurus-plugin-content-docs/current/Develop/field-properties.md index d486ff3d6bbabd..7efd3ff28141a8 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Develop/field-properties.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Propiedades de los campos --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Develop/triggers-new.md b/i18n/es/docusaurus-plugin-content-docs/current/Develop/triggers-new.md new file mode 100644 index 00000000000000..9c6e8d2308a770 --- /dev/null +++ b/i18n/es/docusaurus-plugin-content-docs/current/Develop/triggers-new.md @@ -0,0 +1,21 @@ +--- +id: triggers-new +title: Triggers +--- + +para importar + + + +## Triggers vs eventos entidad ORDA + +Los **triggers** (también conocidos como eventos base de datos) y los [**eventos entidad ORDA**](../ORDA/orda-events.md) tienen propósitos similares: establecen reglas para controlar las operaciones fundamentales sobre los datos (crear, editar o eliminar). Sin embargo, no funcionan al mismo nivel: + +- los triggers se gestionan a nivel de base de datos, que es el nivel más bajo, +- Los eventos de entidad ORDA se gestionan en el nivel [datastore](../ORDA/dsMapping.md#datastore), que está relacionado con su lógica de negocio. + +Las acciones sobre los datos ejecutadas a través del almacén de datos, como [`.save()`](../API/EntityClass.md#save) o [`.drop`](../API/EntityClass.md#drop), llamarán a los triggers, si los hubiera. + +Por otra parte, las acciones se activaron a nivel de base de datos 4D usando los comandos de lenguaje clásico 4D, tal como [`SAVE RECORD`](../commands/save-record) o [acciones estándar](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html#3371159) NO activará eventos de entidades ORDA. + + diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Extensions/develop-components.md b/i18n/es/docusaurus-plugin-content-docs/current/Extensions/develop-components.md index a346c7a3adce7d..1c54d0ac6f0dc6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Extensions/develop-components.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Extensions/develop-components.md @@ -315,6 +315,8 @@ However, you can install a [component error handler in the host application](../ However, you can install a [component error handler in the host application](../Concepts/error-handling.md#scope-and-components) to manage uncaught errors from compponents. +However, you can install a [component error handler in the host application](../Concepts/error-handling.md#scope-and-components) to manage uncaught errors from compponents. + ## Acceso a las tablas del proyecto local Aunque los componentes no pueden utilizar tablas, los punteros pueden permitir que los proyectos locales y los componentes se comuniquen entre sí. Por ejemplo, este es un método que podría ser llamado desde un componente: diff --git a/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md b/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md index d56a75b1db3be4..dea74525a9828c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barra de herramientas contiene los siguientes elementos: | Icono | Nombre | Descripción | | ------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Ejecutar el formulario | Se utiliza para probar la ejecución del formulario. Al presionar este botón, 4D abre una nueva ventana y muestra el formulario en su contexto (lista de registros para un formulario lista y página de registro actual para un formulario detallado). El formulario se ejecuta en el proceso principal. | -| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, desplazar y cambiar el tamaño de los objetos del formulario

    .**Nota**: cuando se selecciona un objeto de tipo Texto o Cuadro de Grupo, presionando la tecla **Enter** se pasa al modo edición.

    | +| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, desplazar y cambiar el tamaño de los objetos del formulario
    .**Nota**: cuando se selecciona un objeto de tipo Texto o Cuadro de Grupo, presionando la tecla **Enter** se pasa al modo edición. | | ![](../assets/en/FormEditor/zOrder.png) | [Orden de entrada](#data-entry-order) | Pasa al modo "Orden de entrada", donde es posible ver y cambiar el orden de entrada actual del formulario. Tenga en cuenta que las marcas permiten ver el orden de entrada actual, sin dejar de trabajar en el formulario. | | ![](../assets/en/FormEditor/moving.png) | [Mover](#mover-objetos) | Pasa al modo " Desplazamiento ", en el que es posible llegar rápidamente a cualquier parte del formulario utilizando la función de arrastrar y soltar en la ventana. El cursor toma la forma de una mano. Este modo de navegación es especialmente útil cuando se hace zoom en el formulario. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar la escala de visualización del formulario (100% por defecto). Puede pasar al modo "Zoom" haciendo clic en la lupa o pulsando directamente en la barra correspondiente a la escala deseada. Esta función se detalla en la sección anterior. | @@ -146,18 +146,18 @@ Antes de poder realizar cualquier operación en un objeto (como cambiar el ancho Para seleccionar un objeto utilizando la barra de herramientas: -1. Haz clic en la herramienta Flecha en la barra de herramientas.

    ![](../assets/en/FormEditor/selection.png)

    +1. Haz clic en la herramienta Flecha en la barra de herramientas.
    ![](../assets/en/FormEditor/selection.png) -

    Cuando se mueve el puntero en el área del formulario, se convierte en un puntero estándar con forma de flecha

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Haga clic en el objeto que desea seleccionar. Las asas de redimensionamiento identifican el objeto seleccionado.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Haga clic en el objeto que desea seleccionar. Las asas de redimensionamiento identifican el objeto seleccionado.
    ![](../assets/en/FormEditor/selectResize.png) Para seleccionar un objeto utilizando la Lista de propiedades: 1. Seleccione el nombre del objeto en la lista desplegable de objetos situada en la parte superior de la lista de propiedades. Con estos dos métodos, puede seleccionar un objeto que esté oculto por otros objetos o que se encuentre fuera del área visible de la ventana actual. Para deseleccionar un objeto, haga clic fuera del límite del objeto o **Mayúsculas+clic** en el objeto. -> También es posible seleccionar objetos haciendo doble clic en la ventana de resultados de la operación "Buscar en diseño". +> It is also possible to select objects by double-clicking them in the result window of "Find in design" operation. ### Selección de múltiples objetos @@ -241,13 +241,13 @@ Para agrupar los objetos: 1. Seleccione los objetos que desea agrupar. 2. Elija **Agrupar** en el menú Objetos. O - Haga clic en el botón Agrupar en la barra de herramientas del editor de formularios:

    ![](../assets/en/FormEditor/group.png)

    + Haga clic en el botón Agrupar en la barra de herramientas del editor de formularios:
    ![](../assets/en/FormEditor/group.png) 4D marca el límite de los objetos recién agrupados con manijas. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. Para desagrupar un grupo de objetos: 1. Seleccione el grupo de objetos que desea desagrupar. -2. Seleccione **Desagrupar** en el menú **Objeto**.

    O

    Haga clic en el botón **Desagrupar** (variante del botón **Agrupar**) en la barra de herramientas del editor de formularios.

    Si **Desagrupar** está atenuado, esto significa que el objeto seleccionado ya está separado en su forma más sencilla.

    4D marca los límites de los objetos individuales con manijas. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca los bordes de los objetos individuales con marcas. ### Alinear objetos @@ -275,9 +275,9 @@ El Asistente de Alineación permite realizar cualquier tipo de alineación y/o d Para mostrar esta caja de diálogo, seleccione los objetos que desee alinear y, a continuación, elija el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. -- En las áreas "Alineación izquierda/derecha" y/o "Alineación superior/inferior", haga clic en el icono que corresponda a la alineación que desee realizar.

    El área de ejemplo muestra los resultados de su selección.

    +- En las áreas "Alineación izquierda/derecha" y/o "Alineación superior/inferior", haga clic en el icono que corresponda a la alineación que desee realizar.
    El área de ejemplo muestra los resultados de su selección. -- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. O:

    para alinear los objetos a un objeto específico, seleccione la opción **Alinear en** y seleccione el objeto al que desea que se alineen los demás objetos de la lista de objetos. En este caso, la posición del objeto de referencia no se alterará.

    +- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. O:
    para alinear los objetos a un objeto específico, seleccione la opción **Alinear en** y seleccione el objeto al que desea que se alineen los demás objetos de la lista de objetos. En este caso, la posición del objeto de referencia no se alterará. Puede previsualizar los resultados de la alineación haciendo clic en el botón **Previsualización**. Los objetos se alinean entonces en el editor de formularios, pero como la caja de diálogo permanece en el primer plano, aún puede cancelar o aplicar la alineación. @@ -314,7 +314,8 @@ Para repartir los objetos con igual espacio: 1. Seleccione tres o más objetos y haga clic en la herramienta Distribuir correspondiente. -2. En la barra de herramientas, haga clic en la herramienta de distribución correspondiente a la distribución que desea aplicar.

    ![](../assets/en/FormEditor/distributionTool.png)

    O

    Seleccione un comando de menú de distribución en el submenú **Alinear** del menú **Objeto** o en el menú contextual del editor.

    4D distribuye los objetos en consecuencia. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: @@ -322,9 +323,9 @@ Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. ¡Aparece la siguiente caja de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Icono de distribución horizontal estándar)

    El área de ejemplo muestra los resultados de su selección. +3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Icono de distribución horizontal estándar)
    El área de ejemplo muestra los resultados de su selección. -4. Para realizar una distribución que utiliza el esquema estándar, haga clic en **Vista previa** o *Aplicar*.

    En este caso, 4D realizará una distribución estándar para que los objetos estén espaciados de manera equitativa entre ellos.

    O bien:

    para ejecutar una distribución específica, seleccione la opción **Distribuir** (por ejemplo, si desea distribuir los objetos en función de la distancia a su lado derecho). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:

    +4. Para realizar una distribución que utiliza el esquema estándar, haga clic en **Vista previa** o *Aplicar*.
    En este caso, 4D realizará una distribución estándar para que los objetos estén espaciados de manera equitativa entre ellos.
    O bien:
    para ejecutar una distribución específica, seleccione la opción **Distribuir** (por ejemplo, si desea distribuir los objetos en función de la distancia a su lado derecho). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    - Horizontalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los lados izquierdos, centros (hor.) y los lados derechos de los objetos seleccionados. - Verticalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los bordes superiores, centros (vert.) y los bordes inferiores de los objetos seleccionados. @@ -379,11 +380,11 @@ Este párrafo describe la visualización y la modificación del orden de entrada Para ver o cambiar el orden de entrada: -1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:
    ![](../assets/en/FormEditor/zOrder.png)
    El puntero se convierte en un puntero de orden de entrada y 4D dibuja una línea en el formulario mostrando el orden en que selecciona los objetos durante la entrada de datos. Ver y cambiar el orden de entrada de datos son las únicas acciones que puede realizar hasta que haga clic en cualquier herramienta de la paleta Herramientas. -2. Para cambiar el orden de entrada de datos, ubique el puntero sobre un objeto del formulario y mientras mantiene presionado el botón del ratón, arrastre el puntero hasta el objeto que desee a continuación en el orden de entrada de datos..

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D ajustará el orden de entrada en consecuencia. +2. Para cambiar el orden de entrada de datos, ubique el puntero sobre un objeto del formulario y mientras mantiene presionado el botón del ratón, arrastre el puntero hasta el objeto que desee a continuación en el orden de entrada de datos..
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D ajustará el orden de entrada en consecuencia. 3. Repita el paso 2 tantas veces como sea necesario para establecer el orden de entrada de datos que desee. 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 dc0b5a8bdb81ab..3372865a4eb79b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/forms.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/FormEditor/forms.md @@ -96,72 +96,80 @@ No hay restricciones en el número de páginas que puede tener un formulario. El Un formulario multipáginas tiene una página de fondo y varias páginas de visualización. Los objetos que se colocan en la página de fondo pueden ser visibles en todas las páginas de visualización, pero sólo se pueden seleccionar y editar en la página de fondo. En los formularios multipágina, debe colocar su paleta de botones en la página de fondo. También es necesario incluir uno o más objetos en la página de fondo que ofrezcan las herramientas de navegación para el usuario. -## Fluent UI rendering (Developer Preview) +## Renderizado Fluent UI (Developer Preview) -On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +En Windows, 4D soporta el renderizado de formularios **Fluent UI**, el moderno diseño gráfico de la interfaz de usuario de Microsoft, basado en la tecnología **WinUI 3**. **WinUI 3** es la base del Windows App SDK y representa las próximas interfaces gráficas de Windows. + +La renderización Fluent UI ofrece controles modernos y atractivos, compatibilidad con los temas sistema dark/light, renderización más fluida optimizada para pantallas de alta resolución y una experiencia de usuario coherente y alineada con las aplicaciones recientes de Microsoft. + +| Tema claro | Tema oscuro | +| --------------------------------------- | -------------------------------------------- | +| ![](../assets/en/FormEditor/fluent.png) | ![](../assets/en/FormEditor/fluent-dark.png) | :::caution Vista previa para desarrolladores -Fluent UI support is currently in the Developer Preview phase. No debe utilizarse en producción. +La compatibilidad con Fluent UI se encuentra actualmente en fase Developer Preview. No debe utilizarse en producción. ::: :::info macOS -This feature can only be used on Windows. On macOS, it is ignored. +Esta funcionalidad sólo se puede utilizar en Windows. En macOS, se ignora. ::: -### Fluent UI rendering availability +:::tip Entrada de blog relacionada -The Fluent UI rendering is available in the following execution environments only: +[Modernice sus interfaces 4D con Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- Fusionado aplicación 4D [autónomo](../Desktop/building.md#build-stand-alone-application) o [cliente](../Desktop/building.md#build-client-application) -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +::: -:::note +### Requisitos -If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. +La renderización Fluent UI requiere que esté instalado [**Windows App SDK versión 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads). Debe instalar este SDK en cualquier máquina Windows que muestre sus formularios. -::: +Si el Windows App SDK no está correctamente instalado, 4D renderizará todos sus formularios en modo clásico sin error. -### Enabling the Fluent UI rendering +### Activar el renderizado Fluent UI -You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. +Puede activar el modo de renderizado Fluent UI a nivel de aplicación o a nivel de formulario. La configuración del formulario tiene prioridad sobre la configuración de la aplicación. -#### Application setting +#### Parámetros de la aplicación -Check the **Use Fluent UI on Windows** option in the "Interface" page of the Settings dialog box. +Seleccione la opción **Utilizar Fluent UI en Windows** en la página "Interfaz" de la caja de diálogo de las Propiedades. ![](../assets/en/FormObjects/fluentui-setting.png) -In this case, the Fluent UI rendering mode will be used by default on Windows for all forms. +En este caso, el modo de renderizado Fluent UI se utilizará por defecto en Windows para todos los formularios. -#### Form setting +#### Parámetros del formulario -Each form can define its own rendering via the **Widget appearance** property. Las siguientes opciones están disponibles: +Cada formulario puede definir su propio renderizado a través de la propiedad **Apariencia de los Widgets**. Las siguientes opciones están disponibles: -- **Inherited**: inherits the global application setting (default), -- **Classic**: uses the classic Windows style, -- **Fluent UI**: enables the modern rendering based on Fluent UI.
    +- **Heredado**: hereda las propiedades globales de la aplicación (por defecto), +- **Classic**: utiliza el estilo clásico de Windows, +- **Fluent UI**: permite el renderizado moderno basado en Fluent UI.
    ![](../assets/en/FormObjects/fluentui-form.png) -The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". +La [propiedad de formulario JSON](./properties_JSONref.md) correspondiente es `fluentUI` con el valor undefined (es decir, heredado, valor por defecto), "true" o "false". -### Features and limitations +### Comportamientos específicos -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. +Cuando utilice los formularios 4D con el renderizado Fluent UI, debe prestar atención a los siguientes puntos: -When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: +- El nuevo comando `FORM Windows theme` devuelve el tema de visualización actual del formulario. Valores posibles: "Classic" o "FluentUI". Si no existe un formulario actual o el comando se ejecuta en macOS, se devuelve una cadena vacía. +- Si [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) es llamado en el contexto de un formulario, la información devuelta se refiere a la apariencia actual del formulario (Classic o FluentUI). Si se llama al comando fuera del contexto de un formulario, la información devuelta se refiere a las [propiedades globales del proyecto](#application-setting). +- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) con el parámetro *itemStyle* `Underline` no es soportado (ignorado) para los menús emergentes. +- El objeto de formulario [Stepper](../FormObjects/stepper.md) no admite el [evento doble clic](../Events/onDoubleClicked.md). +- Los [botones circulares](../FormObjects/button_overview.md#circle) son soportados (como en macOS). +- Los comandos [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) no son compatibles en áreas Web con motor de renderizado sistema. +- Se puede añadir rectángulo de foco a las [entradas](../FormObjects/input_overview.md) imagen y texto. -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. -- If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). -- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). -- [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). -- [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). -- The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +:::info Limitaciones + +Esta **Vista previa para desarrolladores** incluye algunas limitaciones, que se [enumeran en la entrada del blog relacionado](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: ## Formularios heredados diff --git a/i18n/es/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md b/i18n/es/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md index 1e4635722fa0b1..596695ff6e0403 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md @@ -13,10 +13,10 @@ Hay dos modos de arrastrar disponibles: - **Personalizado**: en este modo, toda operación de arrastrar realizada en el objeto dispara el evento formulario `On Begin Drag` en el contexto del objeto. A continuación, gestiona la acción arrastrar utilizando un método. En el modo personalizado, básicamente toda la operación de arrastrar y soltar es realizada por el programador. Este modo le permite implementar cualquier interfaz basada en la función de arrastrar y soltar, incluidas las interfaces que no necesariamente transportan datos, sino que pueden realizar cualquier acción como abrir archivos o activar un cálculo. Este modo se basa en una combinación de propiedades, eventos y comandos específicos del tema `Portapapeles`. -- **Automático**: en este modo, 4D **copia** el texto o las imágenes directamente desde el objeto formulario. Puede utilizarse en la misma área 4D, entre dos áreas 4D o entre 4D y otra aplicación. Por ejemplo, arrastrar (y soltar) automáticamente le permite copiar un valor entre dos campos sin usar programación:\ - ![](../assets/en/FormObjects/property_automaticDragDrop.png)\ - ![](../assets/en/FormObjects/property_automaticDragDrop2.png) - En este modo, NO se genera el evento del formulario `On Begin Drag`. Si quiere "forzar" el uso del arrastre personalizado mientras está activado el arrastre automático, mantenga presionada la tecla **Alt** (Windows) o **Opción** (macOS) durante la acción. Esta opción no está disponible para las imágenes. +- **Automático**: en este modo, 4D **copia** el texto o las imágenes directamente desde el objeto formulario. Puede utilizarse en la misma área 4D, entre dos áreas 4D o entre 4D y otra aplicación. For example, automatic drag (and drop) lets you copy a value between two fields without using programming: + ![](../assets/en/FormObjects/property_automaticDragDrop.png) + ![](../assets/en/FormObjects/property_automaticDragDrop2.png)
    + In this mode, the `On Begin Drag` form event is NOT generated. Si quiere "forzar" el uso del arrastre personalizado mientras está activado el arrastre automático, mantenga presionada la tecla **Alt** (Windows) o **Opción** (macOS) durante la acción. Esta opción no está disponible para las imágenes. Para más información, consulte [Arrastrar y soltar](https://doc.4d.com/4Dv20/4D/20.6/Drag-and-Drop.300-7487471.en.html) en el manual *Lenguaje 4D*. @@ -189,15 +189,15 @@ En otros casos (list box basados en selecciones temporales, columnas asociadas a ## Acción estándar -Actividades típicas que deben realizar los objetos activos (\*por ejemplo, permitir al usuario aceptar, cancelar o eliminar registros, desplazarse entre registros o de una página a otra en un formulario multipágina, etc.) han sido predefinidas por 4D como acciones estándar. Se describen con detalle en la sección [Acciones estándar](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) de la *manual de Diseño*. +Actividades típicas que deben realizar los objetos activos (\*por ejemplo, permitir al usuario aceptar, cancelar o eliminar registros, desplazarse entre registros o de una página a otra en un formulario multipágina, etc.) han sido predefinidas por 4D como acciones estándar. Se describen con detalle en la sección [Acciones estándar](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) de la *manual de Diseño*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Puede asignar al mismo tiempo una acción estándar y un método proyecto de un objeto. En este caso, la acción estándar suele ejecutarse después del método y 4D utiliza esta acción para activar/desactivar el objeto según el contexto actual. Cuando se desactiva un objeto, no se puede ejecutar el método proyecto asociado. #### Gramática JSON -| Nombre | Tipos de datos | Valores posibles | -| ------ | -------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| action | string | El nombre de una [acción estándar válida](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nombre | Tipos de datos | Valores posibles | +| ------ | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objetos soportados diff --git a/i18n/es/docusaurus-plugin-content-docs/current/FormObjects/webArea_overview.md b/i18n/es/docusaurus-plugin-content-docs/current/FormObjects/webArea_overview.md index deebe6ce0e1e73..75ae00ef3c98c9 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/FormObjects/webArea_overview.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/FormObjects/webArea_overview.md @@ -9,7 +9,7 @@ Es posible crear varias áreas web en el mismo formulario. Tenga en cuenta, sin Varias [acciones estándar](#standard-actions) dedicadas, numerosos [comandos de lenguaje](../category/web-area) así como [eventos de formulario](#form-events) genéricos y específicos permiten al desarrollador controlar el funcionamiento de las áreas web. Se pueden utilizar variables específicas para intercambiar información entre el área y el entorno 4D. -:::info Displaying Qodly pages +:::info Mostrar páginas Qodly In 4D client/server applications, Web areas can be used to display Qodly pages and [share the remote user session](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). This feature allows you to design web-based interfaces for your client/server desktop applications. @@ -53,7 +53,7 @@ Por ejemplo, llamando al método `HelloWorld` en 4D: $4d.HelloWorld(); ``` -> **Note:** JavaScript is **case-sensitive**, so the object is named **`$4d`** (with a lowercase "d"). +> **Nota:** JavaScript es **sensible a mayúsculas**, así que el objeto se llama **`$4d`** (con una minúscula "d"). ### Controlar el acceso a $4d @@ -123,7 +123,7 @@ $4d.today(function(result) En lugar de utilizar un método independiente, también podemos definir una **clase** que se encargue del cálculo. -Define the Class with 4D project method `calcSum` which receives parameters and returns their sum: +Defina la clase con el método proyecto 4D `calcSum` que recibe parámetros y devuelve su suma: ```4d // SumCalculator user class 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 9053f699dfa3de..28b989a640e0ec 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -9,50 +9,50 @@ Lea [**Novedades en 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/), la ent #### Lo más destacado -- Support of AI Vector Searches in the [`query()`](../API/DataClassClass.md#query-by-vector-similarity) function and in the [`$filter`](../REST/$filter.md#vector-similarity) REST API. -- Support of TLS encryption for the [4D.TCPConnection](../API/TCPConnectionClass.md#4dtcpconnectionnew) class. +- Soporte de búsquedas vectoriales de IA en la función [`query()`](../API/DataClassClass.md#query-by-vector-similarity) y en la API REST [`$filter`](../REST/$filter.md#vector-similarity). +- Soporte de encriptación TLS para la clase [4D.TCPConnection](../API/TCPConnectionClass.md#4dtcpconnectionnew). - Servidor Web: - - new [HTTP rules](../WebServer/http-rules.md) to customize HTTP response headers, - - ability to set [HTTP request handlers](../WebServer/http-request-handler.md) using a `handlers` property in the *settings* parameter of the Web server [`start()`](../API/WebServerClass.md#start) function, - - the Web server object contains new [`rules`](../API/WebServerClass.md#rules) and [`handlers`](../API/WebServerClass.md#handlers) properties. -- New [ORDA events on data](../ORDA/orda-events.md): validateSave, saving, afterSave, validateDrop, dropping, afterDrop. -- New option allowing to use certificates from Windows Certificate Store instead of a local certificates folder in [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) and [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew) classes. + - nuevas [reglas HTTP](../WebServer/http-rules.md) para personalizar los encabezados de respuesta HTTP, + - posibilidad para definir los [gestores de peticiones HTTP](../WebServer/http-request-handler.md) utilizando una propiedad `handlers` en el parámetro *settings* de la función [`start()`](../API/WebServerClass.md#start) del servidor Web, + - el objeto servidor Web contiene nuevas propiedades [`rules`](../API/WebServerClass.md#rules) y [`handlers`](../API/WebServerClass.md#handlers). +- Nuevos [eventos ORDA sobre los datos](../ORDA/orda-events.md): validateSave, saving, afterSave, validateDrop, dropping, afterDrop. +- Nueva opción que permite utilizar certificados de Windows Certificate Store en lugar de una carpeta local de certificados en las clases [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) y [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew). - Cliente/servidor: - - You can display Qodly pages in Web areas and [share the remote client session](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). - - The [QUIC network layer](../settings/client-server.md#network-layer) has been enhanced to handle network interface changes transparently, for example when you travel with your laptop. See [this blog post](https://blog.4d.com/work-and-move-with-quic-and-network-switching). -- You can now [create components directly from the host project](../Extensions/develop-components.md#creating-components) and [edit their code from a dedicated tab](../Extensions/develop-components.md#editing-all-component-code) in the 4D Explorer without leaving or restarting the project. -- The 4D product activation step has been simplified and automated during [sign-in](../GettingStarted/Installation.md#sign-in). -- 4D AIKit component: new features to [invoke a specific tool automatically](../aikit/Classes/OpenAIChatHelper.md#registertool) and [specify a response format](../aikit/Classes/OpenAIChatCompletionsParameters.md#response-format). + - Puede mostrar las páginas Qodly en las áreas Web y [compartir la sesión del cliente remoto](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). + - La [capa red QUIC](../settings/client-server.md#network-layer) se ha mejorado para gestionar los cambios de interfaz de red de forma transparente, por ejemplo, cuando viajas co su ordenador portátil. Ver [esta entrada del blog](https://blog.4d.com/work-and-move-with-quic-and-network-switching). +- Ahora puede [crear componentes directamente desde el proyecto local](../Extensions/develop-components.md#creating-components) y [editar su código desde una pestaña dedicada](../Extensions/develop-components.md#editing-all-component-code) en el Explorador 4D sin salir o reiniciar el proyecto. +- La etapa de activación del producto 4D se ha simplificado y automatizado durante la [conexión](../GettingStarted/Installation.md#sign-in). +- Componente 4D AIKit: nuevas funcionalidades para [invocar automáticamente una herramienta específica](../aikit/Classes/OpenAIChatHelper.md#registertool) y [especificar un formato de respuesta](../aikit/Classes/OpenAIChatCompletionsParameters.md#response-format). - Lenguaje 4D: - - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). + - Nuevos comandos "trim" para eliminar los espacios iniciales y finales de una cadena: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md) y [`Trim end`](../commands/trim-end.md). - Los comandos [`Num`](../commands/num.md) y [`String`](../commands/string.md) han sido actualizados para soportar conversiones en diferentes bases (radix). -- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=21): list of all bugs that have been fixed in 4D 21. +- [**Lista de bugs corregidos**](https://bugs.4d.fr/fixedbugslist?version=21): lista de todos los bugs que se han corregido en 4D 21. #### Vista previa para desarrolladores -[**Fluent UI** rendering for 4D forms](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) is proposed in Developer Preview during the beta test program. +El [renderizado **Fluent UI** para los formularios 4D](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) está disponible en Developer Preview durante el programa de pruebas beta. #### Cambios de comportamiento -:::caution Index rebuild +:::caution Reconstrucción del índice -4D 21 includes an ICU library update ([see below](#library-table)) which will force an automatic rebuild of indexes of type alpha, text, and object. Dependiendo del tamaño del archivo de datos, esta operación puede llevar un tiempo y puede ser necesario planificarla. +4D 21 incluye una actualización de la librería ICU ([ver abajo](#library-table)) que forzará una reconstrucción automática de los índices de tipo alfa, texto y objeto. Dependiendo del tamaño del archivo de datos, esta operación puede llevar un tiempo y puede ser necesario planificarla. ::: -- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. -- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. Ya no se realiza ningún tratamiento específico en estas URL. -- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). -- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. -- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    +- Servicios web (SOAP): cuando las [sesiones escalables](../WebServer/sessions.md#enabling-web-sessions) están activadas, los servicios web se ejecutan ahora en [**procesos apropiativos**](../Develop/preemptive.md) en modo compilado. Asegúrese de que su código SOAP es hilo seguro. +- Servidor web: se elimina la compatibilidad con las URL obsoletas `4DSYNC/` y `4DCGI/`. Ya no se realiza ningún tratamiento específico en estas URL. +- Las sesiones usuario web ahora son devueltas por [`Process activity`](../commands/process-activity.md). +- El comando [`HIGHLIGHT TEXT`](../commands/highlight-text) es ahora compatible en el contexto de los subformularios. +- **Componentes ya no integrados**: a partir de 4D 21, los componentes desarrollados por 4D (4D NetKit, 4D SVG..., ver [esta lista](../Extensions/overview.md#components-developed-by-4d)) ya no están integrados en la aplicación 4D. Cuando se actualiza un proyecto a 4D 21 o superior, se muestra un cuadro de diálogo:
    ![alt-text](../assets/en/getStart/convert.png)
    - \- **Import**: import automatically 4D components as dependencies to the project
    - \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    - \- **Ask later**: do not import components and display the dialog at the next project opening. + \- **Importar**: importar automáticamente componentes 4D como dependencias del proyecto
    + \- **Ignorar**: no importar componentes y dejar que [gestione los componentes manualmente](../Project/components.md)
    + \- **Preguntar más tarde**: no importar componentes y mostrar el cuadro de diálogo en la próxima apertura del proyecto. :::note -In binary databases, you need to select the required components in the 4D installer or download them from the [4D Product Download portal](https://product-download.4d.com/?type=components). +En las bases de datos binarias, debe seleccionar los componentes necesarios en el programa de instalación de 4D o descargarlos del [portal de descarga de productos 4D](https://product-download.4d.com/?type=components). ::: @@ -169,6 +169,34 @@ In binary databases, you need to select the required components in the 4D instal ::: +#### Vista previa para desarrolladores + +[**Fluent UI** rendering for 4D forms](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) is proposed in Developer Preview during the beta test program. + +#### Cambios de comportamiento + +:::caution Index rebuild + +4D 21 includes an ICU library update ([see below](#library-table)) which will force an automatic rebuild of indexes of type alpha, text, and object. Dependiendo del tamaño del archivo de datos, esta operación puede llevar un tiempo y puede ser necesario planificarla. + +::: + +- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. +- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. Ya no se realiza ningún tratamiento específico en estas URL. +- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). +- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. +- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    + ![alt-text](../assets/en/getStart/convert.png)
    + \- **Import**: import automatically 4D components as dependencies to the project
    + \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    + \- **Ask later**: do not import components and display the dialog at the next project opening. + +:::note + +In binary databases, you need to select the required components in the 4D installer or download them from the [4D Product Download portal](https://product-download.4d.com/?type=components). + +::: + ## 4D 20 R10 Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R10/), la entrada del blog que muestra todas las nuevas funcionalidades y mejoras en 4D 20 R10. @@ -180,12 +208,12 @@ Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R - Nueva clase [`4D.Vector`](../API/VectorClass.md) para procesar y comparar vectores, normalmente calculados por IAs. - Nuevas opciones para generar UUIDs en **versión 7** para el comando [4D automatic fields](../settings/database.md#auto-uuid-version) y [`Generate UUID`](../commands/generate-uuid). - Nuevas clases [`UDPSocket`](../API/UDPSocketClass.md) y [`UDPEvent`](../API/UDPEventClass.md) para enviar datos utilizando sockets UDP. Soporte de registro detallado para eventos UDP en el archivo de registro [`4DTCPUDPLog.txt`](../Debugging/debugLogFiles.md#4dtcpudplogtxt) (renombrado de `4DTCPLog.txt`). -- New [`.promote()`](../API/SessionClass.md#promote) and [`.demote()`](../API/SessionClass.md#demote) functions in the [Session class](../API/SessionClass.md) to dynamically add/remove privileges in a web process. -- [Automatic selection of licenses to embed](../Desktop/building.md#application-automatically-embedding-available-licenses) in the Build application dialog box, modified [`Create deployment license`](../commands/create-deployment-license.md) command, new [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html) BuildApplication xml key. +- Nuevas funciones [`.promote()`](../API/SessionClass.md#promote) y [`.demote()`](../API/SessionClass.md#demote) en la [clase Session](../API/SessionClass.md) para añadir/eliminar privilegios dinámicamente en un proceso web. +- [Selección automática de licencias a integrar](../Desktop/building.md#application-automatically-embedding-available-licenses) en el cuadro de diálogo del Generador de aplicaciones, modificación del comando [`Create deployment license`](../commands/create-deployment-license.md), nueva llave xml BuildApplication [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html). - Seguridad mejorada para copiar/pegar fórmulas en [4D Write Pro](../WritePro/managing-formulas.md) y [áreas de texto con estilo](../FormObjects/input_overview.md): las fórmulas copiadas desde fuera de la aplicación 4D actual se pegan ahora siempre sólo como valores. -- 4D AIKit component: new [OpenAIEmbeddingsAPI class](../aikit/Classes/OpenAIEmbeddingsAPI.md) to create embeddings using OpenAI's API. -- You can now [associate a class](../Develop/field-properties.md) to an object field in the structure editor. -- Automatic handling of [recursive dependencies](../Project/components.md#automatic-dependency-resolution). +- Componente 4D AIKit: nueva [clase OpenAIEmbeddingsAPI](../aikit/Classes/OpenAIEmbeddingsAPI.md) para crear embeddings utilizando la API OpenAI. +- Ahora puede [asociar una clase](../Develop/field-properties.md) a un campo objeto en el editor de estructura. +- Gestión automática de [dependencias recursivas](../Project/components.md#automatic-dependency-resolution). - Lenguaje 4D: - Por coherencia, los comandos [`Create entity selection`](../commands/create-entity-selection.md) y [`USE ENTITY SELECTION`](../commands/use-entity-selection.md) han sido movidos del tema ["4D Environment"](../commands/theme/4D_Environment.md) al ["Selection"](../commands/theme/Selection.md). - Nuevos comandos [`OBJECT SET DATA SOURCE FORMULA`](../commands/object-set-data-source-formula.md) y [`OBJECT Get data source formula`](../commands/object-get-data-source-formula.md) para asignar y leer los objetos `Formula` como fuentes de datos para los objetos de formulario. @@ -198,7 +226,7 @@ Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R - Se ha eliminado la biblioteca *MeCab*. Este cambio sólo afecta al tratamiento del texto en japonés. - Cuando una variable o parámetro objeto se declara con un tipo ["cs" class](../Concepts/classes.md#cs), asignarlo con una instancia de objeto de una clase diferente genera ahora un error de sintaxis. - [`.hasPrivilege()`](../API/SessionClass.md#hasprivilege) devuelve True para privilegios promovidos en el proceso web. -- The [`Time`](../commands/time) command now returns a negative time expression when the *timeValue* parameter is negative. Por ejemplo, `Time("-01:02:03")` devolverá **-01:02:03**. In previous releases, the negative sign was ignored. +- El comando [`Time`](../commands/time) devuelve ahora una expresión de tiempo negativa cuando el parámetro *timeValue* es negativo. Por ejemplo, `Time("-01:02:03")` devolverá **-01:02:03**. En versiones anteriores, se ignoraba el signo negativo. ## 4D 20 R9 @@ -209,7 +237,7 @@ Lea [**Novedades en 4D 20 R9**](https://blog.4d.com/en-whats-new-in-4d-20-R9/), - La biblioteca [*MeCab*](../settings/database.md#support-of-mecab-japanese-version) está obsoleta y se eliminará en la próxima versión. - Soporte de [token de sesión](../WebServer/sessions.md#session-token-otp) manejado con las nuevas funciones [`Session.createOTP()`](../API/SessionClass.md#createotp) y [`Session.restore()`](../API/SessionClass.md#restore). - El asistente de etiqueta ahora utiliza el editor de Fórmula para añadir o editar fórmulas en el [área de diseño de etiquetas](../Desktop/labels.md#label-preview). -- New [`TCPListener`](../API/TCPListenerClass.md) class to create TCP server connections; new properties in related classes: `address`, `listener` and `port` in [`TCPConnection`](../API/TCPConnectionClass.md) class, `address` and `port` in [`TCPEvent`](../API/TCPEventClass.md) class. +- Nueva clase [`TCPListener`](../API/TCPListenerClass.md) para crear conexiones del servidor TCP; nuevas propiedades en las clases relacionadas: `address`, `listener` y `port` en la clase [`TCPConnection`](../API/TCPConnectionClass.md), `address` y `port` en la clase [`TCPEvent`](../API/TCPEventClass.md). - Comandos y constantes obsoletos ahora generan advertencias específicas en el [Live checker y el compilador](../code-editor/write-class-method.md#warnings-and-errors). Puede saber si un comando está obsoleto utilizando el comando [`Command name`](../commands/command-name.md). - Nuevos comandos [WA SET CONTEXT](../commands/wa-set-context.md) y [WA Get context](../commands/wa-get-context.md) para controlar los contenidos [$4d](../FormObjects/webArea_overview.md#4d-object) en áreas web. - Nuevo [parámetro de base de datos `RDP optimization`](../commands-legacy/set-database-parameter.md#rdp-optimization-133) para optimizar por ejemplo el portapapeles compartidos cuando se usa el protocolo de escritorio remoto con 4D. @@ -270,7 +298,7 @@ Lea [**Novedades en 4D 20 R7**](https://blog.4d.com/en-whats-new-in-4d-20-R7/), - Lenguaje 4D: - Nuevos comandos: [Process info](../commands/process-info.md), [Session info](../commands/session-info.md), [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md) - Comandos modificados: [Process activity](../commands/process-activity.md), [Process number](../commands/process-number.md) - - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Los comandos obsoletos llevan el prefijo "\*o\*". + - Comandos obsoletos (reemplazo): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) y [#DECLARE/declaraciones Function](../Concepts/parameters.md#declaring-parameters)). Los comandos obsoletos llevan el prefijo "\*o\*". - 4D Write Pro: - Nuevo comando: [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md) - Comandos modificados: [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md) y [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md) @@ -405,23 +433,23 @@ Ver [**Notas de lanzamiento para LTS 4D 20.x**](../../versioned_docs/version-20/ ## Tabla de la librería -| Librería | Versión actual | Actualizado en 4D | Comentario | -| --------- | -------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| BoringSSL | fa47b1d | **21** | 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** | This upgrade forces an automatic rebuild of alphanumeric, text and object indexes. | -| libldap | 2.6.10 | **21** | | -| libsasl | 2.1.28 | 20 | | -| Liblsquic | 4.2.0 | 20 R10 | Utilizado para QUIC | -| 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.16.0 | **21** | Utilizado 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) | -| PHP | 8.2.4 | 20 | | -| SpreadJS | 17.1.0 | 20 R7 | Consulte [esta entrada de blog](https://blog.4d.com/4d-view-pro-whats-new-in-4d-20-r7/) para obtener una visión general de las nuevas funciones | -| webKit | WKWebView | 19 | | -| Xerces | 3.3.0 | **21** | Utilizado para comandos XML | -| Zlib | 1.3.1 | **21** | | +| Librería | Versión actual | Actualizado en 4D | Comentario | +| --------- | -------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| BoringSSL | fa47b1d | **21** | 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. | +| libldap | 2.6.10 | **21** | | +| libsasl | 2.1.28 | 20 | | +| Liblsquic | 4.2.0 | 20 R10 | Utilizado para QUIC | +| 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.16.0 | **21** | 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) | +| PHP | 8.2.4 | 20 | | +| SpreadJS | 17.1.0 | 20 R7 | Consulte [esta entrada de blog](https://blog.4d.com/4d-view-pro-whats-new-in-4d-20-r7/) para obtener una visión general de las nuevas funciones | +| webKit | WKWebView | 19 | | +| Xerces | 3.3.0 | **21** | Utilizado para comandos XML | +| Zlib | 1.3.1 | **21** | | diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/entities.md b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/entities.md index 2ac6f5af37a028..759037097c7260 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/entities.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/entities.md @@ -462,7 +462,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Esta función se llama cada vez que se solicita una selección de entidades o una entidad de la dataclass. El filtro se ejecuta una vez, cuando se crea la selección de entidades. -El filtro debe devolver una selección de entidades de la clase de datos. Puede ser una selección de entidades creada a partir de una consulta, almacenada en el [`Storage`], etc. +El filtro debe devolver una selección de entidades de la clase de datos. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 086ad86ee9d7d0..329dec884c4263 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: Events +title: Entity Events ---
    Historia @@ -8,23 +8,23 @@ title: Events | Lanzamiento | Modificaciones | | ----------- | ----------------------------------------------------------------------------------------------------- | | 21 | Added events: validateSave / saving / afterSave / validateDrop / dropping / afterDrop | -| 20 R10 | touched event added | +| 20 R10 | se ha añadido un evento touched |
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. No se puede activar directamente la ejecución de la función de evento. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::tip Entrada de blog relacionada -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: :::info Nota de compatibilidad -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -52,27 +52,27 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always ::: -Con otras configuraciones remotas (p. ej. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). ### Tabla resumen La siguiente tabla lista los eventos ORDA junto con sus reglas. -| Evento | Nivel | Nombre de la función | (C/S) Ejecutado en | Can stop action by returning an error | -| :------------------------- | :------- | :------------------------------------------------------ | :------------------------------------------------------------------: | ------------------------------------- | -| Instanciación de entidades | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | no | -| Atributo tocado | Atributo | `event touched ()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | no | -| | Entity | `event touched()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | no | -| Before saving an entity | Atributo | `validateSave ()` | server | sí | -| | Entity | `validateSave()` | server | sí | -| When saving an entity | Atributo | `saving ()` | server | sí | -| | Entity | `saving()` | server | sí | -| After saving an entity | Entity | `afterSave()` | server | no | -| Before dropping an entity | Atributo | `validateDrop ()` | server | sí | -| | Entity | `validateDrop()` | server | sí | -| When dropping an entity | Atributo | `dropping ()` | server | sí | -| | Entity | `dropping()` | server | sí | -| After dropping an entity | Entity | `afterDrop()` | server | no | +| Evento | Nivel | Nombre de la función | (C/S) Ejecutado en | Can stop action by returning an error | +| :----------------------------- | :------- | :------------------------------------------------------ | :---------------------------------------------------------------------------: | ------------------------------------- | +| Instanciación de entidades | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | no | +| Atributo tocado | Atributo | `event touched ()` | Depende de la palabra clave [`local`](../ORDA/ordaClasses.md#local-functions) | no | +| | Entity | `event touched()` | Depende de la palabra clave [`local`](../ORDA/ordaClasses.md#local-functions) | no | +| Antes de guardar una entidad | Atributo | `validateSave ()` | server | sí | +| | Entity | `validateSave()` | server | sí | +| Al guardar una entidad | Atributo | `saving ()` | server | sí | +| | Entity | `saving()` | server | sí | +| Después de guardar una entidad | Entity | `afterSave()` | server | no | +| Before dropping an entity | Atributo | `validateDrop ()` | server | sí | +| | Entity | `validateDrop()` | server | sí | +| Al soltar una entidad | Atributo | `dropping ()` | server | sí | +| | Entity | `dropping()` | server | sí | +| After dropping an entity | Entity | `afterDrop()` | server | no | :::note @@ -89,26 +89,26 @@ Event functions accept a single *event* object as parameter. When the function i | "kind" | siempre | String | Event name: "touched", "validateSave", "saving", "afterSave", "validateDrop", "dropping", "afterDrop" | | | *attributeName* | Only for events implemented at attribute level ("validateSave", "saving", "validateDrop", "dropping") | String | Nombre del atributo (por ejemplo, "nombre") | | | *dataClassName* | siempre | String | Nombre de la Dataclass (*ej.* "Company") | | -| "savedAttributes" | Only in [`afterSave()`](#function-event-aftersave) | Collection of String | Names of attributes properly saved | | -| "droppedAttributes" | Only in [`afterDrop()`](#function-event-afterdrop) | Collection of String | Names of attributes properly dropped | | -| "saveStatus" | Only in [`afterSave()`](#function-event-aftersave) | String | "success" if the save was successful, "failed" otherwise | | -| "dropStatus" | Only in [`afterDrop()`](#function-event-afterdrop) | String | "success" if the drop was successful, "failed" otherwise | | +| "savedAttributes" | Sólo en [`afterSave()`](#function-event-aftersave) | Colección de cadenas | Names of attributes properly saved | | +| "droppedAttributes" | Sólo en [`afterDrop()`](#function-event-afterdrop) | Colección de cadenas | Names of attributes properly dropped | | +| "saveStatus" | Sólo en [`afterSave()`](#function-event-aftersave) | String | "success" if the save was successful, "failed" otherwise | | +| "dropStatus" | Sólo en [`afterDrop()`](#function-event-afterdrop) | String | "success" if the drop was successful, "failed" otherwise | | -## Error object +## Objeto de error [Some event functions](#summary-table) can return an **error object** to raise an error and stop the running action. When an error occurs in an event, the other events are stopped at the first raised error and the action (save or drop) is also stopped. This error is sent before other potential errors like [stamp has changed, entity locked](../API/EntityClass.md#save), etc. -### Error object properties +### Propiedades del objeto error -| Propiedad | Tipo | Descripción | Set by the developer | -| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Sí | -| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Sí | -| extraDescription | Object | Free information to set up | Sí | -| seriousError | Boolean | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • | Yes (default is false) | -| componentSignature | Text | Always "DBEV" | No | +| Propiedad | Tipo | Descripción | Definido por el desarrollador | +| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| errCode | Integer | Igual al comando [`Last errors`](../commands/last-errors.md) | Sí | +| message | Text | Igual al comando [`Last errors`](../commands/last-errors.md) | Sí | +| extraDescription | Object | Free information to set up | Sí | +| seriousError | Boolean | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • `False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Añade el estado `dk status validation failed`.
  • | Sí (por defecto es false) | +| componentSignature | Text | Always "DBEV" | No | - [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. - In case of an error triggered by a **validate** event, the `seriousError` property allows you to choose the level of the error to generate: @@ -135,11 +135,11 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: -- in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: +- en **cliente/servidor con la [palabra clave `local`](../ORDA/ordaClasses.md#local-functions)** o en **4D monousuario**: - el usuario define un valor en un formulario 4D, - - el código 4D realiza una asignación con el operador `:=`. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - el código 4D realiza una asignación con el operador `:=`. El evento también se activa en caso de autoasignación (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. +- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) The function receives an [*event* object](#event-parameter) as parameter. @@ -150,7 +150,7 @@ If this function [throws](../commands/throw) an error, it will not stop the unde Este evento también se activa: -- when attributes are assigned by the [`constructor()`](./ordaClasses.md#class-constructor-1) event, +- cuando los atributos son asignados por el evento [`constructor()`](./ordaClasses.md#class-constructor-1), - when attributes are edited through the [Data Explorer](../Admin/dataExplorer.md). ::: @@ -269,7 +269,7 @@ Note over Client:$people.lastname is uppercased ``` -#### Example 4 (diagram): Client/server without the `local` keyword +#### Ejemplo 4 (diagrama): cliente/servidor sin la palabra clave `local` ```mermaid @@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`). #### Ejemplo -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro #### Ejemplo -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` ### `Function event afterSave` @@ -451,32 +449,28 @@ This event is useful after saving data to propagate the save action outside the The function receives an [*event* object](#event-parameter) as parameter. -- To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. +- To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. Se producirá un error. - Throwing an [error object](#error-object) is **not supported** by this function. -#### Ejemplo 1 +#### Ejemplo -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` ### `Function event validateDrop` @@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### Ejemplo 1 +#### Ejemplo -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### Ejemplo 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` ### `Function event dropping` @@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### Ejemplo 1 +#### Ejemplo -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### Ejemplo 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -644,7 +595,7 @@ This event is useful after dropping data to propagate the drop action outside th The function receives an [*event* object](#event-parameter) as parameter. -- To avoid infinite loops, calling a [`drop()`](../API/EntityClass.md#drop) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. +- To avoid infinite loops, calling a [`drop()`](../API/EntityClass.md#drop) on the current entity (through `This`) in this function is **not allowed**. Se producirá un error. - Throwing an [error object](#error-object) is **not supported** by this function. :::note @@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### Ejemplo 1 +#### Ejemplo -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### Ejemplo 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/privileges.md b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/privileges.md index 2e61015157e2aa..5bb31631d97539 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/ORDA/privileges.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/ORDA/privileges.md @@ -17,7 +17,7 @@ Si un usuario intenta ejecutar una acción y no tiene los derechos de acceso ade ![schema](../assets/en/ORDA/privileges-schema.png) -:::tip Related Blog posts +:::tip Entradas de blog relacionadas [**Filter access to your data with a complete system of permissions**](https://blog.4d.com/filter-access-to-your-data-with-a-complete-system-of-permissions/) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/Project/components.md b/i18n/es/docusaurus-plugin-content-docs/current/Project/components.md index 3bb2eb19a0f57e..de12a84917a83c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/Project/components.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/Project/components.md @@ -3,11 +3,11 @@ id: components title: Dependencias --- -[La arquitectura de los proyectos](../Project/architecture.md) 4D es modular. Puede ofrecer funcionalidades adicionales a sus proyectos 4D instalando [**componentes**](Concepts/components.md) y [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md). +[La arquitectura de los proyectos](../Project/architecture.md) 4D es modular. Puede ofrecer funcionalidades adicionales a sus proyectos 4D instalando [**componentes**](Concepts/components.md) y [**plug-ins**](../Concepts/plug-ins.md). Los componentes están hechos de código 4D, mientras que los plug-ins pueden [construirse utilizando cualquier lenguaje](../Extensions/develop-plug-ins.md). -Puede [desarrollar](../Extensions/develop-components.md) y [crear](../Desktop/building.md) sus propios componentes 4D, o descargar componentes públicos compartidos por la comunidad 4D que [se pueden encontrar en GitHub](https://github.com/search?q=4d-component\\\\\\\\\\&type=Repositories). +Puede [desarrollar](../Extensions/develop-components.md) y [crear](../Desktop/building.md) sus propios componentes 4D, o descargar componentes públicos compartidos por la comunidad 4D que [se pueden encontrar en GitHub](https://github.com/topics/4d-component). -Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties. +Una vez instalados en su entorno 4D, las extensiones se manejan como **dependencias** con propiedades específicas. ## Componentes interpretados y compilados @@ -317,20 +317,20 @@ Los componentes GitHub a los que se hace referencia se descargan en una carpeta ...donde `` puede ser "4D", "4D Server" o "tool4D". -### Automatic dependency resolution +### Resolución automática de las dependencias -When you add or update a component (whether [local](#local-components) or [from GitHub](#components-stored-on-github)), 4D automatically resolves and installs all dependencies required by that component. Esto incluye: +Cuando añade o actualiza un componente (ya sea [local](#local-components) o [desde GitHub](#components-stored-on-github)), 4D resuelve e instala automáticamente todas las dependencias requeridas por ese componente. Esto incluye: - **Dependencias primarias**: componentes que declara explícitamente en su archivo `dependencies.json` - **Dependencias secundarias**: componentes requeridos por dependencias primarias u otras dependencias secundarias, que se resuelven e instalan automáticamente -The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. +El gestor de dependencias lee el archivo `dependencies.json` de cada componente e instala recursivamente todas las dependencias necesarias, respetando las especificaciones de versión siempre que sea posible. Esto elimina la necesidad de identificar y añadir manualmente las dependencias anidadas una por una. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Resolución de conflictos**: cuando varias dependencias requieren [versiones diferentes](#defining-a-github-dependency-version-range) del mismo componente, el gestor de dependencias intenta automáticamente resolver los conflictos encontrando una versión que satisfaga todos los rangos de versiones superpuestas. Si una dependencia primaria entra en conflicto con dependencias secundarias, la dependencia primaria tiene prioridad. :::note -`dependencies.json` files are ignored in components loaded from the [**Components** folder](architecture.md#components). +Los archivos `dependencies.json` se ignoran en los componentes cargados desde la carpeta [**Components**](architecture.md#components). ::: @@ -364,19 +364,19 @@ Por defecto, se listan todas las dependencias identificadas por el gestor de dep ![dependency-tabs](../assets/en/Project/dependency-tabs.png) -- **All**: All dependencies including both primary (declared) and secondary (automatically resolved) dependencies in a flat list view. -- **Declared**: Primary dependencies that are explicitly declared in the `dependencies.json` file. This tab helps you distinguish between dependencies you've directly added and those that were [automatically resolved](#automatic-dependency-resolution). +- **Todas**: todas las dependencias, incluidas las primarias (declaradas) y las secundarias (resueltas automáticamente) en forma de lista. +- **Declarado**: dependencias primarias que se declaran explícitamente en el archivo `dependencies.json`. Esta pestaña le ayuda a distinguir entre las dependencias que ha añadido directamente y las que se han [resuelto automáticamente](#automatic-dependency-resolution). - **Activo**: dependencias que están cargadas y pueden ser utilizadas en el proyecto. Incluye dependencias *overloading*, las cuales son realmente cargadas. Las dependencias *Overloaded* se enumeran en el panel **Conflicts** junto con todas las dependencias en conflicto. - **Inactivo**: dependencias que no están cargadas en el proyecto y no están disponibles. Hay muchas razones posibles para este estado: archivos que faltan, incompatibilidad de versiones... -- **Conflicts**: Dependencies that are loaded but that overloads at least one other dependency at a lower [priority level](#priority). También se muestran las dependencias sobrecargadas para que pueda comprobar el origen del conflicto y tomar las medidas oportunas. +- **Conflictos**: las dependencias que se cargan pero que sobrecargan al menos otra dependencia de un [nivel de prioridad](#priority) inferior. También se muestran las dependencias sobrecargadas para que pueda comprobar el origen del conflicto y tomar las medidas oportunas. ### Dependencias secundarias -The Dependencies panel displays [**secondary dependencies**](#automatic-dependency-resolution) with the `Component dependency` [origin](#dependency-origin): +El panel Dependencias muestra [**dependencias secundarias**](#automatic-dependency-resolution) con la `dependencia del componente` [origen](#dependency-origin): ![recursive-dependency](../assets/en/Project/recursive.png) -When you hover over a secondary dependency, a tooltip displays the parent dependency that requires it. A secondary dependency cannot be [removed](#removing-a-dependency) directly, you must remove or edit the primary dependency that requires it. +Cuando pasa el cursor sobre una dependencia secundaria, una descripción muestra la dependencia padre que la requiere. Una dependencia secundaria no se puede [eliminar](#removing-a-dependency) directamente, hay que eliminar o editar la dependencia primaria que la requiere. ### Estado de dependencias @@ -409,13 +409,13 @@ El panel Dependencias enumera todas las dependencias del proyecto, sea cual sea Las siguientes opciones de origen son posibles: -| Etiqueta de origen | Descripción | -| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Built in 4D | Componente 4D integrado, almacenado en la carpeta `Components` de la aplicación 4D | -| Declarado en proyecto | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) | -| Declarado en el entorno | Component declared in the [`dependencies.json`](#dependenciesjson) file and overriden in the [`environment4d.json`](#environment4djson) file | -| Carpeta Components | Componente ubicado en la carpeta [`Components`](architecture.md#components) | -| Dependencia de los componentes | Componente secundario ([requerido por otro componente](#automatic-dependency-resolution)) | +| Etiqueta de origen | Descripción | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| Integrado a 4D | Componente 4D integrado, almacenado en la carpeta `Components` de la aplicación 4D | +| Declarado en proyecto | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) | +| Declarado en el entorno | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) y anulado en el archivo [`environment4d.json`](#environment4djson) | +| Carpeta Components | Componente ubicado en la carpeta [`Components`](architecture.md#components) | +| Dependencia de los componentes | Componente secundario ([requerido por otro componente](#automatic-dependency-resolution)) | **Clic derecho** en una línea de dependencia y selecciona **Mostrar en el disco** para revelar la ubicación de una dependencia: @@ -469,7 +469,7 @@ Para añadir una [dependencia GitHub](#components-stored-on-github), haga clic e :::note -By default, [components developed by 4D](../Extensions/overview.md#components-developed-by-4d) are listed in the combo box, so that you can easily select and install these features in your environment: +Por defecto, los [componentes desarrollados por 4D](../Extensions/overview.md#components-developed-by-4d) aparecen en el combo box, para que pueda seleccionarlos e instalarlos fácilmente en su entorno: ![dependency-default-git](../assets/en/Project/dependency-default.png) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/REST/$filter.md b/i18n/es/docusaurus-plugin-content-docs/current/REST/$filter.md index 87fad52e60c764..ca52f5579fa456 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/REST/$filter.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/REST/$filter.md @@ -27,7 +27,7 @@ Por ejemplo: `$filter="firstName=john AND salary>20000"` donde `firstName` y `sa ### Utilizar la propiedad params -You can also use 4D's `params` property which is a collection of values. +También puede utilizar la propiedad `params` de 4D, que es una colección de valores. **\{attribute\} {comparator} {placeholder} {AND/OR/EXCEPT} \{attribute\} {comparator} {placeholder}&$params='["{value1}","{value2}"]'** @@ -90,11 +90,11 @@ Use the `params` property to provide the filter with the vector comparison param The *vectorComparison* parameter is a collection of the following elements: -| Propiedad | Tipo | Descripción | | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [].vector | Colección de objetos) | Obligatorio. Una colección que representa el vector a comparar | | -| [].metric | Text | Opcional. [Cálculo vectorial](../API/VectorClass.md#understanding-the-different-vector-computations) a utilizar para la consulta. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | | -| | [].threshold | Real | Opcional (por defecto: 0,5). Un valor umbral utilizado para filtrar las comparaciones de vectores en función de su puntuación de similitud coseno, punto o euclídea según la "métrica" seleccionada. Es altamente recomendable elegir una similitud que se adapte mejor a su caso de uso específico para obtener resultados óptimos. | +| Propiedad | Tipo | Descripción | +| -------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [].vector | Collection of numbers | Obligatorio. Una colección que representa el vector a comparar | +| [].metric | Text | Opcional. [Cálculo vectorial](../API/VectorClass.md#understanding-the-different-vector-computations) a utilizar para la consulta. Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | +| [].threshold | Real | Opcional (por defecto: 0,5). Un valor umbral utilizado para filtrar las comparaciones de vectores en función de su puntuación de similitud coseno, punto o euclídea según la "métrica" seleccionada. Es altamente recomendable elegir una similitud que se adapte mejor a su caso de uso específico para obtener resultados óptimos. | Only a subset of **comparator** symbols are supported with vector comparisons. Tenga en cuenta que comparan los resultados con el valor umbral: diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md index facb115670bf95..7a727201020ac8 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md @@ -5,47 +5,47 @@ title: HTTP Request handler Por defecto, las peticiones HTTP recibidas por el servidor web 4D se gestionan a través de [funciones de procesamiento integradas](httpRequests.md) o del [servidor REST](../REST/REST_requests.md). -In addition, 4D supports the implementation of **custom HTTP Request handlers**, allowing you to intercept specific incoming HTTP requests and process them using your own code. +Además, 4D soporta la implementación de **gestores de peticiones HTTP personalizadas**, permitiéndole interceptar peticiones HTTP entrantes específicas y procesarlas utilizando su propio código. Cuando un manejador de peticiones HTTP personalizado intercepta una solicitud, se procesa directamente y no hay otras funcionalidades de procesamiento (por ejemplo, son llamados métodos base [On Web authentication](./authentication.md#on-web-authentication) o [On Web connection](./httpRequests.md#on-web-connection). -Custom HTTP request handlers meet various needs, including: +Los gestores de peticiones HTTP personalizados satisfacen diversas necesidades, entre ellas: -- using a given URL as a resource provider or a file-uploading box (to download or upload various files), -- redirecting on specific pages according to a context (user authenticated, privileges granted...), +- la utilización de una URL dedicada como proveedor de recursos o como cuadro de carga de archivos (para descargar o cargar varios archivos), +- la redirección en páginas específicas en función de un contexto (usuario autentificado, privilegios otorgados...), - gestionar una autenticación a través de oAuth 2.0. ## Requisitos -Custom HTTP Request handlers are supported in the following context: +Los manejadores de peticiones HTTP personalizadas están soportados en el siguiente contexto: -- [scalable sessions](./sessions.md#enabling-web-sessions) or [no sessions](../settings/web.md#no-sessions) are enabled, -- a web server run locally by 4D or 4D Server, including those [run by components](./webServerObject.md). +- las [sesiones escalables](./sessions.md#enabling-web-sessions) o [sin sesiones](../settings/web.md#no-sessions) están activadas, +- un servidor web ejecutado localmente por 4D o 4D Server, incluyendo aquellos [ejecutados por componentes](./webServerObject.md). :::warning -For security reasons, external access to the datastore can be disallowed in 4D. You need to configure the [ORDA privileges](../ORDA/privileges.md) to allow HTTP requests. +Por razones de seguridad, el acceso externo al datastore puede ser desautorizado en 4D. Necesita configurar los [privilegios ORDA](../ORDA/privileges.md) para permitir peticiones HTTP. ::: -## How to set handlers +## Cómo definir los gestores -You can declare HTTP Request handlers: +Puede declarar gestores de peticiones HTTP: -- in a configuration file named **HTTPHandlers.json** stored in the [`Project/Sources`](../Project/architecture.md#sources) folder of the project. HTTP Request handlers are loaded and applied in the main Web server once it is started. -- using a [`.handlers`](../API/WebServerClass.md#handlers) property set in the *settings* parameter of the [start()](../API/WebServerClass.md#start) function, for any web server object: +- en un archivo de configuración llamado **HTTPHandlers.json** almacenado en la carpeta [`Project/Sources`](../Project/architecture.md#sources) del proyecto. Los gestores de peticiones HTTP se cargan y aplican en el servidor Web principal una vez se inicia. +- utilizando una propiedad [`.handlers`](../API/WebServerClass.md#handlers) definida en el parámetro *settings* de la función [start()](../API/WebServerClass.md#start), para todo objeto servidor web: ```4d -WEB Server.start($settings.handlers) //set rules at web server startup +WEB Server.start($settings.handlers) //definir reglas al inicio del servidor web ``` -If both a **HTTPHandlers.json** file and a call to the [`WEB Server`](../commands/web-server.md) command with a valid `$settings.handlers` are used, the `WEB Server` command has priority. +Si se utiliza tanto un archivo **HTTPHandlers.json** como una llamada al comando [`WEB Server`](../commands/web-server.md) con un `$settings.handlers` válido, el comando `WEB Server` tiene prioridad. -The json file (or the object in the *settings* parameter) contains all listened URL patterns, the handled verbs, and the code to be called. +El archivo json (o el objeto en el parámetro *settings*) contiene todos los modelos URL escuchados, los verbos manejados y el código a llamar. -Handlers are provided as a collection. +Los *handlers* se proporcionan como una colección. -At runtime, the first pattern matching the URL is executed, the others are ignored. +Al momento de la ejecución, se ejecuta el primer patrón que coincida con la URL, los demás se ignoran. Este es un ejemplo del contenido de un archivo *HTTPHandlers.json*: @@ -61,11 +61,11 @@ Este es un ejemplo del contenido de un archivo *HTTPHandlers.json*: ] ``` -This handler declaration can be read as: when any request starting by `/start/` with a `GET` or `POST` verb is received by the server, the `gettingStarted` function of the `GeneralHandling` singleton is executed. +Esta declaración de handler puede leerse como: cuando cualquier petición que comience por `/start/` con un verbo `GET` o `POST` es recibida por el servidor, se ejecuta la función `gettingStarted` del singleton `GeneralHandling`. :::note -You must restart the Web server so that modifications made in this file are taken into account. +Debe reiniciar el servidor Web para que se tengan en cuenta las modificaciones realizadas en este archivo. ::: @@ -73,32 +73,32 @@ You must restart the Web server so that modifications made in this file are take Un manejador está definido por: -- a listened URL pattern -- a function and its class where the code is implemented to handle the listened URL pattern -- the verbs with which the URL can be called to trigger the handler +- un patrón de URL a interceptar +- una función y su clase donde se implementa el código para manejar el patrón URL escuchado +- los verbos con los que se puede llamar a la URL para activar el gestor -The handler identifier is the couple [pattern + a verb among the verbs list]. +El identificador del gestor es la pareja [patrón + un verbo de la lista de verbos]. ### Patrones de la URL -URL patterns can be given as **prefixes** or using **regular expressions**. +Los patrones de URL pueden indicarse como **prefijos** o utilizando **expresiones regulares**. -- To declare a prefix pattern, use the "pattern" property name in the HTTPHandlers.json file. Prefixes are considered as regular expressions already containing starting and ending `/`. +- Para declarar un patrón de prefijo, utilice el nombre de propiedad "pattern" en el archivo HTTPHandlers.json. Los prefijos son considerados como expresiones regulares que ya contienen un `/` inicial y final. Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"` -- To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente. +- Para declarar un patrón de expresión regular, utilice el nombre de propiedad "regexPattern" en el archivo HTTPHandlers.json. Los modelos de expresiones regulares se manejan directamente. Ej: `"regexPattern" : "/docs/.+/index\.html"` -"Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account). +Las propiedades "Pattern" y "regexPattern" no pueden utilizarse en la misma definición de gestor (en este caso, sólo se tiene en cuenta la propiedad "regexPattern"). -#### Concordancia de modelos +#### Correspondencia de modelos Los modelos de URL se activan en el orden indicado: - se ejecuta el primer modelo coincidente - los siguientes patrones no se ejecutan aunque coincidan con la URL -As a consequence, you need to apply a accurate strategy when writing your handlers: the most detailed patterns must be written before the more general patterns. +En consecuencia, debe aplicar una estrategia precisa al escribir sus gestores: los patrones más detallados deben escribirse antes que los patrones más generales. ```json [ @@ -126,7 +126,7 @@ As a consequence, you need to apply a accurate strategy when writing your handle #### Patrones prohibidos -URL patterns matching 4D built-in HTTP processing features are not allowed in custom HTTP handlers. Por ejemplo, los siguientes modelos no pueden ser manejados: +Los patrones URL que coincidan con las funciones de procesamiento HTTP integradas en 4D no están permitidos en los gestores HTTP personalizados. Por ejemplo, los siguientes modelos no pueden ser manejados: - `/4DACTION` - `/rest` @@ -135,28 +135,28 @@ URL patterns matching 4D built-in HTTP processing features are not allowed in cu ### Clase y método -You declare the code to be executed when a defined URL pattern is intercepted using the "class" and "method" properties. +Declare el código a ejecutar cuando se intercepte un patrón de URL definido utilizando las propiedades "class" y "method". -- "class": class name without `cs.`, e.g. "UsersHandling" for the `cs.UsersHandling` user class. Debe ser una clase [**compartida**](../Concepts/classes.md#shared-singleton) y [**singleton**](../Concepts/classes.md#singleton-classes). +- "class": nombre de la clase sin `cs.`, por ejemplo, "UsersHandling" para la clase usuario `cs.UsersHandling`. Debe ser una clase [**compartida**](../Concepts/classes.md#shared-singleton) y [**singleton**](../Concepts/classes.md#singleton-classes). - "method": función de clase perteneciente a la clase. [Ver abajo](#request-handler-code) para obtener información sobre el código del gestor de peticiones. ### Verbs -You can use the "verbs" property in the handler definition to declare HTTP verbs that are supported in incoming requests for this handler. A request that uses a verb that is not explicitely allowed is automatically rejected by the server. +Puede utilizar la propiedad "verbs" en la definición del manejador para declarar los verbos HTTP que se admiten en las peticiones entrantes para este manejador. Una solicitud que utiliza un verbo no permitido explícitamente es rechazada automáticamente por el servidor. -You can declare several verbs, separated by a comma. Los nombres de verbos no distinguen entre mayúsculas y minúsculas. +Puede declarar varios verbos, separados por una coma. Los nombres de verbos no distinguen entre mayúsculas y minúsculas. Ej: `"verbs" : "PUT, POST"` :::note -No control is done on verb names. Se pueden utilizar todos los nombres. +No se hace ningún control sobre los nombres de los verbos. Se pueden utilizar todos los nombres. ::: -By default, if the "verbs" property is not used for a handler, **all** HTTP verbs are supported in incoming requests for this handler (except those possibly used beforehand in a more detailed pattern, as shown in the example above). +Por defecto, si la propiedad "verbs" no se utiliza para un manejador, **todos** los verbos HTTP son soportados en las peticiones entrantes para este manejador (excepto aquellos posiblemente utilizados de antemano en un patrón más detallado, como se muestra en el ejemplo anterior). :::note @@ -225,7 +225,7 @@ En este ejemplo, debe implementar las siguientes funciones: - *handleDocs* en la clase *DocsHandling* - *handleTheInvoice* / *handleDetails* / *handleInvoices* en la clase *InvoicesHandling* -Examples of URLs triggering the handlers: +Ejemplos de URL que activan los gestores personalizados: `IP:port/info/` con un verbo GET `IP:port/info/general` con un verbo GET @@ -246,11 +246,11 @@ Examples of URLs triggering the handlers: ### Configuración de funciones -The HTTP Request handler code must be implemented in a function of a [**Shared**](../Concepts/classes.md#shared-singleton) [**singleton class**](../Concepts/classes.md#singleton-classes). +El código del gestor de peticiones HTTP debe implementarse en una función de una clase [**Compartida**](../Concepts/classes.md#shared-singleton) [**clase singleton**](../Concepts/classes.md#singleton-classes). -If the singleton is missing or not shared, an error "Cannot find singleton" is returned by the server. If the class or the function [defined as handler](#handler-definition) in the HTTPHandlers.json file is not found, an error "Cannot find singleton function" is returned by the server. +Si el singleton no se encuentra o no está compartido, el servidor devuelve un error "No se puede encontrar singleton". Si la clase o la función [definida como manejador](#handler-definition) en el archivo HTTPHandlers.json no se encuentra, el servidor devuelve un error "No se puede encontrar la función singleton". -Request handler functions are not necessarily shared, unless some request handler properties are updated by the functions. En este caso, necesita declarar sus funciones con la [palabra clave 'shared'](../Concepts/classes.md#shared-functions). +Las funciones del gestor de peticiones no son necesariamente compartidas, a menos que algunas propiedades del gestor de peticiones sean actualizadas por las funciones. En este caso, necesita declarar sus funciones con la [palabra clave 'shared'](../Concepts/classes.md#shared-functions). :::note @@ -262,13 +262,13 @@ Request handler functions are not necessarily shared, unless some request handle Cuando una solicitud ha sido interceptada por el manejador, se recibe en el servidor como una instancia de la [clase 4D.IncomingMessage](../API/IncomingMessageClass.md). -All necessary information about the request are available in this object, including the request url, verb, headers, and, if any, parameters (put in the URL) and body. +Toda la información necesaria sobre la petición está disponible en este objeto, incluyendo la url de la petición, el verbo, los encabezados y, si los hay, los parámetros (puestos en la URL) y el cuerpo de la petición. -Then, the request handler can use this information to trigger appropriate business logic. +A continuación, el gestor de solicitudes puede utilizar esta información para activar la lógica de negocio adecuada. -### Output: an instance of the 4D.OutgoingMessage class +### Salida: una instancia de la clase 4D.OutgoingMessage -The request handler can return an object instance of the [4D.OutGoingMessage class](../API/OutgoingMessageClass.md), i.e. some full web content ready for a browser to handle, such as a file content. +El gestor de peticiones puede devolver una instancia de objeto de la clase [4D.OutGoingMessage](../API/OutgoingMessageClass.md), es decir, algún contenido web completo listo para que un navegador lo maneje, como un contenido de archivo. ### Ejemplo @@ -291,7 +291,7 @@ El archivo **HTTPHandlers.json**: La URL llamada es: http://127.0.0.1:8044/putFile?fileName=testFile -The binary content of the file is put in the body of the request and a POST verb is used. El nombre del archivo se da como parámetro (*fileName*) en la URL. Se recibe en el objeto [`urlQuery`](../API/IncomingMessageClass.md#urlquery) en la petición. +El contenido binario del archivo se coloca en el cuerpo de la petición y se utiliza un verbo POST. El nombre del archivo se da como parámetro (*fileName*) en la URL. Se recibe en el objeto [`urlQuery`](../API/IncomingMessageClass.md#urlquery) en la petición. ```4d //UploadFile class @@ -336,4 +336,4 @@ Function uploadFile($request : 4D.IncomingMessage) : 4D.OutgoingMessage ## Ver también -[Perfect mastery of your back end business logic thanks to HTTP requests handlers](https://blog.4d.com/master-http-requests-with-4d-request-handlers/) (blog post) \ No newline at end of file +[Maestría de las peticiones HTTP con los gestores de peticiones 4D](https://blog.4d.com/master-http-requests-with-4d-request-handlers/) (entrada del blog) \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-rules.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-rules.md index e087d1672ba793..4a997b5f1b63da 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-rules.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/http-rules.md @@ -1,9 +1,9 @@ --- id: http-rules -title: HTTP Rules +title: Reglas HTTP --- -You can define HTTP rules to control HTTP response headers for any requests received by the 4D web server, including REST requests. You can add, modify, or remove HTTP headers, send redirections or set the HTTP status. This feature is useful to implement security policies based upon the handling of headers. +Puede definir reglas HTTP para controlar los encabezados de respuesta HTTP para toda petición recibida por el servidor web 4D, incluyendo las peticiones REST. Puede añadir, modificar o eliminar los encabezados HTTP, enviar redirecciones o establecer el estado HTTP. This feature is useful to implement security policies based upon the handling of headers. To define HTTP rules, you just need to write some RegEx to declare the URL patterns you want to control, as well as how to modify response headers. You can set these rules using a `HTTPRules.json` file stored in the project folder, or using the *settings* parameter [`start()`](../API/WebServerClass.md#start) function of the web server object. @@ -14,7 +14,7 @@ HTTP rules are supported in the following contexts: - [scalable sessions](./sessions.md#enabling-web-sessions) or [no sessions](../settings/web.md#no-sessions) are enabled, - a web server run locally by 4D or 4D Server, including those [run by components](./webServerObject.md). -## How to set rules +## Cómo definir reglas You can declare HTTP response rules: @@ -29,23 +29,23 @@ If both a **HTTPRules.json** file and a call to the [`WEB Server`](../commands/w If the URI of the request does not match any of the RegEx patterns, the web server returns a default response. -## Rules Definition +## Definición de reglas The **HTTPRules.json** file or the [`.rules`](../API/WebServerClass.md#rules) property must contain a collection of **rule objects**. -A rule object is defined by: +Un objeto regla se define por: - a RegEx describing a URL pattern, e.g. "^(.\*\\.(jpg|jpeg|png|gif))" - the name of the action to execute for the HTTP response, e.g. "removeHeaders" - the value of the action, e.g. "X-Unwanted-Header1" -Other properties are ignored. +Las demás propiedades se ignoran. ### Patrones de la URL URL patterns are given using **regular expressions**. To declare a regular expression pattern, use the "RegExPattern" property name. -Ex: `"RegExPattern": "/Test/Authorized/(.*)"` +Ej.: `"RegExPattern": "/Test/Authorized/(.*)"` When the web server receives a request, **all** URL patterns are triggered sequentially in the given order, and all matching patterns are executed. In case of several actions modifying similar resources, the last executed action is taken into account. @@ -55,36 +55,41 @@ The following action keywords are supported: | Palabras clave | Tipo de valor | Descripción | | --------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `removeHeaders` | Text or Collection of texts | Header(s) to remove from the HTTP responses. If a header to remove does not exist in the response header, it is ignored. | +| `removeHeaders` | Texto o colección de textos | Header(s) to remove from the HTTP responses. If a header to remove does not exist in the response header, it is ignored. | | `addHeaders` | Object | Name (text) and value (text) of header(s) to add to the HTTP responses. | | `setHeaders` | Object | Name (text) and value (text) of header(s) to modify in the HTTP responses. If a header to modify does not exist in the response header, it is added. | | `denyAccess` | Boolean | true to deny access to the resource, false to allow access. When the access to a resource is denied, the web server returns a 403 status by default | | `redirect` | Text | Redirection URL. When a redirection is triggered, the web server returns a 302 status by default | -| `status` | Number | HTTP status | +| `status` | Number | Estado HTTP | -### Non-modifiable headers +### Encabezados no modificables -The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions: +Some headers could not be added, modified or removed: -- "Date", -- "Content-Length" +| Encabezado | Acción de añadir | Set | Remove | +| ---------------- | ---------------- | ------------- | ------ | +| Fecha | No | No | No | +| Content-Length | No | No | No | +| Content-Encoding | No | No | No | +| Vary | Sí | No | No | +| Set-Cookie | Sí | Añadir cookie | No | -Modifying these headers do not generate errors, however modifications will be ignored. +Unauthorized changes on these headers do not generate errors, however modifications will be ignored. ### Current rules -You can know the current rules using the [`.rules` property of the Web Server object](../API/WebServerClass.md#rules): +Puede conocer las reglas actuales utilizando la propiedad [`.rules` del objeto Web Server](../API/WebServerClass.md#rules): ``` var $rules : Collection -$rules:=WEB Server.rules //current rules +$rules:=WEB Server.rules //reglas actuales ``` ## Ejemplos Rules can be set using a `HTTPRules.json` file or the *settings* parameter of the [`.start()`](../API/WebServerClass.md#start) web server function. -### Using a HTTPRules.json file +### Utilización de un archivo HTTPRules.json ```json diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md index b2a3a87835a17c..dfb4e76c1380da 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WebServer/sessions.md @@ -201,9 +201,9 @@ Else End if ``` -:::note +:::tips Entradas de blog relacionadas -Para más ejemplos, por favor consulte la publicación de blog [Sesiones escalables para aplicaciones web avanzadas](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/). +[Sesiones escalables para aplicaciones web avanzadas](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: @@ -477,7 +477,7 @@ Se crea un nuevo usuario y se almacena cierta información en la sesión, especi - Sólo se pueden reutilizar las sesiones de la base de datos local (las sesiones creadas en servidores web de componentes no se pueden restaurar). - Los tokens no son compatibles con las sesiones cliente/servidor ni con las sesiones monousuario. -### Lifespan +### Vida útil Un testigo de sesión tiene una vida útil, y la propia sesión tiene una vida útil. El tiempo de vida útil del token de sesión puede definirse [en la creación de tokens](../API/SessionClass.md#createotp). Por defecto, el tiempo de vida del token es el mismo valor que el valor de [`.idleTimeout`](../API/SessionClass.md#idletimeout). diff --git a/i18n/es/docusaurus-plugin-content-docs/current/WritePro/managing-formulas.md b/i18n/es/docusaurus-plugin-content-docs/current/WritePro/managing-formulas.md index 608c443e16e75e..111fc3f6c16408 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/WritePro/managing-formulas.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/WritePro/managing-formulas.md @@ -100,7 +100,7 @@ When used in a formula within the table, the **This** keyword gives access to di | 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 | Index of the current row, starting from 1 | -| Cuando se ha definido una fuente de datos para la tabla | [This](../commands/this.md).table.dataSource | Objet (fórmula) | Datasource as a formula | +| 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 or Entity selection (usually) | table.dataSource evaluada | | In each data row when a table datasource returns a collection or an entity selection | [This](../commands/this.md).item.xxx | Cualquiera | Mapped to each item of the table datasource collection or entity selection, for example **This.item.firstName** if the associated entity has the *firstName* attribute | | | [This](../commands/this.md).itemIndex | Number | Index of the current item in the collection or entity selection, starting from 0 | diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md index b10646ebb340b8..a56241b39b33dc 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. ## Propiedades de configuración -| Nombre de la propiedad | Tipo | Descripción | Opcional | -| ---------------------- | ---- | ---------------------------------------------------------------------------- | -------------- | -| `apiKey` | Text | Su [llave OpenAI API](https://platform.openai.com/api-keys). | No para OpenAI | -| `baseURL` | Text | URL base para las peticiones de la API OpenAI. | Sí | -| `organization` | Text | Su ID de organización OpenAI. | Sí | -| `project` | Text | Su ID de proyecto OpenAI. | Sí | +| Nombre de la propiedad | Tipo | Descripción | Opcional | +| ---------------------- | ---- | ---------------------------------------------------------------------------- | --------------------------------------------------------- | +| `apiKey` | Text | Su [llave OpenAI API](https://platform.openai.com/api-keys). | Puede ser requerido por el proveedor | +| `baseURL` | Text | URL base para las peticiones de la API OpenAI. | Yes (if omitted = use OpenAI Platform) | +| `organization` | Text | Su ID de organización OpenAI. | Sí | +| `project` | Text | Su ID de proyecto OpenAI. | Sí | ### Propiedades HTTP adicionales @@ -29,9 +29,9 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. Crear una instancia de la clase cliente OpenAI. -| Nombre del argumento | Tipo | Descripción | -| ------------------------- | -------------- | ------------------------------------------------------- | -| `apiKey or configuration` | Texto u objeto | apiKey if Text or configuration Object. | +| Nombre del argumento | Tipo | Descripción | +| ------------------------- | -------------- | --------------------------------------------------------- | +| `apiKey or configuration` | Texto u objeto | apiKey si Text u objeto de configuración. | #### Llave API diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsAPI.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsAPI.md index 1ae10d8af589a6..132231e8669478 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsAPI.md @@ -5,7 +5,7 @@ title: OpenAIChatCompletionsAPI # OpenAIChatCompletionsAPI -The `OpenAIChatCompletionsAPI` class is designed for managing chat completions with OpenAI's API. It provides methods to create, retrieve, update, delete, and list chat completions. +La clase `OpenAIChatCompletionsAPI` está diseñada para gestionar las finalizaciones de chat con la API OpenAI. It provides methods to create, retrieve, update, delete, and list chat completions. https://platform.openai.com/docs/api-reference/chat diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md index 9c3c1c18655023..65f84b56f8d1ba 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md @@ -19,6 +19,6 @@ The `OpenAIChatCompletionsMessagesAPI` class is designed to interact with the Op | *parámetros* | `OpenAIChatCompletionsMessagesParameters` | Parámetros para filtrar y personalizar la respuesta. | | Resultado | Variant | The retrieved messages associated with the chat completion. | -The `list()` function retrieves messages associated with a specific chat completion ID. Lanza un error si `completionID` está vacío. If the *parameters* argument is not an instance of `OpenAIChatCompletionsMessagesParameters`, it will create a new instance using the provided parameters. +La función `list()` recupera los mensajes asociados a un ID de finalización de chat específico. Lanza un error si `completionID` está vacío. If the *parameters* argument is not an instance of `OpenAIChatCompletionsMessagesParameters`, it will create a new instance using the provided parameters. https://platform.openai.com/docs/api-reference/chat/getMessages diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md index 2d506c2ba0ee11..53bb4b8143fd98 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatCompletionsParameters.md @@ -13,38 +13,38 @@ The `OpenAIChatCompletionParameters` class is designed to handle the parameters ## Propiedades -| Propiedad | Tipo | Valor por defecto | Descripción | -| ----------------------- | ---------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | `"gpt-4o-mini"` | ID del modelo a utilizar. | -| `stream` | Boolean | `False` | Si se retransmite el progreso parcial. Si se define, los tokens se enviarán solo como datos. Fórmula de retrollamada necesaria. | -| `stream_options` | Object | `Null` | Property for stream=True. For example: `{include_usage: True}` | -| `max_completion_tokens` | Integer | `0` | The maximum number of tokens that can be generated in the completion. | -| `n` | Integer | `1` | How many completions to generate for each prompt. | -| `temperature` | Real | `-1` | Qué temperatura de muestreo utilizar, entre 0 y 2. Higher values make the output more random, while lower values make it more focused and deterministic. | -| `store` | Boolean | `False` | Whether or not to store the output of this chat completion request. | -| `reasoning_effort` | Text | `Null` | Constrains effort on reasoning for reasoning models. Currently supported values are `"low"`, `"medium"`, and `"high"`. | -| `response_format` | Object | `Null` | An object specifying the format that the model must output. Compatible with structured outputs. | -| `herramientas` | Collection | `Null` | A list of tools ([OpenAITool](OpenAITool.md)) the model may call. Only "function" type is supported. | -| `tool_choice` | Variant | `Null` | Controls which (if any) tool is called by the model. Can be `"none"`, `"auto"`, `"required"`, or specify a particular tool. | -| `prediction` | Object | `Null` | Static predicted output content, such as the content of a text file that is being regenerated. | +| Propiedad | Tipo | Valor por defecto | Descripción | +| ----------------------- | ---------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | `"gpt-4o-mini"` | ID del modelo a utilizar. | +| `stream` | Boolean | `False` | Si se retransmite el progreso parcial. Si se define, los tokens se enviarán solo como datos. Fórmula de retrollamada necesaria. | +| `stream_options` | Object | `Null` | Property for stream=True. Por ejemplo: `{include_usage: True}` | +| `max_completion_tokens` | Integer | `0` | The maximum number of tokens that can be generated in the completion. | +| `n` | Integer | `1` | How many completions to generate for each prompt. | +| `temperature` | Real | `-1` | Qué temperatura de muestreo utilizar, entre 0 y 2. Higher values make the output more random, while lower values make it more focused and deterministic. | +| `store` | Boolean | `False` | Whether or not to store the output of this chat completion request. | +| `reasoning_effort` | Text | `Null` | Constrains effort on reasoning for reasoning models. Los valores soportados actualmente son `"low"`, `"medium"` y `"high"`. | +| `response_format` | Object | `Null` | An object specifying the format that the model must output. Compatible with structured outputs. | +| `herramientas` | Collection | `Null` | A list of tools ([OpenAITool](OpenAITool.md)) the model may call. Only "function" type is supported. | +| `tool_choice` | Variant | `Null` | Controls which (if any) tool is called by the model. Puede ser `"none"`, `"auto"`, `"required"`, o especificar una herramienta concreta. | +| `prediction` | Object | `Null` | Static predicted output content, such as the content of a text file that is being regenerated. | ### Propiedades de retrollamada asíncrona -| Propiedad | Tipo | Descripción | -| ------------------------------------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| `onData` (or `formula`) | 4D.Function | A function to be called asynchronously when receiving data chunk. Asegúrese de que el proceso actual no termina. | +| Propiedad | Tipo | Descripción | +| ----------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `onData` (o `formula`) | 4D.Function | A function to be called asynchronously when receiving data chunk. Asegúrese de que el proceso actual no termina. | -`onData` will receive as argument an [OpenAIChatCompletionsStreamResult](./OpenAIChatCompletionsStreamResult.md). +`onData` recibirá como argumento un [OpenAIChatCompletionsStreamResult](./OpenAIChatCompletionsStreamResult.md). See [OpenAIParameters](./OpenAIParameters.md) for other callback properties. ## Response Format -The `response_format` parameter allows you to specify the format that the model must output. This is particularly useful when you need structured data or want to ensure the response follows a specific format. +El parámetro `response_format` le permite especificar el formato que el modelo debe salir. This is particularly useful when you need structured data or want to ensure the response follows a specific format. -### Supported Response Format Types +### Tipos de formato de respuesta soportados -#### 1. Text Format (Default) +#### 1. Formato de texto (por defecto) The default response format returns plain text: @@ -55,7 +55,7 @@ var $params := cs.OpenAIChatCompletionsParameters.new({ \ }) ``` -#### 2. JSON Object Format +#### 2. Formato de objetos JSON Forces the model to respond with valid JSON: @@ -79,7 +79,7 @@ $messages.push({ \ $result := $client.chat.completions.create($messages; $params) ``` -#### 3. JSON Schema Format (Structured Outputs) +#### 3. Formato de esquema JSON (salidas estructuradas) For precise control over the JSON structure, you can define a schema: @@ -115,20 +115,20 @@ $messages.push({ role: "user"; content: "Generate information about a person nam $result := $client.chat.completions.create($messages; $params) ``` -### JSON Schema Properties +### Propiedades del esquema JSON -When using `json_schema` type, you can specify: +Cuando se utiliza el tipo `json_schema`, puede especificar: -- **`name`**: A name for the schema -- **`description`**: A description of what the schema represents -- **`schema`**: The JSON schema definition -- **`strict`**: Whether to enforce strict adherence to the schema +- **`name`**: un nombre para el esquema +- **`description`**: una descripción de lo que representa el esquema +- **`schema`**: la definición de esquema JSON +- **`strict`**: si se debe hacer cumplir estrictamente el esquema ### Notas Importantes - Not all models support structured outputs (json_object or json_schema), so check model capabilities before using them. -- When using `json_object` format, you should include instructions in your system message to respond in JSON format -- The `json_schema` format provides the most control and ensures the response exactly matches your specified structure +- Cuando utilice el formato `json_object`, deberá incluir instrucciones en el mensaje del sistema para responder en formato JSON +- El formato `json_schema` ofrece el mayor control y garantiza que la respuesta coincida exactamente con la estructura especificada - Invalid JSON responses will result in an error when using JSON formats - JSON schema validation ensures type safety and required field presence diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatHelper.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatHelper.md index 6136f03703b7cb..e138dcd16d9c4c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatHelper.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatHelper.md @@ -74,14 +74,14 @@ $chatHelper.reset() // Clear all previous messages and tools Registers a tool with its handler function for automatic tool call handling. -The *handler* parameter can be: +El parámetro *handler* puede ser: - A **4D.Function**: Direct handler function -- An **Object**: An object containing a `formula` property matching the tool function name +- Un **Objeto**: un objeto que contiene una propiedad `formula` que coincide con el nombre de la función de la herramienta The handler function receives an object containing the parameters passed from the OpenAI tool call. This object contains key-value pairs where the keys match the parameter names defined in the tool's schema, and the values are the actual arguments provided by the AI model. -#### Register Tool Example +#### Ejemplo de herramienta de registro ```4D // Example 1: Simple registration with direct handler @@ -111,11 +111,11 @@ $chatHelper.registerTool($tool; $handlerObj) | ------------------- | ------- | -------------------------------------------------------- | | *toolsWithHandlers* | Variant | Object or Collection containing tools and their handlers | -Registers multiple tools at once. The parameter can be: +Registers multiple tools at once. El parámetro puede ser: - **Collection**: Array of tool objects (with handlers embedded or separate) - **Object**: Object with function names as keys mapping to tool definitions -- **Object with `tools` attribute**: Object containing a `tools` collection and formula properties matching tool names +- **Objeto con atributo `tools`**: objeto que contiene una colección `tools` y propiedades de fórmulas que coinciden con nombres de herramientas #### Register Multiple Tools Example diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md index e74d6fc2364cee..1ad09d7c28ce91 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsAPI.md @@ -5,7 +5,7 @@ title: OpenAIEmbeddingsAPI # OpenAIEmbeddingsAPI -The `OpenAIEmbeddingsAPI` provides functionalities to create embeddings using OpenAI's API. +`OpenAIEmbeddingsAPI` ofrece funcionalidades para crear integraciones utilizando la API de OpenAI. https://platform.openai.com/docs/api-reference/embeddings diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsResult.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsResult.md index 35c45022b6929c..0e2185eb101695 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsResult.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIEmbeddingsResult.md @@ -11,13 +11,13 @@ title: OpenAIEmbeddingsResult ## Propiedades calculadas -| Propiedad | Tipo | Descripción | -| ------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `model` | Text | Returns the model used to compute the embedding | -| `vector` | `4D.Vector` | Devuelve el primer `4D.Vector` de la colección `vectors`. | -| `vectors` | Collection | Devuelve una colección de `4D.Vector`. | -| `embedding` | [OpenAIEmbedding](OpenAIEmbedding.md) | Returns the first [OpenAIEmbedding](OpenAIEmbedding.md) from the `embeddings` collection. | -| `embeddings` | Collection | Returns a collection of [OpenAIEmbedding](OpenAIEmbedding.md). | +| Propiedad | Tipo | Descripción | +| ------------ | ------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| `model` | Text | Returns the model used to compute the embedding | +| `vector` | `4D.Vector` | Devuelve el primer `4D.Vector` de la colección `vectors`. | +| `vectors` | Collection | Devuelve una colección de `4D.Vector`. | +| `embedding` | [OpenAIEmbedding](OpenAIEmbedding.md) | Devuelve el primer [OpenAIEmbedding](OpenAIEmbedding.md) de la colección `embeddings`. | +| `embeddings` | Collection | Returns a collection of [OpenAIEmbedding](OpenAIEmbedding.md). | ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImage.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImage.md index 09e15a20df5e90..9009658de82b79 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImage.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImage.md @@ -5,17 +5,17 @@ title: OpenAIImage # OpenAIImage -The `OpenAIImage` class represents an image generated by the OpenAI API. It provides properties for accessing the generated image in different formats and methods for converting this image to different types. +La clase `OpenAIImage` representa una imagen generada por la API OpenAI. It provides properties for accessing the generated image in different formats and methods for converting this image to different types. https://platform.openai.com/docs/api-reference/images/object ## Propiedades -| Propiedad | Tipo | Descripción | -| ---------------- | ------- | ----------------------------------------------------------------------------------------------------------- | -| `url` | Text | The URL of the generated image, if `response_format` is `url` (default). | -| `b64_json` | Text | The base64-encoded JSON of the generated image, if `response_format` is `b64_json`. | -| `revised_prompt` | Variant | The prompt that was used to generate the image, if there was any revision to the prompt. | +| Propiedad | Tipo | Descripción | +| ---------------- | ------- | ------------------------------------------------------------------------------------------------------------- | +| `url` | Text | La URL de la imagen generada, si `response_format` es `url` (por defecto). | +| `b64_json` | Text | The base64-encoded JSON of the generated image, if `response_format` is `b64_json`. | +| `revised_prompt` | Variant | The prompt that was used to generate the image, if there was any revision to the prompt. | ## Funciones diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md index 167f8ab9d4ac4b..692705efcc3fa2 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImageParameters.md @@ -13,13 +13,13 @@ The `OpenAIImageParameters` class is designed to configure and manage the parame ## Propiedades -| Nombre de la propiedad | Tipo | Valor por defecto | Descripción | -| ---------------------- | ------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | "dall-e-2" | Especifica el modelo a utilizar para la generación de imágenes. | -| `n` | Integer | 1 | The number of images to generate (must be between 1 and 10; only `n=1` is supported for `dall-e-3`). | -| `size` | Text | "1024x1024" | El tamaño de las imágenes generadas. Debe ajustarse a las especificaciones del modelo. | -| `style` | Text | "" | The style of the generated images (must be either `vivid` or `natural`). | -| `response_format` | Text | "url" | The format for returned images, can be either `url` or `b64_json`. | +| Nombre de la propiedad | Tipo | Valor por defecto | Descripción | +| ---------------------- | ------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | "dall-e-2" | Especifica el modelo a utilizar para la generación de imágenes. | +| `n` | Integer | 1 | El número de imágenes a generar (debe estar entre 1 y 10; sólo `n=1` es soportado para `dall-e-3`). | +| `size` | Text | "1024x1024" | El tamaño de las imágenes generadas. Debe ajustarse a las especificaciones del modelo. | +| `style` | Text | "" | El estilo de las imágenes generadas (debe ser `vivid` o `natural`). | +| `response_format` | Text | "url" | El formato de las imágenes devueltas puede ser `url` o `b64_json`. | ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImagesAPI.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImagesAPI.md index 3797cb01095e30..4ffe3a9911bd80 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImagesAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIImagesAPI.md @@ -5,7 +5,7 @@ title: OpenAIImagesAPI # OpenAIImagesAPI -The `OpenAIImagesAPI` provides functionalities to generate images using OpenAI's API. +La `OpenAIImagesAPI` ofrece funcionalidades para generar imágenes utilizando la API de OpenAI. https://platform.openai.com/docs/api-reference/images diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md index f8259807424811..ebb12bfbed10a5 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md @@ -9,13 +9,13 @@ The `OpenAIMessage` class represents a structured message containing a role, con ## Propiedades -| Propiedad | Tipo | Descripción | -| -------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rol` | Text | The role of the message (e.g., "user", "assistant", "system", "tool"). | -| `contenido` | Variant | The content of the message, which can be a text or a collection of objects. | -| `user` | Text | An optional property representing the user associated with the message. | -| `tool_calls` | Collection | A collection of tool calls requested by the assistant. Each tool call contains an `id`, `type`, and a `function` object. | -| `tool_call_id` | Text | The ID of the tool call that this message is responding to (used when `role` is "tool"). | +| Propiedad | Tipo | Descripción | +| -------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `rol` | Text | The role of the message (e.g., "user", "assistant", "system", "tool"). | +| `contenido` | Variant | The content of the message, which can be a text or a collection of objects. | +| `user` | Text | An optional property representing the user associated with the message. | +| `tool_calls` | Collection | A collection of tool calls requested by the assistant. Cada llamada a una herramienta contiene un objeto `id`, `type` y `function`. | +| `tool_call_id` | Text | El ID de la llamada a la herramienta a la que responde este mensaje (se utiliza cuando `role` es "tool"). | ## Propiedades calculadas @@ -48,7 +48,7 @@ var $message:=cs.AIKit.OpenAIMessage({role: "user"; content: "Hello!"}) $message.addImageURL("http://example.com/image.jpg"; "high") ``` -### Respond to a tool call message +### Responder a un mensaje de llamada de herramienta When an assistant needs to use external functions, it generates a message with `tool_calls` to request function execution. @@ -77,7 +77,7 @@ When you receive a tool call message, you need to: 1. **Extract the function information:** - `function.name`: The name of the function to call (must match a function defined in your [OpenAITool](OpenAITool.md) - you can select code to execute according to this name) - `function.arguments`: A JSON string containing the function parameters that must be parsed with `JSON Parse` - - `id`: The unique identifier for this specific tool call + - `id`: el identificador único para esta llamada específica a la herramienta 2. **Execute the function:** Parse the arguments (which is a JSON string) and call the corresponding function that you defined in your OpenAITool configuration. diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIModeration.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIModeration.md index 945951ab25b085..3c92f30cc3c7c7 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIModeration.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIModeration.md @@ -5,7 +5,7 @@ title: OpenAIModeration # OpenAIModeration -The `OpenAIModeration` class is designed to handle moderation results from the OpenAI API. It contains properties for storing the moderation ID, model used, and the results of the moderation. +La clase `OpenAIModeration` está diseñada para manejar los resultados de moderación de la API OpenAI. It contains properties for storing the moderation ID, model used, and the results of the moderation. https://platform.openai.com/docs/api-reference/moderations/object diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIModerationsAPI.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIModerationsAPI.md index 72fdb9d849830a..8f949e42ee4570 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIModerationsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIModerationsAPI.md @@ -5,7 +5,7 @@ title: OpenAIModerationsAPI # OpenAIModerationsAPI -The `OpenAIModerationsAPI` is responsible for classifying if text and/or image inputs are potentially harmful. +La interfaz `OpenAIModerationsAPI` se encarga de clasificar si las entradas de texto y/o imágenes son potencialmente dañinas. https://platform.openai.com/docs/api-reference/moderations diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md index 2f9e0d4190f873..dbe32b1770da06 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md @@ -61,6 +61,17 @@ Use these callback properties for more granular control over success and error h See [documentation about asynchronous code for examples](../asynchronous-call.md) +Use these callback properties for more granular control over success and error handling: + +| Propiedad | Tipo | Descripción | +| ------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `onResponse` | 4D.Function | A function to be called asynchronously when the request finishes **successfully**. Asegúrese de que el proceso actual no termina. | +| `onError` | 4D.Function | A function to be called asynchronously when the request finishes **with errors**. Asegúrese de que el proceso actual no termina. | + +> The callback function will receive the same result object type (one of [OpenAIResult](./OpenAIResult.md) child classes) that would be returned by the function in synchronous code. + +See [documentation about asynchronous code for examples](../asynchronous-call.md) + ### Propiedades de la red | Propiedad | Tipo | Descripción | @@ -84,7 +95,7 @@ See [documentation about asynchronous code for examples](../asynchronous-call.md ## Clases heredadas -Several classes inherit from `OpenAIParameters` to extend its functionality for specific use cases. A continuación se muestran algunas de las clases que extienden `OpenAIParameters`: +Varias clases heredan de `OpenAIParameters` para ampliar su funcionalidad en casos de uso específicos. A continuación se muestran algunas de las clases que extienden `OpenAIParameters`: - [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - [OpenAIChatCompletionsMessagesParameters](OpenAIChatCompletionsMessagesParameters.md) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIResult.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIResult.md index 0e88534c6bfd9a..6122c517c37e21 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIResult.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIResult.md @@ -50,7 +50,7 @@ Lanza el primer error de la colección `errors`. This function is useful for pro ## Clases heredadas -Several classes inherit from `OpenAIResult` to extend its functionality for specific use cases. Below are some of the classes that extend `OpenAIResult`: +Varias clases heredan de `OpenAIResult` para ampliar su funcionalidad en casos de uso específicos. A continuación se muestran algunas de las clases que extienden `OpenAIResult`: - [OpenAIChatCompletionsResult](OpenAIChatCompletionsResult.md) - [OpenAIChatCompletionsStreamResult](OpenAIChatCompletionsStreamResult.md) diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAITool.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAITool.md index 4a2bbe4632aec8..e46e25346cc85a 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAITool.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAITool.md @@ -20,14 +20,14 @@ See [OpenAIMessage](OpenAIMessage.md) to see how to responds to a tool call. | `tipo` | Text | `"function"` | El tipo de herramienta. Currently supports `"function"`, `"custom"`, and other built-in types. | | `strict` | Boolean | `False` | Whether to enforce strict schema validation for function parameters. | -### Common Properties +### Propiedades comunes | Propiedad | Tipo | Descripción | | ------------- | ---- | ------------------------------------------------------------------------------ | | `name` | Text | The name of the tool, which works as an identifier. | | `descripción` | Text | Description of the tool to help the LLM decide when to use it. | -### Function-specific Properties +### Propiedades específicas de la función | Propiedad | Tipo | Descripción | | ------------ | ------ | -------------------------------------------------------------------------------- | @@ -46,9 +46,9 @@ See [OpenAIMessage](OpenAIMessage.md) to see how to responds to a tool call. Crea una nueva instancia de OpenAITool. The constructor accepts both simplified format and OpenAI API format. -#### Supported formats +#### Formatos soportados -**Simplified format:** +**Formato simplificado:** ```4d var $tool := cs.OpenAITool.new({ \ @@ -64,7 +64,7 @@ var $tool := cs.OpenAITool.new({ \ }) ``` -**OpenAI API format:** +**Formato de la API OpenAI** ```4d var $tool := cs.OpenAITool.new({ \ @@ -86,7 +86,7 @@ var $tool := cs.OpenAITool.new({ \ ## Integration with Chat Completions -Tools are typically used with the `OpenAIChatCompletionsParameters.tools` property: +Las herramientas se utilizan normalmente con la propiedad `OpenAIChatCompletionsParameters.tools`: ```4d var $parameters := cs.AIKit.OpenAIChatCompletionsParameters.new({ \ @@ -95,7 +95,7 @@ var $parameters := cs.AIKit.OpenAIChatCompletionsParameters.new({ \ }) ``` -> **Note:** You can pass plain objects directly - they will be automatically converted to `OpenAITool` instances. There's no need to explicitly create `OpenAITool` objects. +> **Nota:** puede pasar objetos planos directamente, se convertirán automáticamente en instancias `OpenAITool`. No es necesario crear explícitamente objetos `OpenAITool`. ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/asynchronous-call.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/asynchronous-call.md index aec2f38c8ea0a3..ff565bb2601c7b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/asynchronous-call.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/asynchronous-call.md @@ -11,11 +11,11 @@ To make asynchronous calls, you must provide a callback `4D.Function`(`Formula`) The callback function will receive the same result object type (one of [OpenAIResult](Classes/OpenAIResult.md) child classes) that would be returned by the function in synchronous code. Ver ejemplos más abajo. -## Process Considerations +## Consideraciones sobre el proceso The asynchronous method is based on [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), so the response will be received within the current process. -> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. In such cases, consider using `CALL WORKER` or `CALL FORM`. +> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. En estos casos, considere la posibilidad de utilizar `CALL WORKER` o `CALL FORM`. ## Ejemplos de uso diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md index 80ac8ee4f5d3e5..5b5e136edec480 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Proveedores Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +Para ello sólo tiene que definir la `baseURL` a la del proveedor y utilizar su clave api si es necesario. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Algunos de ellos ## Remoto -| Proveedor | Url base | +| Proveedor | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Algunos de ellos ## Local -| Proveedor | Url base por defecto | Doc | +| Proveedor | Base URL por defecto | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/es/docusaurus-plugin-content-docs/current/aikit/overview.md b/i18n/es/docusaurus-plugin-content-docs/current/aikit/overview.md index e2e93e051c023d..6af02947ee1768 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/aikit/overview.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/aikit/overview.md @@ -21,7 +21,7 @@ En primer lugar, inicialice el cliente OpenAI utilizando su llave API var $client:=cs.AIKit.OpenAI.new("your api key") ``` -Para una API de [proveedor compatible](compatible-openai.md), puede configurar la URL del servidor definiendo el parámetro `baseURL`. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -43,7 +43,7 @@ var $result:=$client..() El `$result` contiene el `HTTPRequest`, un estado `success`, una colección de `errors` y más. Ver [OpenAIResult](Classes/OpenAIResult.md) -Vea algunos ejemplos a continuación. +See some examples below. #### Chat diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png new file mode 100644 index 00000000000000..7c9d523d0372f1 Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png new file mode 100644 index 00000000000000..8a4a075fd1f5d3 Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png new file mode 100644 index 00000000000000..b339a988df6172 Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict2646292.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict2646292.en.png deleted file mode 100644 index 2f6dd9ff7667f9..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict2646292.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict2646294.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict2646294.en.png deleted file mode 100644 index c5706f5b23244e..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict2646294.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3033006.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3033006.en.png deleted file mode 100644 index ad7e034e246705..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3033006.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3033008.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3033008.en.png deleted file mode 100644 index 51f1aa5c128b59..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3033008.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3071271.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3071271.en.png deleted file mode 100644 index e7f020cc979f5e..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3071271.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3307937.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3307937.en.png deleted file mode 100644 index fb12b681bed355..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3307937.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3307941.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3307941.en.png deleted file mode 100644 index 0016bc2e11049d..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3307941.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3308424.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3308424.en.png deleted file mode 100644 index 17c545dcd5e7cc..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3308424.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3513503.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3513503.en.png deleted file mode 100644 index eddf97544e0575..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3513503.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3513505.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3513505.en.png deleted file mode 100644 index 5e8669f5c2aace..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3513505.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3541581.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3541581.en.png deleted file mode 100644 index 8d2321c8b19748..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3541581.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3626363.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3626363.en.png deleted file mode 100644 index 823fcf7c97fbcb..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3626363.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3752166.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3752166.en.png deleted file mode 100644 index 40ec61e14638df..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3752166.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3752176.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3752176.en.png deleted file mode 100644 index 1b09211ea8ac30..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3752176.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3893246.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3893246.en.png deleted file mode 100644 index 84c289b866e8e6..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3893246.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3893248.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3893248.en.png deleted file mode 100644 index c21d5b60eeb195..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict3893248.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619596.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619596.en.png deleted file mode 100644 index 0c0a886b53349f..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619596.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619694.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619694.en.png deleted file mode 100644 index 4ace1703dab061..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619694.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619865.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619865.en.png deleted file mode 100644 index e708853ddf2c4c..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict4619865.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5562054.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5562054.en.png deleted file mode 100644 index dee167c5ccf7c3..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5562054.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5562058.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5562058.en.png deleted file mode 100644 index f84f46638756cb..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5562058.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761667.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761667.en.png deleted file mode 100644 index a6e16bcd3e31bf..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761667.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761669.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761669.en.png deleted file mode 100644 index 6f56866e06cff7..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761669.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761671.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761671.en.png deleted file mode 100644 index d2b933e6253bd5..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761671.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761673.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761673.en.png deleted file mode 100644 index eef0da9b30d61f..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761673.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761675.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761675.en.png deleted file mode 100644 index f21fa89866c9ef..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761675.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761677.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761677.en.png deleted file mode 100644 index b6b82029e3bdaa..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5761677.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5859437.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5859437.en.png deleted file mode 100644 index 8a546866502013..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5859437.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907021.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907021.en.png deleted file mode 100644 index bcbe548297f87d..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907021.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907023.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907023.en.png deleted file mode 100644 index 6eba7f2baedff6..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907023.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907026.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907026.en.png deleted file mode 100644 index d526c51578eb27..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907026.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907030.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907030.en.png deleted file mode 100644 index 964245707b6717..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5907030.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5941073.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5941073.en.png deleted file mode 100644 index 66f10af3210774..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict5941073.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014414.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014414.en.png deleted file mode 100644 index 1454f02b49f34c..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014414.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014426.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014426.en.png deleted file mode 100644 index 5430cc882d6f13..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014426.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014429.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014429.en.png deleted file mode 100644 index 12cb8442c5f68c..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6014429.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6022144.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6022144.en.png deleted file mode 100644 index ab1d4670b16d55..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6022144.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6131919.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6131919.en.png deleted file mode 100644 index d8b2b0f013f901..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6131919.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260026.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260026.en.png deleted file mode 100644 index 25b899cdd7ca87..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260026.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260033.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260033.en.png deleted file mode 100644 index d8271cd06a6220..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260033.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260036.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260036.en.png deleted file mode 100644 index a93bbc2deb6580..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6260036.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421031.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421031.en.png deleted file mode 100644 index f338bd44caeb38..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421031.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421340.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421340.en.png deleted file mode 100644 index a00a64fa003fe5..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421340.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421342.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421342.en.png deleted file mode 100644 index e7bbdb0445e7dc..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421342.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421344.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421344.en.png deleted file mode 100644 index b1da7d4f717589..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421344.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421356.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421356.en.png deleted file mode 100644 index e19848f65d2951..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6421356.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434575.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434575.en.png deleted file mode 100644 index b98b7a71deb16b..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434575.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434579.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434579.en.png deleted file mode 100644 index 232ad5653b5bdf..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434579.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434721.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434721.en.png deleted file mode 100644 index 199e62f81ef736..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434721.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434723.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434723.en.png deleted file mode 100644 index 480da0bfc5f80f..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434723.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434756.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434756.en.png deleted file mode 100644 index ffdcce4bd30899..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6434756.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6441966.en.png b/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6441966.en.png deleted file mode 100644 index e6b76b3b690664..00000000000000 Binary files a/i18n/es/docusaurus-plugin-content-docs/current/assets/en/WritePro/pict6441966.en.png and /dev/null differ diff --git a/i18n/es/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md b/i18n/es/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md index a10a8e823b4cad..770c959bbb2560 100644 --- a/i18n/es/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/es/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md @@ -127,5 +127,9 @@ El siguiente ejemplo evita una nueva conexión entre las 2 y 4 A.M.   // Método base On Server Open Connection  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time"projectMethod"
  • "formObjectMethod"
  • "formmethod"
  • "databaseMethod"
  • "triggerMethod"
  • "executeOnServer" (when calling a project method with the *Execute on Server attribute*)
  • "executeFormula" (when executing a formula via [PROCESS 4D TAGS](../commands-legacy/process-4d-tags.md) or the evaluation of a formula in a 4D Write Pro document)
  • "classFunction"
  • "formMethod"
  • | "type":"formMethod" | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md b/i18n/es/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md index bfc77eab3e903f..8deb72f19dca7d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barra de herramientas contiene los siguientes elementos: | Icono | Nombre | Descripción | | ------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Ejecutar el formulario | Se utiliza para probar la ejecución del formulario. Al presionar este botón, 4D abre una nueva ventana y muestra el formulario en su contexto (lista de registros para un formulario lista y página de registro actual para un formulario detallado). El formulario se ejecuta en el proceso principal. | -| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, mover y redimensionar los objetos del formulario.

    **Nota**: cuando se selecciona un objeto de tipo Texto o Área de Grupo, al presionar la tecla **Intro** se pasa al modo de edición.

    | +| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | | ![](../assets/en/FormEditor/zOrder.png) | [Orden de entrada](#data-entry-order) | Pasa al modo "Orden de entrada", donde es posible ver y cambiar el orden de entrada actual del formulario. Tenga en cuenta que las marcas permiten ver el orden de entrada actual, sin dejar de trabajar en el formulario. | | ![](../assets/en/FormEditor/moving.png) | [Desplazamiento](#moving-objects) | Pasa al modo " Desplazamiento ", en el que es posible llegar rápidamente a cualquier parte del formulario utilizando la función de arrastrar y soltar en la ventana. El cursor toma la forma de una mano. Este modo de navegación es especialmente útil cuando se hace zoom en el formulario. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar la escala de visualización del formulario (100% por defecto). Puede pasar al modo "Zoom" haciendo clic en la lupa o pulsando directamente en la barra correspondiente a la escala deseada. Esta función se detalla en la sección anterior. | @@ -146,11 +146,11 @@ Antes de poder realizar cualquier operación en un objeto (como cambiar el ancho Para seleccionar un objeto utilizando la barra de herramientas: -1. Haga clic en la herramienta Flecha de la barra de herramientas.

    ![](../assets/en/FormEditor/selection.png)

    +1. Haga clic en la herramienta Flecha de la barra de herramientas.
    ![](../assets/en/FormEditor/selection.png) -

    Cuando se mueve el puntero en el área del formulario, se convierte en un puntero estándar con forma de flecha

    . +
    Cuando se mueve el puntero en el área del formulario, se convierte en un puntero estándar con forma de flecha. -2. Haga clic en el objeto que desea seleccionar. Las manillas de redimensionamiento identifican el objeto seleccionado.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Haga clic en el objeto que desea seleccionar. Las manillas de redimensionamiento identifican el objeto seleccionado.
    ![](../assets/en/FormEditor/selectResize.png) Para seleccionar un objeto utilizando la Lista de propiedades: @@ -235,13 +235,12 @@ La agrupación sólo afecta a los objetos en el editor de formularios. Cuando se Para agrupar los objetos: 1. Seleccione los objetos que desea agrupar. -2. Elija **Agrupar** en el menú Objetos. OR Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    -4D marca el límite de los objetos recién agrupados con marcas. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. +2. Elija **Agrupar** en el menú Objetos. OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. Para desagrupar un grupo de objetos: 1. Seleccione el grupo de objetos que desea desagrupar. -2. Elija **Desagrupar** en el menú **Objetos**.

    O

    Haga clic en el botón **Desagrupar** (menú del botón **Agrupar**) de la barra de herramientas del editor de formularios.

    Si **Desagrupar** está atenuado, significa que el objeto seleccionado ya está separado en su forma más simple.

    4D marca los bordes de los objetos individuales con marcas. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca los bordes de los objetos individuales con marcas. ### Alinear objetos @@ -268,9 +267,10 @@ El Asistente de Alineación permite realizar cualquier tipo de alineación y/o d Para mostrar esta caja de diálogo, seleccione los objetos que desee alinear y, a continuación, elija el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. -- En las áreas "Alineación izquierda/derecha" y/o "Alineación superior/inferior", haga clic en el icono que corresponde a la alineación que desea realizar.

    El área de ejemplo muestra los resultados de su selección.

    +- En las áreas "Alineación izquierda/derecha" y/o "Alineación superior/inferior", haga clic en el icono que corresponda a la alineación que desee realizar.
    El área de ejemplo muestra los resultados de su selección. + +- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. En este caso, la posición del objeto de referencia no se alterará. -- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor.

    Para alinear los objetos a un objeto específico, seleccione la opción **Alinear en** y seleccione el objeto al que desea que se alineen los demás objetos de la lista de objetos. En este caso, la posición del objeto de referencia no se alterará.

    Puede previsualizar los resultados de la alineación haciendo clic en el botón **Previsualización**. Los objetos se alinean entonces en el editor de formularios, pero como la caja de diálogo permanece en el primer plano, aún puede cancelar o aplicar la alineación. > Esta caja de diálogo le permite alinear y distribuir objetos en una sola operación. Para más información sobre cómo distribuir objetos, consulte [Repartir objetos](#distribuir-objetos). @@ -304,7 +304,7 @@ Para repartir los objetos con igual espacio: 1. Seleccione tres o más objetos y haga clic en la herramienta Distribuir correspondiente. -2. En la barra de herramientas, haga clic en la herramienta de distribución que corresponde a la distribución que desea aplicar.

    ![](../assets/en/FormEditor/distributionTool.png)

    O

    Seleccione un comando del menú de distribución en el submenú **Alinear** del menú **Objeto** o en el menú contextual del editor.

    4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: @@ -312,9 +312,9 @@ Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. Aparece la siguiente caja de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Icono de distribución horizontal estándar)

    El área de ejemplo muestra los resultados de su selección. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. Para efectuar una repartición estándar que utilice el esquema estándar, haga clic en **Previsualización** o *Aplicar*.

    En este caso, 4D realizará una distribución estándar, de modo que los objetos se dispongan con la misma cantidad de espacio entre ellos.

    For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor.

    Para efectuar una distribución específica, seleccione la opción **Distribuir** (por ejemplo, si desea distribuir los objetos en función de la distancia a su lado derecho). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    - Horizontalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los lados izquierdo, central (hor.) y derecho de los objetos seleccionados. - Verticalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los bordes superiores, centros (vert.) y bordes inferiores de los objetos seleccionados. @@ -367,11 +367,11 @@ Este párrafo describe la visualización y la modificación del orden de entrada Para ver o cambiar el orden de entrada: -1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:
    ![](../assets/en/FormEditor/zOrder.png)
    El puntero se convierte en un puntero de orden de entrada y 4D dibuja una línea en el formulario mostrando el orden en que selecciona los objetos durante la entrada de datos. Ver y cambiar el orden de entrada de datos son las únicas acciones que puede realizar hasta que haga clic en cualquier herramienta de la paleta Herramientas. -2. Para cambiar el orden de entrada de datos, sitúe el puntero sobre un objeto del formulario y, mientras mantiene presionado el botón del ratón, arrastre el puntero hasta el objeto que desee que siga en el orden de entrada de datos.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D ajustará la orden de entrada en consecuencia. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita el paso 2 tantas veces como sea necesario para establecer el orden de entrada de datos que desee. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/EntityClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/EntityClass.md index ac489e35bd61c7..36b6aaf3f75cb6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/EntityClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/EntityClass.md @@ -396,7 +396,7 @@ El objeto devuelto por `.drop()` contiene las siguientes propiedades: | ----------------------------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dk status entity does not exist anymore` | 5 | La entidad ya no existe en los datos. Este error puede ocurrir en los siguientes casos:
  • la entidad ha sido eliminada (el marcador ha cambiado y ahora el espacio de memoria está libre)
  • la entidad ha sido eliminada y reemplazada por otra con otra clave primaria (el marcador ha cambiado y una nueva entidad ahora utiliza el espacio memoria). Cuando se utiliza entity.drop( ), este error puede ser devuelto cuando se utiliza la opción dk force drop if stamp changed. Cuando se utiliza entity.lock(), se puede devolver este error cuando la opción dk reload if stamp changed es utilizada
  • **statusText asociado**: "Entity does not exist anymore" | | `dk status locked` | 3 | La entidad está bloqueada por un bloqueo pesimista.
    **statusText asociado**: "Already locked" | -| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **Associated statusText**: "Other error" | +| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **statusText asociado**\*: "Other error" | | `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save( )`: error only if the `dk auto merge` option is not used
  • with `.drop( )`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used
  • **Associated statusText**: "Stamp has changed"
  • | | `dk status wrong permission` | 1 | Los privilegios actuales no permiten suprimir la entidad. **Associated statusText**: "Permission Error" | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/SessionClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/SessionClass.md index f9fd60a5858123..e0e303e07ca47a 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/SessionClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/SessionClass.md @@ -120,7 +120,7 @@ $isGuest:=Session.isGuest() //$isGuest es True | Parámetros | Tipo | | Descripción | | ---------- | ------- | :-------------------------: | --------------------------------------------------- | | lifespan | Integer | -> | Duración de la vida del token de sesión en segundos | -| Resultado | Text | <- | UUID of the OTP token | +| Resultado | Text | <- | UUID del token OTP | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/TCPEventClass.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/TCPEventClass.md index 1bd070ea6af91a..6d9eb04f026eba 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/TCPEventClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/API/TCPEventClass.md @@ -16,7 +16,7 @@ The `TCPEvent` class provides information about events occurring during the life ### Objeto TCPEvent -A `TCPEvent` object is immutable and non-streamable. +Un objeto `TCPEvent` es inmutable y no se puede transmitir. Las siguientes propiedades están disponibles: @@ -81,9 +81,9 @@ La propiedad `.type` contiene el tipo del eve - `"connection"`: Indicates that a TCPConnection was successfully established. - `"data"`: indica que los datos han sido recibidos. -- `"error"`: Indicates that an error occurred during the TCPConnection. -- `"close"`: Indicates that the TCPConnection has been properly closed. -- `"terminate"`: Indicates that the TCPConnection is about to be released. +- `"error"`: indica que se ha producido un error durante la TCPConnection. +- `"close"`: indica que la TCPConnection ha sido correctamente cerrada. +- `"terminate"`: indica que el TCPConnection está a punto de ser liberado. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Admin/cli.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Admin/cli.md index cdc65c6656666b..6d4f22b6de1924 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Admin/cli.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Admin/cli.md @@ -55,7 +55,7 @@ Sintaxis: | `--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-legacy/get-database-parameter.md) (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ón
  • No se muestra ningún icono en el dock o la barra de tareas
  • La 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-legacy/set-database-parameter.md), 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-legacy/alert.md), Abort para un diálogo de error...). All intercepted commands(\*) are logged in the diagnostic log.

  • For maintenance needs, you can send any text to standard output streams using the [LOG EVENT](../commands-legacy/log-event.md) command. Tenga en cuenta que las aplicaciones 4D sin interfaz sólo pueden cerrarse mediante una llamada a [QUIT 4D](../commands-legacy/quit-4d.md) 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). In this mode:
  • No file containing data is opened, even if specified in the command line or the `.4DLink` file, or when using the `CREATE DATA FILE` and `OPEN DATA FILE` commands.
  • Los comandos que manipulan datos arrojarán un error. For example, `CREATE RECORD` throws “no table to apply the command to”.

  • **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.
  • If passed using the `.4DLink` file, dataless mode only applies to the database specified in the `.4DLink` file. Para más información sobre los archivos `.4DLink`, ver [Atajos para abrir proyectos](../GettingStarted/creating.md#project-opening-shortcuts).
  • | +| `--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). In this mode:
  • No file containing data is opened, even if specified in the command line or the `.4DLink` file, or when using the `CREATE DATA FILE` and `OPEN DATA FILE` commands.
  • Los comandos que manipulan datos arrojarán un error. For example, `CREATE RECORD` throws “no table to apply the command to”.

  • **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). | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md index 41471d66e3a903..cc4dcb07b55793 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md @@ -774,7 +774,7 @@ Se declaran clases singleton añadiendo la(s) palabra(s) clave(s) apropiada(s) a ::: -El singleton de la clase se instanciará en la primera llamada del comando [`cs..me`](../API/ClassClass.md#me) property. El singleton instanciado de la clase se devuelve siempre cuando se utiliza la propiedad [`me`](../API/ClassClass.md#me). +El singleton de la clase se instanciará en la primera llamada de la propiedad [`cs.[.me`](../API/ClassClass.md#me). El singleton instanciado de la clase se devuelve siempre cuando se utiliza la propiedad [`me`](../API/ClassClass.md#me). Si necesita instanciar un singleton con parámetros, también puede llamar la función [`new()`](../API/ClassClass.md#new). En este caso, se recomienda instanciar el singleton en algún código ejecutado al inicio de la aplicación. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md index b58f64c736ee2c..adcaaac1e2b4ee 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md @@ -7,7 +7,7 @@ Un componente 4D es un conjunto de código y de formularios 4D que representan u ## Instalación de los componentes -Varios componentes están [preinstalados en el entorno de desarrollo 4D](Extensions/overview.md), pero muchos componentes 4D de la comunidad 4D [están disponibles en GitHub](https://github.com/search?q=4d-component&type=Repositories). Adicionalmente, puede [desarrollar sus propios componentes 4D](Extensions/develop-components.md). +Varios componentes están [preinstalados en el entorno de desarrollo 4D](Extensions/overview.md), pero muchos componentes 4D de la comunidad 4D [están disponibles en GitHub](https://github.com/topics/4d-component). Adicionalmente, puede [desarrollar sus propios componentes 4D](Extensions/develop-components.md). La instalación y carga de componentes en sus proyectos 4D se manejan a través del [gestor de dependencias de 4D](../Project/components.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Desktop/labels.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Desktop/labels.md index 45de20b2ad2c1e..2b68e41e9c4cb2 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Desktop/labels.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Desktop/labels.md @@ -166,7 +166,7 @@ You can use dedicated table forms and project methods to print labels with calcu Here, in a table form named "label", we added the *myVar* variable: ![](../assets/en/Desktop/label-example1.png) -2. Create a `setMyVar` project method with the following code: +2. Crea un método proyecto llamado `setMyVar` con el siguiente código: ```4d var myVar+=1 diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md index 84adbd9996a1cd..fd68d3056cb3bb 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md index d486ff3d6bbabd..7efd3ff28141a8 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Propiedades de los campos --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md index eeff7b3fd312a1..f0be8595f7bb7b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barra de herramientas contiene los siguientes elementos: | Icono | Nombre | Descripción | | ------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Ejecutar el formulario | Se utiliza para probar la ejecución del formulario. Al presionar este botón, 4D abre una nueva ventana y muestra el formulario en su contexto (lista de registros para un formulario lista y página de registro actual para un formulario detallado). El formulario se ejecuta en el proceso principal. | -| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, mover y redimensionar los objetos del formulario.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, mover y redimensionar los objetos del formulario.
    **Nota**: cuando se selecciona un objeto de tipo Texto o Área de Grupo, al presionar la tecla **Intro** se pasa al modo de edición. | | ![](../assets/en/FormEditor/zOrder.png) | [Orden de entrada](#data-entry-order) | Pasa al modo "Orden de entrada", donde es posible ver y cambiar el orden de entrada actual del formulario. Tenga en cuenta que las marcas permiten ver el orden de entrada actual, sin dejar de trabajar en el formulario. | | ![](../assets/en/FormEditor/moving.png) | [Mover](#mover-objetos) | Pasa al modo " Desplazamiento ", en el que es posible llegar rápidamente a cualquier parte del formulario utilizando la función de arrastrar y soltar en la ventana. El cursor toma la forma de una mano. Este modo de navegación es especialmente útil cuando se hace zoom en el formulario. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar la escala de visualización del formulario (100% por defecto). Puede pasar al modo "Zoom" haciendo clic en la lupa o pulsando directamente en la barra correspondiente a la escala deseada. Esta función se detalla en la sección anterior. | @@ -146,11 +146,11 @@ Antes de poder realizar cualquier operación en un objeto (como cambiar el ancho Para seleccionar un objeto utilizando la barra de herramientas: -1. Haga clic en la herramienta Flecha de la barra de herramientas.

    ![](../assets/en/FormEditor/selection.png)

    +1. Haga clic en la herramienta Flecha de la barra de herramientas.
    ![](../assets/en/FormEditor/selection.png) -

    Cuando se mueve el puntero en el área del formulario, se convierte en un puntero estándar con forma de flecha

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Haga clic en el objeto que desea seleccionar. Las manillas de redimensionamiento identifican el objeto seleccionado.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Haga clic en el objeto que desea seleccionar. Las manillas de redimensionamiento identifican el objeto seleccionado.
    ![](../assets/en/FormEditor/selectResize.png) Para seleccionar un objeto utilizando la Lista de propiedades: @@ -241,13 +241,13 @@ Para agrupar los objetos: 1. Seleccione los objetos que desea agrupar. 2. Elija **Agrupar** en el menú Objetos. O - Haga clic en el botón Agrupar en la barra de herramientas del editor de formularios:

    ![](../assets/en/FormEditor/group.png)

    + Haga clic en el botón Agrupar en la barra de herramientas del editor de formularios:
    ![](../assets/en/FormEditor/group.png) 4D marca el límite de los objetos recién agrupados con manijas. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. Para desagrupar un grupo de objetos: 1. Seleccione el grupo de objetos que desea desagrupar. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marca los bordes de los objetos individuales con marcas. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    Si **Desagrupar** está atenuado, significa que el objeto seleccionado ya está separado en su forma más simple. 4D marca los bordes de los objetos individuales con marcas. ### Alinear objetos @@ -275,9 +275,9 @@ El Asistente de Alineación permite realizar cualquier tipo de alineación y/o d Para mostrar esta caja de diálogo, seleccione los objetos que desee alinear y, a continuación, elija el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    El área de ejemplo muestra los resultados de su selección.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    El área de ejemplo muestra los resultados de su selección. -- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. O:

    para alinear los objetos a un objeto específico, seleccione la opción **Alinear en** y seleccione el objeto al que desea que se alineen los demás objetos de la lista de objetos. En este caso, la posición del objeto de referencia no se alterará.

    +- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. O:
    para alinear los objetos a un objeto específico, seleccione la opción **Alinear en** y seleccione el objeto al que desea que se alineen los demás objetos de la lista de objetos. En este caso, la posición del objeto de referencia no se alterará. Puede previsualizar los resultados de la alineación haciendo clic en el botón **Previsualización**. Los objetos se alinean entonces en el editor de formularios, pero como la caja de diálogo permanece en el primer plano, aún puede cancelar o aplicar la alineación. @@ -314,7 +314,8 @@ Para repartir los objetos con igual espacio: 1. Seleccione tres o más objetos y haga clic en la herramienta Distribuir correspondiente. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: @@ -322,9 +323,9 @@ Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. ¡Aparece la siguiente caja de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Icono de distribución horizontal estándar)

    El área de ejemplo muestra los resultados de su selección. +3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Icono de distribución horizontal estándar)
    El área de ejemplo muestra los resultados de su selección. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    - Horizontalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los lados izquierdos, centros (hor.) y los lados derechos de los objetos seleccionados. - Verticalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los bordes superiores, centros (vert.) y los bordes inferiores de los objetos seleccionados. @@ -379,11 +380,11 @@ Este párrafo describe la visualización y la modificación del orden de entrada Para ver o cambiar el orden de entrada: -1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:
    ![](../assets/en/FormEditor/zOrder.png)
    El puntero se convierte en un puntero de orden de entrada y 4D dibuja una línea en el formulario mostrando el orden en que selecciona los objetos durante la entrada de datos. Ver y cambiar el orden de entrada de datos son las únicas acciones que puede realizar hasta que haga clic en cualquier herramienta de la paleta Herramientas. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita el paso 2 tantas veces como sea necesario para establecer el orden de entrada de datos que desee. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md index 1e4635722fa0b1..879812bdbe3360 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md @@ -189,15 +189,15 @@ En otros casos (list box basados en selecciones temporales, columnas asociadas a ## Acción estándar -Actividades típicas que deben realizar los objetos activos (\*por ejemplo, permitir al usuario aceptar, cancelar o eliminar registros, desplazarse entre registros o de una página a otra en un formulario multipágina, etc.) han sido predefinidas por 4D como acciones estándar. Se describen con detalle en la sección [Acciones estándar](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) de la *manual de Diseño*. +Actividades típicas que deben realizar los objetos activos (\*por ejemplo, permitir al usuario aceptar, cancelar o eliminar registros, desplazarse entre registros o de una página a otra en un formulario multipágina, etc.) han sido predefinidas por 4D como acciones estándar. Se describen con detalle en la sección [Acciones estándar](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) de la *manual de Diseño*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Puede asignar al mismo tiempo una acción estándar y un método proyecto de un objeto. En este caso, la acción estándar suele ejecutarse después del método y 4D utiliza esta acción para activar/desactivar el objeto según el contexto actual. Cuando se desactiva un objeto, no se puede ejecutar el método proyecto asociado. #### Gramática JSON -| Nombre | Tipos de datos | Valores posibles | -| ------ | -------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| action | string | El nombre de una [acción estándar válida](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nombre | Tipos de datos | Valores posibles | +| ------ | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objetos soportados diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormObjects/webArea_overview.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormObjects/webArea_overview.md index 1b6be15a37a604..c76e76e79d1274 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormObjects/webArea_overview.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/FormObjects/webArea_overview.md @@ -47,7 +47,7 @@ Por ejemplo, llamando al método `HelloWorld` en 4D: $4d.HelloWorld(); ``` -> **Note:** JavaScript is **case-sensitive**, so the object is named **`$4d`** (with a lowercase "d"). +> **Nota:** JavaScript es **sensible a mayúsculas**, así que el objeto se llama **`$4d`** (con una minúscula "d"). ### Controlar el acceso a $4d @@ -117,7 +117,7 @@ $4d.today(function(result) En lugar de utilizar un método independiente, también podemos definir una **clase** que se encargue del cálculo. -Define the Class with 4D project method `calcSum` which receives parameters and returns their sum: +Defina la clase con el método proyecto 4D `calcSum` que recibe parámetros y devuelve su suma: ```4d // SumCalculator user class diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Notes/updates.md index d82ec8269a7b3a..5ec31955dfa4ec 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Notes/updates.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Notes/updates.md @@ -14,12 +14,12 @@ Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R - Nueva clase [`4D.Vector`](../API/VectorClass.md) para procesar y comparar vectores, normalmente calculados por IAs. - Nuevas opciones para generar UUIDs en **versión 7** para el comando [4D automatic fields](../settings/database.md#auto-uuid-version) y [`Generate UUID`](../commands/generate-uuid). - Nuevas clases [`UDPSocket`](../API/UDPSocketClass.md) y [`UDPEvent`](../API/UDPEventClass.md) para enviar datos utilizando sockets UDP. Soporte de registro detallado para eventos UDP en el archivo de registro [`4DTCPUDPLog.txt`](../Debugging/debugLogFiles.md#4dtcpudplogtxt) (renombrado de `4DTCPLog.txt`). -- New [`.promote()`](../API/SessionClass.md#promote) and [`.demote()`](../API/SessionClass.md#demote) functions in the [Session class](../API/SessionClass.md) to dynamically add/remove privileges in a web process. -- [Automatic selection of licenses to embed](../Desktop/building.md#application-automatically-embedding-available-licenses) in the Build application dialog box, modified [`Create deployment license`](../commands/create-deployment-license.md) command, new [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html) BuildApplication xml key. +- Nuevas funciones [`.promote()`](../API/SessionClass.md#promote) y [`.demote()`](../API/SessionClass.md#demote) en la [clase Session](../API/SessionClass.md) para añadir/eliminar privilegios dinámicamente en un proceso web. +- [Selección automática de licencias a integrar](../Desktop/building.md#application-automatically-embedding-available-licenses) en el cuadro de diálogo del Generador de aplicaciones, modificación del comando [`Create deployment license`](../commands/create-deployment-license.md), nueva llave xml BuildApplication [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html). - Seguridad mejorada para copiar/pegar fórmulas en [4D Write Pro](../WritePro/managing-formulas.md) y [áreas de texto con estilo](../FormObjects/input_overview.md): las fórmulas copiadas desde fuera de la aplicación 4D actual se pegan ahora siempre sólo como valores. -- 4D AIKit component: new [OpenAIEmbeddingsAPI class](../aikit/Classes/OpenAIEmbeddingsAPI.md) to create embeddings using OpenAI's API. -- You can now [associate a class](../Develop/field-properties.md) to an object field in the structure editor. -- Automatic handling of [recursive dependencies](../Project/components.md#automatic-dependency-resolution). +- Componente 4D AIKit: nueva [clase OpenAIEmbeddingsAPI](../aikit/Classes/OpenAIEmbeddingsAPI.md) para crear embeddings utilizando la API OpenAI. +- Ahora puede [asociar una clase](../Develop/field-properties.md) a un campo objeto en el editor de estructura. +- Gestión automática de [dependencias recursivas](../Project/components.md#automatic-dependency-resolution). - Lenguaje 4D: - Por coherencia, los comandos [`Create entity selection`](../commands/create-entity-selection.md) y [`USE ENTITY SELECTION`](../commands/use-entity-selection.md) han sido movidos del tema ["4D Environment"](../commands/theme/4D_Environment.md) al ["Selection"](../commands/theme/Selection.md). - Nuevos comandos [`OBJECT SET DATA SOURCE FORMULA`](../commands/object-set-data-source-formula.md) y [`OBJECT Get data source formula`](../commands/object-get-data-source-formula.md) para asignar y leer los objetos `Formula` como fuentes de datos para los objetos de formulario. @@ -31,7 +31,7 @@ Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R - En Windows, las fuentes de impresora actuales destinadas únicamente a la impresión (es decir, no se pueden utilizar en pantalla) ya no son cargadas al inicio por 4D. - Se ha eliminado la biblioteca *MeCab*. Este cambio sólo afecta al tratamiento del texto en japonés. - Cuando una variable o parámetro objeto se declara con un tipo ["cs" class](../Concepts/classes.md#cs), asignarlo con una instancia de objeto de una clase diferente genera ahora un error de sintaxis. -- The [`Time`](../commands/time) command now returns a negative time expression when the *timeValue* parameter is negative. Por ejemplo, `Time("-01:02:03")` devolverá **-01:02:03**. In previous releases, the negative sign was ignored. +- El comando [`Time`](../commands/time) devuelve ahora una expresión de tiempo negativa cuando el parámetro *timeValue* es negativo. Por ejemplo, `Time("-01:02:03")` devolverá **-01:02:03**. En versiones anteriores, se ignoraba el signo negativo. ## 4D 20 R9 @@ -103,7 +103,7 @@ Lea [**Novedades en 4D 20 R7**](https://blog.4d.com/en-whats-new-in-4d-20-R7/), - Lenguaje 4D: - Nuevos comandos: [Process info](../commands/process-info.md), [Session info](../commands/session-info.md), [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md) - Comandos modificados: [Process activity](../commands/process-activity.md), [Process number](../commands/process-number.md) - - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*O\*". + - Comandos obsoletos (reemplazo): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) y [#DECLARE/declaraciones Function](../Concepts/parameters.md#declaring-parameters)). Deprecated commands are prefixed with "\*O\*". - 4D Write Pro: - Nuevo comando: [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md) - Comandos modificados: [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md) y [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md index 7a2db28e32c11f..1d3ac2bbf5320c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md @@ -462,7 +462,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Esta función se llama cada vez que se solicita una selección de entidades o una entidad de la dataclass. El filtro se ejecuta una vez, cuando se crea la selección de entidades. -El filtro debe devolver una selección de entidades de la clase de datos. Puede ser una selección de entidades creada a partir de una consulta, almacenada en el [`Storage`], etc. +El filtro debe devolver una selección de entidades de la clase de datos. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 163716adebf666..b13d7f36544020 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -1,23 +1,23 @@ --- id: orda-events -title: Eventos ORDA +title: Entity Events ---
    Historia -| Lanzamiento | Modificaciones | -| ----------- | ------------------- | -| 20 R10 | touched event added | +| Lanzamiento | Modificaciones | +| ----------- | ------------------------------- | +| 20 R10 | se ha añadido un evento touched |
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. No se puede activar directamente la ejecución de la función de evento. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::info Nota de compatibilidad -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -25,7 +25,7 @@ ORDA events in the datastore are equivalent to triggers in the 4D database. Howe ### Nivel del evento -A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). +A entity event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute. @@ -49,13 +49,13 @@ Con otras configuraciones remotas (p. ej. Qodly applications, [REST API requests ### Tabla resumen -La siguiente tabla lista los eventos ORDA junto con sus reglas. +The following table lists ORDA entity events along with their rules. -| Evento | Nivel | Nombre de la función | (C/S) Ejecutado en | -| :------------------------- | :------- | :------------------------------------------------------ | :------------------------------------------------------------------: | -| Instanciación de entidades | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | -| Atributo tocado | Atributo | `event touched ()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | -| | Entity | `event touched()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | +| Evento | Nivel | Nombre de la función | (C/S) Ejecutado en | +| :------------------------- | :------- | :------------------------------------------------------ | :---------------------------------------------------------------------------: | +| Instanciación de entidades | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | +| Atributo tocado | Atributo | `event touched ()` | Depende de la palabra clave [`local`](../ORDA/ordaClasses.md#local-functions) | +| | Entity | `event touched()` | Depende de la palabra clave [`local`](../ORDA/ordaClasses.md#local-functions) | :::note @@ -92,9 +92,9 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: -- in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: +- en **cliente/servidor con la [palabra clave `local`](../ORDA/ordaClasses.md#local-functions)** o en **4D monousuario**: - el usuario define un valor en un formulario 4D, - - el código 4D realiza una asignación con el operador `:=`. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - el código 4D realiza una asignación con el operador `:=`. El evento también se activa en caso de autoasignación (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). - in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) @@ -107,7 +107,7 @@ If this event [throws](../commands-legacy/throw.md) an error, it will not stop t Este evento también se activa: -- when attributes are assigned by the [`constructor()`](./ordaClasses.md#class-constructor-1) event, +- cuando los atributos son asignados por el evento [`constructor()`](./ordaClasses.md#class-constructor-1), - when attributes are edited through the [Data Explorer](../Admin/dataExplorer.md). ::: @@ -226,7 +226,7 @@ Note over Client:$people.lastname is uppercased ``` -#### Example 4 (diagram): Client/server without the `local` keyword +#### Ejemplo 4 (diagrama): cliente/servidor sin la palabra clave `local` ```mermaid diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Project/components.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Project/components.md index 9f30f95e0bee18..689c99155f4d23 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Project/components.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/Project/components.md @@ -5,7 +5,7 @@ title: Dependencias Un componente 4D es un conjunto de código y/o de formularios 4D que representan una o varias funcionalidades que pueden añadirse y utilizarse en sus proyectos. Por ejemplo, el componente [4D SVG](https://github.com/4d/4D-SVG) añade comandos avanzados y un motor de renderizado integrado que puede utilizarse para visualizar archivos SVG. -Puede [desarrollar](../Extensions/develop-components.md) y [crear](../Desktop/building.md) sus propios componentes 4D, o descargar componentes públicos compartidos por la comunidad 4D que [se pueden encontrar en GitHub](https://github.com/search?q=4d-component\\\\\\\\\\&type=Repositories). +Puede [desarrollar](../Extensions/develop-components.md) y [crear](../Desktop/building.md) sus propios componentes 4D, o descargar componentes públicos compartidos por la comunidad 4D que [se pueden encontrar en GitHub](https://github.com/topics/4d-component). Al desarrollar en 4D, los archivos de los componentes pueden almacenarse de forma transparente en su ordenador o en un repositorio Github. @@ -330,20 +330,20 @@ Los componentes GitHub a los que se hace referencia se descargan en una carpeta ...donde `` puede ser "4D", "4D Server" o "tool4D". -### Automatic dependency resolution +### Resolución automática de las dependencias -When you add or update a component (whether [local](#local-components) or [from GitHub](#components-stored-on-github)), 4D automatically resolves and installs all dependencies required by that component. Esto incluye: +Cuando añade o actualiza un componente (ya sea [local](#local-components) o [desde GitHub](#components-stored-on-github)), 4D resuelve e instala automáticamente todas las dependencias requeridas por ese componente. Esto incluye: - **Dependencias primarias**: componentes que declara explícitamente en su archivo `dependencies.json` - **Dependencias secundarias**: componentes requeridos por dependencias primarias u otras dependencias secundarias, que se resuelven e instalan automáticamente -The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. +El gestor de dependencias lee el archivo `dependencies.json` de cada componente e instala recursivamente todas las dependencias necesarias, respetando las especificaciones de versión siempre que sea posible. Esto elimina la necesidad de identificar y añadir manualmente las dependencias anidadas una por una. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Resolución de conflictos**: cuando varias dependencias requieren [versiones diferentes](#defining-a-github-dependency-version-range) del mismo componente, el gestor de dependencias intenta automáticamente resolver los conflictos encontrando una versión que satisfaga todos los rangos de versiones superpuestas. Si una dependencia primaria entra en conflicto con dependencias secundarias, la dependencia primaria tiene prioridad. :::note -`dependencies.json` files are ignored in components loaded from the [**Components** folder](architecture.md#components). +Los archivos `dependencies.json` se ignoran en los componentes cargados desde la carpeta [**Components**](architecture.md#components). ::: @@ -377,19 +377,19 @@ Por defecto, se listan todas las dependencias identificadas por el gestor de dep ![dependency-tabs](../assets/en/Project/dependency-tabs.png) -- **All**: All dependencies including both primary (declared) and secondary (automatically resolved) dependencies in a flat list view. -- **Declared**: Primary dependencies that are explicitly declared in the `dependencies.json` file. This tab helps you distinguish between dependencies you've directly added and those that were [automatically resolved](#automatic-dependency-resolution). +- **Todas**: todas las dependencias, incluidas las primarias (declaradas) y las secundarias (resueltas automáticamente) en forma de lista. +- **Declarado**: dependencias primarias que se declaran explícitamente en el archivo `dependencies.json`. Esta pestaña le ayuda a distinguir entre las dependencias que ha añadido directamente y las que se han [resuelto automáticamente](#automatic-dependency-resolution). - **Activo**: dependencias que están cargadas y pueden ser utilizadas en el proyecto. Incluye dependencias *overloading*, las cuales son realmente cargadas. Las dependencias *Overloaded* se enumeran en el panel **Conflicts** junto con todas las dependencias en conflicto. - **Inactivo**: dependencias que no están cargadas en el proyecto y no están disponibles. Hay muchas razones posibles para este estado: archivos que faltan, incompatibilidad de versiones... -- **Conflicts**: Dependencies that are loaded but that overloads at least one other dependency at a lower [priority level](#priority). También se muestran las dependencias sobrecargadas para que pueda comprobar el origen del conflicto y tomar las medidas oportunas. +- **Conflictos**: las dependencias que se cargan pero que sobrecargan al menos otra dependencia de un [nivel de prioridad](#priority) inferior. También se muestran las dependencias sobrecargadas para que pueda comprobar el origen del conflicto y tomar las medidas oportunas. ### Dependencias secundarias -The Dependencies panel displays [**secondary dependencies**](#automatic-dependency-resolution) with the `Component dependency` [origin](#dependency-origin): +El panel Dependencias muestra [**dependencias secundarias**](#automatic-dependency-resolution) con la `dependencia del componente` [origen](#dependency-origin): ![recursive-dependency](../assets/en/Project/recursive.png) -When you hover over a secondary dependency, a tooltip displays the parent dependency that requires it. A secondary dependency cannot be [removed](#removing-a-dependency) directly, you must remove or edit the primary dependency that requires it. +Cuando pasa el cursor sobre una dependencia secundaria, una descripción muestra la dependencia padre que la requiere. Una dependencia secundaria no se puede [eliminar](#removing-a-dependency) directamente, hay que eliminar o editar la dependencia primaria que la requiere. ### Estado de dependencias @@ -422,13 +422,13 @@ El panel Dependencias enumera todas las dependencias del proyecto, sea cual sea Las siguientes opciones de origen son posibles: -| Etiqueta de origen | Descripción | -| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Built in 4D | Componente 4D integrado, almacenado en la carpeta `Components` de la aplicación 4D | -| Declarado en proyecto | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) | -| Declarado en el entorno | Component declared in the [`dependencies.json`](#dependenciesjson) file and overriden in the [`environment4d.json`](#environment4djson) file | -| Carpeta Components | Componente ubicado en la carpeta [`Components`](architecture.md#components) | -| Dependencia de los componentes | Componente secundario ([requerido por otro componente](#automatic-dependency-resolution)) | +| Etiqueta de origen | Descripción | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| Integrado a 4D | Componente 4D integrado, almacenado en la carpeta `Components` de la aplicación 4D | +| Declarado en proyecto | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) | +| Declarado en el entorno | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) y anulado en el archivo [`environment4d.json`](#environment4djson) | +| Carpeta Components | Componente ubicado en la carpeta [`Components`](architecture.md#components) | +| Dependencia de los componentes | Componente secundario ([requerido por otro componente](#automatic-dependency-resolution)) | **Clic derecho** en una línea de dependencia y selecciona **Mostrar en el disco** para revelar la ubicación de una dependencia: diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-copy-to-object.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-copy-to-object.md index b551849007c39b..7d54ed71a42c0f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-copy-to-object.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-copy-to-object.md @@ -31,10 +31,10 @@ En *rangeObj*, pase el rango de celdas con los valores, formato y fórmulas a co Puede pasar un parámetro opcional *options* con las siguientes propiedades: -| Propiedad | Tipo | Descripción | -| ----------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Boolean | *True* (por defecto) para mantener los valores, el formato y las fórmulas copiados después de la ejecución del comando. *False* para eliminarlos. | -| copyOptions | Integer | Especifica lo que se copia o mueve. Possible values:

    ValueDescription
    `vk clipboard options all` (default)Copies all data objects, including values, formatting, and formulas.
    `vk clipboard options formatting`Copies only the formatting.
    `vk clipboard options formulas`Copies only the formulas.
    `vk clipboard options formulas and formatting`Copies the formulas and formatting.
    `vk clipboard options values`Copies only the values.
    `vk clipboard options value and formatting`Copies the values and formatting.

    | +| Propiedad | Tipo | Descripción | +| ----------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| copy | Boolean | *True* (por defecto) para mantener los valores, el formato y las fórmulas copiados después de la ejecución del comando. *False* para eliminarlos. | +| copyOptions | Integer | Especifica lo que se copia o mueve. Possible values:

    ValueDescription
    `vk clipboard options all` (default)Copies all data objects, including values, formatting, and formulas.
    `vk clipboard options formatting`Copia solo el formato.
    `vk clipboard options formulas`Copies only the formulas.
    `vk clipboard options formulas and formatting`Copies the formulas and formatting.
    `vk clipboard options values`Copies only the values.
    `vk clipboard options value and formatting`Copies the values and formatting.

    | Se tienen en cuenta las opciones de pegado definidas en las [opciones del libro de trabajo](vp-set-workbook-options.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-move-cells.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-move-cells.md index dd9df040b43600..adfb613719d267 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-move-cells.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-move-cells.md @@ -35,10 +35,10 @@ En *targetRange*, pase el rango de celdas donde se copiarán o moverán los valo El parámetro *options* tiene varias propiedades: -| Propiedad | Tipo | Descripción | -| ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Boolean | Determina si los valores, el formato y las fórmulas de las celdas de *originRange* se eliminan después de ejecutar el comando:
    • *False* (por defecto) para eliminarlos
    • *True* para mantenerlos
    | -| pasteOptions | Integer | Especifica lo que se pega. Possible values:

    ValueDescription
    `vk clipboard options all` (default)Pastes all data objects, including values, formatting, and formulas.
    `vk clipboard options formatting`Pastes only the formatting.
    `vk clipboard options formulas`Pastes only the formulas.
    `vk clipboard options formulas and formatting`Pastes the formulas and formatting.
    `vk clipboard options values`Pastes only the values.
    `vk clipboard options value and formatting`Pastes the values and formatting.

    | +| Propiedad | Tipo | Descripción | +| ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| copy | Boolean | Determina si los valores, el formato y las fórmulas de las celdas de *originRange* se eliminan después de ejecutar el comando:
    • *False* (por defecto) para eliminarlos
    • *True* para mantenerlos
    | +| pasteOptions | Integer | Especifica lo que se pega. Possible values:

    ValueDescription
    `vk clipboard options all` (default)Pastes all data objects, including values, formatting, and formulas.
    `vk clipboard options formatting`Pega solo el formato.
    `vk clipboard options formulas`Pega sólo las fórmulas.
    `vk clipboard options formulas and formatting`Pastes the formulas and formatting.
    `vk clipboard options values`Pastes only the values.
    `vk clipboard options value and formatting`Pastes the values and formatting.

    | Se tienen en cuenta las opciones de pegado definidas en las [opciones del libro de trabajo](vp-set-workbook-options.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md index 979c997dc5f3c5..8ac073255275ca 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md @@ -5,14 +5,14 @@ title: HTTP Request handler Por defecto, las peticiones HTTP recibidas por el servidor web 4D se gestionan a través de [funciones de procesamiento integradas](httpRequests.md) o del [servidor REST](../REST/REST_requests.md). -In addition, 4D supports the implementation of **custom HTTP Request handlers**, allowing you to intercept specific incoming HTTP requests and process them using your own code. +Además, 4D soporta la implementación de **gestores de peticiones HTTP personalizadas**, permitiéndole interceptar peticiones HTTP entrantes específicas y procesarlas utilizando su propio código. Cuando un manejador de peticiones HTTP personalizado intercepta una solicitud, se procesa directamente y no hay otras funcionalidades de procesamiento (por ejemplo, son llamados métodos base [On Web authentication](./authentication.md#on-web-authentication) o [On Web connection](./httpRequests.md#on-web-connection). -Custom HTTP request handlers meet various needs, including: +Los gestores de peticiones HTTP personalizados satisfacen diversas necesidades, entre ellas: -- using a given URL as a resource provider or a file-uploading box (to download or upload various files), -- redirecting on specific pages according to a context (user authenticated, privileges granted...), +- la utilización de una URL dedicada como proveedor de recursos o como cuadro de carga de archivos (para descargar o cargar varios archivos), +- la redirección en páginas específicas en función de un contexto (usuario autentificado, privilegios otorgados...), - gestionar una autenticación a través de oAuth 2.0. ## Requisitos @@ -24,7 +24,7 @@ Se soportan gestores de solicitudes HTTP personalizados: :::warning -[Por defecto](../ORDA/privileges.md#default-file) por razones de seguridad, el acceso externo al datastore no está permitido en 4D. You need to configure the [ORDA privileges](../ORDA/privileges.md) to allow HTTP requests. +[Por defecto](../ORDA/privileges.md#default-file) por razones de seguridad, el acceso externo al datastore no está permitido en 4D. Necesita configurar los [privilegios ORDA](../ORDA/privileges.md) para permitir peticiones HTTP. ::: @@ -34,7 +34,7 @@ Define sus manejadores de petición HTTP personalizados en un archivo de configu This file contains all listened URL patterns, the handled verbs, and the code to be called. Los administradores se proporcionan en forma de colección en formato JSON. -At runtime, the first pattern matching the URL is executed, the others are ignored. +Al momento de la ejecución, se ejecuta el primer patrón que coincida con la URL, los demás se ignoran. Este es un ejemplo del contenido de un archivo *HTTPHandlers.json*: @@ -50,11 +50,11 @@ Este es un ejemplo del contenido de un archivo *HTTPHandlers.json*: ] ``` -This handler declaration can be read as: when any request starting by `/start/` with a `GET` or `POST` verb is received by the server, the `gettingStarted` function of the `GeneralHandling` singleton is executed. +Esta declaración de handler puede leerse como: cuando cualquier petición que comience por `/start/` con un verbo `GET` o `POST` es recibida por el servidor, se ejecuta la función `gettingStarted` del singleton `GeneralHandling`. :::note -You must restart the Web server so that modifications made in this file are taken into account. +Debe reiniciar el servidor Web para que se tengan en cuenta las modificaciones realizadas en este archivo. ::: @@ -62,32 +62,32 @@ You must restart the Web server so that modifications made in this file are take Un manejador está definido por: -- a listened URL pattern -- a function and its class where the code is implemented to handle the listened URL pattern -- the verbs with which the URL can be called to trigger the handler +- un patrón de URL a interceptar +- una función y su clase donde se implementa el código para manejar el patrón URL escuchado +- los verbos con los que se puede llamar a la URL para activar el gestor -The handler identifier is the couple [pattern + a verb among the verbs list]. +El identificador del gestor es la pareja [patrón + un verbo de la lista de verbos]. ### Patrones de la URL -URL patterns can be given as **prefixes** or using **regular expressions**. +Los patrones de URL pueden indicarse como **prefijos** o utilizando **expresiones regulares**. -- To declare a prefix pattern, use the "pattern" property name in the HTTPHandlers.json file. Prefixes are considered as regular expressions already containing starting and ending `/`. +- Para declarar un patrón de prefijo, utilice el nombre de propiedad "pattern" en el archivo HTTPHandlers.json. Los prefijos son considerados como expresiones regulares que ya contienen un `/` inicial y final. Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"` -- To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente. +- Para declarar un patrón de expresión regular, utilice el nombre de propiedad "regexPattern" en el archivo HTTPHandlers.json. Los modelos de expresiones regulares se manejan directamente. Ej: `"regexPattern" : "/docs/.+/index\.html"` -"Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account). +Las propiedades "Pattern" y "regexPattern" no pueden utilizarse en la misma definición de gestor (en este caso, sólo se tiene en cuenta la propiedad "regexPattern"). -#### Concordancia de modelos +#### Correspondencia de modelos Los modelos de URL se activan en el orden indicado: - se ejecuta el primer modelo coincidente - los siguientes patrones no se ejecutan aunque coincidan con la URL -As a consequence, you need to apply a accurate strategy when writing your handlers: the most detailed patterns must be written before the more general patterns. +En consecuencia, debe aplicar una estrategia precisa al escribir sus gestores: los patrones más detallados deben escribirse antes que los patrones más generales. ```json [ @@ -115,7 +115,7 @@ As a consequence, you need to apply a accurate strategy when writing your handle #### Patrones prohibidos -URL patterns matching 4D built-in HTTP processing features are not allowed in custom HTTP handlers. Por ejemplo, los siguientes modelos no pueden ser manejados: +Los patrones URL que coincidan con las funciones de procesamiento HTTP integradas en 4D no están permitidos en los gestores HTTP personalizados. Por ejemplo, los siguientes modelos no pueden ser manejados: - `/4DACTION` - `/rest` @@ -124,28 +124,28 @@ URL patterns matching 4D built-in HTTP processing features are not allowed in cu ### Clase y método -You declare the code to be executed when a defined URL pattern is intercepted using the "class" and "method" properties. +Declare el código a ejecutar cuando se intercepte un patrón de URL definido utilizando las propiedades "class" y "method". -- "class": class name without `cs.`, e.g. "UsersHandling" for the `cs.UsersHandling` user class. Debe ser una clase [**compartida**](../Concepts/classes.md#shared-singleton) y [**singleton**](../Concepts/classes.md#singleton-classes). +- "class": nombre de la clase sin `cs.`, por ejemplo, "UsersHandling" para la clase usuario `cs.UsersHandling`. Debe ser una clase [**compartida**](../Concepts/classes.md#shared-singleton) y [**singleton**](../Concepts/classes.md#singleton-classes). - "method": función de clase perteneciente a la clase. [Ver abajo](#request-handler-code) para obtener información sobre el código del gestor de peticiones. ### Verbs -You can use the "verbs" property in the handler definition to declare HTTP verbs that are supported in incoming requests for this handler. A request that uses a verb that is not explicitely allowed is automatically rejected by the server. +Puede utilizar la propiedad "verbs" en la definición del manejador para declarar los verbos HTTP que se admiten en las peticiones entrantes para este manejador. Una solicitud que utiliza un verbo no permitido explícitamente es rechazada automáticamente por el servidor. -You can declare several verbs, separated by a comma. Los nombres de verbos no distinguen entre mayúsculas y minúsculas. +Puede declarar varios verbos, separados por una coma. Los nombres de verbos no distinguen entre mayúsculas y minúsculas. Ej: `"verbs" : "PUT, POST"` :::note -No control is done on verb names. Se pueden utilizar todos los nombres. +No se hace ningún control sobre los nombres de los verbos. Se pueden utilizar todos los nombres. ::: -By default, if the "verbs" property is not used for a handler, **all** HTTP verbs are supported in incoming requests for this handler (except those possibly used beforehand in a more detailed pattern, as shown in the example above). +Por defecto, si la propiedad "verbs" no se utiliza para un manejador, **todos** los verbos HTTP son soportados en las peticiones entrantes para este manejador (excepto aquellos posiblemente utilizados de antemano en un patrón más detallado, como se muestra en el ejemplo anterior). :::note @@ -214,7 +214,7 @@ En este ejemplo, debe implementar las siguientes funciones: - *handleDocs* en la clase *DocsHandling* - *handleTheInvoice* / *handleDetails* / *handleInvoices* en la clase *InvoicesHandling* -Examples of URLs triggering the handlers: +Ejemplos de URL que activan los gestores personalizados: `IP:port/info/` con un verbo GET `IP:port/info/general` con un verbo GET @@ -235,11 +235,11 @@ Examples of URLs triggering the handlers: ### Configuración de funciones -The HTTP Request handler code must be implemented in a function of a [**Shared**](../Concepts/classes.md#shared-singleton) [**singleton class**](../Concepts/classes.md#singleton-classes). +El código del gestor de peticiones HTTP debe implementarse en una función de una clase [**Compartida**](../Concepts/classes.md#shared-singleton) [**clase singleton**](../Concepts/classes.md#singleton-classes). -If the singleton is missing or not shared, an error "Cannot find singleton" is returned by the server. If the class or the function [defined as handler](#handler-definition) in the HTTPHandlers.json file is not found, an error "Cannot find singleton function" is returned by the server. +Si el singleton no se encuentra o no está compartido, el servidor devuelve un error "No se puede encontrar singleton". Si la clase o la función [definida como manejador](#handler-definition) en el archivo HTTPHandlers.json no se encuentra, el servidor devuelve un error "No se puede encontrar la función singleton". -Request handler functions are not necessarily shared, unless some request handler properties are updated by the functions. En este caso, necesita declarar sus funciones con la [palabra clave 'shared'](../Concepts/classes.md#shared-functions). +Las funciones del gestor de peticiones no son necesariamente compartidas, a menos que algunas propiedades del gestor de peticiones sean actualizadas por las funciones. En este caso, necesita declarar sus funciones con la [palabra clave 'shared'](../Concepts/classes.md#shared-functions). :::note @@ -251,13 +251,13 @@ Request handler functions are not necessarily shared, unless some request handle Cuando una solicitud ha sido interceptada por el manejador, se recibe en el servidor como una instancia de la [clase 4D.IncomingMessage](../API/IncomingMessageClass.md). -All necessary information about the request are available in this object, including the request url, verb, headers, and, if any, parameters (put in the URL) and body. +Toda la información necesaria sobre la petición está disponible en este objeto, incluyendo la url de la petición, el verbo, los encabezados y, si los hay, los parámetros (puestos en la URL) y el cuerpo de la petición. -Then, the request handler can use this information to trigger appropriate business logic. +A continuación, el gestor de solicitudes puede utilizar esta información para activar la lógica de negocio adecuada. -### Output: an instance of the 4D.OutgoingMessage class +### Salida: una instancia de la clase 4D.OutgoingMessage -The request handler can return an object instance of the [4D.OutGoingMessage class](../API/OutgoingMessageClass.md), i.e. some full web content ready for a browser to handle, such as a file content. +El gestor de peticiones puede devolver una instancia de objeto de la clase [4D.OutGoingMessage](../API/OutgoingMessageClass.md), es decir, algún contenido web completo listo para que un navegador lo maneje, como un contenido de archivo. ### Ejemplo @@ -280,7 +280,7 @@ El archivo **HTTPHandlers.json**: La URL llamada es: http://127.0.0.1:8044/putFile?fileName=testFile -The binary content of the file is put in the body of the request and a POST verb is used. El nombre del archivo se da como parámetro (*fileName*) en la URL. Se recibe en el objeto [`urlQuery`](../API/IncomingMessageClass.md#urlquery) en la petición. +El contenido binario del archivo se coloca en el cuerpo de la petición y se utiliza un verbo POST. El nombre del archivo se da como parámetro (*fileName*) en la URL. Se recibe en el objeto [`urlQuery`](../API/IncomingMessageClass.md#urlquery) en la petición. ```4d //UploadFile class @@ -325,4 +325,4 @@ Function uploadFile($request : 4D.IncomingMessage) : 4D.OutgoingMessage ## Ver también -[Perfect mastery of your back end business logic thanks to HTTP requests handlers](https://blog.4d.com/master-http-requests-with-4d-request-handlers/) (blog post) \ No newline at end of file +[Maestría de las peticiones HTTP con los gestores de peticiones 4D](https://blog.4d.com/master-http-requests-with-4d-request-handlers/) (entrada del blog) \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md index d55cb1504a87ae..7fe5e2c40f7db0 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md @@ -201,9 +201,9 @@ Else End if ``` -:::note +:::tips Entradas de blog relacionadas -Para más ejemplos, por favor consulte la publicación de blog [Sesiones escalables para aplicaciones web avanzadas](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/). +[Sesiones escalables para aplicaciones web avanzadas](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: @@ -471,7 +471,7 @@ Se crea un nuevo usuario y se almacena cierta información en la sesión, especi - Sólo se pueden reutilizar las sesiones de la base de datos local (las sesiones creadas en servidores web de componentes no se pueden restaurar). - Los tokens no son compatibles con las sesiones cliente/servidor ni con las sesiones monousuario. -### Lifespan +### Vida útil Un testigo de sesión tiene una vida útil, y la propia sesión tiene una vida útil. El tiempo de vida útil del token de sesión puede definirse [en la creación de tokens](../API/SessionClass.md#createotp). Por defecto, el tiempo de vida del token es el mismo valor que el valor de [`.idleTimeout`](../API/SessionClass.md#idletimeout). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md index b10646ebb340b8..098b4d13d45456 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. ## Propiedades de configuración -| Nombre de la propiedad | Tipo | Descripción | Opcional | -| ---------------------- | ---- | ---------------------------------------------------------------------------- | -------------- | -| `apiKey` | Text | Su [llave OpenAI API](https://platform.openai.com/api-keys). | No para OpenAI | -| `baseURL` | Text | URL base para las peticiones de la API OpenAI. | Sí | -| `organization` | Text | Su ID de organización OpenAI. | Sí | -| `project` | Text | Su ID de proyecto OpenAI. | Sí | +| Nombre de la propiedad | Tipo | Descripción | Opcional | +| ---------------------- | ---- | ---------------------------------------------------------------------------- | --------------------------------------------------------- | +| `apiKey` | Text | Su [llave OpenAI API](https://platform.openai.com/api-keys). | Puede ser requerido por el proveedor | +| `baseURL` | Text | URL base para las peticiones de la API OpenAI. | Yes (if omitted = use OpenAI provider) | +| `organization` | Text | Su ID de organización OpenAI. | Sí | +| `project` | Text | Su ID de proyecto OpenAI. | Sí | ### Propiedades HTTP adicionales @@ -29,9 +29,9 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. Crear una instancia de la clase cliente OpenAI. -| Nombre del argumento | Tipo | Descripción | -| ------------------------- | -------------- | ------------------------------------------------------- | -| `apiKey or configuration` | Texto u objeto | apiKey if Text or configuration Object. | +| Nombre del argumento | Tipo | Descripción | +| ------------------------- | -------------- | --------------------------------------------------------- | +| `apiKey or configuration` | Texto u objeto | apiKey si Text u objeto de configuración. | #### Llave API diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatCompletionsAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatCompletionsAPI.md index 7b9668af173b63..f3fb51737378b9 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatCompletionsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatCompletionsAPI.md @@ -5,7 +5,7 @@ title: OpenAIChatCompletionsAPI # OpenAIChatCompletionsAPI -The `OpenAIChatCompletionsAPI` class is designed for managing chat completions with OpenAI's API. It provides methods to create, retrieve, update, delete, and list chat completions. +La clase `OpenAIChatCompletionsAPI` está diseñada para gestionar las finalizaciones de chat con la API OpenAI. It provides methods to create, retrieve, update, delete, and list chat completions. https://platform.openai.com/docs/api-reference/chat diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md index 9c3c1c18655023..65f84b56f8d1ba 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md @@ -19,6 +19,6 @@ The `OpenAIChatCompletionsMessagesAPI` class is designed to interact with the Op | *parámetros* | `OpenAIChatCompletionsMessagesParameters` | Parámetros para filtrar y personalizar la respuesta. | | Resultado | Variant | The retrieved messages associated with the chat completion. | -The `list()` function retrieves messages associated with a specific chat completion ID. Lanza un error si `completionID` está vacío. If the *parameters* argument is not an instance of `OpenAIChatCompletionsMessagesParameters`, it will create a new instance using the provided parameters. +La función `list()` recupera los mensajes asociados a un ID de finalización de chat específico. Lanza un error si `completionID` está vacío. If the *parameters* argument is not an instance of `OpenAIChatCompletionsMessagesParameters`, it will create a new instance using the provided parameters. https://platform.openai.com/docs/api-reference/chat/getMessages diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIEmbeddingsAPI.md index e74d6fc2364cee..1ad09d7c28ce91 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIEmbeddingsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIEmbeddingsAPI.md @@ -5,7 +5,7 @@ title: OpenAIEmbeddingsAPI # OpenAIEmbeddingsAPI -The `OpenAIEmbeddingsAPI` provides functionalities to create embeddings using OpenAI's API. +`OpenAIEmbeddingsAPI` ofrece funcionalidades para crear integraciones utilizando la API de OpenAI. https://platform.openai.com/docs/api-reference/embeddings diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIEmbeddingsResult.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIEmbeddingsResult.md index 35c45022b6929c..0e2185eb101695 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIEmbeddingsResult.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIEmbeddingsResult.md @@ -11,13 +11,13 @@ title: OpenAIEmbeddingsResult ## Propiedades calculadas -| Propiedad | Tipo | Descripción | -| ------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `model` | Text | Returns the model used to compute the embedding | -| `vector` | `4D.Vector` | Devuelve el primer `4D.Vector` de la colección `vectors`. | -| `vectors` | Collection | Devuelve una colección de `4D.Vector`. | -| `embedding` | [OpenAIEmbedding](OpenAIEmbedding.md) | Returns the first [OpenAIEmbedding](OpenAIEmbedding.md) from the `embeddings` collection. | -| `embeddings` | Collection | Returns a collection of [OpenAIEmbedding](OpenAIEmbedding.md). | +| Propiedad | Tipo | Descripción | +| ------------ | ------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| `model` | Text | Returns the model used to compute the embedding | +| `vector` | `4D.Vector` | Devuelve el primer `4D.Vector` de la colección `vectors`. | +| `vectors` | Collection | Devuelve una colección de `4D.Vector`. | +| `embedding` | [OpenAIEmbedding](OpenAIEmbedding.md) | Devuelve el primer [OpenAIEmbedding](OpenAIEmbedding.md) de la colección `embeddings`. | +| `embeddings` | Collection | Returns a collection of [OpenAIEmbedding](OpenAIEmbedding.md). | ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImage.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImage.md index 09e15a20df5e90..9009658de82b79 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImage.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImage.md @@ -5,17 +5,17 @@ title: OpenAIImage # OpenAIImage -The `OpenAIImage` class represents an image generated by the OpenAI API. It provides properties for accessing the generated image in different formats and methods for converting this image to different types. +La clase `OpenAIImage` representa una imagen generada por la API OpenAI. It provides properties for accessing the generated image in different formats and methods for converting this image to different types. https://platform.openai.com/docs/api-reference/images/object ## Propiedades -| Propiedad | Tipo | Descripción | -| ---------------- | ------- | ----------------------------------------------------------------------------------------------------------- | -| `url` | Text | The URL of the generated image, if `response_format` is `url` (default). | -| `b64_json` | Text | The base64-encoded JSON of the generated image, if `response_format` is `b64_json`. | -| `revised_prompt` | Variant | The prompt that was used to generate the image, if there was any revision to the prompt. | +| Propiedad | Tipo | Descripción | +| ---------------- | ------- | ------------------------------------------------------------------------------------------------------------- | +| `url` | Text | La URL de la imagen generada, si `response_format` es `url` (por defecto). | +| `b64_json` | Text | The base64-encoded JSON of the generated image, if `response_format` is `b64_json`. | +| `revised_prompt` | Variant | The prompt that was used to generate the image, if there was any revision to the prompt. | ## Funciones diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImageParameters.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImageParameters.md index 167f8ab9d4ac4b..692705efcc3fa2 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImageParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImageParameters.md @@ -13,13 +13,13 @@ The `OpenAIImageParameters` class is designed to configure and manage the parame ## Propiedades -| Nombre de la propiedad | Tipo | Valor por defecto | Descripción | -| ---------------------- | ------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | "dall-e-2" | Especifica el modelo a utilizar para la generación de imágenes. | -| `n` | Integer | 1 | The number of images to generate (must be between 1 and 10; only `n=1` is supported for `dall-e-3`). | -| `size` | Text | "1024x1024" | El tamaño de las imágenes generadas. Debe ajustarse a las especificaciones del modelo. | -| `style` | Text | "" | The style of the generated images (must be either `vivid` or `natural`). | -| `response_format` | Text | "url" | The format for returned images, can be either `url` or `b64_json`. | +| Nombre de la propiedad | Tipo | Valor por defecto | Descripción | +| ---------------------- | ------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | "dall-e-2" | Especifica el modelo a utilizar para la generación de imágenes. | +| `n` | Integer | 1 | El número de imágenes a generar (debe estar entre 1 y 10; sólo `n=1` es soportado para `dall-e-3`). | +| `size` | Text | "1024x1024" | El tamaño de las imágenes generadas. Debe ajustarse a las especificaciones del modelo. | +| `style` | Text | "" | El estilo de las imágenes generadas (debe ser `vivid` o `natural`). | +| `response_format` | Text | "url" | El formato de las imágenes devueltas puede ser `url` o `b64_json`. | ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImagesAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImagesAPI.md index 3797cb01095e30..4ffe3a9911bd80 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImagesAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIImagesAPI.md @@ -5,7 +5,7 @@ title: OpenAIImagesAPI # OpenAIImagesAPI -The `OpenAIImagesAPI` provides functionalities to generate images using OpenAI's API. +La `OpenAIImagesAPI` ofrece funcionalidades para generar imágenes utilizando la API de OpenAI. https://platform.openai.com/docs/api-reference/images diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIModeration.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIModeration.md index 945951ab25b085..3c92f30cc3c7c7 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIModeration.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIModeration.md @@ -5,7 +5,7 @@ title: OpenAIModeration # OpenAIModeration -The `OpenAIModeration` class is designed to handle moderation results from the OpenAI API. It contains properties for storing the moderation ID, model used, and the results of the moderation. +La clase `OpenAIModeration` está diseñada para manejar los resultados de moderación de la API OpenAI. It contains properties for storing the moderation ID, model used, and the results of the moderation. https://platform.openai.com/docs/api-reference/moderations/object diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIModerationsAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIModerationsAPI.md index 72fdb9d849830a..8f949e42ee4570 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIModerationsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIModerationsAPI.md @@ -5,7 +5,7 @@ title: OpenAIModerationsAPI # OpenAIModerationsAPI -The `OpenAIModerationsAPI` is responsible for classifying if text and/or image inputs are potentially harmful. +La interfaz `OpenAIModerationsAPI` se encarga de clasificar si las entradas de texto y/o imágenes son potencialmente dañinas. https://platform.openai.com/docs/api-reference/moderations diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIParameters.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIParameters.md index 09a57fe7d5faef..30a0ee07ce9043 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIParameters.md @@ -37,7 +37,7 @@ Ver la [documentación sobre código asíncrono](../asynchronous-call.md) ## Clases heredadas -Several classes inherit from `OpenAIParameters` to extend its functionality for specific use cases. A continuación se muestran algunas de las clases que extienden `OpenAIParameters`: +Varias clases heredan de `OpenAIParameters` para ampliar su funcionalidad en casos de uso específicos. A continuación se muestran algunas de las clases que extienden `OpenAIParameters`: - [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - [OpenAIChatCompletionsMessagesParameters](OpenAIChatCompletionsMessagesParameters.md) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIResult.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIResult.md index 0e88534c6bfd9a..6122c517c37e21 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIResult.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIResult.md @@ -50,7 +50,7 @@ Lanza el primer error de la colección `errors`. This function is useful for pro ## Clases heredadas -Several classes inherit from `OpenAIResult` to extend its functionality for specific use cases. Below are some of the classes that extend `OpenAIResult`: +Varias clases heredan de `OpenAIResult` para ampliar su funcionalidad en casos de uso específicos. A continuación se muestran algunas de las clases que extienden `OpenAIResult`: - [OpenAIChatCompletionsResult](OpenAIChatCompletionsResult.md) - [OpenAIChatCompletionsStreamResult](OpenAIChatCompletionsStreamResult.md) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/asynchronous-call.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/asynchronous-call.md index 540ca7bff97777..a5f4fd483ff3a6 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/asynchronous-call.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/asynchronous-call.md @@ -11,7 +11,7 @@ Debe proporcionar un `4D.Formula` para recibir el resultado. Ver [OpenAIParamete The asynchronous method is based on [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), so the response will be received within the current process. -> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. In such cases, consider using `CALL WORKER` or `CALL FORM`. +> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. En estos casos, considere la posibilidad de utilizar `CALL WORKER` o `CALL FORM`. ## Ejemplos de uso diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md index 80ac8ee4f5d3e5..5b5e136edec480 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Proveedores Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +Para ello sólo tiene que definir la `baseURL` a la del proveedor y utilizar su clave api si es necesario. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Algunos de ellos ## Remoto -| Proveedor | Url base | +| Proveedor | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Algunos de ellos ## Local -| Proveedor | Url base por defecto | Doc | +| Proveedor | Base URL por defecto | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md index e2e93e051c023d..6af02947ee1768 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md @@ -21,7 +21,7 @@ En primer lugar, inicialice el cliente OpenAI utilizando su llave API var $client:=cs.AIKit.OpenAI.new("your api key") ``` -Para una API de [proveedor compatible](compatible-openai.md), puede configurar la URL del servidor definiendo el parámetro `baseURL`. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -43,7 +43,7 @@ var $result:=$client..() El `$result` contiene el `HTTPRequest`, un estado `success`, una colección de `errors` y más. Ver [OpenAIResult](Classes/OpenAIResult.md) -Vea algunos ejemplos a continuación. +See some examples below. #### Chat diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md index a10a8e823b4cad..770c959bbb2560 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md @@ -127,5 +127,9 @@ El siguiente ejemplo evita una nueva conexión entre las 2 y 4 A.M.   // Método base On Server Open Connection  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time"projectMethod"
  • "formObjectMethod"
  • "formmethod"
  • "databaseMethod"
  • "triggerMethod"
  • "executeOnServer" (when calling a project method with the *Execute on Server attribute*)
  • "executeFormula" (when executing a formula via [PROCESS 4D TAGS](../commands-legacy/process-4d-tags.md) or the evaluation of a formula in a 4D Write Pro document)
  • "classFunction"
  • "formMethod"
  • | "type":"formMethod" | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/process-number.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/process-number.md index 8e5b81d1056ae0..62d2495d47d071 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/process-number.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/process-number.md @@ -28,7 +28,7 @@ displayed_sidebar: docs ## Descripción -The `Process number` command returns the number of the process whose *name* or *id* you pass in the first parameter. Si no se encuentra ningún proceso, `Process number` devuelve 0. +El comando `Process number` devuelve el número del proceso cuyo *name* o *id* pasa en el primer parámetro. Si no se encuentra ningún proceso, `Process number` devuelve 0. El parámetro opcional \* permite recuperar, de un 4D remoto, el número de un proceso que se ejecuta en el servidor. En este caso, el valor devuelto es negativo. Esta opción es especialmente útil cuando se utilizan los comandos [GET PROCESS VARIABLE](../commands-legacy/get-process-variable.md), [SET PROCESS VARIABLE](../commands-legacy/set-process-variable.md) y [VARIABLE TO VARIABLE](../commands-legacy/variable-to-variable.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/zip-create-archive.md b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/zip-create-archive.md index 79d2786081e8cb..e43da8a0339d09 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/zip-create-archive.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20-R10/commands/zip-create-archive.md @@ -40,14 +40,14 @@ Puede pasar un objeto 4D.File, 4D.Folder, o una estructura zip como primer pará - *zipStructure*: pase un objeto que describa el objeto ZIP archivo. Las siguientes propiedades están disponibles para definir la estructura: -| Propiedad | Tipo | Descripción | -| ------------ | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| compression | Integer |
  • `ZIP Compression standard`: Compresión Deflate (por defecto)
  • `ZIP Compression LZMA`: Compression LZMA
  • `ZIP Compresión XZ`: Compression XZ
  • `ZIP Compresión`: sin compresión
  • | -| level | Integer | Nivel de compresión. Valores posibles: 1 a 10. Un valor más bajo producirá un archivo más grande, mientras que un valor más alto producirá un archivo más pequeño. Sin embargo, el nivel de compresión influye en el rendimiento. Valores por defecto si se omite:
  • `ZIP Compression standard`: 6
  • `ZIP Compression LZMA`: 4
  • `ZIP Compression XZ`: 4
  • | -| encryption | Integer | The encryption to use if a password is set:
  • `ZIP Encryption AES128`: AES encryption using 128-bit key.
  • `ZIP Encryption AES192`: AES encryption using 192-bit key.
  • `ZIP Encryption AES256`: AES encryption using 256-bit key (default if password is set).
  • `ZIP Encryption none`: Data is not encrypted (default if no password is set)
  • | -| contraseña | Text | Una contraseña a utilizar si se requiere encriptación. | -| Histórico | Collection |
  • una colección de objetos `4D.File` o `4D.Folder` o
  • una colección de objetos con las siguientes propiedades:
  • PropiedadTipoDescripción
    source4D.Archivo o 4D.CarpetaArchivo o Carpeta
    destinoTexto(opcional) - Especifique una ruta de archivo relativa para cambiar la organización del contenido del archivo
    optionnumber(opcional) - `ZIP Ignore invisible files` o 0 para comprimir todo el archivo
    | -| retrollamada | 4D.Function | Una fórmula de retrollamada que recibirá la progresión de la compresión (0 - 100) en $1. | +| Propiedad | Tipo | Descripción | +| ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| compression | Integer |
  • `ZIP Compression standard`: Compresión Deflate (por defecto)
  • `ZIP Compression LZMA`: Compression LZMA
  • `ZIP Compresión XZ`: Compression XZ
  • `ZIP Compresión`: sin compresión
  • | +| level | Integer | Nivel de compresión. Valores posibles: 1 a 10. Un valor más bajo producirá un archivo más grande, mientras que un valor más alto producirá un archivo más pequeño. Sin embargo, el nivel de compresión influye en el rendimiento. Valores por defecto si se omite:
  • `ZIP Compression standard`: 6
  • `ZIP Compression LZMA`: 4
  • `ZIP Compression XZ`: 4
  • | +| encryption | Integer | El cifrado a utilizar si se define una contraseña
  • :`ZIP Encryption AES128`: Cifrado AES con clave de 128 bits.
  • `ZIP Encryption AES192`: cifrado AES con una clave de 192 bits.
  • `ZIP Encryption AES256`: encriptación AES con una llave de 256 bits (por defecto si se define la contraseña).
  • `ZIP Encryption none`: los datos no se encriptan (por defecto si no se define contraseña).
  • | +| contraseña | Text | Una contraseña a utilizar si se requiere encriptación. | +| Histórico | Collection |
  • una colección de objetos `4D.File` o `4D.Folder` o
  • una colección de objetos con las siguientes propiedades:
  • PropiedadTipoDescripción
    source4D.Archivo o 4D.CarpetaArchivo o Carpeta
    destinoTexto(opcional) - Especifique una ruta de archivo relativa para cambiar la organización del contenido del archivo
    optionnumber(opcional) - `ZIP Ignore invisible files` o 0 para comprimir todo el archivo
    | +| retrollamada | 4D.Function | Una fórmula de retrollamada que recibirá la progresión de la compresión (0 - 100) en $1. | En el parámetro *destinationFile*, pase un objeto `4D.File` que describa el archivo ZIP a crear (nombre, ubicación, etc.). Se aconseja utilizar la extensión ".zip" si quiere que el archivo ZIP sea procesado automáticamente por cualquier software. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Concepts/components.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Concepts/components.md index d3c8a52fc7bba5..effaefdaa08b7e 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Concepts/components.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Concepts/components.md @@ -7,7 +7,7 @@ Un componente 4D es un conjunto de código y de formularios 4D que representan u ## ¿Dónde encontrar los componentes? -Varios componentes están [preinstalados en el entorno de desarrollo 4D](Extensions/overview.md), pero muchos componentes 4D de la comunidad 4D [están disponibles en GitHub](https://github.com/search?q=4d-component&type=Repositories). Adicionalmente, puede [desarrollar sus propios componentes 4D](Extensions/develop-components.md). +Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Adicionalmente, puede [desarrollar sus propios componentes 4D](Extensions/develop-components.md). ## Instalación de los componentes diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md b/i18n/es/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md index bfc77eab3e903f..8deb72f19dca7d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barra de herramientas contiene los siguientes elementos: | Icono | Nombre | Descripción | | ------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Ejecutar el formulario | Se utiliza para probar la ejecución del formulario. Al presionar este botón, 4D abre una nueva ventana y muestra el formulario en su contexto (lista de registros para un formulario lista y página de registro actual para un formulario detallado). El formulario se ejecuta en el proceso principal. | -| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, mover y redimensionar los objetos del formulario.

    **Nota**: cuando se selecciona un objeto de tipo Texto o Área de Grupo, al presionar la tecla **Intro** se pasa al modo de edición.

    | +| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | | ![](../assets/en/FormEditor/zOrder.png) | [Orden de entrada](#data-entry-order) | Pasa al modo "Orden de entrada", donde es posible ver y cambiar el orden de entrada actual del formulario. Tenga en cuenta que las marcas permiten ver el orden de entrada actual, sin dejar de trabajar en el formulario. | | ![](../assets/en/FormEditor/moving.png) | [Desplazamiento](#moving-objects) | Pasa al modo " Desplazamiento ", en el que es posible llegar rápidamente a cualquier parte del formulario utilizando la función de arrastrar y soltar en la ventana. El cursor toma la forma de una mano. Este modo de navegación es especialmente útil cuando se hace zoom en el formulario. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar la escala de visualización del formulario (100% por defecto). Puede pasar al modo "Zoom" haciendo clic en la lupa o pulsando directamente en la barra correspondiente a la escala deseada. Esta función se detalla en la sección anterior. | @@ -146,11 +146,11 @@ Antes de poder realizar cualquier operación en un objeto (como cambiar el ancho Para seleccionar un objeto utilizando la barra de herramientas: -1. Haga clic en la herramienta Flecha de la barra de herramientas.

    ![](../assets/en/FormEditor/selection.png)

    +1. Haga clic en la herramienta Flecha de la barra de herramientas.
    ![](../assets/en/FormEditor/selection.png) -

    Cuando se mueve el puntero en el área del formulario, se convierte en un puntero estándar con forma de flecha

    . +
    Cuando se mueve el puntero en el área del formulario, se convierte en un puntero estándar con forma de flecha. -2. Haga clic en el objeto que desea seleccionar. Las manillas de redimensionamiento identifican el objeto seleccionado.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Haga clic en el objeto que desea seleccionar. Las manillas de redimensionamiento identifican el objeto seleccionado.
    ![](../assets/en/FormEditor/selectResize.png) Para seleccionar un objeto utilizando la Lista de propiedades: @@ -235,13 +235,12 @@ La agrupación sólo afecta a los objetos en el editor de formularios. Cuando se Para agrupar los objetos: 1. Seleccione los objetos que desea agrupar. -2. Elija **Agrupar** en el menú Objetos. OR Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    -4D marca el límite de los objetos recién agrupados con marcas. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. +2. Elija **Agrupar** en el menú Objetos. OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. Para desagrupar un grupo de objetos: 1. Seleccione el grupo de objetos que desea desagrupar. -2. Elija **Desagrupar** en el menú **Objetos**.

    O

    Haga clic en el botón **Desagrupar** (menú del botón **Agrupar**) de la barra de herramientas del editor de formularios.

    Si **Desagrupar** está atenuado, significa que el objeto seleccionado ya está separado en su forma más simple.

    4D marca los bordes de los objetos individuales con marcas. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca los bordes de los objetos individuales con marcas. ### Alinear objetos @@ -268,9 +267,10 @@ El Asistente de Alineación permite realizar cualquier tipo de alineación y/o d Para mostrar esta caja de diálogo, seleccione los objetos que desee alinear y, a continuación, elija el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. -- En las áreas "Alineación izquierda/derecha" y/o "Alineación superior/inferior", haga clic en el icono que corresponde a la alineación que desea realizar.

    El área de ejemplo muestra los resultados de su selección.

    +- En las áreas "Alineación izquierda/derecha" y/o "Alineación superior/inferior", haga clic en el icono que corresponda a la alineación que desee realizar.
    El área de ejemplo muestra los resultados de su selección. + +- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. En este caso, la posición del objeto de referencia no se alterará. -- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor.

    Para alinear los objetos a un objeto específico, seleccione la opción **Alinear en** y seleccione el objeto al que desea que se alineen los demás objetos de la lista de objetos. En este caso, la posición del objeto de referencia no se alterará.

    Puede previsualizar los resultados de la alineación haciendo clic en el botón **Previsualización**. Los objetos se alinean entonces en el editor de formularios, pero como la caja de diálogo permanece en el primer plano, aún puede cancelar o aplicar la alineación. > Esta caja de diálogo le permite alinear y distribuir objetos en una sola operación. Para más información sobre cómo distribuir objetos, consulte [Repartir objetos](#distribuir-objetos). @@ -304,7 +304,7 @@ Para repartir los objetos con igual espacio: 1. Seleccione tres o más objetos y haga clic en la herramienta Distribuir correspondiente. -2. En la barra de herramientas, haga clic en la herramienta de distribución que corresponde a la distribución que desea aplicar.

    ![](../assets/en/FormEditor/distributionTool.png)

    O

    Seleccione un comando del menú de distribución en el submenú **Alinear** del menú **Objeto** o en el menú contextual del editor.

    4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: @@ -312,9 +312,9 @@ Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. Aparece la siguiente caja de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Icono de distribución horizontal estándar)

    El área de ejemplo muestra los resultados de su selección. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. Para efectuar una repartición estándar que utilice el esquema estándar, haga clic en **Previsualización** o *Aplicar*.

    En este caso, 4D realizará una distribución estándar, de modo que los objetos se dispongan con la misma cantidad de espacio entre ellos.

    For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor.

    Para efectuar una distribución específica, seleccione la opción **Distribuir** (por ejemplo, si desea distribuir los objetos en función de la distancia a su lado derecho). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    - Horizontalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los lados izquierdo, central (hor.) y derecho de los objetos seleccionados. - Verticalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los bordes superiores, centros (vert.) y bordes inferiores de los objetos seleccionados. @@ -367,11 +367,11 @@ Este párrafo describe la visualización y la modificación del orden de entrada Para ver o cambiar el orden de entrada: -1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:
    ![](../assets/en/FormEditor/zOrder.png)
    El puntero se convierte en un puntero de orden de entrada y 4D dibuja una línea en el formulario mostrando el orden en que selecciona los objetos durante la entrada de datos. Ver y cambiar el orden de entrada de datos son las únicas acciones que puede realizar hasta que haga clic en cualquier herramienta de la paleta Herramientas. -2. Para cambiar el orden de entrada de datos, sitúe el puntero sobre un objeto del formulario y, mientras mantiene presionado el botón del ratón, arrastre el puntero hasta el objeto que desee que siga en el orden de entrada de datos.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D ajustará la orden de entrada en consecuencia. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita el paso 2 tantas veces como sea necesario para establecer el orden de entrada de datos que desee. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-20/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/version-20/Notes/updates.md index 2baa81e494ea4c..b3728efa113318 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-20/Notes/updates.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-20/Notes/updates.md @@ -25,7 +25,7 @@ Por razones internas, la versión de los clientes remotos que se conectan a 4D S #### Cambios de comportamiento -- As of 4D **20.7 HF2**, the [`Time`](https://doc.4d.com/4dv20/help/command/en/page179.html) command returns a negative time expression when the *timeValue* parameter is negative. For instance, `Time("-01:02:03")` will now return -01:02:03. In previous releases, the negative sign was ignored. +- As of 4D **20.7 HF2**, the [`Time`](https://doc.4d.com/4dv20/help/command/en/page179.html) command returns a negative time expression when the *timeValue* parameter is negative. For instance, `Time("-01:02:03")` will now return -01:02:03. En versiones anteriores, se ignoraba el signo negativo. ## 4D 20.6 LTS diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md b/i18n/es/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md index 53054ee02534df..d300006546e7b0 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md @@ -1187,11 +1187,11 @@ Si *attributePath* designa un atributo que almacena [**objetos vectores**](../AP En este caso, el parámetro *value* debe ser un **objeto vectorial de comparación** que contenga las siguientes propiedades: -| Propiedad | Tipo | Descripción | -| --------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| vector | [4D.Vector](../API/VectorClass.md) | Obligatorio. El vector a comparar | -| metric | Text | Opcional. [Cálculo vectorial](../API/VectorClass.md#understanding-the-different-vector-computations) a utilizar para la consulta. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine distance between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | -| threshold | Real | Opcional (por defecto: 0,5). Un valor umbral utilizado para filtrar las comparaciones de vectores en función de su puntuación de similitud coseno, punto o euclídea según la "métrica" seleccionada. Es altamente recomendable elegir una similitud que se adapte mejor a su caso de uso específico para obtener resultados óptimos. | +| Propiedad | Tipo | Descripción | +| --------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| vector | [4D.Vector](../API/VectorClass.md) | Obligatorio. El vector a comparar | +| metric | Text | Opcional. [Cálculo vectorial](../API/VectorClass.md#understanding-the-different-vector-computations) a utilizar para la consulta. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot`: calcula la similitud en puntos de los vectores.
  • `mk euclidean`: calcula la distancia euclidiana entre vectores. | +| threshold | Real | Opcional (por defecto: 0,5). Un valor umbral utilizado para filtrar las comparaciones de vectores en función de su puntuación de similitud coseno, punto o euclídea según la "métrica" seleccionada. Es altamente recomendable elegir una similitud que se adapte mejor a su caso de uso específico para obtener resultados óptimos. | Sólo se admite un subconjunto de símbolos **comparadores**. Tenga en cuenta que comparan los resultados con el valor umbral: diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/API/EntityClass.md b/i18n/es/docusaurus-plugin-content-docs/version-21/API/EntityClass.md index 62663527a46221..c2aa39d0888d53 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/API/EntityClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/API/EntityClass.md @@ -338,10 +338,10 @@ vCompareResult1 (se devuelven todas las diferencias):
    Historia -| Lanzamiento | Modificaciones | -| ----------- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | Añadidos | +| Lanzamiento | Modificaciones | +| ----------- | -------------------------- | +| 21 | Añadidos los estados 7 y 8 | +| 17 | Añadidos |
    @@ -368,7 +368,7 @@ De lo contrario, puede pasar la opción `dk force drop if stamp changed` en el p **Resultado** -The object returned by `.drop()` contains the following properties: +El objeto devuelto por `.drop()` contiene las siguientes propiedades: | Propiedad | | Tipo | Descripción | | --------------------------------- | ----------------------------------- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -398,7 +398,7 @@ The object returned by `.drop()` contains the following properties: | `dk status entity does not exist anymore` | 5 | La entidad ya no existe en los datos. Este error puede ocurrir en los siguientes casos:
  • la entidad ha sido eliminada (el marcador ha cambiado y ahora el espacio de memoria está libre)
  • la entidad ha sido eliminada y reemplazada por otra con otra clave primaria (el marcador ha cambiado y una nueva entidad ahora utiliza el espacio memoria). When using entity.drop(), this error can be returned when dk force drop if stamp changed option is used. When using entity.lock(), this error can be returned when dk reload if stamp changed option is used.
  • **Associated statusText**: "Entity does not exist anymore" | | `dk status locked` | 3 | La entidad está bloqueada por un bloqueo pesimista.
    **statusText asociado**: "Already locked" | | `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **Associated statusText**: "Other error" | +| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **statusText asociado**\*: "Other error" | | `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | | `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used
  • **Associated statusText**: "Stamp has changed"
  • | | `dk status wrong permission` | 1 | Los privilegios actuales no permiten suprimir la entidad. **Associated statusText**: "Permission Error" | @@ -1015,13 +1015,12 @@ El objeto devuelto por `.lock()` contiene las siguientes propiedades: (\*) Los siguientes valores pueden ser devueltos en las propiedades *status* y *statusText* del objeto *Result* en caso de error: -| Constante | Valor | Comentario | -| ----------------------------------------- | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status entity does not exist anymore` | 5 | La entidad ya no existe en los datos. Este error puede ocurrir en los siguientes casos:
  • la entidad ha sido eliminada (el marcador ha cambiado y ahora el espacio de memoria está libre)
  • la entidad ha sido eliminada y reemplazada por otra con otra clave primaria (el marcador ha cambiado y una nueva entidad ahora utiliza el espacio memoria). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. Cuando se utiliza `.lock()`, este error puede ser devuelto cuando se utiliza la opción `dk reload if stamp changed`

  • **statusText asociado**: "Entity does not exist anymore" | -| `dk status locked` | 3 | La entidad está bloqueada por un bloqueo pesimista. **statusText asociado**: "Already locked" | -| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require | -| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **Associated statusText**: "Other error" | -| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | +| Constante | Valor | Comentario | +| ----------------------------------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | La entidad ya no existe en los datos. Este error puede ocurrir en los siguientes casos:
  • la entidad ha sido eliminada (el marcador ha cambiado y ahora el espacio de memoria está libre)
  • la entidad ha sido eliminada y reemplazada por otra con otra clave primaria (el marcador ha cambiado y una nueva entidad ahora utiliza el espacio memoria). Cuando se utiliza `.drop()`, este error puede devolverse cuando se utiliza la opción dk force drop if stamp changed. Cuando se utiliza `.lock()`, este error puede ser devuelto cuando se utiliza la opción `dk reload if stamp changed`

  • **statusText asociado**: "Entity does not exist anymore" | +| `dk status locked` | 3 | La entidad está bloqueada por un bloqueo pesimista. **statusText asociado**: "Already locked" | +| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **statusText asociado**\*: "Other error" | +| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | #### Ejemplo 1 @@ -1215,10 +1214,10 @@ El objeto devuelto por `.reload( )` contiene las siguientes propiedades:
    Historia -| Lanzamiento | Modificaciones | -| ----------- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | Añadidos | +| Lanzamiento | Modificaciones | +| ----------- | -------------------------- | +| 21 | Añadidos los estados 7 y 8 | +| 17 | Añadidos |
    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/API/SessionClass.md b/i18n/es/docusaurus-plugin-content-docs/version-21/API/SessionClass.md index 7b9392b7d194f3..b58fb0cca06e51 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/API/SessionClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/API/SessionClass.md @@ -89,7 +89,7 @@ Esta función no elimina los **privilegios promovidos** del proceso web, tanto s ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). #### Ejemplo @@ -388,7 +388,7 @@ Esta función devuelve True para el *privilegio* si se llama desde una función ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/API/TCPEventClass.md b/i18n/es/docusaurus-plugin-content-docs/version-21/API/TCPEventClass.md index 1bd070ea6af91a..6d9eb04f026eba 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/API/TCPEventClass.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/API/TCPEventClass.md @@ -16,7 +16,7 @@ The `TCPEvent` class provides information about events occurring during the life ### Objeto TCPEvent -A `TCPEvent` object is immutable and non-streamable. +Un objeto `TCPEvent` es inmutable y no se puede transmitir. Las siguientes propiedades están disponibles: @@ -81,9 +81,9 @@ La propiedad `.type` contiene el tipo del eve - `"connection"`: Indicates that a TCPConnection was successfully established. - `"data"`: indica que los datos han sido recibidos. -- `"error"`: Indicates that an error occurred during the TCPConnection. -- `"close"`: Indicates that the TCPConnection has been properly closed. -- `"terminate"`: Indicates that the TCPConnection is about to be released. +- `"error"`: indica que se ha producido un error durante la TCPConnection. +- `"close"`: indica que la TCPConnection ha sido correctamente cerrada. +- `"terminate"`: indica que el TCPConnection está a punto de ser liberado. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Admin/cli.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Admin/cli.md index cdc65c6656666b..6d4f22b6de1924 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Admin/cli.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Admin/cli.md @@ -55,7 +55,7 @@ Sintaxis: | `--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-legacy/get-database-parameter.md) (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ón
  • No se muestra ningún icono en el dock o la barra de tareas
  • La 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-legacy/set-database-parameter.md), 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-legacy/alert.md), Abort para un diálogo de error...). All intercepted commands(\*) are logged in the diagnostic log.

  • For maintenance needs, you can send any text to standard output streams using the [LOG EVENT](../commands-legacy/log-event.md) command. Tenga en cuenta que las aplicaciones 4D sin interfaz sólo pueden cerrarse mediante una llamada a [QUIT 4D](../commands-legacy/quit-4d.md) 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). In this mode:
  • No file containing data is opened, even if specified in the command line or the `.4DLink` file, or when using the `CREATE DATA FILE` and `OPEN DATA FILE` commands.
  • Los comandos que manipulan datos arrojarán un error. For example, `CREATE RECORD` throws “no table to apply the command to”.

  • **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.
  • If passed using the `.4DLink` file, dataless mode only applies to the database specified in the `.4DLink` file. Para más información sobre los archivos `.4DLink`, ver [Atajos para abrir proyectos](../GettingStarted/creating.md#project-opening-shortcuts).
  • | +| `--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). In this mode:
  • No file containing data is opened, even if specified in the command line or the `.4DLink` file, or when using the `CREATE DATA FILE` and `OPEN DATA FILE` commands.
  • Los comandos que manipulan datos arrojarán un error. For example, `CREATE RECORD` throws “no table to apply the command to”.

  • **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). | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/classes.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/classes.md index 41471d66e3a903..cc4dcb07b55793 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/classes.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/classes.md @@ -774,7 +774,7 @@ Se declaran clases singleton añadiendo la(s) palabra(s) clave(s) apropiada(s) a ::: -El singleton de la clase se instanciará en la primera llamada del comando [`cs..me`](../API/ClassClass.md#me) property. El singleton instanciado de la clase se devuelve siempre cuando se utiliza la propiedad [`me`](../API/ClassClass.md#me). +El singleton de la clase se instanciará en la primera llamada de la propiedad [`cs.[.me`](../API/ClassClass.md#me). El singleton instanciado de la clase se devuelve siempre cuando se utiliza la propiedad [`me`](../API/ClassClass.md#me). Si necesita instanciar un singleton con parámetros, también puede llamar la función [`new()`](../API/ClassClass.md#new). En este caso, se recomienda instanciar el singleton en algún código ejecutado al inicio de la aplicación. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/components.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/components.md index 16edac0f404e2c..fe6ae7e719caec 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/components.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/components.md @@ -9,7 +9,7 @@ Un componente 4D es un conjunto de código y de formularios 4D que representan u Installation and loading of components in your 4D projects are handled through the [4D Dependency manager](../Project/components.md). -Varios componentes son [desarrollados por 4D](../Extensions/overview.md#components-developed-by-4d), pero muchos componentes 4D de la comunidad 4D [se pueden encontrar en GitHub](https://github.com/search?q=4d-component&type=Repositories). Adicionalmente, puede [desarrollar sus propios componentes 4D](../Extensions/develop-components.md). +Varios componentes son [desarrollados por 4D](../Extensions/overview.md#components-developed-by-4d), pero muchos componentes 4D de la comunidad 4D [se pueden encontrar en GitHub](https://github.com/topics/4d-component). Adicionalmente, puede [desarrollar sus propios componentes 4D](../Extensions/develop-components.md). ## Utilización de los componentes diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/error-handling.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/error-handling.md index 706dcbef348f6c..7e8ff6cf13490d 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/error-handling.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Concepts/error-handling.md @@ -23,7 +23,7 @@ Es muy recomendable instalar un método global de gestión de errores en 4D Serv ## Predictable vs unpredictable errors -Many 4D class functions, such as [`entity.save()`](../API/EntityClass.md#save) or [`transporter.send()`](../API/SMTPTransporterClass.md#send), return a object containing *status* information. This object is used to store **predictable** errors in the runtime context, e.g. invalid password, locked entity, etc., that do not require to stop program execution. This category of errors, also named **silent errors** errors, can be handled by regular code. When such errors occur in an error handling context, i.e. a [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or an [error-handling method](#installing-an-error-handling-method), they do not interrupt the execution and do not trigger the error handling (e.g. the `Catch` part of the [`Try/Catch`](#trycatchend-try) is not executed). They are not listed in the [`Last errors`](../commands/last-errors.md) collection. The error is only returned in the `status` and `statusText` properties of the returned object. It can be processed according to your business logic. +Many 4D class functions, such as [`entity.save()`](../API/EntityClass.md#save) or [`transporter.send()`](../API/SMTPTransporterClass.md#send), return a object containing *status* information. This object is used to store **predictable** errors in the runtime context, e.g. invalid password, locked entity, etc., that do not require to stop program execution. This category of errors, also named **silent errors** errors, can be handled by regular code. When such errors occur in an error handling context, i.e. a [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or an [error-handling method](#installing-an-error-handling-method), they do not interrupt the execution and do not trigger the error handling (e.g. the `Catch` part of the [`Try/Catch`](#trycatchend-try) is not executed). They are not listed in the [`Last errors`](../commands/last-errors.md) collection. El error sólo se devuelve en las propiedades `status` y `statusText` del objeto devuelto. It can be processed according to your business logic. The other category of errors are **unpredictable** errors, also named **serious errors**. They include disk write error, network failure, or in general any unexpected interruption. This category of errors generates exceptions defined by [a *code*, a *message* and a *signature*](#error-codes). They interrupt the execution and trigger the error processing of the [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or [error-handling method](#installing-an-error-handling-method) features. They are listed in the [`Last errors`](../commands/last-errors.md) collection. Note that serious errors can also return values in the `status` and `statusText` properties, e.g. `dk status serious error` - "Other error". diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Desktop/clientServer.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Desktop/clientServer.md index 3fb97a773f2ad5..b0ce1345a5fbe2 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Desktop/clientServer.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Desktop/clientServer.md @@ -97,7 +97,7 @@ En el servidor, el comando [`Session`](../commands/session.md) devuelve un objet ### Utilización -The `session` object allows you to handle information and privileges for the remote user session. +El objeto `session` permite manejar la información y los privilegios de la sesión del usuario remoto. Puede compartir datos entre todos los procesos de la sesión del usuario utilizando el objeto compartido [`session.storage`](../API/SessionClass.md#storage). Por ejemplo, puede iniciar un procedimiento de autenticación y verificación de usuario cuando un cliente se conecta al servidor, que involucra ingresar un código enviado por correo electrónico o SMS en la aplicación. A continuación, añada la información de usuario al almacenamiento de sesión, permitiendo al servidor identificar al usuario. De este modo, el servidor 4D puede acceder a la información del usuario para todos los procesos del cliente, lo que permite escribir código personalizado según el rol del usuario. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Desktop/labels.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Desktop/labels.md index 9f39573be56933..a7ff4816cc015b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Desktop/labels.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Desktop/labels.md @@ -166,7 +166,7 @@ You can use dedicated table forms and project methods to print labels with calcu Here, in a table form named "label", we added the *myVar* variable: ![](../assets/en/Desktop/label-example1.png) -2. Create a `setMyVar` project method with the following code: +2. Crea un método proyecto llamado `setMyVar` con el siguiente código: ```4d var myVar+=1 diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md index 84adbd9996a1cd..fd68d3056cb3bb 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Descripción diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md index d486ff3d6bbabd..7efd3ff28141a8 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Propiedades de los campos --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md b/i18n/es/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md index eeff7b3fd312a1..f0be8595f7bb7b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barra de herramientas contiene los siguientes elementos: | Icono | Nombre | Descripción | | ------------------------------------------------ | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Ejecutar el formulario | Se utiliza para probar la ejecución del formulario. Al presionar este botón, 4D abre una nueva ventana y muestra el formulario en su contexto (lista de registros para un formulario lista y página de registro actual para un formulario detallado). El formulario se ejecuta en el proceso principal. | -| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, mover y redimensionar los objetos del formulario.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +| ![](../assets/en/FormEditor/selection.png) | [Herramienta de selección](#selecting-objects) | Permite seleccionar, mover y redimensionar los objetos del formulario.
    **Nota**: cuando se selecciona un objeto de tipo Texto o Área de Grupo, al presionar la tecla **Intro** se pasa al modo de edición. | | ![](../assets/en/FormEditor/zOrder.png) | [Orden de entrada](#data-entry-order) | Pasa al modo "Orden de entrada", donde es posible ver y cambiar el orden de entrada actual del formulario. Tenga en cuenta que las marcas permiten ver el orden de entrada actual, sin dejar de trabajar en el formulario. | | ![](../assets/en/FormEditor/moving.png) | [Mover](#mover-objetos) | Pasa al modo " Desplazamiento ", en el que es posible llegar rápidamente a cualquier parte del formulario utilizando la función de arrastrar y soltar en la ventana. El cursor toma la forma de una mano. Este modo de navegación es especialmente útil cuando se hace zoom en el formulario. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar la escala de visualización del formulario (100% por defecto). Puede pasar al modo "Zoom" haciendo clic en la lupa o pulsando directamente en la barra correspondiente a la escala deseada. Esta función se detalla en la sección anterior. | @@ -146,11 +146,11 @@ Antes de poder realizar cualquier operación en un objeto (como cambiar el ancho Para seleccionar un objeto utilizando la barra de herramientas: -1. Haga clic en la herramienta Flecha de la barra de herramientas.

    ![](../assets/en/FormEditor/selection.png)

    +1. Haga clic en la herramienta Flecha de la barra de herramientas.
    ![](../assets/en/FormEditor/selection.png) -

    Cuando se mueve el puntero en el área del formulario, se convierte en un puntero estándar con forma de flecha

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Haga clic en el objeto que desea seleccionar. Las manillas de redimensionamiento identifican el objeto seleccionado.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Haga clic en el objeto que desea seleccionar. Las manillas de redimensionamiento identifican el objeto seleccionado.
    ![](../assets/en/FormEditor/selectResize.png) Para seleccionar un objeto utilizando la Lista de propiedades: @@ -241,13 +241,13 @@ Para agrupar los objetos: 1. Seleccione los objetos que desea agrupar. 2. Elija **Agrupar** en el menú Objetos. O - Haga clic en el botón Agrupar en la barra de herramientas del editor de formularios:

    ![](../assets/en/FormEditor/group.png)

    + Haga clic en el botón Agrupar en la barra de herramientas del editor de formularios:
    ![](../assets/en/FormEditor/group.png) 4D marca el límite de los objetos recién agrupados con manijas. No hay marcas que delimiten ninguno de los objetos individuales del grupo. Ahora, al modificar el objeto agrupado, se modifican todos los objetos que componen el grupo. Para desagrupar un grupo de objetos: 1. Seleccione el grupo de objetos que desea desagrupar. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marca los bordes de los objetos individuales con marcas. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    Si **Desagrupar** está atenuado, significa que el objeto seleccionado ya está separado en su forma más simple. 4D marca los bordes de los objetos individuales con marcas. ### Alinear objetos @@ -275,9 +275,9 @@ El Asistente de Alineación permite realizar cualquier tipo de alineación y/o d Para mostrar esta caja de diálogo, seleccione los objetos que desee alinear y, a continuación, elija el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    El área de ejemplo muestra los resultados de su selección.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    El área de ejemplo muestra los resultados de su selección. -- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. O:

    para alinear los objetos a un objeto específico, seleccione la opción **Alinear en** y seleccione el objeto al que desea que se alineen los demás objetos de la lista de objetos. En este caso, la posición del objeto de referencia no se alterará.

    +- Para realizar una alineación que utilice el esquema de anclaje estándar, haga clic en **Ver** o **Aplicar**. En este caso, 4D utiliza el objeto que está más lejos en la dirección de la alineación como ancla y alinea los otros objetos a ese objeto. Por ejemplo, si quiere realizar una alineación a la derecha en un conjunto de objetos, el objeto más a la derecha se utilizará como ancla. O:
    para alinear los objetos a un objeto específico, seleccione la opción **Alinear en** y seleccione el objeto al que desea que se alineen los demás objetos de la lista de objetos. En este caso, la posición del objeto de referencia no se alterará. Puede previsualizar los resultados de la alineación haciendo clic en el botón **Previsualización**. Los objetos se alinean entonces en el editor de formularios, pero como la caja de diálogo permanece en el primer plano, aún puede cancelar o aplicar la alineación. @@ -314,7 +314,8 @@ Para repartir los objetos con igual espacio: 1. Seleccione tres o más objetos y haga clic en la herramienta Distribuir correspondiente. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribuye los objetos consecuentemente. Los objetos se distribuyen utilizando la distancia a sus centros y se utiliza como referencia la mayor distancia entre dos objetos consecutivos. Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: @@ -322,9 +323,9 @@ Para distribuir objetos utilizando la caja de diálogo Alinear y Distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. ¡Aparece la siguiente caja de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Icono de distribución horizontal estándar)

    El área de ejemplo muestra los resultados de su selección. +3. En las áreas Alineación izquierda/derecha y/o Alineación superior/inferior, haga clic en el icono de distribución estándar: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Icono de distribución horizontal estándar)
    El área de ejemplo muestra los resultados de su selección. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opción actúa como un interruptor. Si la casilla de selección Distribuir está seleccionada, los iconos situados debajo de ella realizan una función diferente:
    - Horizontalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los lados izquierdos, centros (hor.) y los lados derechos de los objetos seleccionados. - Verticalmente, los iconos corresponden a las siguientes distribuciones: uniformemente con respecto a los bordes superiores, centros (vert.) y los bordes inferiores de los objetos seleccionados. @@ -379,11 +380,11 @@ Este párrafo describe la visualización y la modificación del orden de entrada Para ver o cambiar el orden de entrada: -1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Seleccione **Orden de entrada** en el menú **Formulario** o haga clic en el botón Orden de entrada en la barra de herramientas de la ventana:
    ![](../assets/en/FormEditor/zOrder.png)
    El puntero se convierte en un puntero de orden de entrada y 4D dibuja una línea en el formulario mostrando el orden en que selecciona los objetos durante la entrada de datos. Ver y cambiar el orden de entrada de datos son las únicas acciones que puede realizar hasta que haga clic en cualquier herramienta de la paleta Herramientas. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita el paso 2 tantas veces como sea necesario para establecer el orden de entrada de datos que desee. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md b/i18n/es/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md index dc0b5a8bdb81ab..8c272c69a56671 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md @@ -96,72 +96,80 @@ No hay restricciones en el número de páginas que puede tener un formulario. El Un formulario multipáginas tiene una página de fondo y varias páginas de visualización. Los objetos que se colocan en la página de fondo pueden ser visibles en todas las páginas de visualización, pero sólo se pueden seleccionar y editar en la página de fondo. En los formularios multipágina, debe colocar su paleta de botones en la página de fondo. También es necesario incluir uno o más objetos en la página de fondo que ofrezcan las herramientas de navegación para el usuario. -## Fluent UI rendering (Developer Preview) +## Renderizado Fluent UI (Developer Preview) -On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +En Windows, 4D soporta el renderizado de formularios **Fluent UI**, el moderno diseño gráfico de la interfaz de usuario de Microsoft, basado en la tecnología **WinUI 3**. **WinUI 3** es la base del Windows App SDK y representa las próximas interfaces gráficas de Windows. + +La renderización Fluent UI ofrece controles modernos y atractivos, compatibilidad con los temas sistema dark/light, renderización más fluida optimizada para pantallas de alta resolución y una experiencia de usuario coherente y alineada con las aplicaciones recientes de Microsoft. + +| Light theme | Dark theme | +| --------------------------------------- | -------------------------------------------- | +| ![](../assets/en/FormEditor/fluent.png) | ![](../assets/en/FormEditor/fluent-dark.png) | :::caution Vista previa para desarrolladores -Fluent UI support is currently in the Developer Preview phase. No debe utilizarse en producción. +La compatibilidad con Fluent UI se encuentra actualmente en fase Developer Preview. No debe utilizarse en producción. ::: :::info macOS -This feature can only be used on Windows. On macOS, it is ignored. +Esta funcionalidad sólo se puede utilizar en Windows. En macOS, se ignora. ::: -### Fluent UI rendering availability +:::tip Entrada de blog relacionada -The Fluent UI rendering is available in the following execution environments only: +[Modernice sus interfaces 4D con Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- Fusionado aplicación 4D [autónomo](../Desktop/building.md#build-stand-alone-application) o [cliente](../Desktop/building.md#build-client-application) -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +::: -:::note +### Requisitos -If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. +La renderización Fluent UI requiere que esté instalado [**Windows App SDK versión 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads). Debe instalar este SDK en cualquier máquina Windows que muestre sus formularios. -::: +Si el Windows App SDK no está correctamente instalado, 4D renderizará todos sus formularios en modo clásico sin error. -### Enabling the Fluent UI rendering +### Activar el renderizado Fluent UI -You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. +Puede activar el modo de renderizado Fluent UI a nivel de aplicación o a nivel de formulario. La configuración del formulario tiene prioridad sobre la configuración de la aplicación. -#### Application setting +#### Parámetros de la aplicación -Check the **Use Fluent UI on Windows** option in the "Interface" page of the Settings dialog box. +Seleccione la opción **Utilizar Fluent UI en Windows** en la página "Interfaz" de la caja de diálogo de las Propiedades. ![](../assets/en/FormObjects/fluentui-setting.png) -In this case, the Fluent UI rendering mode will be used by default on Windows for all forms. +En este caso, el modo de renderizado Fluent UI se utilizará por defecto en Windows para todos los formularios. -#### Form setting +#### Parámetros del formulario -Each form can define its own rendering via the **Widget appearance** property. Las siguientes opciones están disponibles: +Cada formulario puede definir su propio renderizado a través de la propiedad **Apariencia de los Widgets**. Las siguientes opciones están disponibles: -- **Inherited**: inherits the global application setting (default), -- **Classic**: uses the classic Windows style, -- **Fluent UI**: enables the modern rendering based on Fluent UI.
    +- **Heredado**: hereda las propiedades globales de la aplicación (por defecto), +- **Classic**: utiliza el estilo clásico de Windows, +- **Fluent UI**: permite el renderizado moderno basado en Fluent UI.
    ![](../assets/en/FormObjects/fluentui-form.png) -The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". +La [propiedad de formulario JSON](./properties_JSONref.md) correspondiente es `fluentUI` con el valor undefined (es decir, heredado, valor por defecto), "true" o "false". -### Features and limitations +### Comportamientos específicos -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. +Cuando utilice los formularios 4D con el renderizado Fluent UI, debe prestar atención a los siguientes puntos: -When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: +- El nuevo comando `FORM Windows theme` devuelve el tema de visualización actual del formulario. Valores posibles: "Classic" o "FluentUI". Si no existe un formulario actual o el comando se ejecuta en macOS, se devuelve una cadena vacía. +- Si [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) es llamado en el contexto de un formulario, la información devuelta se refiere a la apariencia actual del formulario (Classic o FluentUI). Si se llama al comando fuera del contexto de un formulario, la información devuelta se refiere a las [propiedades globales del proyecto](#application-setting). +- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) con el parámetro *itemStyle* `Underline` no es soportado (ignorado) para los menús emergentes. +- El objeto de formulario [Stepper](../FormObjects/stepper.md) no admite el [evento doble clic](../Events/onDoubleClicked.md). +- Los [botones circulares](../FormObjects/button_overview.md#circle) son soportados (como en macOS). +- Los comandos [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) no son compatibles en áreas Web con motor de renderizado sistema. +- Se puede añadir rectángulo de foco a las [entradas](../FormObjects/input_overview.md) imagen y texto. -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. -- If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). -- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). -- [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). -- [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). -- The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +:::info Limitaciones + +Esta **Vista previa para desarrolladores** incluye algunas limitaciones, que se [enumeran en la entrada del blog relacionado](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: ## Formularios heredados diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md b/i18n/es/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md index 1e4635722fa0b1..879812bdbe3360 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md @@ -189,15 +189,15 @@ En otros casos (list box basados en selecciones temporales, columnas asociadas a ## Acción estándar -Actividades típicas que deben realizar los objetos activos (\*por ejemplo, permitir al usuario aceptar, cancelar o eliminar registros, desplazarse entre registros o de una página a otra en un formulario multipágina, etc.) han sido predefinidas por 4D como acciones estándar. Se describen con detalle en la sección [Acciones estándar](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) de la *manual de Diseño*. +Actividades típicas que deben realizar los objetos activos (\*por ejemplo, permitir al usuario aceptar, cancelar o eliminar registros, desplazarse entre registros o de una página a otra en un formulario multipágina, etc.) han sido predefinidas por 4D como acciones estándar. Se describen con detalle en la sección [Acciones estándar](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) de la *manual de Diseño*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Puede asignar al mismo tiempo una acción estándar y un método proyecto de un objeto. En este caso, la acción estándar suele ejecutarse después del método y 4D utiliza esta acción para activar/desactivar el objeto según el contexto actual. Cuando se desactiva un objeto, no se puede ejecutar el método proyecto asociado. #### Gramática JSON -| Nombre | Tipos de datos | Valores posibles | -| ------ | -------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| action | string | El nombre de una [acción estándar válida](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nombre | Tipos de datos | Valores posibles | +| ------ | -------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objetos soportados diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/FormObjects/webArea_overview.md b/i18n/es/docusaurus-plugin-content-docs/version-21/FormObjects/webArea_overview.md index deebe6ce0e1e73..75ae00ef3c98c9 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/FormObjects/webArea_overview.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/FormObjects/webArea_overview.md @@ -9,7 +9,7 @@ Es posible crear varias áreas web en el mismo formulario. Tenga en cuenta, sin Varias [acciones estándar](#standard-actions) dedicadas, numerosos [comandos de lenguaje](../category/web-area) así como [eventos de formulario](#form-events) genéricos y específicos permiten al desarrollador controlar el funcionamiento de las áreas web. Se pueden utilizar variables específicas para intercambiar información entre el área y el entorno 4D. -:::info Displaying Qodly pages +:::info Mostrar páginas Qodly In 4D client/server applications, Web areas can be used to display Qodly pages and [share the remote user session](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). This feature allows you to design web-based interfaces for your client/server desktop applications. @@ -53,7 +53,7 @@ Por ejemplo, llamando al método `HelloWorld` en 4D: $4d.HelloWorld(); ``` -> **Note:** JavaScript is **case-sensitive**, so the object is named **`$4d`** (with a lowercase "d"). +> **Nota:** JavaScript es **sensible a mayúsculas**, así que el objeto se llama **`$4d`** (con una minúscula "d"). ### Controlar el acceso a $4d @@ -123,7 +123,7 @@ $4d.today(function(result) En lugar de utilizar un método independiente, también podemos definir una **clase** que se encargue del cálculo. -Define the Class with 4D project method `calcSum` which receives parameters and returns their sum: +Defina la clase con el método proyecto 4D `calcSum` que recibe parámetros y devuelve su suma: ```4d // SumCalculator user class diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Notes/updates.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Notes/updates.md index b730b0bbfb1492..32d9b34d2cdefe 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Notes/updates.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Notes/updates.md @@ -9,49 +9,50 @@ Lea [**Novedades en 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/), la ent #### Lo más destacado -- Support of AI Vector Searches in the [`query()`](../API/DataClassClass.md#query-by-vector-similarity) function and in the [`$filter`](../REST/$filter.md#vector-similarity) REST API. -- Support of TLS encryption for the [4D.TCPConnection](../API/TCPConnectionClass.md#4dtcpconnectionnew) class. +- Soporte de búsquedas vectoriales de IA en la función [`query()`](../API/DataClassClass.md#query-by-vector-similarity) y en la API REST [`$filter`](../REST/$filter.md#vector-similarity). +- Soporte de encriptación TLS para la clase [4D.TCPConnection](../API/TCPConnectionClass.md#4dtcpconnectionnew). - Servidor Web: - - new [HTTP rules](../WebServer/http-rules.md) to customize HTTP response headers, - - ability to set [HTTP request handlers](../WebServer/http-request-handler.md) using a `handlers` property in the *settings* parameter of the Web server [`start()`](../API/WebServerClass.md#start) function, - - the Web server object contains new [`rules`](../API/WebServerClass.md#rules) and [`handlers`](../API/WebServerClass.md#handlers) properties. -- New [ORDA events on data](../ORDA/orda-events.md): validateSave, saving, afterSave, validateDrop, dropping, afterDrop. -- New option allowing to use certificates from Windows Certificate Store instead of a local certificates folder in [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) and [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew) classes. + - nuevas [reglas HTTP](../WebServer/http-rules.md) para personalizar los encabezados de respuesta HTTP, + - posibilidad para definir los [gestores de peticiones HTTP](../WebServer/http-request-handler.md) utilizando una propiedad `handlers` en el parámetro *settings* de la función [`start()`](../API/WebServerClass.md#start) del servidor Web, + - el objeto servidor Web contiene nuevas propiedades [`rules`](../API/WebServerClass.md#rules) y [`handlers`](../API/WebServerClass.md#handlers). +- Nuevos [eventos ORDA sobre los datos](../ORDA/orda-events.md): validateSave, saving, afterSave, validateDrop, dropping, afterDrop. +- Nueva opción que permite utilizar certificados de Windows Certificate Store en lugar de una carpeta local de certificados en las clases [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) y [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew). - Cliente/servidor: - - You can display Qodly pages in Web areas and [share the remote client session](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). - - The [QUIC network layer](../settings/client-server.md#network-layer) has been enhanced to handle network interface changes transparently, for example when you travel with your laptop. See [this blog post](https://blog.4d.com/work-and-move-with-quic-and-network-switching). -- You can now [create components directly from the host project](../Extensions/develop-components.md#creating-components) and [edit their code from a dedicated tab](../Extensions/develop-components.md#editing-all-component-code) in the 4D Explorer without leaving or restarting the project. -- The 4D product activation step has been simplified and automated during [sign-in](../GettingStarted/Installation.md#sign-in). -- 4D AIKit component: new features to [invoke a specific tool automatically](../aikit/Classes/OpenAIChatHelper.md#registertool) and [specify a response format](../aikit/Classes/OpenAIChatCompletionsParameters.md#response-format). + - Puede mostrar las páginas Qodly en las áreas Web y [compartir la sesión del cliente remoto](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). + - La [capa red QUIC](../settings/client-server.md#network-layer) se ha mejorado para gestionar los cambios de interfaz de red de forma transparente, por ejemplo, cuando viajas co su ordenador portátil. Ver [esta entrada del blog](https://blog.4d.com/work-and-move-with-quic-and-network-switching). +- Ahora puede [crear componentes directamente desde el proyecto local](../Extensions/develop-components.md#creating-components) y [editar su código desde una pestaña dedicada](../Extensions/develop-components.md#editing-all-component-code) en el Explorador 4D sin salir o reiniciar el proyecto. +- La etapa de activación del producto 4D se ha simplificado y automatizado durante la [conexión](../GettingStarted/Installation.md#sign-in). +- Componente 4D AIKit: nuevas funcionalidades para [invocar automáticamente una herramienta específica](../aikit/Classes/OpenAIChatHelper.md#registertool) y [especificar un formato de respuesta](../aikit/Classes/OpenAIChatCompletionsParameters.md#response-format). - Lenguaje 4D: - - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). + - Nuevos comandos "trim" para eliminar los espacios iniciales y finales de una cadena: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md) y [`Trim end`](../commands/trim-end.md). - Los comandos [`Num`](../commands/num.md) y [`String`](../commands/string.md) han sido actualizados para soportar conversiones en diferentes bases (radix). +- [**Lista de bugs corregidos**](https://bugs.4d.fr/fixedbugslist?version=21): lista de todos los bugs que se han corregido en 4D 21. #### Vista previa para desarrolladores -[**Fluent UI** rendering for 4D forms](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) is proposed in Developer Preview during the beta test program. +El [renderizado **Fluent UI** para los formularios 4D](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) está disponible en Developer Preview durante el programa de pruebas beta. #### Cambios de comportamiento -:::caution Index rebuild +:::caution Reconstrucción del índice -4D 21 includes an ICU library update ([see below](#library-table)) which will force an automatic rebuild of indexes of type alpha, text, and object. Dependiendo del tamaño del archivo de datos, esta operación puede llevar un tiempo y puede ser necesario planificarla. +4D 21 incluye una actualización de la librería ICU ([ver abajo](#library-table)) que forzará una reconstrucción automática de los índices de tipo alfa, texto y objeto. Dependiendo del tamaño del archivo de datos, esta operación puede llevar un tiempo y puede ser necesario planificarla. ::: -- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. -- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. Ya no se realiza ningún tratamiento específico en estas URL. -- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). -- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. -- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    +- Servicios web (SOAP): cuando las [sesiones escalables](../WebServer/sessions.md#enabling-web-sessions) están activadas, los servicios web se ejecutan ahora en [**procesos apropiativos**](../Develop/preemptive.md) en modo compilado. Asegúrese de que su código SOAP es hilo seguro. +- Servidor web: se elimina la compatibilidad con las URL obsoletas `4DSYNC/` y `4DCGI/`. Ya no se realiza ningún tratamiento específico en estas URL. +- Las sesiones usuario web ahora son devueltas por [`Process activity`](../commands/process-activity.md). +- El comando [`HIGHLIGHT TEXT`](../commands/highlight-text) es ahora compatible en el contexto de los subformularios. +- **Componentes ya no integrados**: a partir de 4D 21, los componentes desarrollados por 4D (4D NetKit, 4D SVG..., ver [esta lista](../Extensions/overview.md#components-developed-by-4d)) ya no están integrados en la aplicación 4D. Cuando se actualiza un proyecto a 4D 21 o superior, se muestra un cuadro de diálogo:
    ![alt-text](../assets/en/getStart/convert.png)
    - \- **Import**: import automatically 4D components as dependencies to the project
    - \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    - \- **Ask later**: do not import components and display the dialog at the next project opening. + \- **Importar**: importar automáticamente componentes 4D como dependencias del proyecto
    + \- **Ignorar**: no importar componentes y dejar que [gestione los componentes manualmente](../Project/components.md)
    + \- **Preguntar más tarde**: no importar componentes y mostrar el cuadro de diálogo en la próxima apertura del proyecto. :::note -In binary databases, you need to select the required components in the 4D installer or download them from the [4D Product Download portal](https://product-download.4d.com/?type=components). +En las bases de datos binarias, debe seleccionar los componentes necesarios en el programa de instalación de 4D o descargarlos del [portal de descarga de productos 4D](https://product-download.4d.com/?type=components). ::: @@ -66,12 +67,12 @@ Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R - Nueva clase [`4D.Vector`](../API/VectorClass.md) para procesar y comparar vectores, normalmente calculados por IAs. - Nuevas opciones para generar UUIDs en **versión 7** para el comando [4D automatic fields](../settings/database.md#auto-uuid-version) y [`Generate UUID`](../commands/generate-uuid). - Nuevas clases [`UDPSocket`](../API/UDPSocketClass.md) y [`UDPEvent`](../API/UDPEventClass.md) para enviar datos utilizando sockets UDP. Soporte de registro detallado para eventos UDP en el archivo de registro [`4DTCPUDPLog.txt`](../Debugging/debugLogFiles.md#4dtcpudplogtxt) (renombrado de `4DTCPLog.txt`). -- New [`.promote()`](../API/SessionClass.md#promote) and [`.demote()`](../API/SessionClass.md#demote) functions in the [Session class](../API/SessionClass.md) to dynamically add/remove privileges in a web process. -- [Automatic selection of licenses to embed](../Desktop/building.md#application-automatically-embedding-available-licenses) in the Build application dialog box, modified [`Create deployment license`](../commands/create-deployment-license.md) command, new [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html) BuildApplication xml key. +- Nuevas funciones [`.promote()`](../API/SessionClass.md#promote) y [`.demote()`](../API/SessionClass.md#demote) en la [clase Session](../API/SessionClass.md) para añadir/eliminar privilegios dinámicamente en un proceso web. +- [Selección automática de licencias a integrar](../Desktop/building.md#application-automatically-embedding-available-licenses) en el cuadro de diálogo del Generador de aplicaciones, modificación del comando [`Create deployment license`](../commands/create-deployment-license.md), nueva llave xml BuildApplication [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html). - Seguridad mejorada para copiar/pegar fórmulas en [4D Write Pro](../WritePro/managing-formulas.md) y [áreas de texto con estilo](../FormObjects/input_overview.md): las fórmulas copiadas desde fuera de la aplicación 4D actual se pegan ahora siempre sólo como valores. -- 4D AIKit component: new [OpenAIEmbeddingsAPI class](../aikit/Classes/OpenAIEmbeddingsAPI.md) to create embeddings using OpenAI's API. -- You can now [associate a class](../Develop/field-properties.md) to an object field in the structure editor. -- Automatic handling of [recursive dependencies](../Project/components.md#automatic-dependency-resolution). +- Componente 4D AIKit: nueva [clase OpenAIEmbeddingsAPI](../aikit/Classes/OpenAIEmbeddingsAPI.md) para crear embeddings utilizando la API OpenAI. +- Ahora puede [asociar una clase](../Develop/field-properties.md) a un campo objeto en el editor de estructura. +- Gestión automática de [dependencias recursivas](../Project/components.md#automatic-dependency-resolution). - Lenguaje 4D: - Por coherencia, los comandos [`Create entity selection`](../commands/create-entity-selection.md) y [`USE ENTITY SELECTION`](../commands/use-entity-selection.md) han sido movidos del tema ["4D Environment"](../commands/theme/4D_Environment.md) al ["Selection"](../commands/theme/Selection.md). - Nuevos comandos [`OBJECT SET DATA SOURCE FORMULA`](../commands/object-set-data-source-formula.md) y [`OBJECT Get data source formula`](../commands/object-get-data-source-formula.md) para asignar y leer los objetos `Formula` como fuentes de datos para los objetos de formulario. @@ -84,7 +85,7 @@ Lea las [**Novedades en 4D 20 R10**](https://blog.4d.com/en-whats-new-in-4d-20-R - Se ha eliminado la biblioteca *MeCab*. Este cambio sólo afecta al tratamiento del texto en japonés. - Cuando una variable o parámetro objeto se declara con un tipo ["cs" class](../Concepts/classes.md#cs), asignarlo con una instancia de objeto de una clase diferente genera ahora un error de sintaxis. - [`.hasPrivilege()`](../API/SessionClass.md#hasprivilege) devuelve True para privilegios promovidos en el proceso web. -- The [`Time`](../commands/time) command now returns a negative time expression when the *timeValue* parameter is negative. Por ejemplo, `Time("-01:02:03")` devolverá **-01:02:03**. In previous releases, the negative sign was ignored. +- El comando [`Time`](../commands/time) devuelve ahora una expresión de tiempo negativa cuando el parámetro *timeValue* es negativo. Por ejemplo, `Time("-01:02:03")` devolverá **-01:02:03**. En versiones anteriores, se ignoraba el signo negativo. ## 4D 20 R9 @@ -156,7 +157,7 @@ Lea [**Novedades en 4D 20 R7**](https://blog.4d.com/en-whats-new-in-4d-20-R7/), - Lenguaje 4D: - Nuevos comandos: [Process info](../commands/process-info.md), [Session info](../commands/session-info.md), [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md) - Comandos modificados: [Process activity](../commands/process-activity.md), [Process number](../commands/process-number.md) - - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Los comandos obsoletos llevan el prefijo "\*o\*". + - Comandos obsoletos (reemplazo): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) y [#DECLARE/declaraciones Function](../Concepts/parameters.md#declaring-parameters)). Los comandos obsoletos llevan el prefijo "\*o\*". - 4D Write Pro: - Nuevo comando: [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md) - Comandos modificados: [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md) y [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md) @@ -291,23 +292,23 @@ Ver [**Notas de lanzamiento para LTS 4D 20.x**](../../versioned_docs/version-20/ ## Tabla de la librería -| Librería | Versión actual | Actualizado en 4D | Comentario | -| --------- | -------------------------------------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| BoringSSL | fa47b1d | **21** | 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** | This upgrade forces an automatic rebuild of alphanumeric, text and object indexes. | -| libldap | 2.6.10 | **21** | | -| libsasl | 2.1.28 | 20 | | -| Liblsquic | 4.2.0 | 20 R10 | Utilizado para QUIC | -| 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.16.0 | **21** | Utilizado 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) | -| PHP | 8.2.4 | 20 | | -| SpreadJS | 17.1.0 | 20 R7 | Consulte [esta entrada de blog](https://blog.4d.com/4d-view-pro-whats-new-in-4d-20-r7/) para obtener una visión general de las nuevas funciones | -| webKit | WKWebView | 19 | | -| Xerces | 3.3.0 | **21** | Utilizado para comandos XML | -| Zlib | 1.3.1 | **21** | | +| Librería | Versión actual | Actualizado en 4D | Comentario | +| --------- | -------------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | +| BoringSSL | fa47b1d | **21** | 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. | +| libldap | 2.6.10 | **21** | | +| libsasl | 2.1.28 | 20 | | +| Liblsquic | 4.2.0 | 20 R10 | Utilizado para QUIC | +| 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.16.0 | **21** | 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) | +| PHP | 8.2.4 | 20 | | +| SpreadJS | 17.1.0 | 20 R7 | Consulte [esta entrada de blog](https://blog.4d.com/4d-view-pro-whats-new-in-4d-20-r7/) para obtener una visión general de las nuevas funciones | +| webKit | WKWebView | 19 | | +| Xerces | 3.3.0 | **21** | Utilizado para comandos XML | +| Zlib | 1.3.1 | **21** | | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/entities.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/entities.md index 2ac6f5af37a028..1d3ac2bbf5320c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/entities.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/entities.md @@ -462,7 +462,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Esta función se llama cada vez que se solicita una selección de entidades o una entidad de la dataclass. El filtro se ejecuta una vez, cuando se crea la selección de entidades. -El filtro debe devolver una selección de entidades de la clase de datos. Puede ser una selección de entidades creada a partir de una consulta, almacenada en el [`Storage`], etc. +El filtro debe devolver una selección de entidades de la clase de datos. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note @@ -566,9 +566,9 @@ El siguiente diagrama ilustra el bloqueo optimista: 1. Dos procesos cargan la misma entidad.

    ![](../assets/en/ORDA/optimisticLock1.png) -2. El primer proceso modifica la entidad y valida el cambio. Se llama al método `entity.save( )`. El motor 4D compara automáticamente el valor del marcador interno de la entidad modificada con el de la entidad almacenada en los datos. Dado que coinciden, la entidad se guarda y su valor de marcador se incrementa.

    ![](../assets/en/ORDA/optimisticLock2.png) +2. El primer proceso modifica la entidad y valida el cambio. Se llama al método `entity.save( )`. El motor 4D compara automáticamente el valor del marcador interno de la entidad modificada con el de la entidad almacenada en los datos. Since they match, the entity is saved and its stamp value is incremented.

    ![](../assets/en/ORDA/optimisticLock2.png) -3. El segundo proceso también modifica la entidad cargada y valida sus cambios. Se llama al método `entity.save( )`. Dado que el valor del sello de la entidad modificada no coincide con el de la entidad almacenada en los datos, no se realiza el guardado y se devuelve un error.

    ![](../assets/en/ORDA/optimisticLock3.png) +3. El segundo proceso también modifica la entidad cargada y valida sus cambios. Se llama al método `entity.save( )`. Since the stamp value of the modified entity does not match the one of the entity stored in the data, the save is not performed and an error is returned.

    ![](../assets/en/ORDA/optimisticLock3.png) Esto también puede ilustrarse con el siguiente código: diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md index 884af1066d3c9f..82555980c41cae 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: Events +title: Entity Events ---
    Historia @@ -8,23 +8,23 @@ title: Events | Lanzamiento | Modificaciones | | ----------- | ----------------------------------------------------------------------------------------------------- | | 21 | Added events: validateSave / saving / afterSave / validateDrop / dropping / afterDrop | -| 20 R10 | touched event added | +| 20 R10 | se ha añadido un evento touched |
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. No se puede activar directamente la ejecución de la función de evento. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::tip Entrada de blog relacionada -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: :::info Nota de compatibilidad -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -52,27 +52,27 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always ::: -Con otras configuraciones remotas (p. ej. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). ### Tabla resumen La siguiente tabla lista los eventos ORDA junto con sus reglas. -| Evento | Nivel | Nombre de la función | (C/S) Ejecutado en | Can stop action by returning an error | -| :------------------------- | :------- | :------------------------------------------------------ | :------------------------------------------------------------------: | ------------------------------------- | -| Instanciación de entidades | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | no | -| Atributo tocado | Atributo | `event touched ()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | no | -| | Entity | `event touched()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | no | -| Before saving an entity | Atributo | `validateSave ()` | server | sí | -| | Entity | `validateSave()` | server | sí | -| When saving an entity | Atributo | `saving ()` | server | sí | -| | Entity | `saving()` | server | sí | -| After saving an entity | Entity | `afterSave()` | server | no | -| Before dropping an entity | Atributo | `validateDrop ()` | server | sí | -| | Entity | `validateDrop()` | server | sí | -| When dropping an entity | Atributo | `dropping ()` | server | sí | -| | Entity | `dropping()` | server | sí | -| After dropping an entity | Entity | `afterDrop()` | server | no | +| Evento | Nivel | Nombre de la función | (C/S) Ejecutado en | Can stop action by returning an error | +| :----------------------------- | :------- | :------------------------------------------------------ | :---------------------------------------------------------------------------: | ------------------------------------- | +| Instanciación de entidades | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | no | +| Atributo tocado | Atributo | `event touched ()` | Depende de la palabra clave [`local`](../ORDA/ordaClasses.md#local-functions) | no | +| | Entity | `event touched()` | Depende de la palabra clave [`local`](../ORDA/ordaClasses.md#local-functions) | no | +| Antes de guardar una entidad | Atributo | `validateSave ()` | server | sí | +| | Entity | `validateSave()` | server | sí | +| Al guardar una entidad | Atributo | `saving ()` | server | sí | +| | Entity | `saving()` | server | sí | +| Después de guardar una entidad | Entity | `afterSave()` | server | no | +| Before dropping an entity | Atributo | `validateDrop ()` | server | sí | +| | Entity | `validateDrop()` | server | sí | +| Al soltar una entidad | Atributo | `dropping ()` | server | sí | +| | Entity | `dropping()` | server | sí | +| After dropping an entity | Entity | `afterDrop()` | server | no | :::note @@ -89,32 +89,32 @@ Event functions accept a single *event* object as parameter. When the function i | "kind" | siempre | String | Event name: "touched", "validateSave", "saving", "afterSave", "validateDrop", "dropping", "afterDrop" | | | *attributeName* | Only for events implemented at attribute level ("validateSave", "saving", "validateDrop", "dropping") | String | Nombre del atributo (por ejemplo, "nombre") | | | *dataClassName* | siempre | String | Nombre de la Dataclass (*ej.* "Company") | | -| "savedAttributes" | Only in [`afterSave()`](#function-event-aftersave) | Collection of String | Names of attributes properly saved | | -| "droppedAttributes" | Only in [`afterDrop()`](#function-event-afterdrop) | Collection of String | Names of attributes properly dropped | | -| "saveStatus" | Only in [`afterSave()`](#function-event-aftersave) | String | "success" if the save was successful, "failed" otherwise | | -| "dropStatus" | Only in [`afterDrop()`](#function-event-afterdrop) | String | "success" if the drop was successful, "failed" otherwise | | +| "savedAttributes" | Sólo en [`afterSave()`](#function-event-aftersave) | Colección de cadenas | Names of attributes properly saved | | +| "droppedAttributes" | Sólo en [`afterDrop()`](#function-event-afterdrop) | Colección de cadenas | Names of attributes properly dropped | | +| "saveStatus" | Sólo en [`afterSave()`](#function-event-aftersave) | String | "success" if the save was successful, "failed" otherwise | | +| "dropStatus" | Sólo en [`afterDrop()`](#function-event-afterdrop) | String | "success" if the drop was successful, "failed" otherwise | | -## Error object +## Objeto de error [Some event functions](#summary-table) can return an **error object** to raise an error and stop the running action. When an error occurs in an event, the other events are stopped at the first raised error and the action (save or drop) is also stopped. This error is sent before other potential errors like [stamp has changed, entity locked](../API/EntityClass.md#save), etc. -### Error object properties +### Propiedades del objeto error -| Propiedad | Tipo | Descripción | Set by the developer | -| ------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Sí | -| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Sí | -| extraDescription | Object | Free information to set up | Sí | -| seriousError | Boolean | Used only with validate events (see below). Will insert a specific `status` value in the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) function:
  • If true: `dk status serious validation error`
  • If false: `dk status validation failed`
  • | Yes (default is false) | -| componentSignature | Text | Always "DBEV" | No | +| Propiedad | Tipo | Descripción | Definido por el desarrollador | +| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | +| errCode | Integer | Igual al comando [`Last errors`](../commands/last-errors.md) | Sí | +| message | Text | Igual al comando [`Last errors`](../commands/last-errors.md) | Sí | +| extraDescription | Object | Información libre a definir | Sí | +| seriousError | Boolean | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • `False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Añade el estado `dk status validation failed`.
  • | Sí (por defecto es false) | +| componentSignature | Text | Always "DBEV" | No | -- The errors are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. -- In case of an error triggered by a **validate** event, the `fatalError` property allows you to insert a specific `status` and its associated `statusText` in the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions: - - If **false**: `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". Such errors do not require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. - - If **true**: `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". Such errors require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. They are raised at the end of the event and reach the client requesting the save/drop action (REST client for example). -- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error (`dk status serious error`) whatever the `seriousError` property value. +- [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. +- In case of an error triggered by a **validate** event, the `seriousError` property allows you to choose the level of the error to generate: + - If **true**: a serious error is thrown and should be handled by the [error processing code](../Concepts/error-handling.md#predictable-vs-unpredictable-errors), such as a [try catch](../Concepts/error-handling.md#trycatchend-try). In the result object of the calling function, `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". The error is raised at the end of the event and reach the client requesting the save/drop action (REST client for example). + - If **false** (default): a [silent (predictable) error is generated](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). It does not trigger any exception and is not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. In the result object of the calling function, `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". +- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error whatever the `seriousError` property value. ## Event function description @@ -135,11 +135,11 @@ This event is triggered each time a value is modified in the entity. This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: -- in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: +- en **cliente/servidor con la [palabra clave `local`](../ORDA/ordaClasses.md#local-functions)** o en **4D monousuario**: - el usuario define un valor en un formulario 4D, - - el código 4D realiza una asignación con el operador `:=`. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). + - el código 4D realiza una asignación con el operador `:=`. El evento también se activa en caso de autoasignación (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. +- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) The function receives an [*event* object](#event-parameter) as parameter. @@ -150,7 +150,7 @@ If this function [throws](../commands/throw) an error, it will not stop the unde Este evento también se activa: -- when attributes are assigned by the [`constructor()`](./ordaClasses.md#class-constructor-1) event, +- cuando los atributos son asignados por el evento [`constructor()`](./ordaClasses.md#class-constructor-1), - when attributes are edited through the [Data Explorer](../Admin/dataExplorer.md). ::: @@ -269,7 +269,7 @@ Note over Client:$people.lastname is uppercased ``` -#### Example 4 (diagram): Client/server without the `local` keyword +#### Ejemplo 4 (diagrama): cliente/servidor sin la palabra clave `local` ```mermaid @@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`). #### Ejemplo -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro #### Ejemplo -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` ### `Function event afterSave` @@ -451,32 +449,28 @@ This event is useful after saving data to propagate the save action outside the The function receives an [*event* object](#event-parameter) as parameter. -- To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. +- To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. Se producirá un error. - Throwing an [error object](#error-object) is **not supported** by this function. -#### Ejemplo 1 +#### Ejemplo -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` ### `Function event validateDrop` @@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### Ejemplo 1 +#### Ejemplo -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### Ejemplo 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` ### `Function event dropping` @@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### Ejemplo 1 +#### Ejemplo -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### Ejemplo 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -644,7 +595,7 @@ This event is useful after dropping data to propagate the drop action outside th The function receives an [*event* object](#event-parameter) as parameter. -- To avoid infinite loops, calling a [`drop()`](../API/EntityClass.md#drop) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. +- To avoid infinite loops, calling a [`drop()`](../API/EntityClass.md#drop) on the current entity (through `This`) in this function is **not allowed**. Se producirá un error. - Throwing an [error object](#error-object) is **not supported** by this function. :::note @@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### Ejemplo 1 +#### Ejemplo -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### Ejemplo 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/privileges.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/privileges.md index 2e61015157e2aa..5bb31631d97539 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/privileges.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ORDA/privileges.md @@ -17,7 +17,7 @@ Si un usuario intenta ejecutar una acción y no tiene los derechos de acceso ade ![schema](../assets/en/ORDA/privileges-schema.png) -:::tip Related Blog posts +:::tip Entradas de blog relacionadas [**Filter access to your data with a complete system of permissions**](https://blog.4d.com/filter-access-to-your-data-with-a-complete-system-of-permissions/) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Preferences/methods.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Preferences/methods.md index 5beaa5f717c17c..6a6eb8c18fccf1 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Preferences/methods.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Preferences/methods.md @@ -180,8 +180,8 @@ Si deselecciona esta opción, sólo se mostrará la flecha amarilla. Esta área le permite configurar los mecanismos de autocompletar en el Editor de código para adaptarlo a sus propios hábitos de trabajo. -| | Descripción | -| --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Apertura automática de la ventana | Activa la visualización automática de la ventana de sugerencias para:
    • Constantes
    • Variables (locales e interproceso) y atributos del objeto
    • Tablas
    • Prototipos (es decir, funciones de clase)

    Por ejemplo, cuando se selecciona la opción "Variables (locales o interproceso) y atributos del objeto", aparece una lista de sugerencias cuando se escribe el caracter $:

    ![](../assets/en/Preferences/suggestionsAutoOpen.png)

    Puede deshabilitar esta funcionalidad para ciertos elementos del lenguaje deseleccionando su opción correspondiente. | -| Validación de una sugerencia | Establece el contexto de entrada que permite al Editor de Código validar automáticamente la sugerencia actual mostrada en la ventana de autocompletado.
    • **Tabuladores y delimitadores**
      Cuando esta opción está seleccionada, puede validar la selección actual con la tecla Tab o cualquier delimitador relevante para el contexto. Por ejemplo, si introduce "ALE" y luego "(", 4D escribe automáticamente "ALERT(" en el editor. Esta es la lista de delimitadores que se tienen en cuenta:
      ( ; : = < [ {
    • **Sólo tabulador**
      Cuando se selecciona esta opción, sólo se puede utilizar el tabulador para insertar la sugerencia actual. Esto puede utilizarse más concretamente para facilitar la introducción de caracteres delimitadores en los nombres de elementos, como ${1}.**Note**: También puede hacer doble clic en la ventana o presionar la tecla Retorno de carro para validar una sugerencia.
    | +| | Descripción | +| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Apertura automática de la ventana | Activa la visualización automática de la ventana de sugerencias para:
    • Constantes
    • Variables (locales e interproceso) y atributos del objeto
    • Tablas
    • Prototipos (es decir, funciones de clase)

    Por ejemplo, cuando se selecciona la opción "Variables (locales o interproceso) y atributos del objeto", aparece una lista de sugerencias cuando se escribe el caracter $:

    ![](../assets/en/Preferences/suggestionsAutoOpen.png)

    Puede deshabilitar esta funcionalidad para ciertos elementos del lenguaje deseleccionando su opción correspondiente. | +| Validación de una sugerencia | Sets the entry context that allows the Code Editor to validate automatically the current suggestion displayed in the autocomplete window.
    • **Tab and delimiters**
      When this option is selected, you can validate the current selection with the Tab key or any delimiter that is relevant to the context. Por ejemplo, si introduce "ALE" y luego "(", 4D escribe automáticamente "ALERT(" en el editor. Esta es la lista de delimitadores que se tienen en cuenta:
      ( ; : = < [ {
    • **Sólo tabulador**
      Cuando se selecciona esta opción, sólo se puede utilizar el tabulador para insertar la sugerencia actual. Esto puede utilizarse más concretamente para facilitar la introducción de caracteres delimitadores en los nombres de elementos, como ${1}.**Note**: También puede hacer doble clic en la ventana o presionar la tecla Retorno de carro para validar una sugerencia.
    | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/Project/components.md b/i18n/es/docusaurus-plugin-content-docs/version-21/Project/components.md index 3bb2eb19a0f57e..b0d39e3af03167 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/Project/components.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/Project/components.md @@ -3,11 +3,11 @@ id: components title: Dependencias --- -[La arquitectura de los proyectos](../Project/architecture.md) 4D es modular. Puede ofrecer funcionalidades adicionales a sus proyectos 4D instalando [**componentes**](Concepts/components.md) y [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md). +[La arquitectura de los proyectos](../Project/architecture.md) 4D es modular. Puede ofrecer funcionalidades adicionales a sus proyectos 4D instalando [**componentes**](Concepts/components.md) y [**plug-ins**](../Concepts/plug-ins.md). Los componentes están hechos de código 4D, mientras que los plug-ins pueden [construirse utilizando cualquier lenguaje](../Extensions/develop-plug-ins.md). -Puede [desarrollar](../Extensions/develop-components.md) y [crear](../Desktop/building.md) sus propios componentes 4D, o descargar componentes públicos compartidos por la comunidad 4D que [se pueden encontrar en GitHub](https://github.com/search?q=4d-component\\\\\\\\\\&type=Repositories). +Puede [desarrollar](../Extensions/develop-components.md) y [crear](../Desktop/building.md) sus propios componentes 4D, o descargar componentes públicos compartidos por la comunidad 4D que [se pueden encontrar en GitHub](https://github.com/topics/4d-component). -Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties. +Una vez instalados en su entorno 4D, las extensiones se manejan como **dependencias** con propiedades específicas. ## Componentes interpretados y compilados @@ -317,20 +317,20 @@ Los componentes GitHub a los que se hace referencia se descargan en una carpeta ...donde `` puede ser "4D", "4D Server" o "tool4D". -### Automatic dependency resolution +### Resolución automática de las dependencias -When you add or update a component (whether [local](#local-components) or [from GitHub](#components-stored-on-github)), 4D automatically resolves and installs all dependencies required by that component. Esto incluye: +Cuando añade o actualiza un componente (ya sea [local](#local-components) o [desde GitHub](#components-stored-on-github)), 4D resuelve e instala automáticamente todas las dependencias requeridas por ese componente. Esto incluye: - **Dependencias primarias**: componentes que declara explícitamente en su archivo `dependencies.json` - **Dependencias secundarias**: componentes requeridos por dependencias primarias u otras dependencias secundarias, que se resuelven e instalan automáticamente -The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. +El gestor de dependencias lee el archivo `dependencies.json` de cada componente e instala recursivamente todas las dependencias necesarias, respetando las especificaciones de versión siempre que sea posible. Esto elimina la necesidad de identificar y añadir manualmente las dependencias anidadas una por una. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Resolución de conflictos**: cuando varias dependencias requieren [versiones diferentes](#defining-a-github-dependency-version-range) del mismo componente, el gestor de dependencias intenta automáticamente resolver los conflictos encontrando una versión que satisfaga todos los rangos de versiones superpuestas. Si una dependencia primaria entra en conflicto con dependencias secundarias, la dependencia primaria tiene prioridad. :::note -`dependencies.json` files are ignored in components loaded from the [**Components** folder](architecture.md#components). +Los archivos `dependencies.json` se ignoran en los componentes cargados desde la carpeta [**Components**](architecture.md#components). ::: @@ -349,7 +349,7 @@ Para mostrar el panel Dependencias: - con 4D, seleccione el ítem de menú **Diseño/Dependencias del Proyecto** (entorno de desarrollo),
    ![dependency-menu](../assets/en/Project/dependency-menu.png) -- con 4D Server, seleccione el ítem de menú **Ventana/Dependencias del Proyecto**.
    +- con el servidor 4D, seleccione el elemento de menú **Ventana/Dependencias del proyecto**.
    ![dependency-menu-server](../assets/en/Project/dependency-menu-server.png) A continuación, se muestra el panel Dependencias. Las dependencias se ordenan por nombre en orden alfabético: @@ -364,19 +364,19 @@ Por defecto, se listan todas las dependencias identificadas por el gestor de dep ![dependency-tabs](../assets/en/Project/dependency-tabs.png) -- **All**: All dependencies including both primary (declared) and secondary (automatically resolved) dependencies in a flat list view. -- **Declared**: Primary dependencies that are explicitly declared in the `dependencies.json` file. This tab helps you distinguish between dependencies you've directly added and those that were [automatically resolved](#automatic-dependency-resolution). +- **Todas**: todas las dependencias, incluidas las primarias (declaradas) y las secundarias (resueltas automáticamente) en forma de lista. +- **Declarado**: dependencias primarias que se declaran explícitamente en el archivo `dependencies.json`. Esta pestaña le ayuda a distinguir entre las dependencias que ha añadido directamente y las que se han [resuelto automáticamente](#automatic-dependency-resolution). - **Activo**: dependencias que están cargadas y pueden ser utilizadas en el proyecto. Incluye dependencias *overloading*, las cuales son realmente cargadas. Las dependencias *Overloaded* se enumeran en el panel **Conflicts** junto con todas las dependencias en conflicto. - **Inactivo**: dependencias que no están cargadas en el proyecto y no están disponibles. Hay muchas razones posibles para este estado: archivos que faltan, incompatibilidad de versiones... -- **Conflicts**: Dependencies that are loaded but that overloads at least one other dependency at a lower [priority level](#priority). También se muestran las dependencias sobrecargadas para que pueda comprobar el origen del conflicto y tomar las medidas oportunas. +- **Conflictos**: las dependencias que se cargan pero que sobrecargan al menos otra dependencia de un [nivel de prioridad](#priority) inferior. También se muestran las dependencias sobrecargadas para que pueda comprobar el origen del conflicto y tomar las medidas oportunas. ### Dependencias secundarias -The Dependencies panel displays [**secondary dependencies**](#automatic-dependency-resolution) with the `Component dependency` [origin](#dependency-origin): +El panel Dependencias muestra [**dependencias secundarias**](#automatic-dependency-resolution) con la `dependencia del componente` [origen](#dependency-origin): ![recursive-dependency](../assets/en/Project/recursive.png) -When you hover over a secondary dependency, a tooltip displays the parent dependency that requires it. A secondary dependency cannot be [removed](#removing-a-dependency) directly, you must remove or edit the primary dependency that requires it. +Cuando pasa el cursor sobre una dependencia secundaria, una descripción muestra la dependencia padre que la requiere. Una dependencia secundaria no se puede [eliminar](#removing-a-dependency) directamente, hay que eliminar o editar la dependencia primaria que la requiere. ### Estado de dependencias @@ -409,13 +409,13 @@ El panel Dependencias enumera todas las dependencias del proyecto, sea cual sea Las siguientes opciones de origen son posibles: -| Etiqueta de origen | Descripción | -| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Built in 4D | Componente 4D integrado, almacenado en la carpeta `Components` de la aplicación 4D | -| Declarado en proyecto | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) | -| Declarado en el entorno | Component declared in the [`dependencies.json`](#dependenciesjson) file and overriden in the [`environment4d.json`](#environment4djson) file | -| Carpeta Components | Componente ubicado en la carpeta [`Components`](architecture.md#components) | -| Dependencia de los componentes | Componente secundario ([requerido por otro componente](#automatic-dependency-resolution)) | +| Etiqueta de origen | Descripción | +| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | +| Integrado a 4D | Componente 4D integrado, almacenado en la carpeta `Components` de la aplicación 4D | +| Declarado en proyecto | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) | +| Declarado en el entorno | Componente declarado en el archivo [`dependencies.json`](#dependenciesjson) y anulado en el archivo [`environment4d.json`](#environment4djson) | +| Carpeta Components | Componente ubicado en la carpeta [`Components`](architecture.md#components) | +| Dependencia de los componentes | Componente secundario ([requerido por otro componente](#automatic-dependency-resolution)) | **Clic derecho** en una línea de dependencia y selecciona **Mostrar en el disco** para revelar la ubicación de una dependencia: @@ -469,7 +469,7 @@ Para añadir una [dependencia GitHub](#components-stored-on-github), haga clic e :::note -By default, [components developed by 4D](../Extensions/overview.md#components-developed-by-4d) are listed in the combo box, so that you can easily select and install these features in your environment: +Por defecto, los [componentes desarrollados por 4D](../Extensions/overview.md#components-developed-by-4d) aparecen en el combo box, para que pueda seleccionarlos e instalarlos fácilmente en su entorno: ![dependency-default-git](../assets/en/Project/dependency-default.png) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/REST/$filter.md b/i18n/es/docusaurus-plugin-content-docs/version-21/REST/$filter.md index 87fad52e60c764..ca52f5579fa456 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/REST/$filter.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/REST/$filter.md @@ -27,7 +27,7 @@ Por ejemplo: `$filter="firstName=john AND salary>20000"` donde `firstName` y `sa ### Utilizar la propiedad params -You can also use 4D's `params` property which is a collection of values. +También puede utilizar la propiedad `params` de 4D, que es una colección de valores. **\{attribute\} {comparator} {placeholder} {AND/OR/EXCEPT} \{attribute\} {comparator} {placeholder}&$params='["{value1}","{value2}"]'** @@ -90,11 +90,11 @@ Use the `params` property to provide the filter with the vector comparison param The *vectorComparison* parameter is a collection of the following elements: -| Propiedad | Tipo | Descripción | | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [].vector | Colección de objetos) | Obligatorio. Una colección que representa el vector a comparar | | -| [].metric | Text | Opcional. [Cálculo vectorial](../API/VectorClass.md#understanding-the-different-vector-computations) a utilizar para la consulta. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | | -| | [].threshold | Real | Opcional (por defecto: 0,5). Un valor umbral utilizado para filtrar las comparaciones de vectores en función de su puntuación de similitud coseno, punto o euclídea según la "métrica" seleccionada. Es altamente recomendable elegir una similitud que se adapte mejor a su caso de uso específico para obtener resultados óptimos. | +| Propiedad | Tipo | Descripción | +| -------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [].vector | Collection of numbers | Obligatorio. Una colección que representa el vector a comparar | +| [].metric | Text | Opcional. [Cálculo vectorial](../API/VectorClass.md#understanding-the-different-vector-computations) a utilizar para la consulta. Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | +| [].threshold | Real | Opcional (por defecto: 0,5). Un valor umbral utilizado para filtrar las comparaciones de vectores en función de su puntuación de similitud coseno, punto o euclídea según la "métrica" seleccionada. Es altamente recomendable elegir una similitud que se adapte mejor a su caso de uso específico para obtener resultados óptimos. | Only a subset of **comparator** symbols are supported with vector comparisons. Tenga en cuenta que comparan los resultados con el valor umbral: diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/REST/$method.md b/i18n/es/docusaurus-plugin-content-docs/version-21/REST/$method.md index ec63e8eb56445e..706279be3d9811 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/REST/$method.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/REST/$method.md @@ -196,7 +196,8 @@ Si surge un problema al añadir o modificar una entidad, se le devolverá un err - **Las fechas** deben expresarse en formato JS: YYYY-MM-DDTHH:MM:SSZ (por ejemplo, "2010-10-05T23:00:00Z"). Si ha seleccionado la propiedad Fecha únicamente para su atributo Fecha, se eliminará la zona horaria y la hora (hora, minutos y segundos). En este caso, también puede enviar la fecha en el formato que se le devuelve dd!mm!aaaa (por ejemplo, 05!10!2013). - **Booleanos** son true o false. -- Los archivos subidos mediante `$upload` pueden aplicarse a un atributo de tipo Imagen o BLOB pasando el objeto devuelto en el siguiente formato `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50"}`::: +- Uploaded files using `$upload` can be applied to an attribute of type Image or BLOB by passing the object returned in the following format `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50"}` + ::: ### Ejemplo diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md index a70d5af54aa8d6..7d54ed71a42c0f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md @@ -31,10 +31,10 @@ En *rangeObj*, pase el rango de celdas con los valores, formato y fórmulas a co Puede pasar un parámetro opcional *options* con las siguientes propiedades: -| Propiedad | Tipo | Descripción | -| ----------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Boolean | *True* (por defecto) para mantener los valores, el formato y las fórmulas copiados después de la ejecución del comando. *False* para eliminarlos. | -| copyOptions | Integer | Especifica lo que se copia o mueve. Valores posibles:

    ValorDescripción
    `vk clipboard options all` (por defecto)Copia todos los objetos de datos, incluidos los valores, el formato y las fórmulas.
    `vk clipboard options formatting`Copia sólo el formato.
    `vk clipboard options formulas`Copia sólo las fórmulas.
    `vk clipboard options formulas and formatting`Copia las fórmulas y el formato.
    `vk clipboard options values`Copia sólo los valores.
    `vk clipboard options value and formatting`Copia los valores y el formato.

    | +| Propiedad | Tipo | Descripción | +| ----------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| copy | Boolean | *True* (por defecto) para mantener los valores, el formato y las fórmulas copiados después de la ejecución del comando. *False* para eliminarlos. | +| copyOptions | Integer | Especifica lo que se copia o mueve. Possible values:

    ValueDescription
    `vk clipboard options all` (default)Copies all data objects, including values, formatting, and formulas.
    `vk clipboard options formatting`Copia solo el formato.
    `vk clipboard options formulas`Copies only the formulas.
    `vk clipboard options formulas and formatting`Copies the formulas and formatting.
    `vk clipboard options values`Copies only the values.
    `vk clipboard options value and formatting`Copies the values and formatting.

    | Se tienen en cuenta las opciones de pegado definidas en las [opciones del libro de trabajo](vp-set-workbook-options.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md index afa59df379020c..19cd648eadc591 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md @@ -16,7 +16,7 @@ title: VP EXPORT TO BLOB ## Descripción -El comando `VP EXPORT TO BLOB` exporta el documento 4D View Pro *vpAreaName* en un 4D.Blob según las opciones *paramObj*. El blob exportado está disponible a través de la retrollamada de exportación. Exportar e importar áreas de 4D View Pro como blogs es rápido y eficiente en memoria. +El comando `VP EXPORT TO BLOB` exporta el documento *vpAreaName* 4D View Pro en un 4D.Blob de acuerdo a las opciones *paramObj*. El blob exportado está disponible a través de la retrollamada de exportación. Exportar e importar áreas de 4D View Pro como blogs es rápido y eficiente en memoria. En *paramObj*, puede pasar varias propiedades: diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md index e122ecdf423030..4ccd334c12e81f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md @@ -27,14 +27,14 @@ El parámetro *searchValue* permite pasar el texto a buscar dentro del *rangeObj Puede pasar el parámetro opcional *searchCondition* para especificar el funcionamiento de la búsqueda. Se soportan las siguientes propiedades: -| Propiedad | Tipo | Descripción | -| ----------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| afterColumn | Integer | El número de la columna justo antes de la columna inicial de la búsqueda. Si *rangeObj* es un rango combinado, el número de columna indicado debe ser del primer rango. Valor por defecto: -1 (inicio de *rangeObj*) | -| afterRow | Integer | El número de la línea justo antes de la línea inicial de la búsqueda. Si *rangeObj* es un rango combinado, el número de línea indicado debe ser del primer rango. Valor por defecto: -1 (inicio de *rangeObj*) | -| all | Boolean |
  • True - Se devuelven todas las celdas en *rangeObj* correspondientes a *searchValue*
  • False - (valor por defecto) Sólo se devuelve la primera celda de *rangeObj* correspondiente a *searchValue*
  • | -| flags | Integer |
    `vk find flag exact match`El contenido completo de la celda debe coincidir completamente con el valor de búsqueda
    `vk find flag ignore case`Las mayúsculas y minúsculas se consideran iguales. Ej: "a" es igual a "A".
    `vk find flag none`no se consideran banderas de búsqueda (por defecto)
    `vk find flag use wild cards`Caracteres comodín (\*,?) puede utilizarse en la cadena de búsqueda. Los caracteres comodín se pueden utilizar en cualquier comparación de cadenas para coincidir con cualquier número de caracteres:
  • \* para cero o varios caracteres (por ejemplo, al buscar "bl*" se puede encontrar "bl", "black" o "blob")
  • ? para un solo carácter (por ejemplo, la búsqueda de "h?t" puede encontrar "hot", o "hit"
  • Estos indicadores pueden combinarse. Por ejemplo: $search.flags:=vk find flag use wild cards+vk find flag ignore case | -| order | Integer |
    `vk find order by columns`La búsqueda se realiza por columnas. Cada fila de una columna se busca antes de que la búsqueda continúe a la siguiente columna.
    `vk find order by rows`La búsqueda se realiza por filas. Se busca en cada columna de una linea antes de continuar con la siguiente linea (por defecto)
    | -| target | Integer |
    `vk find target formula`La búsqueda se realiza en la fórmula de la celda
    `vk find target tag`La búsqueda se realiza en la etiqueta de la celda
    `vk find target text`La búsqueda se realiza en el texto de la celda (predeterminado)

    Estas banderas pueden combinarse. Por ejemplo:$search.target:=vk find target formula+vk find target text

    | +| Propiedad | Tipo | Descripción | +| ----------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| afterColumn | Integer | El número de la columna justo antes de la columna inicial de la búsqueda. Si *rangeObj* es un rango combinado, el número de columna indicado debe ser del primer rango. Valor por defecto: -1 (inicio de *rangeObj*) | +| afterRow | Integer | El número de la línea justo antes de la línea inicial de la búsqueda. Si *rangeObj* es un rango combinado, el número de línea indicado debe ser del primer rango. Valor por defecto: -1 (inicio de *rangeObj*) | +| all | Boolean |
  • True - Se devuelven todas las celdas en *rangeObj* correspondientes a *searchValue*
  • False - (valor por defecto) Sólo se devuelve la primera celda de *rangeObj* correspondiente a *searchValue*
  • | +| flags | Integer |
    `vk find flag exact match`El contenido completo de la celda debe coincidir completamente con el valor de búsqueda
    `vk find flag ignore case`Las mayúsculas y minúsculas se consideran iguales. Ej: "a" es lo mismo que "A".
    `vk find flag none`no search flags are considered (default)
    `vk find flag use wild cards`Wildcard characters (\*,?) puede utilizarse en la cadena de búsqueda. Los caracteres comodín se pueden utilizar en cualquier comparación de cadenas para coincidir con cualquier número de caracteres:
  • \* para cero o varios caracteres (por ejemplo, al buscar "bl*" se puede encontrar "bl", "black" o "blob")
  • ? para un solo carácter (por ejemplo, la búsqueda de "h?t" puede encontrar "hot", o "hit"
  • Estos indicadores pueden combinarse. Por ejemplo: $search.flags:=vk find flag use wild cards+vk find flag ignore case | +| order | Integer |
    `vk find order by columns`La búsqueda se realiza por columnas. Each row of a column is searched before the search continues to the next column.
    `vk find order by rows`The search is performed by rows. Se busca en cada columna de una linea antes de continuar con la siguiente linea (por defecto)
    | +| target | Integer |
    `vk find target formula`La búsqueda se realiza en la fórmula de la celda
    `vk find target tag`La búsqueda se realiza en la etiqueta de la celda
    `vk find target text`La búsqueda se realiza en el texto de la celda (predeterminado)

    Estas banderas pueden combinarse. Por ejemplo:$search.target:=vk find target formula+vk find target text

    | En el parámetro opcional *replaceValue*, puede pasar un texto para que ocupe el lugar de toda instancia del texto en el *searchValue* encontrado en *rangeObj*. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md index 5e65abf6ea6b63..ce43ad5c50c92a 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md @@ -43,33 +43,33 @@ Se devuelve un error si el parámetro `filePath` no es válido, o si el archivo El parámetro opcional *paramObj* permite definir las propiedades del documento importado: -| Parámetros | | Tipo | Descripción | -| ------------ | ------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| formula | | 4D.Function | Un método de retollamada que se lanzará cuando la importación haya terminado. Debe utilizar una fórmula devuelta por el comando [`Formula`](../../commands/formula.md). Ver [Pasar un método de retrollamada (fórmula)](vp-export-document.md#passing-a-callback-method-formula). | -| contraseña | | text | Sólo Microsoft Excel (opcional) - La contraseña utilizada para proteger un documento MS Excel. | -| csvOptions | | object | opciones de importación csv | -| | range | object | Rango de celdas que contiene la primera celda donde se escribirán los datos. Si el rango especificado no es un rango de celdas, sólo se utiliza la primera celda del rango. | -| | rowDelimiter | text | Delimitador de línea. Si no está presente, el delimitador es determinado automáticamente por 4D. | -| | columnDelimiter | text | Delimitador de columna. Por defecto: "," | -| sjsOptions | | object | opciones para la importación de sjs | -| | calcOnDemand | boolean | Si se calculan las fórmulas sólo cuando se solicitan, por defecto es false. | -| | dynamicReferences | boolean | Si calcular funciones con referencias dinámicas, por defecto es true. | -| | fullRecalc | boolean | Si calcular después de cargar los datos json, false por defecto. | -| | includeFormulas | boolean | Si se incluyen las fórmulas al cargar, por defecto es true. | -| | includeStyles | boolean | Si se incluyen los estilos al cargar, por defecto es true. | -| | includeUnusedStyles | boolean | Si se incluyen los estilos de nombre no utilizados al convertir excel xml a json, por defecto es true. | -| | openMode | integer |
  • 0 (normal): modo abierto normal, sin perezoso (lazy) e incremental. Al abrir un archivo, la interfaz de usuario y el evento de interfaz de usuario podrían actualizarse y responder en momentos específicos.
  • 1 (lazy): modo de apertura lazy. Al abrir el archivo, sólo se cargará directamente la hoja activa. Las demás hojas sólo se cargarán cuando se vayan a utilizar.
  • 2 (incremental): modo de apertura incremental. Al abrir un archivo, la interfaz de usuario y el evento de interfaz de usuario podrían actualizarse y responder directamente.
  • | -| excelOptions | | object | Sólo Excel (opcional) - Opciones para exportar Excel | -| | includeStyles | boolean | Si se incluye el estilo al importar, por defecto true. | -| | includeFormulas | boolean | Si se incluye la fórmula al importar, por defecto true. | -| | frozenColumnsAsRowHeaders | boolean | Bien sea tratar las columnas congeladas como encabezados de línea al importar, por defecto false. | -| | frozenRowsAsColumnHeaders | boolean | Whether to treat the frozen rows as column headers when importing, default false. | -| | fullRecalc | boolean | Si calcular después de cargar los datos json, false por defecto. | -| | dynamicReferences | boolean | Whether to calculate functions with dynamic reference, default true. | -| | calcOnDemand | boolean | Whether to calculate formulas only when they are demanded, default false. | -| | includeUnusedStyles | boolean | Si incluir el estilo de nombre no utilizado al convertir excel xml al json, default true. | -| | contraseña | text | La contraseña para abrir el workbook. | -| | openMode | text | The open mode of normal, lazy and incremental. Por defecto es normal. | +| Parámetros | | Tipo | Descripción | +| ------------ | ------------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| formula | | 4D.Function | Un método de retollamada que se lanzará cuando la importación haya terminado. Debe utilizar una fórmula devuelta por el comando [`Formula`](../../commands/formula.md). Ver [Pasar un método de retrollamada (fórmula)](vp-export-document.md#passing-a-callback-method-formula). | +| contraseña | | text | Sólo Microsoft Excel (opcional) - La contraseña utilizada para proteger un documento MS Excel. | +| csvOptions | | object | opciones de importación csv | +| | range | object | Rango de celdas que contiene la primera celda donde se escribirán los datos. Si el rango especificado no es un rango de celdas, sólo se utiliza la primera celda del rango. | +| | rowDelimiter | text | Delimitador de línea. Si no está presente, el delimitador es determinado automáticamente por 4D. | +| | columnDelimiter | text | Delimitador de columna. Por defecto: "," | +| sjsOptions | | object | opciones para la importación de sjs | +| | calcOnDemand | boolean | Si se calculan las fórmulas sólo cuando se solicitan, por defecto es false. | +| | dynamicReferences | boolean | Si calcular funciones con referencias dinámicas, por defecto es true. | +| | fullRecalc | boolean | Si calcular después de cargar los datos json, false por defecto. | +| | includeFormulas | boolean | Si se incluyen las fórmulas al cargar, por defecto es true. | +| | includeStyles | boolean | Si se incluyen los estilos al cargar, por defecto es true. | +| | includeUnusedStyles | boolean | Si se incluyen los estilos de nombre no utilizados al convertir excel xml a json, por defecto es true. | +| | openMode | integer |
  • 0 (normal): modo abierto normal, sin perezoso (lazy) e incremental. When opening file, UI and UI event could be refreshed and responsive at specific time points.
  • 1 (lazy): modo de apertura lazy. Al abrir el archivo, sólo se cargará directamente la hoja activa. Las demás hojas sólo se cargarán cuando se vayan a utilizar.
  • 2 (incremental): modo abierto incremental. Al abrir un archivo, la interfaz de usuario y el evento de interfaz de usuario podrían actualizarse y responder directamente.
  • | +| excelOptions | | object | Sólo Excel (opcional) - Opciones para exportar Excel | +| | includeStyles | boolean | Si se incluye el estilo al importar, por defecto true. | +| | includeFormulas | boolean | Si se incluye la fórmula al importar, por defecto true. | +| | frozenColumnsAsRowHeaders | boolean | Bien sea tratar las columnas congeladas como encabezados de línea al importar, por defecto false. | +| | frozenRowsAsColumnHeaders | boolean | Whether to treat the frozen rows as column headers when importing, default false. | +| | fullRecalc | boolean | Si calcular después de cargar los datos json, false por defecto. | +| | dynamicReferences | boolean | Whether to calculate functions with dynamic reference, default true. | +| | calcOnDemand | boolean | Whether to calculate formulas only when they are demanded, default false. | +| | includeUnusedStyles | boolean | Si incluir el estilo de nombre no utilizado al convertir excel xml al json, default true. | +| | contraseña | text | La contraseña para abrir el workbook. | +| | openMode | text | The open mode of normal, lazy and incremental. Por defecto es normal. | :::note Notas diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md index b4ead57aa40468..adfb613719d267 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md @@ -35,10 +35,10 @@ En *targetRange*, pase el rango de celdas donde se copiarán o moverán los valo El parámetro *options* tiene varias propiedades: -| Propiedad | Tipo | Descripción | -| ------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Boolean | Determina si los valores, el formato y las fórmulas de las celdas de *originRange* se eliminan después de ejecutar el comando:
    • *False* (por defecto) para eliminarlos
    • *True* para mantenerlos
    | -| pasteOptions | Integer | Especifica lo que se pega. Valores posibles:

    ValorDescripción
    `vk clipboard options all` (por defecto)Pega todos los objetos de datos, incluidos los valores, el formato y las fórmulas.
    `vk clipboard options formatting`Pega sólo el formato.
    `vk clipboard options formulas`Pega sólo las fórmulas.
    `vk clipboard options formulas and formatting`Pega las fórmulas y el formato.
    `vk clipboard options values`Pega sólo los valores.
    `vk clipboard options value and formatting`Pega los valores y el formato.

    | +| Propiedad | Tipo | Descripción | +| ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| copy | Boolean | Determina si los valores, el formato y las fórmulas de las celdas de *originRange* se eliminan después de ejecutar el comando:
    • *False* (por defecto) para eliminarlos
    • *True* para mantenerlos
    | +| pasteOptions | Integer | Especifica lo que se pega. Possible values:

    ValueDescription
    `vk clipboard options all` (default)Pastes all data objects, including values, formatting, and formulas.
    `vk clipboard options formatting`Pega solo el formato.
    `vk clipboard options formulas`Pega sólo las fórmulas.
    `vk clipboard options formulas and formatting`Pastes the formulas and formatting.
    `vk clipboard options values`Pastes only the values.
    `vk clipboard options value and formatting`Pastes the values and formatting.

    | Se tienen en cuenta las opciones de pegado definidas en las [opciones del libro de trabajo](vp-set-workbook-options.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-data-context.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-data-context.md index b495dcab799355..8a32e26833bd1a 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-data-context.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-data-context.md @@ -42,10 +42,10 @@ Para pasar un valor de tiempo en *dataObj* o *dataColl*, encapsúlelo en un obje En *options*, puede pasar un objeto que especifique las opciones adicionales. Las propiedades posibles son: -| Propiedad | Tipo | Descripción | -| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| reset | Object | True para restablecer el contenido de la hoja antes de cargar el nuevo contexto, False (por defecto) en caso contrario. | -| autoGenerateColumns | Object | Sólo se utiliza cuando los datos son una colección. True (por defecto) para especificar que las columnas deben generarse automáticamente cuando se vincula el contexto de datos. En este caso, se aplican las siguientes reglas:
    • Si *dataColl* es una colección de objetos, los nombres de los atributos se utilizan como títulos de las columnas (ver el ejemplo 2).
    • Si *dataColl* contiene subcolecciones de valores escalares, cada subcolección define los valores de una fila (ver el ejemplo 3). La primera subcolección determina cuántas columnas se crean.
    | +| Propiedad | Tipo | Descripción | +| ------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| reset | Object | True para restablecer el contenido de la hoja antes de cargar el nuevo contexto, False (por defecto) en caso contrario. | +| autoGenerateColumns | Object | Sólo se utiliza cuando los datos son una colección. True (por defecto) para especificar que las columnas deben generarse automáticamente cuando se vincula el contexto de datos. In this case, the following rules apply:
    • If *dataColl* is a collection of objects, attribute names are used as column titles (see example 2).
    • If *dataColl* contains subcollections of scalar values, each subcollection defines the values in a row (see example 3). La primera subcolección determina cuántas columnas se crean.
    | En *sheet*, pase el índice de la hoja que recibirá el contexto de datos. Si no se pasa ningún índice, el contexto se aplica a la hoja actual. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md index 5fa478c3200126..ecbe60ce95a598 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md @@ -29,66 +29,66 @@ Las opciones modificadas del libro de trabajo se guardan con el documento. En la siguiente tabla se listan las opciones de libros de trabajo disponibles: -| Propiedad | Tipo | Descripción | -| ------------------------------------- | ----------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| allowUserDragMerge | boolean | Se permite la operación de fusión por arrastre (seleccionar celdas y arrastrar la selección para fusionar celdas) | -| allowAutoCreateHyperlink | boolean | Permite la creación automática de hipervínculos en la hoja de cálculo. | -| allowContextMenu | boolean | Se puede abrir el menú contextual integrado. | -| allowCopyPasteExcelStyle | boolean | Los estilos de una hoja de cálculo pueden copiarse y pegarse en Excel, y viceversa. | -| allowDynamicArray | boolean | Permite arrays dinámicos en hojas de cálculo | -| allowExtendPasteRange | boolean | Amplía el rango pegado si éste no es suficiente para los datos pegados | -| allowSheetReorder | boolean | Se permite reordenar la hoja | -| allowUndo | boolean | Deshacer ediciones está permitido. | -| allowUserDeselect | boolean | Se permite desmarcar celdas específicas de una selección. | -| allowUserDragDrop | boolean | Se permite arrastrar y soltar los datos del rango | -| allowUserDragFill | boolean | Se permite el relleno por arrastre | -| allowUserEditFormula | boolean | Las fórmulas pueden introducirse en las celdas | -| allowUserResize | boolean | Columnas y filas redimensionables | -| allowUserZoom | boolean | Se permite hacer zoom (ctrl + rueda del ratón) | -| autoFitType | number | El contenido se formatea para que se ajuste en las celdas, o en las celdas y los encabezados. Valores disponibles:
    ConstanteValorDescripción
    vk auto fit type cell 0 El contenido se ajusta automáticamente a las celdas
    vk auto fit type cell with header 1 El contenido se ajusta automáticamente a las celdas y encabezados
    | -| backColor | string | Una cadena de color utilizada para representar el color de fondo del área, como "red", "#FFFF00", "rgb(255,0,0)", "Acento 5". El color de fondo inicial se oculta cuando se define una backgroundImage. | -| backgroundImage | string / picture / file | Imagen de fondo para el área. | -| backgroundImageLayout | number | Cómo se muestra la imagen de fondo. Valores disponibles:
    ConstanteValorDescripción
    vk image layout center 1 En el centro del área.
    vk image layout none 3 En la esquina superior izquierda del área con su tamaño original.
    vk image layout stretch 0 Rellena el área.
    vk image layout zoom 2 Se muestra con su relación de aspecto original.
    | -| calcOnDemand | boolean | Las fórmulas se calculan sólo cuando se piden. | -| columnResizeMode | number | Redimensiona modo para columnas. Valores disponibles:
    ConstanteValorDescripción
    vk resize mode normal 0 Utiliza el modo de redimensionamiento normal (es decir, las columnas restantes se ven afectadas)
    vk resize mode split 1 Utiliza el modo dividido (es decir, las columnas restantes no se ven afectadas)
    | -| copyPasteHeaderOptions | number | Encabezados para incluir cuando se copian o pegan datos. Valores disponibles:
    ConstanteValorDescripción
    vk copy paste header options all headers3 Incluye los encabezados seleccionados cuando se copian los datos; sobrescribe los encabezados seleccionados cuando se pegan los datos.
    vk copy paste header options column headers 2 Incluye los encabezados de columna seleccionados cuando se copian los datos; sobrescribe los encabezados de columna seleccionados cuando se pegan los datos.
    vk copy paste header options no headers0 No incluye los encabezados de columna y fila al copiar los datos; no sobrescribe los encabezados de columna o fila seleccionadas al pegar los datos.
    vk copy paste header options row headers1 Incluye los encabezados de fila seleccionados cuando se copian los datos; sobrescribe los encabezados de fila seleccionados cuando se pegan los datos.
    | -| customList | collection | La lista para que los usuarios personalicen el relleno de arrastre, dar prioridad a que coincida con esta lista en cada relleno. Cada elemento de colección es una colección de cadenas. Vet en [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/cells/AutoFillData/AutoFillLists). | -| cutCopyIndicatorBorderColor | string | Color del borde del indicador que aparece cuando el usuario corta o copia la selección. | -| cutCopyIndicatorVisible | boolean | Muestra un indicador al copiar o cortar el elemento seleccionado. | -| defaultDragFillType | number | El tipo de relleno de arrastre por defecto. Valores disponibles :
    ConstanteValorDescripción
    vk auto fill type auto 5 Rellena automáticamente las celdas.
    vk auto fill type clear values 4 Borra los valores de las celdas.
    vk auto fill type copycells 0 Rellena las celdas con todos los objetos de datos, incluyendo valores, formato y fórmulas.
    vk auto fill type fill formatting only 2 Rellena las celdas sólo con formato.
    vk auto fill type fill series 1 Rellena las celdas con series.
    vk auto fill type fill without formatting 3 Rellena las celdas con valores y no con formato.
    | -| enableAccessibility | boolean | El soporte de accesibilidad está activado en la hoja de cálculo. | -| enableFormulaTextbox | boolean | Se activa la caja de texto de la fórmula. | -| grayAreaBackColor | string | Una cadena color utilizada para representar el color de fondo del área gris, como "red", "#FFFF00", "rgb(255,0,0)", "Accent 5", etc. | -| highlightInvalidData | boolean | Los datos inválidos son resaltados. | -| iterativeCalculation | boolean | Activa el cálculo iterativo. Vet en [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/formulareference/formulaoverview/calculating-iterative). | -| iterativeCalculationMaximumChange | numeric | Cantidad máxima de cambio entre dos valores de cálculo. | -| iterativeCalculationMaximumIterations | numeric | Número de veces que la fórmula debe recalcular. | -| newTabVisible | boolean | Mostrar una pestaña especial para permitir a los usuarios insertar nuevas hojas. | -| numbersFitMode | number | Cambia el modo de visualización cuando el ancho de los datos de fecha/número es mayor que el ancho de la columna. Valores disponibles:
    ConstanteValorDescripción
    vk numbers fit mode mask0 Sustituye el contenido de los datos por "###" y muestra la punta
    vk numbers fit mode overflow 1 Muestra el contenido de los datos como una cadena. Si la siguiente celda está vacía, se desborda el contenido.
    | -| pasteSkipInvisibleRange | boolean | Pegar u omitir el pegado de datos en rangos invisibles:
    • False (por defecto): pegar datos
    • True: omitir el pegado en rangos invisibles
    Ver [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) para más información sobre rangos invisibles. | -| referenceStyle | number | Estilo para referencias de celdas y rangos en fórmulas de celdas. Valores disponibles:
    ConstanteValorDescripción
    vk reference style A1 0 Utiliza el estilo A1.
    vk reference style R1C1 1 Utiliza el estilo R1C1
    | -| resizeZeroIndicator | number | Política de dibujo cuando las líneas o columnas se redimensionan a 0. Valores disponibles:
    ConstanteValorDescripción
    vk resize zero indicator default 0 Utiliza la política de dibujo actual cuando la fila o columna se redimensiona a cero.
    vk resize zero indicator enhanced 1 Dibuja dos líneas cortas cuando la fila o columna se redimensiona a cero.
    | -| rowResizeMode | number | La forma en que se redimensionan las líneas. Los valores disponibles son los mismos qe columnResizeMode | -| scrollbarAppearance | number | Apariencia de la barra de desplazamiento. Valores disponibles:
    ConstanteValorDescripción
    vk scrollbar appearance mobile1 Aspecto de la barra de desplazamiento móvil.
    vk scrollbar appearance skin (por defecto)0 Aspecto clásico de la barra de desplazamiento.
    | -| scrollbarMaxAlign | boolean | La barra de desplazamiento se alinea con la última línea y columna de la hoja activa. | -| scrollbarShowMax | boolean | Las barras de desplazamiento mostradas se basan en el número total de columnas y líneas de la hoja. | -| scrollByPixel | boolean | Activar desplazamiento de precisión por píxel. | -| scrollIgnoreHidden | boolean | La barra de desplazamiento ignora líneas o columnas ocultas. | -| scrollPixel | integer | Decide el desplazamiento por ese número de píxeles cuando scrollByPixel es true. Los píxeles finales de desplazamiento son el resultado de `scrolling delta * scrollPixel`. Por ejemplo: delta de desplazamiento es 3, scrollPixel es 5, los píxeles finales de desplazamiento son 15. | -| showDragDropTip | boolean | Mostrar la punta de arrastrar y soltar. | -| showDragFillSmartTag | boolean | Mostrar el diálogo de arrastrar y rellenar. | -| showDragFillTip | boolean | Mostrar la punta de arrastrar y soltar. | -| showHorizontalScrollbar | boolean | Mostrar la barra de desplazamiento horizontal. | -| showResizeTip | number | Cómo mostrar el tip de redimensionamiento. Valores disponibles:
    ConstanteValorDescripción
    vk show resize tip both 3 Se muestran los consejos de redimensionamiento horizontal y vertical.
    vk show resize tip column 1 Sólo se muestra el consejo de redimensionamiento horizontal.
    vk show resize tip none 0 No se muestra ningún consejo de redimensionamiento.
    vk show resize tip row 2 Sólo se muestra el consejo de redimensionamiento vertical.
    | -| showScrollTip | number | Cómo mostrar el tip de desplazamiento. Valores disponibles:
    ConstanteValorDescripción
    vk show scroll tip both 3 Se muestran los consejos de desplazamiento horizontal y vertical.
    vk show scroll tip horizontal 1 Sólo se muestra el consejo de desplazamiento horizontal.
    vk show scroll tip none No se muestra ninguna información de desplazamiento.
    vk show scroll tip vertical 2 Sólo se muestra la información de desplazamiento vertical.
    | -| showVerticalScrollbar | boolean | Mostrar la barra de desplazamiento vertical. | -| tabEditable | boolean | La pestaña de la hoja se puede editar. | -| tabNavigationVisible | boolean | Mostrar la navegación por pestañas. | -| tabStripPosition | number | Posición de la barra de pestañas. Valores disponibles:
    ConstanteValorDescripción
    vk tab strip position bottom 0 La posición del tabulador es relativa a la parte inferior del libro.
    vk tab strip position left 2 La posición de la barra es relativa a la izquierda del libro.
    vk tab strip position right 3 La posición de la barra es relativa a la derecha del libro.
    vk tab strip position top 1 La posición de la barra de pestañas es relativa a la parte superior del libro.
    | -| tabStripRatio | number | Valor porcentual (0,x) que especifica qué parte del espacio horizontal se asignará al tabulador. El resto del área horizontal (1 - 0.x) se asignará a la barra de desplazamiento horizontal. | -| tabStripVisible | boolean | Mostrar la barra de pestañas de la hoja. | -| tabStripWidth | number | Ancho de la etiqueta cuando la posición es izquierda o derecha. Por defecto y el mínimo es 80. | -| useTouchLayout | boolean | Si se va a utilizar el diseño táctil para presentar el componente Spread. | +| Propiedad | Tipo | Descripción | +| ------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| allowUserDragMerge | boolean | Se permite la operación de fusión por arrastre (seleccionar celdas y arrastrar la selección para fusionar celdas) | +| allowAutoCreateHyperlink | boolean | Permite la creación automática de hipervínculos en la hoja de cálculo. | +| allowContextMenu | boolean | Se puede abrir el menú contextual integrado. | +| allowCopyPasteExcelStyle | boolean | Los estilos de una hoja de cálculo pueden copiarse y pegarse en Excel, y viceversa. | +| allowDynamicArray | boolean | Permite arrays dinámicos en hojas de cálculo | +| allowExtendPasteRange | boolean | Amplía el rango pegado si éste no es suficiente para los datos pegados | +| allowSheetReorder | boolean | Se permite reordenar la hoja | +| allowUndo | boolean | Deshacer ediciones está permitido. | +| allowUserDeselect | boolean | Se permite desmarcar celdas específicas de una selección. | +| allowUserDragDrop | boolean | Se permite arrastrar y soltar los datos del rango | +| allowUserDragFill | boolean | Se permite el relleno por arrastre | +| allowUserEditFormula | boolean | Las fórmulas pueden introducirse en las celdas | +| allowUserResize | boolean | Columnas y filas redimensionables | +| allowUserZoom | boolean | Se permite hacer zoom (ctrl + rueda del ratón) | +| autoFitType | number | El contenido se formatea para que se ajuste en las celdas, o en las celdas y los encabezados. Valores disponibles:
    ConstanteValorDescripción
    vk auto fit type cell 0 El contenido se ajusta automáticamente a las celdas
    vk auto fit type cell with header 1 El contenido se ajusta automáticamente a las celdas y encabezados
    | +| backColor | string | Una cadena de color utilizada para representar el color de fondo del área, como "red", "#FFFF00", "rgb(255,0,0)", "Acento 5". El color de fondo inicial se oculta cuando se define una backgroundImage. | +| backgroundImage | string / picture / file | Imagen de fondo para el área. | +| backgroundImageLayout | number | Cómo se muestra la imagen de fondo. Available values:
    ConstantValueDescription
    vk image layout center 1 In the center of the area.
    vk image layout none 3 In the upper left corner of the area with its original size.
    vk image layout stretch 0 Fills the area.
    vk image layout zoom 2 Displayed with its original aspect ratio.
    | +| calcOnDemand | boolean | Las fórmulas se calculan sólo cuando se piden. | +| columnResizeMode | number | Redimensiona modo para columnas. Valores disponibles:
    ConstanteValorDescripción
    vk resize mode normal 0 Utiliza el modo de redimensionamiento normal (es decir, las columnas restantes se ven afectadas)
    vk resize mode split 1 Utiliza el modo dividido (es decir, las columnas restantes no se ven afectadas)
    | +| copyPasteHeaderOptions | number | Encabezados para incluir cuando se copian o pegan datos. Available values:
    ConstantValueDescription
    vk copy paste header options all headers3 Includes selected headers when data is copied; overwrites selected headers when data is pasted.
    vk copy paste header options column headers 2 Includes selected column headers when data is copied; overwrites selected column headers when data is pasted.
    vk copy paste header options no headers0 Column and row headers are not included when data is copied; does not overwrite selected column or row headers when data is pasted.
    vk copy paste header options row headers1 Includes selected row headers when data is copied; overwrites selected row headers when data is pasted.
    | +| customList | collection | La lista para que los usuarios personalicen el relleno de arrastre, dar prioridad a que coincida con esta lista en cada relleno. Cada elemento de colección es una colección de cadenas. Vet en [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/cells/AutoFillData/AutoFillLists). | +| cutCopyIndicatorBorderColor | string | Color del borde del indicador que aparece cuando el usuario corta o copia la selección. | +| cutCopyIndicatorVisible | boolean | Muestra un indicador al copiar o cortar el elemento seleccionado. | +| defaultDragFillType | number | El tipo de relleno de arrastre por defecto. Valores disponibles :
    ConstanteValorDescripción
    vk auto fill type auto 5 Rellena automáticamente las celdas.
    vk auto fill type clear values 4 Clears cell values.
    vk auto fill type copycells 0 Fills cells with all data objects, including values, formatting, and formulas.
    vk auto fill type fill formatting only 2 Fills cells only with formatting.
    vk auto fill type fill series 1 Fills cells with series.
    vk auto fill type fill without formatting 3 Rellena las celdas con valores y no con formato.
    | +| enableAccessibility | boolean | El soporte de accesibilidad está activado en la hoja de cálculo. | +| enableFormulaTextbox | boolean | Se activa la caja de texto de la fórmula. | +| grayAreaBackColor | string | Una cadena color utilizada para representar el color de fondo del área gris, como "red", "#FFFF00", "rgb(255,0,0)", "Accent 5", etc. | +| highlightInvalidData | boolean | Los datos inválidos son resaltados. | +| iterativeCalculation | boolean | Activa el cálculo iterativo. Vet en [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/formulareference/formulaoverview/calculating-iterative). | +| iterativeCalculationMaximumChange | numeric | Cantidad máxima de cambio entre dos valores de cálculo. | +| iterativeCalculationMaximumIterations | numeric | Número de veces que la fórmula debe recalcular. | +| newTabVisible | boolean | Mostrar una pestaña especial para permitir a los usuarios insertar nuevas hojas. | +| numbersFitMode | number | Cambia el modo de visualización cuando el ancho de los datos de fecha/número es mayor que el ancho de la columna. Valores disponibles:
    ConstanteValorDescripción
    vk numbers fit mode mask0 Sustituye el contenido de los datos por "###" y muestra la punta
    vk numbers fit mode overflow 1 Muestra el contenido de los datos como una cadena. Si la siguiente celda está vacía, se desborda el contenido.
    | +| pasteSkipInvisibleRange | boolean | Pegar u omitir el pegado de datos en rangos invisibles:
    • False (por defecto): pegar datos
    • True: omitir el pegado en rangos invisibles
    Ver [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) para más información sobre rangos invisibles. | +| referenceStyle | number | Estilo para referencias de celdas y rangos en fórmulas de celdas. Available values:
    ConstantValueDescription
    vk reference style A1 0 Use A1 style.
    vk reference style R1C1 1 Use R1C1 style
    | +| resizeZeroIndicator | number | Política de dibujo cuando las líneas o columnas se redimensionan a 0. Available values:
    ConstantValueDescription
    vk resize zero indicator default 0 Uses the current drawing policy when the row or column is resized to zero.
    vk resize zero indicator enhanced 1 Draws two short lines when the row or column is resized to zero.
    | +| rowResizeMode | number | La forma en que se redimensionan las líneas. Los valores disponibles son los mismos qe columnResizeMode | +| scrollbarAppearance | number | Apariencia de la barra de desplazamiento. Available values:
    ConstantValueDescription
    vk scrollbar appearance mobile1 Mobile scrollbar appearance.
    vk scrollbar appearance skin (default)0 Excel-like classic scrollbar appearance.
    | +| scrollbarMaxAlign | boolean | La barra de desplazamiento se alinea con la última línea y columna de la hoja activa. | +| scrollbarShowMax | boolean | Las barras de desplazamiento mostradas se basan en el número total de columnas y líneas de la hoja. | +| scrollByPixel | boolean | Activar desplazamiento de precisión por píxel. | +| scrollIgnoreHidden | boolean | La barra de desplazamiento ignora líneas o columnas ocultas. | +| scrollPixel | integer | Decide el desplazamiento por ese número de píxeles cuando scrollByPixel es true. Los píxeles finales de desplazamiento son el resultado de `scrolling delta * scrollPixel`. Por ejemplo: delta de desplazamiento es 3, scrollPixel es 5, los píxeles finales de desplazamiento son 15. | +| showDragDropTip | boolean | Mostrar la punta de arrastrar y soltar. | +| showDragFillSmartTag | boolean | Mostrar el diálogo de arrastrar y rellenar. | +| showDragFillTip | boolean | Mostrar la punta de arrastrar y soltar. | +| showHorizontalScrollbar | boolean | Mostrar la barra de desplazamiento horizontal. | +| showResizeTip | number | Cómo mostrar el tip de redimensionamiento. Available values:
    ConstantValueDescription
    vk show resize tip both 3 Horizontal and vertical resize tips are displayed.
    vk show resize tip column 1 Only the horizontal resize tip is displayed.
    vk show resize tip none 0 No resize tip is displayed.
    vk show resize tip row 2 Only the vertical resize tip is displayed.
    | +| showScrollTip | number | Cómo mostrar el tip de desplazamiento. Available values:
    ConstantValueDescription
    vk show scroll tip both 3 Horizontal and vertical scroll tips are displayed.
    vk show scroll tip horizontal 1 Only the horizontal scroll tip is displayed.
    vk show scroll tip none No scroll tip is displayed.
    vk show scroll tip vertical 2 Only the vertical scroll tip is displayed.
    | +| showVerticalScrollbar | boolean | Mostrar la barra de desplazamiento vertical. | +| tabEditable | boolean | La pestaña de la hoja se puede editar. | +| tabNavigationVisible | boolean | Mostrar la navegación por pestañas. | +| tabStripPosition | number | Posición de la barra de pestañas. Available values:
    ConstantValueDescription
    vk tab strip position bottom 0 Tab strip position is relative to the bottom of the workbook.
    vk tab strip position left 2 Tab strip position is relative to the left of the workbook.
    vk tab strip position right 3 Tab strip position is relative to the right of the workbook.
    vk tab strip position top 1 Tab strip position is relative to the top of the workbook.
    | +| tabStripRatio | number | Valor porcentual (0,x) que especifica qué parte del espacio horizontal se asignará al tabulador. El resto del área horizontal (1 - 0.x) se asignará a la barra de desplazamiento horizontal. | +| tabStripVisible | boolean | Mostrar la barra de pestañas de la hoja. | +| tabStripWidth | number | Ancho de la etiqueta cuando la posición es izquierda o derecha. Por defecto y el mínimo es 80. | +| useTouchLayout | boolean | Si se va a utilizar el diseño táctil para presentar el componente Spread. | ## Ejemplo diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/configuring.md b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/configuring.md index 6479ca5a5168dc..7d22996a114d4a 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/configuring.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/ViewPro/configuring.md @@ -332,16 +332,16 @@ Los atributos de orientación se utilizan para especificar la dirección del dis Los atributos página se utilizan para especificar la configuración general de impresión del documento. -| Propiedad | Tipo | Descripción | -| --------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| blackAndWhite | boolean | Impresión sólo en blanco y negro.

    Valor por defecto = false

    **Nota**: este atributo no afecta a los archivos PDF. Se mantienen los colores en los PDF.

    | -| centering | entero largo | Como se centran los contenidos en la página impresa. Valores disponibles: `vk print centering both`, `vk print centering horizontal`, `vk print centering none` (por defecto), `vk print centering vertical` | -| firstPageNumber | entero largo | El número de página a imprimir en la primera página. Valor por defecto = 1 | -| pageOrder | entero largo | Las páginas del pedido se imprimen. Valores disponibles: `vk print page order auto` (por defecto), `vk print page order down then over`, `vk print page order over then down`. | -| pageRange | text | El rango de páginas a imprimir | -| qualityFactor | entero largo | El factor de calidad para la impresión (1 - 8). Cuanto mayor sea el factor de calidad, mejor será la calidad de impresión, sin embargo, el rendimiento de impresión puede verse afectado.

    Valor por defecto = 2

    | -| useMax | boolean | Sólo se imprimen columnas y líneas con datos.

    Valor predeterminado = true

    | -| zoomFactor | real | La cantidad para ampliar o reducir la página impresa.

    Valor predeterminado = 1

    | +| Propiedad | Tipo | Descripción | +| --------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| blackAndWhite | boolean | Impresión sólo en blanco y negro.

    Valor por defecto = false

    **Nota**: este atributo no afecta a los archivos PDF. Se mantienen los colores en los PDF.

    | +| centering | entero largo | Como se centran los contenidos en la página impresa. Valores disponibles: `vk print centering both`, `vk print centering horizontal`, `vk print centering none` (por defecto), `vk print centering vertical` | +| firstPageNumber | entero largo | El número de página a imprimir en la primera página. Valor por defecto = 1 | +| pageOrder | entero largo | Las páginas del pedido se imprimen. Valores disponibles: `vk print page order auto` (por defecto), `vk print page order down then over`, `vk print page order over then down`. | +| pageRange | text | El rango de páginas a imprimir | +| qualityFactor | entero largo | El factor de calidad para la impresión (1 - 8). The higher the quality factor, the better the printing quality, however printing performance may be affected.

    Valor por defecto = 2

    | +| useMax | boolean | Sólo se imprimen columnas y líneas con datos.

    Valor por defecto = true

    | +| zoomFactor | real | La cantidad para ampliar o reducir la página impresa.

    Valor por defecto = 1

    | ### Tamaño del papel diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/http-request-handler.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/http-request-handler.md index facb115670bf95..fa31f6b403cfc2 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/http-request-handler.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/http-request-handler.md @@ -5,47 +5,47 @@ title: HTTP Request handler Por defecto, las peticiones HTTP recibidas por el servidor web 4D se gestionan a través de [funciones de procesamiento integradas](httpRequests.md) o del [servidor REST](../REST/REST_requests.md). -In addition, 4D supports the implementation of **custom HTTP Request handlers**, allowing you to intercept specific incoming HTTP requests and process them using your own code. +Además, 4D soporta la implementación de **gestores de peticiones HTTP personalizadas**, permitiéndole interceptar peticiones HTTP entrantes específicas y procesarlas utilizando su propio código. Cuando un manejador de peticiones HTTP personalizado intercepta una solicitud, se procesa directamente y no hay otras funcionalidades de procesamiento (por ejemplo, son llamados métodos base [On Web authentication](./authentication.md#on-web-authentication) o [On Web connection](./httpRequests.md#on-web-connection). -Custom HTTP request handlers meet various needs, including: +Los gestores de peticiones HTTP personalizados satisfacen diversas necesidades, entre ellas: -- using a given URL as a resource provider or a file-uploading box (to download or upload various files), -- redirecting on specific pages according to a context (user authenticated, privileges granted...), +- la utilización de una URL dedicada como proveedor de recursos o como cuadro de carga de archivos (para descargar o cargar varios archivos), +- la redirección en páginas específicas en función de un contexto (usuario autentificado, privilegios otorgados...), - gestionar una autenticación a través de oAuth 2.0. ## Requisitos -Custom HTTP Request handlers are supported in the following context: +Los manejadores de peticiones HTTP personalizadas están soportados en el siguiente contexto: - [scalable sessions](./sessions.md#enabling-web-sessions) or [no sessions](../settings/web.md#no-sessions) are enabled, - a web server run locally by 4D or 4D Server, including those [run by components](./webServerObject.md). :::warning -For security reasons, external access to the datastore can be disallowed in 4D. You need to configure the [ORDA privileges](../ORDA/privileges.md) to allow HTTP requests. +Por razones de seguridad, el acceso externo al datastore puede ser desautorizado en 4D. Necesita configurar los [privilegios ORDA](../ORDA/privileges.md) para permitir peticiones HTTP. ::: -## How to set handlers +## Cómo definir los gestores -You can declare HTTP Request handlers: +Puede declarar gestores de peticiones HTTP: -- in a configuration file named **HTTPHandlers.json** stored in the [`Project/Sources`](../Project/architecture.md#sources) folder of the project. HTTP Request handlers are loaded and applied in the main Web server once it is started. -- using a [`.handlers`](../API/WebServerClass.md#handlers) property set in the *settings* parameter of the [start()](../API/WebServerClass.md#start) function, for any web server object: +- en un archivo de configuración llamado **HTTPHandlers.json** almacenado en la carpeta [`Project/Sources`](../Project/architecture.md#sources) del proyecto. Los gestores de peticiones HTTP se cargan y aplican en el servidor Web principal una vez se inicia. +- utilizando una propiedad [`.handlers`](../API/WebServerClass.md#handlers) definida en el parámetro *settings* de la función [start()](../API/WebServerClass.md#start), para todo objeto servidor web: ```4d -WEB Server.start($settings.handlers) //set rules at web server startup +WEB Server.start($settings.handlers) //definir reglas al inicio del servidor web ``` -If both a **HTTPHandlers.json** file and a call to the [`WEB Server`](../commands/web-server.md) command with a valid `$settings.handlers` are used, the `WEB Server` command has priority. +Si se utiliza tanto un archivo **HTTPHandlers.json** como una llamada al comando [`WEB Server`](../commands/web-server.md) con un `$settings.handlers` válido, el comando `WEB Server` tiene prioridad. -The json file (or the object in the *settings* parameter) contains all listened URL patterns, the handled verbs, and the code to be called. +El archivo json (o el objeto en el parámetro *settings*) contiene todos los modelos URL escuchados, los verbos manejados y el código a llamar. -Handlers are provided as a collection. +Los *handlers* se proporcionan como una colección. -At runtime, the first pattern matching the URL is executed, the others are ignored. +Al momento de la ejecución, se ejecuta el primer patrón que coincida con la URL, los demás se ignoran. Este es un ejemplo del contenido de un archivo *HTTPHandlers.json*: @@ -61,11 +61,11 @@ Este es un ejemplo del contenido de un archivo *HTTPHandlers.json*: ] ``` -This handler declaration can be read as: when any request starting by `/start/` with a `GET` or `POST` verb is received by the server, the `gettingStarted` function of the `GeneralHandling` singleton is executed. +Esta declaración de handler puede leerse como: cuando cualquier petición que comience por `/start/` con un verbo `GET` o `POST` es recibida por el servidor, se ejecuta la función `gettingStarted` del singleton `GeneralHandling`. :::note -You must restart the Web server so that modifications made in this file are taken into account. +Debe reiniciar el servidor Web para que se tengan en cuenta las modificaciones realizadas en este archivo. ::: @@ -73,32 +73,32 @@ You must restart the Web server so that modifications made in this file are take Un manejador está definido por: -- a listened URL pattern -- a function and its class where the code is implemented to handle the listened URL pattern -- the verbs with which the URL can be called to trigger the handler +- un patrón de URL a interceptar +- una función y su clase donde se implementa el código para manejar el patrón URL escuchado +- los verbos con los que se puede llamar a la URL para activar el gestor -The handler identifier is the couple [pattern + a verb among the verbs list]. +El identificador del gestor es la pareja [patrón + un verbo de la lista de verbos]. ### Patrones de la URL -URL patterns can be given as **prefixes** or using **regular expressions**. +Los patrones de URL pueden indicarse como **prefijos** o utilizando **expresiones regulares**. -- To declare a prefix pattern, use the "pattern" property name in the HTTPHandlers.json file. Prefixes are considered as regular expressions already containing starting and ending `/`. +- Para declarar un patrón de prefijo, utilice el nombre de propiedad "pattern" en el archivo HTTPHandlers.json. Los prefijos son considerados como expresiones regulares que ya contienen un `/` inicial y final. Ej: `"pattern": "docs"` o `"pattern": "docs/invoices"` -- To declare a regular expression pattern, use the "regexPattern" property name in the HTTPHandlers.json file. Los modelos de expresiones regulares se manejan directamente. +- Para declarar un patrón de expresión regular, utilice el nombre de propiedad "regexPattern" en el archivo HTTPHandlers.json. Los modelos de expresiones regulares se manejan directamente. Ej: `"regexPattern" : "/docs/.+/index\.html"` -"Pattern" and "regexPattern" properties cannot be used in the same handler definition (in this case, only the "regexPattern" property is taken into account). +Las propiedades "Pattern" y "regexPattern" no pueden utilizarse en la misma definición de gestor (en este caso, sólo se tiene en cuenta la propiedad "regexPattern"). -#### Concordancia de modelos +#### Correspondencia de modelos Los modelos de URL se activan en el orden indicado: - se ejecuta el primer modelo coincidente - los siguientes patrones no se ejecutan aunque coincidan con la URL -As a consequence, you need to apply a accurate strategy when writing your handlers: the most detailed patterns must be written before the more general patterns. +En consecuencia, debe aplicar una estrategia precisa al escribir sus gestores: los patrones más detallados deben escribirse antes que los patrones más generales. ```json [ @@ -126,7 +126,7 @@ As a consequence, you need to apply a accurate strategy when writing your handle #### Patrones prohibidos -URL patterns matching 4D built-in HTTP processing features are not allowed in custom HTTP handlers. Por ejemplo, los siguientes modelos no pueden ser manejados: +Los patrones URL que coincidan con las funciones de procesamiento HTTP integradas en 4D no están permitidos en los gestores HTTP personalizados. Por ejemplo, los siguientes modelos no pueden ser manejados: - `/4DACTION` - `/rest` @@ -135,28 +135,28 @@ URL patterns matching 4D built-in HTTP processing features are not allowed in cu ### Clase y método -You declare the code to be executed when a defined URL pattern is intercepted using the "class" and "method" properties. +Declare el código a ejecutar cuando se intercepte un patrón de URL definido utilizando las propiedades "class" y "method". -- "class": class name without `cs.`, e.g. "UsersHandling" for the `cs.UsersHandling` user class. Debe ser una clase [**compartida**](../Concepts/classes.md#shared-singleton) y [**singleton**](../Concepts/classes.md#singleton-classes). +- "class": nombre de la clase sin `cs.`, por ejemplo, "UsersHandling" para la clase usuario `cs.UsersHandling`. Debe ser una clase [**compartida**](../Concepts/classes.md#shared-singleton) y [**singleton**](../Concepts/classes.md#singleton-classes). - "method": función de clase perteneciente a la clase. [Ver abajo](#request-handler-code) para obtener información sobre el código del gestor de peticiones. ### Verbs -You can use the "verbs" property in the handler definition to declare HTTP verbs that are supported in incoming requests for this handler. A request that uses a verb that is not explicitely allowed is automatically rejected by the server. +Puede utilizar la propiedad "verbs" en la definición del manejador para declarar los verbos HTTP que se admiten en las peticiones entrantes para este manejador. Una solicitud que utiliza un verbo no permitido explícitamente es rechazada automáticamente por el servidor. -You can declare several verbs, separated by a comma. Los nombres de verbos no distinguen entre mayúsculas y minúsculas. +Puede declarar varios verbos, separados por una coma. Los nombres de verbos no distinguen entre mayúsculas y minúsculas. Ej: `"verbs" : "PUT, POST"` :::note -No control is done on verb names. Se pueden utilizar todos los nombres. +No se hace ningún control sobre los nombres de los verbos. Se pueden utilizar todos los nombres. ::: -By default, if the "verbs" property is not used for a handler, **all** HTTP verbs are supported in incoming requests for this handler (except those possibly used beforehand in a more detailed pattern, as shown in the example above). +Por defecto, si la propiedad "verbs" no se utiliza para un manejador, **todos** los verbos HTTP son soportados en las peticiones entrantes para este manejador (excepto aquellos posiblemente utilizados de antemano en un patrón más detallado, como se muestra en el ejemplo anterior). :::note @@ -225,7 +225,7 @@ En este ejemplo, debe implementar las siguientes funciones: - *handleDocs* en la clase *DocsHandling* - *handleTheInvoice* / *handleDetails* / *handleInvoices* en la clase *InvoicesHandling* -Examples of URLs triggering the handlers: +Ejemplos de URL que activan los gestores personalizados: `IP:port/info/` con un verbo GET `IP:port/info/general` con un verbo GET @@ -246,11 +246,11 @@ Examples of URLs triggering the handlers: ### Configuración de funciones -The HTTP Request handler code must be implemented in a function of a [**Shared**](../Concepts/classes.md#shared-singleton) [**singleton class**](../Concepts/classes.md#singleton-classes). +El código del gestor de peticiones HTTP debe implementarse en una función de una clase [**Compartida**](../Concepts/classes.md#shared-singleton) [**clase singleton**](../Concepts/classes.md#singleton-classes). -If the singleton is missing or not shared, an error "Cannot find singleton" is returned by the server. If the class or the function [defined as handler](#handler-definition) in the HTTPHandlers.json file is not found, an error "Cannot find singleton function" is returned by the server. +Si el singleton no se encuentra o no está compartido, el servidor devuelve un error "No se puede encontrar singleton". Si la clase o la función [definida como manejador](#handler-definition) en el archivo HTTPHandlers.json no se encuentra, el servidor devuelve un error "No se puede encontrar la función singleton". -Request handler functions are not necessarily shared, unless some request handler properties are updated by the functions. En este caso, necesita declarar sus funciones con la [palabra clave 'shared'](../Concepts/classes.md#shared-functions). +Las funciones del gestor de peticiones no son necesariamente compartidas, a menos que algunas propiedades del gestor de peticiones sean actualizadas por las funciones. En este caso, necesita declarar sus funciones con la [palabra clave 'shared'](../Concepts/classes.md#shared-functions). :::note @@ -262,13 +262,13 @@ Request handler functions are not necessarily shared, unless some request handle Cuando una solicitud ha sido interceptada por el manejador, se recibe en el servidor como una instancia de la [clase 4D.IncomingMessage](../API/IncomingMessageClass.md). -All necessary information about the request are available in this object, including the request url, verb, headers, and, if any, parameters (put in the URL) and body. +Toda la información necesaria sobre la petición está disponible en este objeto, incluyendo la url de la petición, el verbo, los encabezados y, si los hay, los parámetros (puestos en la URL) y el cuerpo de la petición. -Then, the request handler can use this information to trigger appropriate business logic. +A continuación, el gestor de solicitudes puede utilizar esta información para activar la lógica de negocio adecuada. -### Output: an instance of the 4D.OutgoingMessage class +### Salida: una instancia de la clase 4D.OutgoingMessage -The request handler can return an object instance of the [4D.OutGoingMessage class](../API/OutgoingMessageClass.md), i.e. some full web content ready for a browser to handle, such as a file content. +El gestor de peticiones puede devolver una instancia de objeto de la clase [4D.OutGoingMessage](../API/OutgoingMessageClass.md), es decir, algún contenido web completo listo para que un navegador lo maneje, como un contenido de archivo. ### Ejemplo @@ -291,7 +291,7 @@ El archivo **HTTPHandlers.json**: La URL llamada es: http://127.0.0.1:8044/putFile?fileName=testFile -The binary content of the file is put in the body of the request and a POST verb is used. El nombre del archivo se da como parámetro (*fileName*) en la URL. Se recibe en el objeto [`urlQuery`](../API/IncomingMessageClass.md#urlquery) en la petición. +El contenido binario del archivo se coloca en el cuerpo de la petición y se utiliza un verbo POST. El nombre del archivo se da como parámetro (*fileName*) en la URL. Se recibe en el objeto [`urlQuery`](../API/IncomingMessageClass.md#urlquery) en la petición. ```4d //UploadFile class @@ -336,4 +336,4 @@ Function uploadFile($request : 4D.IncomingMessage) : 4D.OutgoingMessage ## Ver también -[Perfect mastery of your back end business logic thanks to HTTP requests handlers](https://blog.4d.com/master-http-requests-with-4d-request-handlers/) (blog post) \ No newline at end of file +[Maestría de las peticiones HTTP con los gestores de peticiones 4D](https://blog.4d.com/master-http-requests-with-4d-request-handlers/) (entrada del blog) \ No newline at end of file diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md index e087d1672ba793..4a997b5f1b63da 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md @@ -1,9 +1,9 @@ --- id: http-rules -title: HTTP Rules +title: Reglas HTTP --- -You can define HTTP rules to control HTTP response headers for any requests received by the 4D web server, including REST requests. You can add, modify, or remove HTTP headers, send redirections or set the HTTP status. This feature is useful to implement security policies based upon the handling of headers. +Puede definir reglas HTTP para controlar los encabezados de respuesta HTTP para toda petición recibida por el servidor web 4D, incluyendo las peticiones REST. Puede añadir, modificar o eliminar los encabezados HTTP, enviar redirecciones o establecer el estado HTTP. This feature is useful to implement security policies based upon the handling of headers. To define HTTP rules, you just need to write some RegEx to declare the URL patterns you want to control, as well as how to modify response headers. You can set these rules using a `HTTPRules.json` file stored in the project folder, or using the *settings* parameter [`start()`](../API/WebServerClass.md#start) function of the web server object. @@ -14,7 +14,7 @@ HTTP rules are supported in the following contexts: - [scalable sessions](./sessions.md#enabling-web-sessions) or [no sessions](../settings/web.md#no-sessions) are enabled, - a web server run locally by 4D or 4D Server, including those [run by components](./webServerObject.md). -## How to set rules +## Cómo definir reglas You can declare HTTP response rules: @@ -29,23 +29,23 @@ If both a **HTTPRules.json** file and a call to the [`WEB Server`](../commands/w If the URI of the request does not match any of the RegEx patterns, the web server returns a default response. -## Rules Definition +## Definición de reglas The **HTTPRules.json** file or the [`.rules`](../API/WebServerClass.md#rules) property must contain a collection of **rule objects**. -A rule object is defined by: +Un objeto regla se define por: - a RegEx describing a URL pattern, e.g. "^(.\*\\.(jpg|jpeg|png|gif))" - the name of the action to execute for the HTTP response, e.g. "removeHeaders" - the value of the action, e.g. "X-Unwanted-Header1" -Other properties are ignored. +Las demás propiedades se ignoran. ### Patrones de la URL URL patterns are given using **regular expressions**. To declare a regular expression pattern, use the "RegExPattern" property name. -Ex: `"RegExPattern": "/Test/Authorized/(.*)"` +Ej.: `"RegExPattern": "/Test/Authorized/(.*)"` When the web server receives a request, **all** URL patterns are triggered sequentially in the given order, and all matching patterns are executed. In case of several actions modifying similar resources, the last executed action is taken into account. @@ -55,36 +55,41 @@ The following action keywords are supported: | Palabras clave | Tipo de valor | Descripción | | --------------- | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `removeHeaders` | Text or Collection of texts | Header(s) to remove from the HTTP responses. If a header to remove does not exist in the response header, it is ignored. | +| `removeHeaders` | Texto o colección de textos | Header(s) to remove from the HTTP responses. If a header to remove does not exist in the response header, it is ignored. | | `addHeaders` | Object | Name (text) and value (text) of header(s) to add to the HTTP responses. | | `setHeaders` | Object | Name (text) and value (text) of header(s) to modify in the HTTP responses. If a header to modify does not exist in the response header, it is added. | | `denyAccess` | Boolean | true to deny access to the resource, false to allow access. When the access to a resource is denied, the web server returns a 403 status by default | | `redirect` | Text | Redirection URL. When a redirection is triggered, the web server returns a 302 status by default | -| `status` | Number | HTTP status | +| `status` | Number | Estado HTTP | -### Non-modifiable headers +### Encabezados no modificables -The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions: +Some headers could not be added, modified or removed: -- "Date", -- "Content-Length" +| Encabezado | Acción de añadir | Set | Remove | +| ---------------- | ---------------- | ------------- | ------ | +| Fecha | No | No | No | +| Content-Length | No | No | No | +| Content-Encoding | No | No | No | +| Vary | Sí | No | No | +| Set-Cookie | Sí | Añadir cookie | No | -Modifying these headers do not generate errors, however modifications will be ignored. +Unauthorized changes on these headers do not generate errors, however modifications will be ignored. ### Current rules -You can know the current rules using the [`.rules` property of the Web Server object](../API/WebServerClass.md#rules): +Puede conocer las reglas actuales utilizando la propiedad [`.rules` del objeto Web Server](../API/WebServerClass.md#rules): ``` var $rules : Collection -$rules:=WEB Server.rules //current rules +$rules:=WEB Server.rules //reglas actuales ``` ## Ejemplos Rules can be set using a `HTTPRules.json` file or the *settings* parameter of the [`.start()`](../API/WebServerClass.md#start) web server function. -### Using a HTTPRules.json file +### Utilización de un archivo HTTPRules.json ```json diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md index cb189885bf97f9..5988064c941307 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md @@ -138,7 +138,8 @@ No existe compatibilidad directa entre las aplicaciones implementadas con 4D y l | Depurador | 4D IDE debugger
    *4D Server only*: Qodly Studio debugger (see [this paragraph](#using-qodly-debugger-on-4d-server)) | Qodly Studio debugger | | Roles y privilegios REST/Web | Edición directa de roles.json/Editor de roles y permisos Qodly Studio | Editor de roles y privilegios de Qodly Studio | -Note that in 4D single-user, if you open some 4D code with the Qodly Studio code editor, syntax coloring is not available and a "Lsp not loaded" warning is displayed. (1) The **Model** item is disabled in Qodly Studio.
    +(1) El elemento **Modelo** está desactivado en Qodly Studio.
    +(2) En el servidor 4D, la apertura del código 4D con el editor de código Qodly Studio es soportada **para pruebas y depuración** (ver [este párrafo](#development-and-deployment)). (1) The **Model** item is disabled in Qodly Studio.
    (2) In 4D Server, opening 4D code with the Qodly Studio code editor is supported **for testing and debugging purposes** (see [this paragraph](#development-and-deployment)). ### Lenguaje @@ -235,7 +236,7 @@ El proyecto debe ejecutarse en modo interpretado para que el elemento de menú * ::: -2. In the Qodly Studio toolbar, click on the **Debug** button.
    +2. En la barra de herramientas de Qodly Studio, haga clic en el botón **Debug**.
    ![qodly-debug](../assets/en/WebServer/qodly-debug.png) Si la sesión de depuración se inicia correctamente, aparecerá una viñeta verde en la etiqueta del botón ![qodly-debug](../assets/en/WebServer/debug2.png) y podrá utilizar el depurador de Qodly Studio. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md index b2a3a87835a17c..dfb4e76c1380da 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md @@ -201,9 +201,9 @@ Else End if ``` -:::note +:::tips Entradas de blog relacionadas -Para más ejemplos, por favor consulte la publicación de blog [Sesiones escalables para aplicaciones web avanzadas](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/). +[Sesiones escalables para aplicaciones web avanzadas](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: @@ -477,7 +477,7 @@ Se crea un nuevo usuario y se almacena cierta información en la sesión, especi - Sólo se pueden reutilizar las sesiones de la base de datos local (las sesiones creadas en servidores web de componentes no se pueden restaurar). - Los tokens no son compatibles con las sesiones cliente/servidor ni con las sesiones monousuario. -### Lifespan +### Vida útil Un testigo de sesión tiene una vida útil, y la propia sesión tiene una vida útil. El tiempo de vida útil del token de sesión puede definirse [en la creación de tokens](../API/SessionClass.md#createotp). Por defecto, el tiempo de vida del token es el mismo valor que el valor de [`.idleTimeout`](../API/SessionClass.md#idletimeout). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md index 22056b4f4e48a2..4a467a5ab602c3 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md @@ -623,9 +623,9 @@ En algunos casos, se pueden invocar otras funciones internas optimizadas. Las co Dos opciones le permiten definir cómo funcionan las conexiones persistentes: -- **Número de peticiones por conexión**: permite definir el número máximo de peticiones y de respuestas capaces de viajar por una conexión persistente. Limitar el número de peticiones por conexión le permite evitar la inundación del servidor debido a un gran número de peticiones entrantes (una técnica utilizada por los hackers).

    - El valor por defecto (100) puede aumentarse o disminuirse en función de los recursos de la máquina que aloja el Servidor Web 4D.

    +- **Número de peticiones por conexión**: permite definir el número máximo de peticiones y de respuestas capaces de viajar por una conexión persistente. Limiting the number of requests per connection allows you to prevent server flooding due to a large number of incoming requests (a technique used by hackers).

    + The default value (100) can be increased or decreased depending on the resources of the machine hosting the 4D Web Server.

    -- **Tiempo de espera antes de desconexión**: este valor define el periodo máximo de espera (en segundos) durante el cual el servidor web mantiene una conexión TCP abierta sin recibir ninguna petición del navegador web. Una vez transcurrido este periodo, el servidor cierra la conexión.

    - Si el navegador envía una solicitud después de que se haya cerrado la conexión, se crea automáticamente una nueva conexión TCP. Esta operación no es visible para el usuario.

    +- **Tiempo de espera antes de desconexión**: este valor define el periodo máximo de espera (en segundos) durante el cual el servidor web mantiene una conexión TCP abierta sin recibir ninguna petición del navegador web. Una vez finalizado este periodo, el servidor cierra la conexión.

    + Si el navegador web envía una solicitud después de cerrar la conexión, se crea automáticamente una nueva conexión TCP. Esta operación no es visible para el usuario.

    diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md index 5b83c6bb5b8efb..e3ba5688f10b6f 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md @@ -52,25 +52,25 @@ Puede omitir el parámetro *format*, en cuyo caso deberá especificar la extensi Pase un [objeto](# "Datos estructurados como un objeto nativo 4D") en *option* conteniendo los valores para definir las propiedades del documento exportado. Las siguientes propiedades están disponibles: -| Constante | Valor | Comentario | -| ------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| wk CID host domain name | cidHostDomain | Nombre de dominio de host CID: dominio de host que se añadirá a las URL CID generadas incluyendo una "@" como separador. Disponible sólo cuando se utiliza el formato `wk mime html`. | -| wk embedded pictures | embeddedPictures | Sólo para exportación SVG. Establece si las imágenes se incrustan en el archivo .svg exportado cuando se llama a [WP EXPORT DOCUMENT](wp-export-document.md). Valores disponibles:
  • true (por defecto): las imágenes están incrustadas en el archivo .svg exportado
  • false: las imágenes se exportan en una carpeta llamada "filename\_images" en el nivel del archivo .svg exportado, "filename" siendo el nombre pasado al comando para el archivo, sin la extensión. Las imágenes no se incrustan, sino que se hace referencia a ellas en el archivo .svg.
  • Nota: si la carpeta ya existe, se vacía antes de exportar el archivo. Si no hay ninguna imagen en la página exportada, se elimina la carpeta | -| wk factur x | facturX | Sólo para exportación en PDF. Valor: objeto que configura una exportación PDF "Factur-X (ZUGFeRD)" (ver [wk factur x object](#wk-factur-x-object)). | -| wk files | Histórico | Sólo para exportación en PDF. Valor: colección de objetos, cada uno de los cuales describe un archivo que se integrará en el documento final (ver [wk files collection](#wk-files-collection)). Esta funcionalidad sólo se admite en documentos PDF/A-3: cuando se utiliza el atributo `wk files`, se establece automáticamente la versión "PDF/A-3" (se ignora el atributo `wk pdfa version`). En caso de una exportación de Factur-X PDF (ver abajo), el primer objeto de la colección debe contener el archivo Factur-X xml. | -| wk google fonts tag | googleFontsTag | Sólo para exportación SVG. Define la regla de importación para fuentes google en el SVG exportado. Valores posibles:
  • false (por defecto): no se añade ninguna regla de importación de google fonts.
  • true: añade la regla @import al archivo exportado. Útil si desea utilizar fuentes que no están disponibles por defecto en Windows o macOS.
  • **Nota:** esta propiedad está definida en false de forma predeterminada porque, cuando está activa, las fuentes de Google anulan las fuentes nativas y, por lo general, las fuentes nativas se muestran mejor en el navegador. | -| wk HTML pretty print | htmlPrettyPrint | El código HTML está formateado para facilitar su lectura. | -| wk max picture DPI | maxPictureDPI | Se utiliza para reducir imágenes a la resolución preferida. Para imágenes SVG en Windows, utilizado para la rasterización. Valores por defecto: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Valor máximo posible: 1440 | -| wk optimized for | optimizedFor | Define cómo se optimiza un documento exportado en función de su soporte. Valores posibles:
  • `wk print` (valor por defecto para `wk pdf` y `wk svg`) Las imágenes de mapa de bits pueden reducirse utilizando los PPP definidos por `wk max picture DPI` o 300 (valor por defecto) y pueden convertirse a PNG si el códec no es compatible con el tipo de exportación. Las imágenes vectoriales se convierten a PNG utilizando los PPP definidos por `wk max picture DPI` o 300 (sólo Windows). Si una imagen contiene más de un formato, se utiliza el mejor formato para la impresión (*por ejemplo*, .tiff en lugar de .jpg)
  • `wk screen` (valor por defecto para `wk web page complete` y `wk mime html`). Las imágenes de mapa de bits pueden reducirse utilizando los PPP definidos por `wk max picture DPI` o 192 (valor por defecto) y pueden convertirse a JPEG (imágenes opacas) o PNG (imágenes transparentes) si el códec no es compatible con el tipo de exportación. Las imágenes vectoriales se convierten a PNG utilizando los PPP definidos por `wk max picture DPI` o 192 (sólo Windows). Si una imagen contiene más de un formato, se utiliza el formato para la representación en pantalla.
  • **Nota:** los documentos exportados en formato `wk docx` siempre se optimizan para la impresión wk (se ignora la opción wk optimized for). | -| wk page index | pageIndex | Sólo para exportación SVG. Índice de la página a exportar a formato svg (por defecto es 1). El índice de páginas comienza en 1 para la primera página del documento. **Nota:** el índice de páginas es independiente de la numeración de páginas. | -| 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órmulas
  • false - 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 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 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 | -| wk whitespace | whitespace | Define el valor css "white-space" para los formatos de exportación `wk mime html` y `wk web page complete`. El estilo [white-space css](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) se aplica a los párrafos. Valores posibles: "normal", "nowrap", "pre", "pre-wrap" (por defecto), "pre-line", "break-spaces". | +| Constante | Valor | Comentario | +| ------------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| wk CID host domain name | cidHostDomain | Nombre de dominio de host CID: dominio de host que se añadirá a las URL CID generadas incluyendo una "@" como separador. Disponible sólo cuando se utiliza el formato `wk mime html`. | +| wk embedded pictures | embeddedPictures | Sólo para exportación SVG. Establece si las imágenes se incrustan en el archivo .svg exportado cuando se llama a [WP EXPORT DOCUMENT](wp-export-document.md). Valores disponibles:
  • true (por defecto): las imágenes están incrustadas en el archivo .svg exportado
  • false: las imágenes se exportan en una carpeta llamada "filename\_images" en el nivel del archivo .svg exportado, "filename" siendo el nombre pasado al comando para el archivo, sin la extensión. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. Si no hay ninguna imagen en la página exportada, se elimina la carpeta | +| wk factur x | facturX | Sólo para exportación en PDF. Valor: objeto que configura una exportación PDF "Factur-X (ZUGFeRD)" (ver [wk factur x object](#wk-factur-x-object)). | +| wk files | Histórico | Sólo para exportación en PDF. Valor: colección de objetos, cada uno de los cuales describe un archivo que se integrará en el documento final (ver [wk files collection](#wk-files-collection)). Esta funcionalidad sólo se admite en documentos PDF/A-3: cuando se utiliza el atributo `wk files`, se establece automáticamente la versión "PDF/A-3" (se ignora el atributo `wk pdfa version`). En caso de una exportación de Factur-X PDF (ver abajo), el primer objeto de la colección debe contener el archivo Factur-X xml. | +| wk google fonts tag | googleFontsTag | Sólo para exportación SVG. Define la regla de importación para fuentes google en el SVG exportado. Possible values:
  • false (default): No google fonts import rule is added.
  • true: añade la regla @import al archivo exportado. Useful if you want to use fonts that are not available by default on Windows or macOS.
  • **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. | +| wk HTML pretty print | htmlPrettyPrint | El código HTML está formateado para facilitar su lectura. | +| wk max picture DPI | maxPictureDPI | Se utiliza para reducir imágenes a la resolución preferida. Para imágenes SVG en Windows, utilizado para la rasterización. Valores por defecto: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Valor máximo posible: 1440 | +| wk optimized for | optimizedFor | Define cómo se optimiza un documento exportado en función de su soporte. Valores posibles:
  • `wk print` (valor por defecto para `wk pdf` y `wk svg`) Las imágenes de mapa de bits pueden reducirse utilizando los PPP definidos por `wk max picture DPI` o 300 (valor por defecto) y pueden convertirse a PNG si el códec no es compatible con el tipo de exportación. Las imágenes vectoriales se convierten a PNG utilizando los PPP definidos por `wk max picture DPI` o 300 (sólo Windows). Si una imagen contiene más de un formato, se utiliza el mejor formato para la impresión (*por ejemplo*, .tiff en lugar de .jpg)
  • `wk screen` (valor por defecto para `wk web page complete` y `wk mime html`). Las imágenes de mapa de bits pueden reducirse utilizando los PPP definidos por `wk max picture DPI` o 192 (valor por defecto) y pueden convertirse a JPEG (imágenes opacas) o PNG (imágenes transparentes) si el códec no es compatible con el tipo de exportación. Las imágenes vectoriales se convierten a PNG utilizando los PPP definidos por `wk max picture DPI` o 192 (sólo Windows). If a picture contains more than one format, the format for screen rendering is used.
  • **Nota:** los documentos exportados en formato `wk docx` siempre se optimizan para la impresión wk (la opción wk optimized for se ignora). | +| wk page index | pageIndex | Sólo para exportación SVG. Índice de la página a exportar a formato svg (por defecto es 1). El índice de páginas comienza en 1 para la primera página del documento. **Nota:** el índice de páginas es independiente de la numeración de páginas. | +| 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órmulas
  • false - 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 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 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 | +| wk whitespace | whitespace | Define el valor css "white-space" para los formatos de exportación `wk mime html` y `wk web page complete`. El estilo [white-space css](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) se aplica a los párrafos. Valores posibles: "normal", "nowrap", "pre", "pre-wrap" (por defecto), "pre-line", "break-spaces". | The following table indicates the *option* available per export *format*: 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 22cf5a3c10a7c8..76ca0b6b25da13 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 @@ -20,7 +20,7 @@ displayed_sidebar: docs ## Descripción -The **WP EXPORT VARIABLE** command exports the *wpDoc* 4D Write Pro object to the 4D *destination* variable in the specified *format*. +El comando **WP EXPORT VARIABLE** exporta el objeto *wpDoc* 4D Write Pro a la variable *destination* 4D en el *format* especificado. En *wpDoc*, pase el objeto 4D Write Pro que desea exportar. @@ -52,27 +52,27 @@ En el parámetro *format*, pase una constante del tema *4D Write Pro Constants* Pase un [objeto](# "Datos estructurados como un objeto nativo 4D") en *option* conteniendo los valores para definir las propiedades del documento exportado. Las siguientes propiedades están disponibles: -| Constante | Valor | Comentario | -| ------------------------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| wk CID host domain name | cidHostDomain | Nombre de dominio de host CID: dominio de host que se añadirá a las URL CID generadas incluyendo una "@" como separador. Disponible sólo cuando se utiliza el formato `wk mime html`. | -| wk embedded pictures | embeddedPictures | Sólo para exportación SVG. Establece si las imágenes se incrustan en el archivo .svg exportado cuando se llama a [WP EXPORT DOCUMENT](wp-export-document.md). Valores disponibles:
  • true (por defecto): las imágenes están incrustadas en el archivo .svg exportado
  • false: las imágenes se exportan en una carpeta llamada "filename\_images" en el nivel del archivo .svg exportado, "filename" siendo el nombre pasado al comando para el archivo, sin la extensión. Las imágenes no se integran, sino que se hace referencia a ellas en el archivo .svg.
  • Nota: si la carpeta ya existe, se vacía antes de exportar el archivo. Si no hay ninguna imagen en la página exportada, se elimina la carpeta | -| wk factur x | facturX | Sólo para exportación en PDF. Valor: objeto que configura una exportación PDF "Factur-X (ZUGFeRD)" (ver [wk factur x object](./wp-export-document.md#wk-factur-x-object)). | -| wk files | Histórico | Sólo para exportación en PDF. Valor: colección de objetos, cada uno de los cuales describe un archivo que se integrará en el documento final (ver [wk files collection](./wp-export-document.md#wk-files-collection)). Esta funcionalidad sólo se admite en documentos PDF/A-3: cuando se utiliza el atributo `wk files`, se establece automáticamente la versión "PDF/A-3" (se ignora el atributo `wk pdfa version`). En caso de una exportación de Factur-X PDF (ver abajo), el primer objeto de la colección debe contener el archivo Factur-X xml. | -| wk google fonts tag | googleFontsTag | Sólo para exportación SVG. Define la regla de importación para fuentes google en el SVG exportado. Valores posibles:
  • false (por defecto): no se añade ninguna regla de importación de google fonts.
  • true: añade la regla @import al archivo exportado. Útil si desea utilizar fuentes que no están disponibles por defecto en Windows o macOS.
  • **Nota:** esta propiedad está definida en false de forma predeterminada porque, cuando está activa, las fuentes de Google anulan las fuentes nativas y, por lo general, las fuentes nativas se muestran mejor en el navegador. | -| wk HTML pretty print | htmlPrettyPrint | El código HTML está formateado para facilitar su lectura. | -| wk max picture DPI | maxPictureDPI | Se utiliza para reducir imágenes a la resolución preferida. Para imágenes SVG en Windows, utilizado para la rasterización. Valores por defecto: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Valor máximo posible: 1440 | -| wk optimized for | optimizedFor | Define cómo se optimiza un documento exportado en función de su soporte. Valores posibles:
  • `wk print` (valor por defecto para `wk pdf` y `wk svg`) Las imágenes de mapa de bits pueden reducirse utilizando los PPP definidos por `wk max picture DPI` o 300 (valor por defecto) y pueden convertirse a PNG si el códec no es compatible con el tipo de exportación. Las imágenes vectoriales se convierten a PNG utilizando los PPP definidos por `wk max picture DPI` o 300 (sólo Windows). Si una imagen contiene más de un formato, se utiliza el mejor formato para la impresión (*por ejemplo*, .tiff en lugar de .jpg)
  • `wk screen` (valor por defecto para `wk web page complete` y `wk mime html`). Las imágenes de mapa de bits pueden reducirse utilizando los PPP definidos por `wk max picture DPI` o 192 (valor por defecto) y pueden convertirse a JPEG (imágenes opacas) o PNG (imágenes transparentes) si el códec no es compatible con el tipo de exportación. Las imágenes vectoriales se convierten a PNG utilizando los PPP definidos por `wk max picture DPI` o 192 (sólo Windows). Si una imagen contiene más de un formato, se utiliza el formato para la representación en pantalla.
  • **Nota:** los documentos exportados en formato `wk docx` siempre se optimizan para la impresión wk (se ignora la opción wk optimized for). | -| wk page index | pageIndex | Sólo para exportación SVG. Índice de la página a exportar a formato svg (por defecto es 1). El índice de páginas comienza en 1 para la primera página del documento. **Nota:** el índice de páginas es independiente de la numeración de páginas. | -| 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órmulas
  • false - 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 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 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 | -| wk whitespace | whitespace | Define el valor css "white-space" para el formato de exportación `wk mime html`. El estilo [white-space css](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) se aplica a los párrafos. Valores posibles: "normal", "nowrap", "pre", "pre-wrap" (por defecto), "pre-line", "break-spaces". | - -La siguiente tabla indica la *option* disponible por cada *format*: +| Constante | Valor | Comentario | +| ------------------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| wk CID host domain name | cidHostDomain | Nombre de dominio de host CID: dominio de host que se añadirá a las URL CID generadas incluyendo una "@" como separador. Disponible sólo cuando se utiliza el formato `wk mime html`. | +| wk embedded pictures | embeddedPictures | Sólo para exportación SVG. Establece si las imágenes se incrustan en el archivo .svg exportado cuando se llama a [WP EXPORT DOCUMENT](wp-export-document.md). Valores disponibles:
  • true (por defecto): las imágenes están incrustadas en el archivo .svg exportado
  • false: las imágenes se exportan en una carpeta llamada "filename\_images" en el nivel del archivo .svg exportado, "filename" siendo el nombre pasado al comando para el archivo, sin la extensión. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. Si no hay ninguna imagen en la página exportada, se elimina la carpeta | +| wk factur x | facturX | Sólo para exportación en PDF. Valor: objeto que configura una exportación PDF "Factur-X (ZUGFeRD)" (ver [wk factur x object](./wp-export-document.md#wk-factur-x-object)). | +| wk files | Histórico | Sólo para exportación en PDF. Valor: colección de objetos, cada uno de los cuales describe un archivo que se integrará en el documento final (ver [wk files collection](./wp-export-document.md#wk-files-collection)). Esta funcionalidad sólo se admite en documentos PDF/A-3: cuando se utiliza el atributo `wk files`, se establece automáticamente la versión "PDF/A-3" (se ignora el atributo `wk pdfa version`). En caso de una exportación de Factur-X PDF (ver abajo), el primer objeto de la colección debe contener el archivo Factur-X xml. | +| wk google fonts tag | googleFontsTag | Sólo para exportación SVG. Define la regla de importación para fuentes google en el SVG exportado. Possible values:
  • false (default): No google fonts import rule is added.
  • true: añade la regla @import al archivo exportado. Useful if you want to use fonts that are not available by default on Windows or macOS.
  • **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. | +| wk HTML pretty print | htmlPrettyPrint | El código HTML está formateado para facilitar su lectura. | +| wk max picture DPI | maxPictureDPI | Se utiliza para reducir imágenes a la resolución preferida. Para imágenes SVG en Windows, utilizado para la rasterización. Valores por defecto: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Valor máximo posible: 1440 | +| wk optimized for | optimizedFor | Define cómo se optimiza un documento exportado en función de su soporte. Valores posibles:
  • `wk print` (valor por defecto para `wk pdf` y `wk svg`) Las imágenes de mapa de bits pueden reducirse utilizando los PPP definidos por `wk max picture DPI` o 300 (valor por defecto) y pueden convertirse a PNG si el códec no es compatible con el tipo de exportación. Las imágenes vectoriales se convierten a PNG utilizando los PPP definidos por `wk max picture DPI` o 300 (sólo Windows). Si una imagen contiene más de un formato, se utiliza el mejor formato para la impresión (*por ejemplo*, .tiff en lugar de .jpg)
  • `wk screen` (valor por defecto para `wk web page complete` y `wk mime html`). Las imágenes de mapa de bits pueden reducirse utilizando los PPP definidos por `wk max picture DPI` o 192 (valor por defecto) y pueden convertirse a JPEG (imágenes opacas) o PNG (imágenes transparentes) si el códec no es compatible con el tipo de exportación. Las imágenes vectoriales se convierten a PNG utilizando los PPP definidos por `wk max picture DPI` o 192 (sólo Windows). If a picture contains more than one format, the format for screen rendering is used.
  • **Nota:** los documentos exportados en formato `wk docx` siempre se optimizan para la impresión wk (la opción wk optimized for se ignora). | +| wk page index | pageIndex | Sólo para exportación SVG. Índice de la página a exportar a formato svg (por defecto es 1). El índice de páginas comienza en 1 para la primera página del documento. **Nota:** el índice de páginas es independiente de la numeración de páginas. | +| 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órmulas
  • false - 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 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 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 | +| wk whitespace | whitespace | Define el valor css "white-space" para el formato de exportación `wk mime html`. El estilo [white-space css](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) se aplica a los párrafos. Valores posibles: "normal", "nowrap", "pre", "pre-wrap" (por defecto), "pre-line", "break-spaces". | + +The following table indicates the *option* available per export *format*: | | **wk 4wp** | **wk docx** | **wk mime html** | **wk pdf** | **wk web page html 4d** | **wk svg** | | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md index 7daedb273fe4d2..fa6360bcb95c9e 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md @@ -20,7 +20,7 @@ displayed_sidebar: docs ## Descripción -El comando **WP Get attributes** devuelve el valor de cualquier atributo en un rango 4D Write Pro, encabezado, cuerpo, pie de página, tabla o documento. Este comando le da acceso a cualquier tipo de atributos internos 4D Write Pro: carácter, párrafo, documento, tabla o imagen. +El comando **WP Get attributes** devuelve el valor de todo atributo en un rango 4D Write Pro, encabezado, cuerpo, pie de página, tabla o documento. This command gives you access to any kind of 4D Write Pro internal attributes: character, paragraph, document, table, or image. En *targetObj*, puede pasar: diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md index 9d10fa7eb81856..aabd860a7a9bec 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md @@ -4,7 +4,7 @@ title: WP Insert formula displayed_sidebar: docs --- -**WP Insert formula** ( *targetObj* ; *formula* ; *mode* {; *rangeUpdate*} ) : Object +**WP Insert formula** ( *targetObj* ; *formula* ; *mode* {; *rangeUpdate*} ): Object diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md index 065ee94c6e6f5f..e3c95cabba2413 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md @@ -19,7 +19,7 @@ displayed_sidebar: docs ## Descripción -El comando **WP RESET ATTRIBUTES** le permite restablecer el valor de uno o más atributos en el rango, elemento o documento pasado como parámetro. Este comando puede eliminar cualquier tipo de atributo interno 4D Write Pro: carácter, párrafo, documento, tabla o imagen. Puede pasar el nombre del atributo a restablecer en *attribName* o puede pasar una colección de atributos en *attribColl* para restablecer varios atributos a la vez. +El comando **WP RESET ATTRIBUTES** le permite restablecer el valor de uno o más atributos en el rango, elemento o documento pasado como parámetro. This command can remove any kind of 4D Write Pro internal attribute: character, paragraph, document, table, or image. Puede pasar el nombre del atributo a restablecer en *attribName* o puede pasar una colección de atributos en *attribColl* para restablecer varios atributos a la vez. > En el caso de una sección o subsección, el objeto *sectionOrSubsection* puede pasarse solo y todos los atributos se restablecen a la vez. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md index 0d6687e596cd93..997c3cd500b662 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md @@ -19,7 +19,7 @@ displayed_sidebar: docs ## Descripción -El comando **WP SET ATTRIBUTES** le permite definir el valor de todo atributo en un rango, elemento, documento. Este comando le da acceso a todo de atributo interno 4D Write Pro: carácter, párrafo, documento, tabla o imagen. +El comando **WP SET ATTRIBUTES** le permite definir el valor de cualquier atributo en un rango, elemento, documento. This command gives you access to any kind of 4D Write Pro internal attribute: character, paragraph, document, table, or image. En *targetObj*, puede pasar: 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 608c443e16e75e..58f263aab85b56 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 | 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 es siempre dinámica; no se ve afectada por el comando [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md). | -| [This](../commands/this.md).pageCount (\*) | Number | Conteo de páginas: recuento total de páginas.
    Esta fórmula es siempre dinámica; no se ve afectada por el comando [**WP FREEZE FORMULAS**](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 | 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.
  • 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 @@ -100,7 +100,7 @@ When used in a formula within the table, the **This** keyword gives access to di | 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 | Index of the current row, starting from 1 | -| Cuando se ha definido una fuente de datos para la tabla | [This](../commands/this.md).table.dataSource | Objet (fórmula) | Datasource as a formula | +| 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 or Entity selection (usually) | table.dataSource evaluada | | In each data row when a table datasource returns a collection or an entity selection | [This](../commands/this.md).item.xxx | Cualquiera | Mapped to each item of the table datasource collection or entity selection, for example **This.item.firstName** if the associated entity has the *firstName* attribute | | | [This](../commands/this.md).itemIndex | Number | Index of the current item in the collection or entity selection, starting from 0 | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md index b10646ebb340b8..098b4d13d45456 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. ## Propiedades de configuración -| Nombre de la propiedad | Tipo | Descripción | Opcional | -| ---------------------- | ---- | ---------------------------------------------------------------------------- | -------------- | -| `apiKey` | Text | Su [llave OpenAI API](https://platform.openai.com/api-keys). | No para OpenAI | -| `baseURL` | Text | URL base para las peticiones de la API OpenAI. | Sí | -| `organization` | Text | Su ID de organización OpenAI. | Sí | -| `project` | Text | Su ID de proyecto OpenAI. | Sí | +| Nombre de la propiedad | Tipo | Descripción | Opcional | +| ---------------------- | ---- | ---------------------------------------------------------------------------- | --------------------------------------------------------- | +| `apiKey` | Text | Su [llave OpenAI API](https://platform.openai.com/api-keys). | Puede ser requerido por el proveedor | +| `baseURL` | Text | URL base para las peticiones de la API OpenAI. | Yes (if omitted = use OpenAI provider) | +| `organization` | Text | Su ID de organización OpenAI. | Sí | +| `project` | Text | Su ID de proyecto OpenAI. | Sí | ### Propiedades HTTP adicionales @@ -29,9 +29,9 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. Crear una instancia de la clase cliente OpenAI. -| Nombre del argumento | Tipo | Descripción | -| ------------------------- | -------------- | ------------------------------------------------------- | -| `apiKey or configuration` | Texto u objeto | apiKey if Text or configuration Object. | +| Nombre del argumento | Tipo | Descripción | +| ------------------------- | -------------- | --------------------------------------------------------- | +| `apiKey or configuration` | Texto u objeto | apiKey si Text u objeto de configuración. | #### Llave API diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsAPI.md index 1ae10d8af589a6..132231e8669478 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsAPI.md @@ -5,7 +5,7 @@ title: OpenAIChatCompletionsAPI # OpenAIChatCompletionsAPI -The `OpenAIChatCompletionsAPI` class is designed for managing chat completions with OpenAI's API. It provides methods to create, retrieve, update, delete, and list chat completions. +La clase `OpenAIChatCompletionsAPI` está diseñada para gestionar las finalizaciones de chat con la API OpenAI. It provides methods to create, retrieve, update, delete, and list chat completions. https://platform.openai.com/docs/api-reference/chat diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md index 9c3c1c18655023..65f84b56f8d1ba 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsMessagesAPI.md @@ -19,6 +19,6 @@ The `OpenAIChatCompletionsMessagesAPI` class is designed to interact with the Op | *parámetros* | `OpenAIChatCompletionsMessagesParameters` | Parámetros para filtrar y personalizar la respuesta. | | Resultado | Variant | The retrieved messages associated with the chat completion. | -The `list()` function retrieves messages associated with a specific chat completion ID. Lanza un error si `completionID` está vacío. If the *parameters* argument is not an instance of `OpenAIChatCompletionsMessagesParameters`, it will create a new instance using the provided parameters. +La función `list()` recupera los mensajes asociados a un ID de finalización de chat específico. Lanza un error si `completionID` está vacío. If the *parameters* argument is not an instance of `OpenAIChatCompletionsMessagesParameters`, it will create a new instance using the provided parameters. https://platform.openai.com/docs/api-reference/chat/getMessages diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsParameters.md index 2d506c2ba0ee11..53bb4b8143fd98 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsParameters.md @@ -13,38 +13,38 @@ The `OpenAIChatCompletionParameters` class is designed to handle the parameters ## Propiedades -| Propiedad | Tipo | Valor por defecto | Descripción | -| ----------------------- | ---------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | `"gpt-4o-mini"` | ID del modelo a utilizar. | -| `stream` | Boolean | `False` | Si se retransmite el progreso parcial. Si se define, los tokens se enviarán solo como datos. Fórmula de retrollamada necesaria. | -| `stream_options` | Object | `Null` | Property for stream=True. For example: `{include_usage: True}` | -| `max_completion_tokens` | Integer | `0` | The maximum number of tokens that can be generated in the completion. | -| `n` | Integer | `1` | How many completions to generate for each prompt. | -| `temperature` | Real | `-1` | Qué temperatura de muestreo utilizar, entre 0 y 2. Higher values make the output more random, while lower values make it more focused and deterministic. | -| `store` | Boolean | `False` | Whether or not to store the output of this chat completion request. | -| `reasoning_effort` | Text | `Null` | Constrains effort on reasoning for reasoning models. Currently supported values are `"low"`, `"medium"`, and `"high"`. | -| `response_format` | Object | `Null` | An object specifying the format that the model must output. Compatible with structured outputs. | -| `herramientas` | Collection | `Null` | A list of tools ([OpenAITool](OpenAITool.md)) the model may call. Only "function" type is supported. | -| `tool_choice` | Variant | `Null` | Controls which (if any) tool is called by the model. Can be `"none"`, `"auto"`, `"required"`, or specify a particular tool. | -| `prediction` | Object | `Null` | Static predicted output content, such as the content of a text file that is being regenerated. | +| Propiedad | Tipo | Valor por defecto | Descripción | +| ----------------------- | ---------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | `"gpt-4o-mini"` | ID del modelo a utilizar. | +| `stream` | Boolean | `False` | Si se retransmite el progreso parcial. Si se define, los tokens se enviarán solo como datos. Fórmula de retrollamada necesaria. | +| `stream_options` | Object | `Null` | Property for stream=True. Por ejemplo: `{include_usage: True}` | +| `max_completion_tokens` | Integer | `0` | The maximum number of tokens that can be generated in the completion. | +| `n` | Integer | `1` | How many completions to generate for each prompt. | +| `temperature` | Real | `-1` | Qué temperatura de muestreo utilizar, entre 0 y 2. Higher values make the output more random, while lower values make it more focused and deterministic. | +| `store` | Boolean | `False` | Whether or not to store the output of this chat completion request. | +| `reasoning_effort` | Text | `Null` | Constrains effort on reasoning for reasoning models. Los valores soportados actualmente son `"low"`, `"medium"` y `"high"`. | +| `response_format` | Object | `Null` | An object specifying the format that the model must output. Compatible with structured outputs. | +| `herramientas` | Collection | `Null` | A list of tools ([OpenAITool](OpenAITool.md)) the model may call. Only "function" type is supported. | +| `tool_choice` | Variant | `Null` | Controls which (if any) tool is called by the model. Puede ser `"none"`, `"auto"`, `"required"`, o especificar una herramienta concreta. | +| `prediction` | Object | `Null` | Static predicted output content, such as the content of a text file that is being regenerated. | ### Propiedades de retrollamada asíncrona -| Propiedad | Tipo | Descripción | -| ------------------------------------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -| `onData` (or `formula`) | 4D.Function | A function to be called asynchronously when receiving data chunk. Asegúrese de que el proceso actual no termina. | +| Propiedad | Tipo | Descripción | +| ----------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| `onData` (o `formula`) | 4D.Function | A function to be called asynchronously when receiving data chunk. Asegúrese de que el proceso actual no termina. | -`onData` will receive as argument an [OpenAIChatCompletionsStreamResult](./OpenAIChatCompletionsStreamResult.md). +`onData` recibirá como argumento un [OpenAIChatCompletionsStreamResult](./OpenAIChatCompletionsStreamResult.md). See [OpenAIParameters](./OpenAIParameters.md) for other callback properties. ## Response Format -The `response_format` parameter allows you to specify the format that the model must output. This is particularly useful when you need structured data or want to ensure the response follows a specific format. +El parámetro `response_format` le permite especificar el formato que el modelo debe salir. This is particularly useful when you need structured data or want to ensure the response follows a specific format. -### Supported Response Format Types +### Tipos de formato de respuesta soportados -#### 1. Text Format (Default) +#### 1. Formato de texto (por defecto) The default response format returns plain text: @@ -55,7 +55,7 @@ var $params := cs.OpenAIChatCompletionsParameters.new({ \ }) ``` -#### 2. JSON Object Format +#### 2. Formato de objetos JSON Forces the model to respond with valid JSON: @@ -79,7 +79,7 @@ $messages.push({ \ $result := $client.chat.completions.create($messages; $params) ``` -#### 3. JSON Schema Format (Structured Outputs) +#### 3. Formato de esquema JSON (salidas estructuradas) For precise control over the JSON structure, you can define a schema: @@ -115,20 +115,20 @@ $messages.push({ role: "user"; content: "Generate information about a person nam $result := $client.chat.completions.create($messages; $params) ``` -### JSON Schema Properties +### Propiedades del esquema JSON -When using `json_schema` type, you can specify: +Cuando se utiliza el tipo `json_schema`, puede especificar: -- **`name`**: A name for the schema -- **`description`**: A description of what the schema represents -- **`schema`**: The JSON schema definition -- **`strict`**: Whether to enforce strict adherence to the schema +- **`name`**: un nombre para el esquema +- **`description`**: una descripción de lo que representa el esquema +- **`schema`**: la definición de esquema JSON +- **`strict`**: si se debe hacer cumplir estrictamente el esquema ### Notas Importantes - Not all models support structured outputs (json_object or json_schema), so check model capabilities before using them. -- When using `json_object` format, you should include instructions in your system message to respond in JSON format -- The `json_schema` format provides the most control and ensures the response exactly matches your specified structure +- Cuando utilice el formato `json_object`, deberá incluir instrucciones en el mensaje del sistema para responder en formato JSON +- El formato `json_schema` ofrece el mayor control y garantiza que la respuesta coincida exactamente con la estructura especificada - Invalid JSON responses will result in an error when using JSON formats - JSON schema validation ensures type safety and required field presence diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatHelper.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatHelper.md index 6136f03703b7cb..e138dcd16d9c4c 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatHelper.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatHelper.md @@ -74,14 +74,14 @@ $chatHelper.reset() // Clear all previous messages and tools Registers a tool with its handler function for automatic tool call handling. -The *handler* parameter can be: +El parámetro *handler* puede ser: - A **4D.Function**: Direct handler function -- An **Object**: An object containing a `formula` property matching the tool function name +- Un **Objeto**: un objeto que contiene una propiedad `formula` que coincide con el nombre de la función de la herramienta The handler function receives an object containing the parameters passed from the OpenAI tool call. This object contains key-value pairs where the keys match the parameter names defined in the tool's schema, and the values are the actual arguments provided by the AI model. -#### Register Tool Example +#### Ejemplo de herramienta de registro ```4D // Example 1: Simple registration with direct handler @@ -111,11 +111,11 @@ $chatHelper.registerTool($tool; $handlerObj) | ------------------- | ------- | -------------------------------------------------------- | | *toolsWithHandlers* | Variant | Object or Collection containing tools and their handlers | -Registers multiple tools at once. The parameter can be: +Registers multiple tools at once. El parámetro puede ser: - **Collection**: Array of tool objects (with handlers embedded or separate) - **Object**: Object with function names as keys mapping to tool definitions -- **Object with `tools` attribute**: Object containing a `tools` collection and formula properties matching tool names +- **Objeto con atributo `tools`**: objeto que contiene una colección `tools` y propiedades de fórmulas que coinciden con nombres de herramientas #### Register Multiple Tools Example diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIEmbeddingsAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIEmbeddingsAPI.md index e74d6fc2364cee..1ad09d7c28ce91 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIEmbeddingsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIEmbeddingsAPI.md @@ -5,7 +5,7 @@ title: OpenAIEmbeddingsAPI # OpenAIEmbeddingsAPI -The `OpenAIEmbeddingsAPI` provides functionalities to create embeddings using OpenAI's API. +`OpenAIEmbeddingsAPI` ofrece funcionalidades para crear integraciones utilizando la API de OpenAI. https://platform.openai.com/docs/api-reference/embeddings diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIEmbeddingsResult.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIEmbeddingsResult.md index 35c45022b6929c..0e2185eb101695 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIEmbeddingsResult.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIEmbeddingsResult.md @@ -11,13 +11,13 @@ title: OpenAIEmbeddingsResult ## Propiedades calculadas -| Propiedad | Tipo | Descripción | -| ------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------- | -| `model` | Text | Returns the model used to compute the embedding | -| `vector` | `4D.Vector` | Devuelve el primer `4D.Vector` de la colección `vectors`. | -| `vectors` | Collection | Devuelve una colección de `4D.Vector`. | -| `embedding` | [OpenAIEmbedding](OpenAIEmbedding.md) | Returns the first [OpenAIEmbedding](OpenAIEmbedding.md) from the `embeddings` collection. | -| `embeddings` | Collection | Returns a collection of [OpenAIEmbedding](OpenAIEmbedding.md). | +| Propiedad | Tipo | Descripción | +| ------------ | ------------------------------------- | ------------------------------------------------------------------------------------------------------ | +| `model` | Text | Returns the model used to compute the embedding | +| `vector` | `4D.Vector` | Devuelve el primer `4D.Vector` de la colección `vectors`. | +| `vectors` | Collection | Devuelve una colección de `4D.Vector`. | +| `embedding` | [OpenAIEmbedding](OpenAIEmbedding.md) | Devuelve el primer [OpenAIEmbedding](OpenAIEmbedding.md) de la colección `embeddings`. | +| `embeddings` | Collection | Returns a collection of [OpenAIEmbedding](OpenAIEmbedding.md). | ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImage.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImage.md index 09e15a20df5e90..9009658de82b79 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImage.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImage.md @@ -5,17 +5,17 @@ title: OpenAIImage # OpenAIImage -The `OpenAIImage` class represents an image generated by the OpenAI API. It provides properties for accessing the generated image in different formats and methods for converting this image to different types. +La clase `OpenAIImage` representa una imagen generada por la API OpenAI. It provides properties for accessing the generated image in different formats and methods for converting this image to different types. https://platform.openai.com/docs/api-reference/images/object ## Propiedades -| Propiedad | Tipo | Descripción | -| ---------------- | ------- | ----------------------------------------------------------------------------------------------------------- | -| `url` | Text | The URL of the generated image, if `response_format` is `url` (default). | -| `b64_json` | Text | The base64-encoded JSON of the generated image, if `response_format` is `b64_json`. | -| `revised_prompt` | Variant | The prompt that was used to generate the image, if there was any revision to the prompt. | +| Propiedad | Tipo | Descripción | +| ---------------- | ------- | ------------------------------------------------------------------------------------------------------------- | +| `url` | Text | La URL de la imagen generada, si `response_format` es `url` (por defecto). | +| `b64_json` | Text | The base64-encoded JSON of the generated image, if `response_format` is `b64_json`. | +| `revised_prompt` | Variant | The prompt that was used to generate the image, if there was any revision to the prompt. | ## Funciones diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImageParameters.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImageParameters.md index 167f8ab9d4ac4b..692705efcc3fa2 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImageParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImageParameters.md @@ -13,13 +13,13 @@ The `OpenAIImageParameters` class is designed to configure and manage the parame ## Propiedades -| Nombre de la propiedad | Tipo | Valor por defecto | Descripción | -| ---------------------- | ------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| `model` | Text | "dall-e-2" | Especifica el modelo a utilizar para la generación de imágenes. | -| `n` | Integer | 1 | The number of images to generate (must be between 1 and 10; only `n=1` is supported for `dall-e-3`). | -| `size` | Text | "1024x1024" | El tamaño de las imágenes generadas. Debe ajustarse a las especificaciones del modelo. | -| `style` | Text | "" | The style of the generated images (must be either `vivid` or `natural`). | -| `response_format` | Text | "url" | The format for returned images, can be either `url` or `b64_json`. | +| Nombre de la propiedad | Tipo | Valor por defecto | Descripción | +| ---------------------- | ------- | ----------------- | -------------------------------------------------------------------------------------------------------------------------------------- | +| `model` | Text | "dall-e-2" | Especifica el modelo a utilizar para la generación de imágenes. | +| `n` | Integer | 1 | El número de imágenes a generar (debe estar entre 1 y 10; sólo `n=1` es soportado para `dall-e-3`). | +| `size` | Text | "1024x1024" | El tamaño de las imágenes generadas. Debe ajustarse a las especificaciones del modelo. | +| `style` | Text | "" | El estilo de las imágenes generadas (debe ser `vivid` o `natural`). | +| `response_format` | Text | "url" | El formato de las imágenes devueltas puede ser `url` o `b64_json`. | ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImagesAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImagesAPI.md index 3797cb01095e30..4ffe3a9911bd80 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImagesAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIImagesAPI.md @@ -5,7 +5,7 @@ title: OpenAIImagesAPI # OpenAIImagesAPI -The `OpenAIImagesAPI` provides functionalities to generate images using OpenAI's API. +La `OpenAIImagesAPI` ofrece funcionalidades para generar imágenes utilizando la API de OpenAI. https://platform.openai.com/docs/api-reference/images diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md index f8259807424811..ebb12bfbed10a5 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md @@ -9,13 +9,13 @@ The `OpenAIMessage` class represents a structured message containing a role, con ## Propiedades -| Propiedad | Tipo | Descripción | -| -------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `rol` | Text | The role of the message (e.g., "user", "assistant", "system", "tool"). | -| `contenido` | Variant | The content of the message, which can be a text or a collection of objects. | -| `user` | Text | An optional property representing the user associated with the message. | -| `tool_calls` | Collection | A collection of tool calls requested by the assistant. Each tool call contains an `id`, `type`, and a `function` object. | -| `tool_call_id` | Text | The ID of the tool call that this message is responding to (used when `role` is "tool"). | +| Propiedad | Tipo | Descripción | +| -------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `rol` | Text | The role of the message (e.g., "user", "assistant", "system", "tool"). | +| `contenido` | Variant | The content of the message, which can be a text or a collection of objects. | +| `user` | Text | An optional property representing the user associated with the message. | +| `tool_calls` | Collection | A collection of tool calls requested by the assistant. Cada llamada a una herramienta contiene un objeto `id`, `type` y `function`. | +| `tool_call_id` | Text | El ID de la llamada a la herramienta a la que responde este mensaje (se utiliza cuando `role` es "tool"). | ## Propiedades calculadas @@ -48,7 +48,7 @@ var $message:=cs.AIKit.OpenAIMessage({role: "user"; content: "Hello!"}) $message.addImageURL("http://example.com/image.jpg"; "high") ``` -### Respond to a tool call message +### Responder a un mensaje de llamada de herramienta When an assistant needs to use external functions, it generates a message with `tool_calls` to request function execution. @@ -77,7 +77,7 @@ When you receive a tool call message, you need to: 1. **Extract the function information:** - `function.name`: The name of the function to call (must match a function defined in your [OpenAITool](OpenAITool.md) - you can select code to execute according to this name) - `function.arguments`: A JSON string containing the function parameters that must be parsed with `JSON Parse` - - `id`: The unique identifier for this specific tool call + - `id`: el identificador único para esta llamada específica a la herramienta 2. **Execute the function:** Parse the arguments (which is a JSON string) and call the corresponding function that you defined in your OpenAITool configuration. diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIModeration.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIModeration.md index 945951ab25b085..3c92f30cc3c7c7 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIModeration.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIModeration.md @@ -5,7 +5,7 @@ title: OpenAIModeration # OpenAIModeration -The `OpenAIModeration` class is designed to handle moderation results from the OpenAI API. It contains properties for storing the moderation ID, model used, and the results of the moderation. +La clase `OpenAIModeration` está diseñada para manejar los resultados de moderación de la API OpenAI. It contains properties for storing the moderation ID, model used, and the results of the moderation. https://platform.openai.com/docs/api-reference/moderations/object diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIModerationsAPI.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIModerationsAPI.md index 72fdb9d849830a..8f949e42ee4570 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIModerationsAPI.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIModerationsAPI.md @@ -5,7 +5,7 @@ title: OpenAIModerationsAPI # OpenAIModerationsAPI -The `OpenAIModerationsAPI` is responsible for classifying if text and/or image inputs are potentially harmful. +La interfaz `OpenAIModerationsAPI` se encarga de clasificar si las entradas de texto y/o imágenes son potencialmente dañinas. https://platform.openai.com/docs/api-reference/moderations diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIParameters.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIParameters.md index 521e885edf667e..598dd0a5cc575e 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIParameters.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIParameters.md @@ -51,7 +51,7 @@ See [documentation about asynchronous code for examples](../asynchronous-call.md ## Clases heredadas -Several classes inherit from `OpenAIParameters` to extend its functionality for specific use cases. A continuación se muestran algunas de las clases que extienden `OpenAIParameters`: +Varias clases heredan de `OpenAIParameters` para ampliar su funcionalidad en casos de uso específicos. A continuación se muestran algunas de las clases que extienden `OpenAIParameters`: - [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - [OpenAIChatCompletionsMessagesParameters](OpenAIChatCompletionsMessagesParameters.md) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIResult.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIResult.md index 0e88534c6bfd9a..6122c517c37e21 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIResult.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIResult.md @@ -50,7 +50,7 @@ Lanza el primer error de la colección `errors`. This function is useful for pro ## Clases heredadas -Several classes inherit from `OpenAIResult` to extend its functionality for specific use cases. Below are some of the classes that extend `OpenAIResult`: +Varias clases heredan de `OpenAIResult` para ampliar su funcionalidad en casos de uso específicos. A continuación se muestran algunas de las clases que extienden `OpenAIResult`: - [OpenAIChatCompletionsResult](OpenAIChatCompletionsResult.md) - [OpenAIChatCompletionsStreamResult](OpenAIChatCompletionsStreamResult.md) diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAITool.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAITool.md index 4a2bbe4632aec8..e46e25346cc85a 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAITool.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAITool.md @@ -20,14 +20,14 @@ See [OpenAIMessage](OpenAIMessage.md) to see how to responds to a tool call. | `tipo` | Text | `"function"` | El tipo de herramienta. Currently supports `"function"`, `"custom"`, and other built-in types. | | `strict` | Boolean | `False` | Whether to enforce strict schema validation for function parameters. | -### Common Properties +### Propiedades comunes | Propiedad | Tipo | Descripción | | ------------- | ---- | ------------------------------------------------------------------------------ | | `name` | Text | The name of the tool, which works as an identifier. | | `descripción` | Text | Description of the tool to help the LLM decide when to use it. | -### Function-specific Properties +### Propiedades específicas de la función | Propiedad | Tipo | Descripción | | ------------ | ------ | -------------------------------------------------------------------------------- | @@ -46,9 +46,9 @@ See [OpenAIMessage](OpenAIMessage.md) to see how to responds to a tool call. Crea una nueva instancia de OpenAITool. The constructor accepts both simplified format and OpenAI API format. -#### Supported formats +#### Formatos soportados -**Simplified format:** +**Formato simplificado:** ```4d var $tool := cs.OpenAITool.new({ \ @@ -64,7 +64,7 @@ var $tool := cs.OpenAITool.new({ \ }) ``` -**OpenAI API format:** +**Formato de la API OpenAI** ```4d var $tool := cs.OpenAITool.new({ \ @@ -86,7 +86,7 @@ var $tool := cs.OpenAITool.new({ \ ## Integration with Chat Completions -Tools are typically used with the `OpenAIChatCompletionsParameters.tools` property: +Las herramientas se utilizan normalmente con la propiedad `OpenAIChatCompletionsParameters.tools`: ```4d var $parameters := cs.AIKit.OpenAIChatCompletionsParameters.new({ \ @@ -95,7 +95,7 @@ var $parameters := cs.AIKit.OpenAIChatCompletionsParameters.new({ \ }) ``` -> **Note:** You can pass plain objects directly - they will be automatically converted to `OpenAITool` instances. There's no need to explicitly create `OpenAITool` objects. +> **Nota:** puede pasar objetos planos directamente, se convertirán automáticamente en instancias `OpenAITool`. No es necesario crear explícitamente objetos `OpenAITool`. ## Ver también diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/asynchronous-call.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/asynchronous-call.md index aec2f38c8ea0a3..ff565bb2601c7b 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/asynchronous-call.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/asynchronous-call.md @@ -11,11 +11,11 @@ To make asynchronous calls, you must provide a callback `4D.Function`(`Formula`) The callback function will receive the same result object type (one of [OpenAIResult](Classes/OpenAIResult.md) child classes) that would be returned by the function in synchronous code. Ver ejemplos más abajo. -## Process Considerations +## Consideraciones sobre el proceso The asynchronous method is based on [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), so the response will be received within the current process. -> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. In such cases, consider using `CALL WORKER` or `CALL FORM`. +> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. En estos casos, considere la posibilidad de utilizar `CALL WORKER` o `CALL FORM`. ## Ejemplos de uso diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md index 80ac8ee4f5d3e5..5b5e136edec480 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Proveedores Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +Para ello sólo tiene que definir la `baseURL` a la del proveedor y utilizar su clave api si es necesario. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Algunos de ellos ## Remoto -| Proveedor | Url base | +| Proveedor | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Algunos de ellos ## Local -| Proveedor | Url base por defecto | Doc | +| Proveedor | Base URL por defecto | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/overview.md b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/overview.md index e2e93e051c023d..6af02947ee1768 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/overview.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/aikit/overview.md @@ -21,7 +21,7 @@ En primer lugar, inicialice el cliente OpenAI utilizando su llave API var $client:=cs.AIKit.OpenAI.new("your api key") ``` -Para una API de [proveedor compatible](compatible-openai.md), puede configurar la URL del servidor definiendo el parámetro `baseURL`. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -43,7 +43,7 @@ var $result:=$client..() El `$result` contiene el `HTTPRequest`, un estado `success`, una colección de `errors` y más. Ver [OpenAIResult](Classes/OpenAIResult.md) -Vea algunos ejemplos a continuación. +See some examples below. #### Chat diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png b/i18n/es/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png b/i18n/es/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/i18n/es/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png differ diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md b/i18n/es/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md index a10a8e823b4cad..770c959bbb2560 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md @@ -127,5 +127,9 @@ El siguiente ejemplo evita una nueva conexión entre las 2 y 4 A.M.   // Método base On Server Open Connection  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time"projectMethod"
  • "formObjectMethod"
  • "formmethod"
  • "databaseMethod"
  • "triggerMethod"
  • "executeOnServer" (when calling a project method with the *Execute on Server attribute*)
  • "executeFormula" (when executing a formula via [PROCESS 4D TAGS](../commands-legacy/process-4d-tags.md) or the evaluation of a formula in a 4D Write Pro document)
  • "classFunction"
  • "formMethod"
  • | "type":"formMethod" | diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/process-number.md b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/process-number.md index 8e5b81d1056ae0..62d2495d47d071 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/process-number.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/process-number.md @@ -28,7 +28,7 @@ displayed_sidebar: docs ## Descripción -The `Process number` command returns the number of the process whose *name* or *id* you pass in the first parameter. Si no se encuentra ningún proceso, `Process number` devuelve 0. +El comando `Process number` devuelve el número del proceso cuyo *name* o *id* pasa en el primer parámetro. Si no se encuentra ningún proceso, `Process number` devuelve 0. El parámetro opcional \* permite recuperar, de un 4D remoto, el número de un proceso que se ejecuta en el servidor. En este caso, el valor devuelto es negativo. Esta opción es especialmente útil cuando se utilizan los comandos [GET PROCESS VARIABLE](../commands-legacy/get-process-variable.md), [SET PROCESS VARIABLE](../commands-legacy/set-process-variable.md) y [VARIABLE TO VARIABLE](../commands-legacy/variable-to-variable.md). diff --git a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/zip-create-archive.md b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/zip-create-archive.md index 79d2786081e8cb..e43da8a0339d09 100644 --- a/i18n/es/docusaurus-plugin-content-docs/version-21/commands/zip-create-archive.md +++ b/i18n/es/docusaurus-plugin-content-docs/version-21/commands/zip-create-archive.md @@ -40,14 +40,14 @@ Puede pasar un objeto 4D.File, 4D.Folder, o una estructura zip como primer pará - *zipStructure*: pase un objeto que describa el objeto ZIP archivo. Las siguientes propiedades están disponibles para definir la estructura: -| Propiedad | Tipo | Descripción | -| ------------ | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| compression | Integer |
  • `ZIP Compression standard`: Compresión Deflate (por defecto)
  • `ZIP Compression LZMA`: Compression LZMA
  • `ZIP Compresión XZ`: Compression XZ
  • `ZIP Compresión`: sin compresión
  • | -| level | Integer | Nivel de compresión. Valores posibles: 1 a 10. Un valor más bajo producirá un archivo más grande, mientras que un valor más alto producirá un archivo más pequeño. Sin embargo, el nivel de compresión influye en el rendimiento. Valores por defecto si se omite:
  • `ZIP Compression standard`: 6
  • `ZIP Compression LZMA`: 4
  • `ZIP Compression XZ`: 4
  • | -| encryption | Integer | The encryption to use if a password is set:
  • `ZIP Encryption AES128`: AES encryption using 128-bit key.
  • `ZIP Encryption AES192`: AES encryption using 192-bit key.
  • `ZIP Encryption AES256`: AES encryption using 256-bit key (default if password is set).
  • `ZIP Encryption none`: Data is not encrypted (default if no password is set)
  • | -| contraseña | Text | Una contraseña a utilizar si se requiere encriptación. | -| Histórico | Collection |
  • una colección de objetos `4D.File` o `4D.Folder` o
  • una colección de objetos con las siguientes propiedades:
  • PropiedadTipoDescripción
    source4D.Archivo o 4D.CarpetaArchivo o Carpeta
    destinoTexto(opcional) - Especifique una ruta de archivo relativa para cambiar la organización del contenido del archivo
    optionnumber(opcional) - `ZIP Ignore invisible files` o 0 para comprimir todo el archivo
    | -| retrollamada | 4D.Function | Una fórmula de retrollamada que recibirá la progresión de la compresión (0 - 100) en $1. | +| Propiedad | Tipo | Descripción | +| ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| compression | Integer |
  • `ZIP Compression standard`: Compresión Deflate (por defecto)
  • `ZIP Compression LZMA`: Compression LZMA
  • `ZIP Compresión XZ`: Compression XZ
  • `ZIP Compresión`: sin compresión
  • | +| level | Integer | Nivel de compresión. Valores posibles: 1 a 10. Un valor más bajo producirá un archivo más grande, mientras que un valor más alto producirá un archivo más pequeño. Sin embargo, el nivel de compresión influye en el rendimiento. Valores por defecto si se omite:
  • `ZIP Compression standard`: 6
  • `ZIP Compression LZMA`: 4
  • `ZIP Compression XZ`: 4
  • | +| encryption | Integer | El cifrado a utilizar si se define una contraseña
  • :`ZIP Encryption AES128`: Cifrado AES con clave de 128 bits.
  • `ZIP Encryption AES192`: cifrado AES con una clave de 192 bits.
  • `ZIP Encryption AES256`: encriptación AES con una llave de 256 bits (por defecto si se define la contraseña).
  • `ZIP Encryption none`: los datos no se encriptan (por defecto si no se define contraseña).
  • | +| contraseña | Text | Una contraseña a utilizar si se requiere encriptación. | +| Histórico | Collection |
  • una colección de objetos `4D.File` o `4D.Folder` o
  • una colección de objetos con las siguientes propiedades:
  • PropiedadTipoDescripción
    source4D.Archivo o 4D.CarpetaArchivo o Carpeta
    destinoTexto(opcional) - Especifique una ruta de archivo relativa para cambiar la organización del contenido del archivo
    optionnumber(opcional) - `ZIP Ignore invisible files` o 0 para comprimir todo el archivo
    | +| retrollamada | 4D.Function | Una fórmula de retrollamada que recibirá la progresión de la compresión (0 - 100) en $1. | En el parámetro *destinationFile*, pase un objeto `4D.File` que describa el archivo ZIP a crear (nombre, ubicación, etc.). Se aconseja utilizar la extensión ".zip" si quiere que el archivo ZIP sea procesado automáticamente por cualquier software. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/API/CollectionClass.md b/i18n/fr/docusaurus-plugin-content-docs/current/API/CollectionClass.md index 5dcf2027434be2..d035141d566951 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/API/CollectionClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/API/CollectionClass.md @@ -3216,15 +3216,15 @@ La fonction `.sort()` trie les éléments > Cette fonction modifie la collection d'origine. Si `.sort()` est appelé sans paramètres, seules les valeurs scalaires (nombres, textes, dates, booléens) sont triées. Les éléments sont triés par défaut par ordre croissant, en fonction de leur type. -You can also pass one of the following constants in the *ascOrDesc* parameter: +Vous pouvez également passer une des constantes suivantes dans le paramètre *ascOrDesc* : ``` -|Constant| Type|Value|Comment| -|---|---|---|---| -|ck ascending|Integer|0|Elements are ordered in ascending order (default)| -|ck descending|Integer|1|Elements are ordered in descending order| +|Constante| Type|Valeur|Comment| +|---|---|---| +|ck ascending|Integer|0|Les éléments sont classés par ordre croissant (par défaut)| +|ck descending|Integer|1|Les éléments sont classés par ordre décroissant| -This syntax orders scalar values in the collection only (other element types such as objects or collections are returned unordered). +Cette syntaxe ordonne uniquement les valeurs scalaires dans la collection (les autres types d'éléments tels que les objets ou les collections sont renvoyés non ordonnés). ``` Si la collection contient des éléments de différents types, ils sont d'abord groupés par type et triés par la suite. Les types sont renvoyés dans l'ordre suivant : diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/API/DataClassClass.md b/i18n/fr/docusaurus-plugin-content-docs/current/API/DataClassClass.md index f52b45daec58b3..f625372d8bc7fb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/API/DataClassClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/API/DataClassClass.md @@ -1181,11 +1181,11 @@ Si *attributePath* désigne un attribut stockant des [**objets vecteurs**](../AP Dans ce cas, le paramètre *value* doit être un **objet vecteur de comparaison** contenant les propriétés suivantes : -| Propriété | Type | Description | -| --------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| vector | [4D.Vector](../API/VectorClass.md) | Obligatoire. Le vecteur à comparer | -| metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. Vous pouvez utiliser l'une des constantes (texte) suivantes
  • :`mk cosine` (par défaut si omis) : calcule la distance en cosinus entre les vecteurs.
  • `mk dot` : calcule la similarité en points des vecteurs.
  • `mk euclidean` : calcule la distance euclidienne entre les vecteurs. | -| threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. | +| Propriété | Type | Description | +| --------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| vector | [4D.Vector](../API/VectorClass.md) | Obligatoire. Le vecteur à comparer | +| metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | +| threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. | Seul un sous-ensemble de symboles **comparateurs** est pris en charge. Notez qu'ils comparent les résultats à la valeur de seuil (threshold) : diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/API/EntityClass.md b/i18n/fr/docusaurus-plugin-content-docs/current/API/EntityClass.md index 62d40f51d1a21b..3c2165231c46e3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/API/EntityClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/API/EntityClass.md @@ -335,10 +335,10 @@ vCompareResult3 (seules les différences sur les attributs touchés de $e1 sont
    Historique -| Release | Modifications | -| ------- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | Ajout | +| Release | Modifications | +| ------- | ------------------------ | +| 21 | Ajout des statuts 7 et 8 | +| 17 | Ajout |
    @@ -365,7 +365,7 @@ Sinon, vous pouvez passer l'option `dk force drop if stamp changed` dans le para **Résultat** -The object returned by `.drop()` contains the following properties: +L'objet renvoyé par `.drop()` contient les propriétés suivantes : | Propriété | | Type | Description | | --------------------------------- | ----------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -390,15 +390,15 @@ The object returned by `.drop()` contains the following properties: (\*) Les valeurs suivantes peuvent être retournées dans les propriétés *status* et *statusText* de l'objet *Résultat* en cas d'erreur : -| Constante | Valeur | Commentaire | -| ----------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). When using entity.drop(), this error can be returned when dk force drop if stamp changed option is used. When using entity.lock(), this error can be returned when dk reload if stamp changed option is used.
  • **Associated statusText**: "Entity does not exist anymore" | -| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste.
    **statusText associé** : "Already locked" | -| `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    **statusText associé** : "Other error" | -| `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | -| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used
  • **Associated statusText**: "Stamp has changed"
  • | -| `dk status wrong permission` | 1 | Les privilèges courants ne permettent pas de supprimer l'entité. **statusText associé** : "Permission error" | +| Constante | Valeur | Commentaire | +| ----------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). Lors de l'utilisation de entity.drop(), cette erreur peut être renvoyée lorsque l'option dk force drop if stamp changed est utilisée. Lors de l'utilisation de entity.lock(), cette erreur peut être renvoyée lorsque l'option dk reload if stamp changed est utilisée.
  • **statusText associé** : "Entity does not exist anymore" | +| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste.
    **statusText associé** : "Already locked" | +| `dk status validation failed` | 7 | Erreur non fatale envoyée par le développeur pour un [événement de validation](../ORDA/orda-events.md). **statusText associé**: "Mild Validation Error" | +| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    **statusText associé** : "Other error" | +| `dk status serious validation error` | 8 | Erreur critique envoyée par le développeur pour un [événement de validation](../ORDA/orda-events.md). **statusText associé**: "Serious Validation Error" | +| `dk status stamp has changed` | 2 | La valeur interne du stamp de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • avec `.save()` : erreur seulement si l'option `dk auto merge` n'est pas utilisée
  • avec `.drop()` : erreur seulement si l'option `dk force drop if stamp changed` n'est pas utilisée
  • avec `.lock()` : erreur seulement si l'option `dk reload if stamp changed` n'est pas utilisée
  • **statusText associé** : "Stamp has changed"
  • | +| `dk status wrong permission` | 1 | Les privilèges courants ne permettent pas de supprimer l'entité. **statusText associé** : "Permission error" | #### Exemple 1 @@ -512,7 +512,7 @@ La correspondance entre l'objet et l'entité est établie à partir des noms de - Si une propriété de l'objet n'existe pas dans la dataclass, elle est ignorée. - Les types de données doivent être équivalents. S'il existe une différence de type entre l'objet et la dataclass, 4D essaie de convertir les données lorsque cela est possible (voir [`Converting data types`](Concepts/data-types.md#converting-data-types)), sinon l'attribut est laissé intact. -- La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). Si la clé primaire n'est pas fournie, l'entité est créée et la valeur de la clé primaire est affectée en fonction des règles de la base de données. L'auto-incrémentation n'est calculée que si la clé primaire est nulle. +- La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). Si elle n'existe pas déjà dans la dataclass, l'entité est créée avec la valeur donnée lorsque [.save()](#save) est appelée. Si la clé primaire n'est pas fournie, l'entité est créée et la valeur de la clé primaire est affectée en fonction des règles de la base de données. L'auto-incrémentation n'est calculée que si la clé primaire est nulle. *filler* peut contenir une related entity dans les conditions suivantes : @@ -1011,13 +1011,12 @@ L'objet retourné par `.lock()` contient les propriétés suivantes : (\*) Les valeurs suivantes peuvent être retournées dans les propriétés *status* et *statusText* de l'objet *Résultat* en cas d'erreur : -| Constante | Valeur | Commentaire | -| ----------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • **statusText associé** : "Entity does not exist anymore" | -| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste.
    **statusText associé** : "Already locked" | -| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require | -| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    **statusText associé** : "Other error" | -| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | +| Constante | Valeur | Commentaire | +| ----------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). Lors de l'utilisation de `.drop()`, cette erreur peut être retournée lorsque l'option dk force drop if stamp changed est utilisée. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • **statusText associé** : "Entity does not exist anymore" | +| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste.
    **statusText associé** : "Already locked" | +| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    **statusText associé** : "Other error" | +| `dk status stamp has changed` | 2 | La valeur du stamp interne de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • avec `.save()` : erreur seulement si l'option `dk auto merge` n'est pas utilisée
  • avec `.drop()` : erreur seulement si l'option `dk force drop if stamp changed` n'est pas utilisée
  • avec `.lock()`: erreur seulement si l'option `dk reload if stamp changed` n'est pas utilisée

  • **statusText associé** : "Stamp has changed" | #### Exemple 1 @@ -1178,10 +1177,10 @@ L'objet retourné par `.reload( )` contient les propriétés suivantes : (\*) Les valeurs suivantes peuvent être retournées dans les propriétés *status* et *statusText* de l'objet *Résultat* en cas d'erreur : -| Constante | Valeur | Commentaire | -| ----------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). When using `.drop()`, this error can be returned when `dk force drop if stamp changed` option is used. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • ***statusText associé***: "Entity does not exist anymore" | -| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    ***statusText associé*** : "Other error" | +| Constante | Valeur | Commentaire | +| ----------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). Lors de l'utilisation de `.drop()`, cette erreur peut être retournée lorsque l'option `dk force drop if stamp changed` est utilisée. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • ***statusText associé***: "Entity does not exist anymore" | +| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    ***statusText associé*** : "Other error" | #### Exemple @@ -1210,10 +1209,10 @@ L'objet retourné par `.reload( )` contient les propriétés suivantes :
    Historique -| Release | Modifications | -| ------- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | Ajout | +| Release | Modifications | +| ------- | ------------------------ | +| 21 | Ajout des statuts 7 et 8 | +| 17 | Ajout |
    @@ -1273,16 +1272,16 @@ L'objet retourné par `.save()` contient les propriétés suivantes : Les valeurs suivantes peuvent être retournées dans les propriétés `status` et `statusText` de l'objet Résultat en cas d'erreur : -| Constante | Valeur | Commentaire | -| ----------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dk status automerge failed` | 6 | (Only if the `dk auto merge` option is used) The automatic merge option failed when saving the entity. **Associated statusText**: "Auto merge failed" | -| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). When using `.drop()`, this error can be returned when `dk force drop if stamp changed` option is used. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • **statusText associé** : "Entity does not exist anymore" | -| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste. **statusText associé** : "Already locked" | -| `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc. **Associated statusText**: "Other error" | -| `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | -| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | -| `dk status wrong permission` | 1 | Les privilèges courants ne permettent pas de supprimer l'entité. **statusText associé** : "Permission error" | +| Constante | Valeur | Commentaire | +| ----------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status automerge failed` | 6 | (Seulement si l'option `dk auto merge` est utilisée) L'option de fusion automatique a échoué lors de la sauvegarde de l'entité. \*\*statusText associé : "Auto merge failed" | +| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). Lors de l'utilisation de `.drop()`, cette erreur peut être retournée lorsque l'option `dk force drop if stamp changed` est utilisée. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • **statusText associé** : "Entity does not exist anymore" | +| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste. **statusText associé** : "Already locked" | +| `dk status validation failed` | 7 | Erreur non fatale envoyée par le développeur pour un [événement de validation](../ORDA/orda-events.md). **statusText associé**: "Mild Validation Error" | +| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc. **statusText associé** : "Other error" | +| `dk status serious validation error` | 8 | Erreur critique envoyée par le développeur pour un [événement de validation](../ORDA/orda-events.md). **statusText associé**: "Serious Validation Error" | +| `dk status stamp has changed` | 2 | La valeur du marqueur interne de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • avec `.save()`: erreur uniquement si l'option `dk auto merge` n'est pas utilisée
  • avec `.drop()`: erreur uniquement si l'option `dk force drop if stamp changed` n'est pas utilisée
  • avec `.lock()`: erreur uniquement si l'option `dk reload if stamp changed` n'est pas utilisée

  • **StatusText associé**: "Stamp has changed" | +| `dk status wrong permission` | 1 | Les privilèges courants ne permettent pas de supprimer l'entité. **statusText associé** : "Permission error" | #### Exemple 1 diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/API/SessionClass.md b/i18n/fr/docusaurus-plugin-content-docs/current/API/SessionClass.md index fa9c1b82f11051..259ec5056a7e4b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/API/SessionClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/API/SessionClass.md @@ -45,6 +45,14 @@ Les objets session sont retournés par la commande [`Session`](../commands/sessi ::: +:::tip Related blog posts + +- [Sessions évolutives pour applications web avancées](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) +- [Permissions : Inspecter les privilèges de la session pour faciliter le débogage](https://blog.4d.com/permissions-inspect-session-privileges-for-easy-debugging/) +- [Générer, partager et utiliser des passcodes à usage unique (OTP) pour les sessions web](https://blog.4d.com/connect-your-web-apps-to-third-party-systems/) + +::: + ### Types de sessions Les types de sessions suivants sont pris en charge par cette classe : @@ -86,10 +94,10 @@ La disponibilité des propriétés et des fonctions de l'objet `Session` dépend
    Historique -| Release | Modifications | -| ------- | -------------------------- | -| 21 | Support of remote sessions | -| 18 R6 | Ajout | +| Release | Modifications | +| ------- | -------------------------------------- | +| 21 | Prise en charge des sessions distantes | +| 18 R6 | Ajout |
    @@ -107,13 +115,13 @@ La disponibilité des propriétés et des fonctions de l'objet `Session` dépend :::note -This function does nothing and always returns **True** with stored procedure sessions and standalone sessions. +Cette fonction ne fait rien et renvoie toujours **True** avec les sessions de procédures stockées et les sessions autonomes. ::: La fonction `.clearPrivileges()` supprime tous les privilèges associés à la session (à l'exception des privilèges promus) et renvoie **True** si l'exécution a réussi. -Hormis si vous êtes en mode ["forceLogin"](../REST/authUsers.md#force-login-mode), la session devient automatiquement une session Invité. En mode "forceLogin", `.clearPrivileges()` ne transforme pas la session en session Invité, elle efface seulement les privilèges de la session. +Hormis si vous êtes en mode ["forceLogin"](../REST/authUsers.md#force-login-mode), la session devient automatiquement une session Guest. En mode "forceLogin", `.clearPrivileges()` ne transforme pas la session en session Invité, elle efface seulement les privilèges de la session. :::note @@ -121,7 +129,7 @@ Cette fonction ne supprime pas les **privilèges promus** du process web, qu'ils ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). #### Exemple @@ -142,10 +150,10 @@ $isGuest:=Session.isGuest() //$isGuest est True
    Historique -| Release | Modifications | -| ------- | -------------------------- | -| 21 | Support of remote sessions | -| 20 R9 | Ajout | +| Release | Modifications | +| ------- | -------------------------------------- | +| 21 | Prise en charge des sessions distantes | +| 20 R9 | Ajout |
    @@ -420,7 +428,7 @@ Cette fonction renvoie True pour le *privilège* si elle est appelée depuis une ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/API/WebServerClass.md b/i18n/fr/docusaurus-plugin-content-docs/current/API/WebServerClass.md index cc56372ee96210..870338b9731bb5 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/API/WebServerClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/API/WebServerClass.md @@ -187,7 +187,7 @@ Le nom de la page home par d *Propriété en lecture seulement.* -A collection of custom HTTP handler objects. An HTTP handler object contains a listened URL pattern, a handled verb, and the code to be called. HTTP handlers can be defined through a HTTPHandlers.json file or the *settings* parameter of the [`.start()`](#start) function. For more information, please refer to the [HTTP Request handler](../WebServer/http-request-handler.md) page. +Une collection d'objets gestionnaires HTTP personnalisés . Un objet HTTP handler contient un motif d'URL écouté, un verbe pris en charge et le code à appeler. Les gestionnaires HTTP peuvent être définis dans un fichier HTTPHandlers.json ou dans le paramètre *settings* de la fonction [`.start()`](#start). Pour plus d'informations, veuillez consulter la page [HTTP Request handler](../WebServer/http-request-handler.md). @@ -495,7 +495,7 @@ Le chemin du dossier racine du se *Propriété en lecture seulement.* -A collection of rule objects currently handled to customize HTTP headers. A rule object contains a "regexPattern" property, as well as an action name with a value. HTTP rules can be defined through a HTTPRules.json file or the *settings* parameter of the [`.start()`](#start) function. For more information, please refer to the [HTTP Rules](../WebServer/http-rules.md) page. +La collection d'objets de règles HTTP mises en oeuvre pour personnaliser les en-têtes HTTP. Un objet règle contient une propriété "regexPattern" ainsi qu'un nom d'action avec une valeur. Les règles HTTP peuvent être définies dans un fichier HTTPRules.json ou dans le paramètre *settings* de la fonction [`.start()`](#start). Pour plus d'informations, veuillez consulter la page [Règles HTTP](../WebServer/http-rules.md). 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 bed1a52d892134..8d535e2cacc8ca 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/classes.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/classes.md @@ -333,7 +333,7 @@ Function getRectArea($width : Integer; $height : Integer) : Integer :::note -Il n'y a pas de mot-clé de fin pour le code d'une fonction class constructor. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. +Il n'y a pas de mot-clé de fin pour le code d'une fonction de constructeur de classe. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/components.md b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/components.md index 1a124b4e2246f9..b086a5b4e4092b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/components.md @@ -9,7 +9,7 @@ Un composant 4D est un ensemble de code et de formulaires 4D représentant une o L'installation et le chargement des composants dans vos projets 4D sont gérés par le [Gestionnaire de dépendances de 4D](../Project/components.md). -Plusieurs composants sont [développés par 4D](../Extensions/overview.md#components-developed-by-4d), mais de nombreux composants de la communauté 4D [sont publiés sur GitHub](https://github.com/search?q=4d-component&type=Repositories). De plus, vous pouvez [développer vos propres composants 4D](../Extensions/develop-components.md). +Plusieurs composants sont [développés par 4D](../Extensions/overview.md#components-developed-by-4d), mais de nombreux composants de la communauté 4D [sont publiés sur GitHub](https://github.com/topics/4d-component). De plus, vous pouvez [développer vos propres composants 4D](../Extensions/develop-components.md). ## Utilisation des composants diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/error-handling.md b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/error-handling.md index e04656ac811885..c068f22b8e9e84 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/error-handling.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/error-handling.md @@ -21,11 +21,11 @@ Il est fortement recommandé d'installer une méthode globale de gestion des err ::: -## Predictable vs unpredictable errors +## Erreurs prévisibles ou imprévisibles -Many 4D class functions, such as [`entity.save()`](../API/EntityClass.md#save) or [`transporter.send()`](../API/SMTPTransporterClass.md#send), return a object containing *status* information. This object is used to store **predictable** errors in the runtime context, e.g. invalid password, locked entity, etc., that do not require to stop program execution. This category of errors, also named **silent errors** errors, can be handled by regular code. When such errors occur in an error handling context, i.e. a [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or an [error-handling method](#installing-an-error-handling-method), they do not interrupt the execution and do not trigger the error handling (e.g. the `Catch` part of the [`Try/Catch`](#trycatchend-try) is not executed). They are not listed in the [`Last errors`](../commands/last-errors.md) collection. The error is only returned in the `status` and `statusText` properties of the returned object. It can be processed according to your business logic. +De nombreuses fonctions de classe de 4D, telles que [`entity.save()`](../API/EntityClass.md#save) ou [`transporter.send()`](../API/SMTPTransporterClass.md#send), renvoient un objet contenant des informations de *status*. Cet objet est utilisé pour gérer les erreurs **prévisibles** dans le contexte d'exécution, par exemple un mot de passe invalide, une entité verrouillée, etc. qui ne nécessitent pas l'arrêt de l'exécution du programme. Cette catégorie d'erreurs, également appelée **erreurs silencieuses**, peut être gérée par le code normal. Lorsque de telles erreurs se produisent dans un contexte d'interception des erreurs, c'est-à-dire un [`Try`](#tryexpression), un [`Try/Catch`](#trycatchend-try) ou une [méthode de gestion des erreurs](#installing-an-error-handling-method), elles n'interrompent pas l'exécution et ne déclenchent pas le traitement de l'erreur (par exemple, la partie `Catch` du [`Try/Catch`](#trycatchend-try) n'est pas exécutée). Elles ne sont pas listées dans la collection [`Last errors`](../commands/last-errors.md). L'erreur est uniquement renvoyée dans les propriétés `status` et `statusText` de l'objet retourné. Elle peut être traitée selon votre logique d'application. -The other category of errors are **unpredictable** errors, also named **serious errors**. They include disk write error, network failure, or in general any unexpected interruption. This category of errors generates exceptions defined by [a *code*, a *message* and a *signature*](#error-codes). They interrupt the execution and trigger the error processing of the [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or [error-handling method](#installing-an-error-handling-method) features. They are listed in the [`Last errors`](../commands/last-errors.md) collection. Note that serious errors can also return values in the `status` and `statusText` properties, e.g. `dk status serious error` - "Other error". +L'autre catégorie d'erreurs est celle des erreurs **imprévisibles**, également appelées **erreurs graves**. Il peut s'agir d'une erreur d'écriture sur le disque, d'une panne de réseau ou, plus généralement, de toute interruption inattendue. Cette catégorie d'erreurs génère des exceptions définies par [un *code*, un *message* et une *signature*](#error-codes). Elles interrompent l'exécution et déclenchent le traitement de l'erreur par les fonctions [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) ou la [méthode de gestion des erreurs](#installing-an-error-handling-method). Elles sont listées dans la collection [`Last errors`](../commands/last-errors.md). Notez que les erreurs graves peuvent également renvoyer des valeurs dans les propriétés `status` et `statusText`, par exemple `dk status serious error` - "Other error". ## Installer une méthode de gestion des erreurs diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/parameters.md b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/parameters.md index 3e106c0ff30907..126ca42643bd67 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/parameters.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Concepts/parameters.md @@ -295,12 +295,6 @@ L'ancienne syntaxe de déclaration des paramètres variadiques (`C_TEXT(${4})`) ::: -## Triggers et On Drag Over - -Certains contextes ne prennent pas en charge la déclaration dans une méthode "Compiler_", ils sont donc gérés de manière spécifique : - -- Triggers - Le paramètre $0 (Entier long), qui résulte d'un trigger, sera typé par le compilateur si le paramètre n'a pas été explicitement déclaré. Néanmoins, si vous souhaitez le déclarer, vous devez le faire dans le trigger lui-même. - ## Type de paramètre erroné L'appel d'un paramètre d'un mauvais type ou d'une mauvaise classe (pour les paramètres objet) est une [erreur](error-handling.md) qui empêche une exécution correcte. Par exemple, si vous écrivez les méthodes suivantes : 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 1217eff7a00779..9ece18d4745892 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Desktop/clientServer.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Desktop/clientServer.md @@ -128,7 +128,7 @@ Note that [privileges](../ORDA/privileges.md) should be set in the session befor Shared sessions are handled through [OTP tokens](../WebServer/sessions.md#session-token-otp). After you created an OTP token on the server for the user session, you add the token (through the `$4DSID` parameter value) to web requests sent from web areas containing Qodly pages so that the user session on the server is identified and shared. On the web server side, if a web request contains an *OTP id* in the $4DSID parameter, the session corresponding to this OTP token is used. -:::tip Related blog post +:::tip Article(s) de blog sur le sujet [Share your 4D remote client session with web accesses](https://blog.4d.com/share-your-4d-remote-client-session-with-web-accesses) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md b/i18n/fr/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md index ed7b6e7559eddd..f863fc241bac86 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md b/i18n/fr/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md new file mode 100644 index 00000000000000..004cb537ab3cfc --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md @@ -0,0 +1,287 @@ +--- +id: triggers +title: Triggers +slug: /Develop/triggers +displayed_sidebar: docs +--- + +Un **trigger** est une méthode associée à une table. C'est une propriété d'une table. Vous n'appelez pas un trigger, les triggers sont appelés automatiquement par le moteur de 4D à chaque fois qu'un enregistrement de la table est manipulé (ajout, suppression et modification). Les triggers sont des méthodes qui peuvent éviter des opérations “illégales” dans votre base. Par exemple, dans une facturation, vous pouvez empêcher qu'un utilisateur crée une facture sans spécifier à qui elle doit être adressée. Les triggers sont un outil puissant permettant de contrôler les opérations sur les tables, et d'éviter des pertes de données accidentelles. Vous pouvez créer des triggers très simples et les rendre de plus en plus sophistiqués. + + + + + +## Activer et créer un trigger + +Par défaut, lorsque vous créez une table en mode Développement, la table n'a pas de trigger. + +Pour utiliser un trigger pour une table, vous devez : + +- activer le trigger et indiquer à 4D quand l'appeler. +- créer et écrire le code pour le trigger. + +Activer un trigger qui n'est pas encore écrit ou écrire un trigger sans l'activer n'affecte pas les opérations effectuées sur une table. + +1. Pour activer le trigger, sélectionnez les options **Triggers** pour la table dans la fenêtre de l'Inspecteur de structure : + +![](../assets/en/Develop/triggers-set.png) + +2. Pour créer ou modifier le code d'un trigger pour une table, cliquez sur le bouton **Editer** dans la palette de l'Inspecteur de structure ou double-cliquez sur le titre de la table dans la fenêtre de Structure en appuyant sur la touche **Alt** (Windows)/**Option** (macOS). + + +## Description des triggers + +### Sur sauvegarde enregistrement + +Si cette option est sélectionnée, le trigger sera appelé à chaque fois qu'un enregistrement de la table est modifié, c'est-à-dire dans les circonstances suivantes : + +- Vous modifiez un enregistrement en saisie de données (mode Développement, commande [`MODIFY RECORD`](../commands/modify-record) ou SQL `UPDATE`). +- Vous sauvegardez un enregistrement existant avec [`SAVE RECORD`](../commands/save-record). +- Vous appelez une commande qui provoque la sauvegarde d'un enregistrement existant (par exemple [`ARRAY TO SELECTION`](../commands/array-to-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), etc.). +- Vous utilisez une fonction ORDA qui sauvegarde l'entité. + +:::note + +Pour des raisons d'optimisation, le trigger n'est pas appelé lors de la sauvegarde de l'enregistrement par l'utilisateur ou via la commande [`SAVE RECORD`](../commands/save-record) si aucun champ de la table n'a été modifié dans l'enregistrement. Si vous souhaitez "forcer" l'appel du trigger dans ce cas, il suffit d'auto-affecter un champ : + +```4d +[thetable]thefield:=[thetable]thefield +``` + +::: + +### Sur suppression enregistrement + +Si cette option est sélectionnée, le trigger sera appelé à chaque fois qu'un enregistrement de la table est supprimé, c'est-à-dire dans les circonstances suivantes : + +- Vous supprimez un enregistrement en mode Développement ou en appelant la commande [`DELETE RECORD`](../commands/delete-record), [`DELETE SELECTION`](../commands/delete-selection) ou SQL `DELETE`. +- Vous effectuez des opérations qui provoquent la suppression d'un enregistrement lié par l'intermédiaire des options de contrôle de suppression d'un lien. +- Vous utilisez une fonction ORDA qui supprime une entité. + +:::note + +La commande [`TRUNCATE TABLE`](../commands/trucate-table) ne provoque PAS l'appel du trigger. + +::: + +### Sur sauvegarde nouvel enregistrement + +Si cette option est sélectionnée, le trigger sera appelé à chaque fois qu'un enregistrement est créé dans la table, c'est-à-dire dans les circonstances suivantes : + +- Vous ajoutez un enregistrement lors de la saisie de données (mode Développement, commande [`ADD RECORD`](../commands/add-record) ou SQL `INSERT` command). +- Vous créez puis sauvegardez un enregistrement avec [`CREATE RECORD`](../commands/create-record) et [`SAVE RECORD`](../commands/save-record). Notez que le trigger est appelé au moment où vous exécutez [`SAVE RECORD`](../commands/save-record), et non quand il est réellement créé. +- Vous importez des enregistrements (mode Développement ou commandes du langage). +- Vous appelez d'autres commandes qui créent et/ou sauvegardent de nouveaux enregistrements (par exemple [`ARRAY TO SELECTION`](../commands/array-to-selection), [`SAVE RELATED ONE`](../commands/save-related-one), etc.). +- Vous utilisez des fonctions ORDA telles que [`ds.dataclass.new()`](../API/DataClassClass.md#new) et [`entity.save()`](../API/EntityClass.md#save). + + +## Evénements moteur + +Un trigger peut être invoqué pour l'un des trois événements moteur décrits ci-dessus. Dans le trigger, vous détectez quel événement a lieu en appelant la commande [`Trigger event`](../commands/trigger-event). Cette commande retourne une valeur numérique qui indique l'événement moteur. + +Typiquement, vous écrivez un trigger avec une structure du type [`Case of` structure](../Concepts/flow-control.md#case-ofelseend-case) sur le résultat retourné par [`Trigger event`](../commands/trigger-event) : + + +```4d + //Trigger for [anyTable] +#DECLARE -> $result : Integer +$result:=0 // On suppose que la requête sera acceptée + Case of + :(Trigger event=On Saving New Record Event) + // Effectuer les actions appropriées pour sauvegarder l'enregistrement nouvellement créé + :(Trigger event=On Saving Existing Record Event) + // Effectuer les actions appropriées pour sauvegarder l'enregistrement déjà existant + :(Trigger event=On Deleting Record Event) + // Effectuer les actions appropriées pour détruire l'enregistrement + End case + ``` + + +## Les triggers sont des fonctions + +Un trigger a deux finalités : + +- Effectuer des actions sur l'enregistrement juste avant qu'il soit sauvegardé ou supprimé. +- Accepter ou rejeter une opération de base de données. + + +### Effectuer des actions + +A chaque fois qu'un enregistrement est sauvegardé (ajouté ou modifié) dans une table [Documents], vous souhaitez estampiller l'enregistrement avec des marqueurs de création et de modification. Vous pouvez écrire le trigger suivant : + +```4d + // Trigger pour la table [Documents] + Case of + :(Trigger event=On Saving New Record Event) + [Documents]CreationStamp:=myTimeStamp + [Documents]ModificationStamp:=myTimeStamp + :(Trigger event=On Saving Existing Record Event) + [Documents]ModificationStamp:=myTimeStamp + End case +``` + +:::note + +La fonction *myTimeStamp* utilisée dans cet exemple est une petite méthode projet retournant le nombre de secondes écoulées depuis une date choisie arbitrairement. + +::: + +Une fois que ce trigger a été écrit et activé, peu importe la façon dont vous ajoutez ou modifiez un enregistrement dans la table [Documents] (saisie de données, import, méthode projet, ORDA...), la valeur des deux champs [Documents]CreationStamp et [Documents]ModificationStamp sera automatiquement assignée par le trigger avant que l'enregistrement ne soit écrit sur disque. + + +### Accepter ou rejeter l'opération + +Pour accepter ou rejeter une opération de base de données, le trigger doit **retourner un code d'erreur de trigger** dans le résultat de la fonction. + +#### Example + +Prenons le cas d'une table [Employees]. Pendant la saisie de données, vous contrôlez le champ de numéro de sécurité sociale. Par exemple, lorsque l'utilisateur clique sur le bouton de validation, vous vérifiez le champ utilisant la méthode objet du bouton : + +```4d + // Méthode objet bouton bAccept + If(GoodSSnumber([Employees]SSNumber)) + ACCEPT + Else + BEEP + ALERT("Saisissez un numéro de sécurité sociale et cliquez sur OK.") + End if +``` + +Si la valeur du champ est correcte, vous acceptez la saisie de données, sinon vous affichez une alerte et restez en saisie de données. + +Si vous créez aussi des enregistrements pour la table [Employees] par programmation, le code ci-dessous serait valide MAIS violerait la règle imposée dans la méthode objet créée plus haut : + +```4d + // Extrait d'une méthode projet + // ... + CREATE RECORD([Employees]) + [Employees]Name:="DOE" + SAVE RECORD([Employees]) // <-- violation de la règle ! Il n'y a pas de numéro de sécurité sociale ! + // ... +``` + +En utilisant un trigger pour la table [Employees], vous pouvez appliquer la contrainte sur [Employees]SSNumber à tous les niveaux de la base. Le trigger serait du type : + +```4d + // Trigger pour [Employees] + #DECLARE -> $result : Integer + var $dbEvent : Integer + $result:=0 + $dbEvent:=Trigger event + Case of + :(($dbEvent=On Saving New Record Event)|($dbEvent=On Saving Existing Record Event)) + If(Not(GoodSSnumber([Employees]SSNumber))) + $result:=-15050 + Else + // ... + End if + // ... + End case +``` + +Une fois que ce trigger est écrit et activé, la ligne SAVE RECORD([Employees]) de la méthode projet ci-dessus génèrera une erreur moteur -15050 et l'enregistrement ne sera PAS sauvegardé. + +De la même façon, si un plug-in 4D essayait de sauvegarder un enregistrement dans [Employees] avec un numéro de sécurité sociale incorrect, le trigger génèrerait la même erreur et l'enregistrement ne serait pas sauvegardé non plus. + +Le trigger garantit que personne (utilisateur, développeur, plug-in...) ne peut violer la règle sur le numéro de sécurité sociale (à dessein ou par erreur). + +Notez que même si vous n'avez pas créé de trigger pour une table, la base peut retourner des erreurs moteur lorsque vous essayez de sauvegarder ou de détruire un enregistrement. Vous pouvez, par exemple, recevoir l'erreur -9998, si vous essayez de sauvegarder un enregistrement. + +Ainsi, les triggers retournent des erreurs moteur de base de données supplémentaires dans 4D : + +- 4D gère les erreurs “normales” : index unique, contrôles relationnels, etc. +- En utilisant les triggers, vous pouvez créer des codes d'erreurs propres à votre application. + +**Important** : Vous pouvez retourner le code d'erreur de votre choix. Cependant, n'utilisez pas des codes d'erreurs déjà utilisés par le moteur de 4D. Nous vous recommandons fortement d'utiliser des codes compris entre -32000 et -15000. Nous réservons les erreurs supérieures à -15000 au moteur de 4D. + +Au niveau du process, vous gérez les erreurs trigger de la même façon que les erreurs du moteur de base de données : + +- vous pouvez laisser 4D afficher la boîte de dialogue standard d'erreur, la méthode est alors interrompue. +- vous pouvez utiliser une [méthode de gestion d'erreur](../Concepts/error-handling.md) et traiter l'erreur de façon appropriée (à l’exception des commandes qui agissent sur une sélection d’enregistrements, voir la note ci-dessous). + +:::note Notes + +- Pendant la saisie, si une erreur trigger est retournée au moment où vous essayez de valider ou de supprimer un enregistrement, l'erreur est gérée comme une erreur sur un index unique. La boîte de dialogue d'erreur est affichée et vous restez en saisie de données. Même si vous n'utilisez une base qu'en mode Développement (et non en Application), vous bénéficiez des triggers. +- Lorsqu'une erreur est générée par un trigger pour un enregistrement dans le cadre d'une commande qui agit sur une sélection d'enregistrements (telle que [`DELETE SELECTION`](../commands/delete-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), [`ARRAY TO SELECTION`](../commands/array-to-selection)...), l'enregistrement n'est pas traité mais automatiquement enregistré dans le [LockedSet du process](../Develop/processes.md#elements-of-a-process). La commande poursuit son exécution jusqu’à la fin, et aucune erreur ne peut être identifiée. Le cas échéant, la méthode de traitement des erreurs, n’est pas appelée. Pour savoir si des erreurs ont été générées dans ce contexte, vous devez tester le `LockedSet` juste après l’appel de commande. De plus, dans le trigger, vous devez stocker des codes d’erreur, dans une collection par exemple, et les manipuler par la suite. + +::: + +Même si un trigger ne retourne pas d'erreur ($result=0), cela ne signifie pas qu'une opération de la base s'effectuera correctement. Il peut y avoir eu un doublon sur l'index unique. Si l'opération est la mise à jour d'un enregistrement, ce dernier peut être verrouillé, une erreur d'entrée/sortie peut se produire, bien d'autres choses encore peuvent arriver. Ces vérifications sont effectuées après l'exécution du trigger. Cependant, du point de vue du plus haut niveau du process en exécution, les erreurs retournées par le moteur de la base de données ou celle d'un trigger sont de même nature : une erreur trigger est une erreur du moteur de la base de données. + + +## Les triggers et l'architecture 4D + +TrLes triggers sont exécutés au niveau du moteur de la base de données. Ce point est illustré dans le schéma suivant : + +![](../assets/en/Develop/triggers-architecture.png) + +Les triggers sont exécutés sur la machine où est situé le moteur de la base de données. Si ce point est une évidence dans le cas de 4D en local, il convient de rappeler que pour 4D Server, les triggers sont exécutés sur la machine serveur (dans le process "jumeau" du process ayant déclenché le trigger) et non sur la machine cliente. + +Quand un trigger est appelé, il s'exécute dans le contexte du process qui tente l'opération. Ci-dessous, ce process est appelé **process appelant** l'exécution du trigger. Les éléments inclus dans ce contexte diffèrent suivant que la base est exécutée avec 4D en mode local ou avec 4D Server : + +- avec 4D en mode local, le trigger fonctionne avec les sélections courantes, les enregistrements courants, les statuts lecture/écriture des tables, les verrouillages d'enregistrements, etc., du process appelant. +- avec 4D Server, seul le contexte de base de données du process client appelant est préservé (verrouillages d'enregistrements et statut transactionnel). 4D Server garantit également (et uniquement) que l'enregistrement courant de la table du trigger est correctement positionné. Les autres éléments contextuels (sélections courantes par exemple) sont ceux du process du trigger. + +Soyez prudent lorsque vous utilisez les autres objets de la base et du langage, car un trigger peut s'exécuter sur une machine différente de celle du process appelant : c'est le cas avec 4D Server ! + +- **Variables process** : Chaque trigger possède sa propre table de variables process. Un trigger n'a pas accès aux variables process du process appelant. +- **Variables locales** : Vous pouvez utiliser des variables locales dans un trigger. Leur aire d'action est l'exécution du trigger (elles sont créées/détruites au cours de cette exécution). +- **Sémaphores** : Un trigger peut tester ou placer des sémaphores globaux et locaux (sur la machine où il s'exécute dans ce dernier cas). Cependant, un trigger doit s'exécuter rapidement. En conséquence, utilisez plutôt des sémaphores locaux dans un trigger, sauf si vous avez une idée précise en tête. +- **Ensembles et sélections temporaires** : Si vous utilisez un ensemble ou une sélection temporaire dans un trigger, vous travaillez alors avec ceux de la machine où les triggers s'exécutent. En client/serveur, les ensembles et sélections temporaires "process" (dont le nom ne débute ni par $ ni par <>) créés sur le client sont visibles dans un trigger. +- **Interface utilisateur** : N'utilisez PAS d'éléments d'interface utilisateur dans un trigger (alerte, message ou dialogue). Cela signifie également que tracer le trigger dans la [fenêtre du Débogueur](../Debugging/debugger.md) doit être limité. Souvenez-vous que les triggers en client/serveur s'exécutent sur la machine 4D Server. Un message d'alerte affiché sur le poste serveur ne dit pas grand chose à l'utilisateur qui, lui, travaille sur sa machine cliente. Laissez le process appelant gérer l'interface utilisateur. + +A noter que, en client/serveur, si vous utilisez le système de mots de passe de 4D, vous pouvez exécuter la commande [`Current user`](../commands/current-user) dans le trigger afin, par exemple, de stocker dans une table journal le nom de l'utilisateur à l'origine de l'appel du trigger. + + +## Triggers et transactions + +Les [transactions](./transactions.md) doivent être gérées au niveau du process appelant. Il est fortement déconseillé de gérer des transactions au niveau du trigger. Si, pendant l'exécution d'un trigger, vous devez ajouter, modifier ou détruire plusieurs enregistrements et souhaitez garantir l'intégrité de vos données à l'aide d'une transaction, vous devez d'abord tester (à partir du trigger) si le process appelant est en cours de transaction avec la commande [`In transaction`](../commands/in-transaction). En effet, si ce n'est pas le cas et si le trigger rencontre un enregistrement verrouillé, le process appelant n'aura aucun moyen d'annuler a posteriori les actions déjà effectuées par le trigger. Par conséquent, si vous n'êtes pas en transaction, ne commencez pas les opérations à exécuter, et retournez simplement une erreur dans $0 afin de signaler au process appelant que l'opération de base de données doit être exécutée dans une transaction. + +:::note + +Afin d'optimiser le fonctionnement combiné des triggers et des transactions, 4D n'appelle PAS les triggers lors d'un [`VALIDATE TRANSACTION`](../commands/validate-transaction). Cela évite que les triggers soient exécutés deux fois. + +::: + + +## Triggers en cascade + +Prenons l'exemple de la structure suivante : + +![](../assets/en/Develop/triggers-cascade.png) + +Note : Les tables ont été contractées (il y a davantage de champs). + +Admettons que la base “autorise” la suppression d'une facture. Voyons comment une telle opération serait gérée au niveau du trigger (puisque vous pourriez aussi décider d'effectuer l'opération au niveau du process). + +Afin que soit maintenue l'intégrité relationnelle des données, la suppression d'une facture requiert les actions suivantes de la part du trigger de [Invoices] : + +- Décrémenter le champ Ventes de la table [Customers] du montant de la facture. +- Supprimer tous les enregistrements de [Line Items] liés à la facture. +- Ceci implique aussi que le trigger de [Line Items] décrémente le champ Quantité vendue des enregistrements [Products] liés à la ligne de facture que l'on s'apprête à supprimer. +- Supprimer tous les enregistrements de [Payments] liés à la facture. + +Tout d'abord, le trigger de Invoices ne doit effectuer ces actions que si le process appelant est en transaction, afin qu'une annulation rétroactive soit possible en cas de rencontre d'un enregistrement verrouillé. + +Deuxièmement, le trigger de [Line Items] est **en cascade** avec le trigger de Invoices. Le premier s'exécute "à l'intérieur" du second parce que la destruction des éléments de la liste est consécutive à un appel à `DELETE SELECTION` dans le trigger de Invoices. + +Admettons que toutes les tables dans cet exemple ont des triggers activés pour tous les événements de la base de données. La cascade des triggers sera : + +- Le trigger de Invoices est appelé car le process appelant supprime une facture + - Le trigger de Customers est appelé car le trigger Invoices met à jour le champ Ventes + - Le trigger de Line Items est appelé car le trigger Invoices supprime une ligne (ce qui est répété) + - Le trigger de Products est appelé car le trigger Line Items met à jour le champ Quantité vendue + -Le trigger de Payments est appelé car le trigger Invoices supprime un paiement (ce qui est répété) + +Dans cette cascade, le trigger de Invoices s'exécute au niveau 1, les triggers [Customers], [Line Items] et [Payments] au niveau 2 et le trigger [Products] au niveau 3. + +Dans les triggers, vous pouvez détecter à quel niveau un trigger est exécuté grâce à la commande [`Trigger level`](../commands/trigger-level). De plus, vous pouvez aussi obtenir des informations sur les autres niveaux en utilisant la commande [`TRIGGER PROPERTIES`](../commands/trigger-properties). + +Si, par exemple, vous détruisiez un enregistrement [Products] à un niveau process, le trigger de [Products] s'exécuterait au niveau 1, non au niveau 3, comme plus haut. + +Avec [`Trigger level`](../commands/trigger-level) et [`TRIGGER PROPERTIES`](../commands/trigger-properties), vous pouvez identifier la raison d'une action. Dans l'exemple ci-dessus, une facture est supprimée au niveau process. Prenons pour hypothèse que nous voulons détruire un enregistrement [Customers] au niveau process. Le trigger de [Customers] devrait alors être conçu pour détruire toutes les factures liées à ce client. Cela signifie que le trigger Invoices devrait être invoqué comme plus haut, mais pour une autre raison. Du trigger Invoices, vous pouvez détecter si le niveau est 1 ou 2. S'il est 2, vous pouvez vérifier si oui ou non c'est à cause de la suppression de l'enregistrement Customer lui-même. Si tel est le cas, vous n'avez même plus besoin de vous préoccuper de la mise à jour du champ Ventes. + + + + + diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Develop/field-properties.md b/i18n/fr/docusaurus-plugin-content-docs/current/Develop/field-properties.md index e8cbe982173df0..c3ca0c1e72ffd8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Develop/field-properties.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Develop/field-properties.md @@ -3,34 +3,34 @@ id: field-properties title: Propriétés des champs --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class ![](../assets/en/Develop/inspector-class.png) -This property is available for fields of type **Object** (in 4D projects only). It allows you to define a **class-typed object field**, enhancing code completion, syntax checking, and runtime validation when typing code that involves object fields. +Cette propriété est disponible pour les champs de type **Objet** (dans les projets 4D uniquement). Elle vous permet de définir un **champ de type classe d'objet**, ce qui améliore la complétion de code, la vérification syntaxique et la validation d'exécution lors de la saisie de code impliquant des champs objet. -You can enter any valid class name in this property, including: +Vous pouvez saisir n'importe quel nom de classe valide dans cette propriété, y compris : -- User classes (e.g. `cs.MyClass`) -- Built-in 4D classes (e.g. `4D.File`, `4D.Folder`) -- [Exposed](../Extensions/develop-components.md#sharing-of-classes) component-defined classes (e.g. `cs.MyComponent.MyClass`) +- des classes utilisateurs (par exemple `cs.MyClass`) +- des classes 4D intégrées (par exemple `4D.File`, `4D.Folder`) +- des classes [exposées](../Extensions/develop-components.md#sharing-of-classes) définies par les composants (par exemple `cs.MyComponent.MyClass`) -If you enter an invalid class name, a warning is triggered and the input is rejected. +Si vous saisissez un nom de classe non valide, la saisie est rejetée. :::note -**Non-streamable classes** such as [ORDA Data Model classes](../ORDA/ordaClasses.md), [file handles](../API/FileHandleClass.md), [web server](../API/WebServerClass.md)... cannot be associated to object fields. +Les **classes non *streamables*** telles que les [classes du modèle de données ORDA](../ORDA/ordaClasses.md), la classe [FileHandle](../API/FileHandleClass.md), [WebServer](../API/WebServerClass.md)... ne peuvent pas être associées à des champs objets. ::: -In your code, when assigning a value to a class-typed object field, 4D verifies that it belongs to the declared class. If not or if the object has no class, an error is triggered. Accessing unknown attributes will also raise syntax errors. +Dans votre code, lors de l'affectation d'une valeur à un champ de type classe d'objet, 4D vérifie qu'elle appartient à la classe déclarée. Si ce n'est pas le cas ou si l'objet n'a pas de classe, une erreur est déclenchée. L'accès à des attributs inconnus entraîne également des erreurs de syntaxe. -To retrieve the associated class name at runtime, use the [`classID`](../API/DataClassClass.md#attributename) property, for example `ds.MyTable.MyField.classID`. +Pour récupérer le nom de la classe associée lors de l'exécution, utilisez la propriété [`classID`](../API/DataClassClass.md#attributename), par exemple `ds.MyTable.MyField.classID`. ### Voir également -- [Blog post: Stricter class-based typing for objects](https://blog.4d.com/stricter-class-based-typing-for-objects/) +- [Article de blog : Un typage plus strict des objets basé sur les classes](https://blog.4d.com/stricter-class-based-typing-for-objects/) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Develop/triggers-new.md b/i18n/fr/docusaurus-plugin-content-docs/current/Develop/triggers-new.md new file mode 100644 index 00000000000000..268972c12a12f8 --- /dev/null +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Develop/triggers-new.md @@ -0,0 +1,21 @@ +--- +id: triggers-new +title: Triggers +--- + +to import + + + +## Triggers vs ORDA entity events + +**Triggers** (aka database events) and [**ORDA entity events**](../ORDA/orda-events.md) have similar purposes: they establish rules to control fundamental operations on the data (create, edit, or delete). However, they do not operate at the same level: + +- triggers are handled at the database level, which is the lowest level, +- ORDA entity events are handled at the [datastore](../ORDA/dsMapping.md#datastore) level, which is related to your business logic. + +Actions on data executed through the datastore, such as [`.save()`](../API/EntityClass.md#save) or [`.drop`](../API/EntityClass.md#drop), will call the triggers, if any. + +On the other hand, actions triggered at the 4D database level using the 4D classic language commands, such as [`SAVE RECORD`](../commands/save-record) or [standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html#3371159) will NOT trigger ORDA entity events. + + diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Extensions/develop-components.md b/i18n/fr/docusaurus-plugin-content-docs/current/Extensions/develop-components.md index 1ff76440a11965..9b7891d73e7173 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Extensions/develop-components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Extensions/develop-components.md @@ -310,6 +310,8 @@ Dans ce cas, il est nécessaire d’utiliser la comparaison de pointeurs : An [error-handling method](Concepts/error-handling.md) installed by the [`ON ERR CALL`](../commands-legacy/on-err-call.md) command only applies to the running application. En cas d'erreur générée par un composant, la méthode d'appel sur erreur `ON ERR CALL` du projet hôte n'est pas appelée, et inversement. +Cependant, vous pouvez installer un [gestionnaire d'erreurs de composants dans l'application hôte](../Concepts/error-handling.md#scope-and-components) pour gérer les erreurs non capturées des composants. + However, you can install a [component error handler in the host application](../Concepts/error-handling.md#scope-and-components) to manage uncaught errors from compponents. However, you can install a [component error handler in the host application](../Concepts/error-handling.md#scope-and-components) to manage uncaught errors from compponents. @@ -344,7 +346,7 @@ SAVE RECORD($tablepointer- ## Utilisation de tables et de champs -Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. +Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. Une base de données externe est un projet 4D indépendant du projet 4D principal, mais avec lequel vous pouvez travailler à partir du projet 4D principal. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. #### Exemple @@ -461,7 +463,7 @@ Ce fichier n'est pas obligatoire mais il est nécessaire pour construire des com Les clés prises en charge dans les fichiers `Info.plist` des composants sont principalement des [clés bundle d'Apple](https://developer.apple.com/documentation/bundleresources/information-property-list) qui sont ignorées sous Windows. Cependant, elles sont utilisés par le [Gestionnaire de dépendances](../Project/components.md#loading-components) sur toutes les plates-formes. -The following keys can be defined: +Les clés suivantes peuvent être définies : | key | Description | | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md index ab068e2e3b205c..7db40c407bf53c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barre d’outils comporte les éléments suivants : | Icône | Nom | Description | | ------------------------------------------------ | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Exécuter le formulaire | Permet de tester l’exécution du formulaire. Lorsque vous cliquez sur ce bouton, 4D ouvre une nouvelle fenêtre et affiche le formulaire dans son contexte (liste d’enregistrements pour un formulaire liste et enregistrement courant en page pour un formulaire détaillé). Le formulaire est exécuté dans le process principal. | -| ![](../assets/en/FormEditor/selection.png) | [Outil de sélection](#selecting-objects) | Permet la sélection, le déplacement et le redimensionnement des objets de formulaire.

    **Note** : Lorsqu'un objet de type Texte ou Box Groupe est sélectionné, appuyez sur la touche **Entrée** pour passer en mode édition.

    | +| ![](../assets/en/FormEditor/selection.png) | [Outil de sélection](#selecting-objects) | Permet la sélection, le déplacement et le redimensionnement des objets de formulaire.
    **Note** : Lorsqu'un objet de type Texte ou Box Groupe est sélectionné, appuyez sur la touche **Entrée** pour passer en mode édition. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordre de saisie](#data-entry-order) | Passe en mode “Ordre de saisie”, dans lequel il est possible de visualiser et de modifier l’ordre de saisie courant du formulaire. A noter que vous pouvez également visualiser l’ordre de saisie courant tout en travaillant dans le formulaire. | | ![](../assets/en/FormEditor/moving.png) | [Déplacement](#déplacement-objets) | Passe en mode “Déplacement”, dans lequel il est possible d’atteindre rapidement n’importe quelle partie du formulaire en le faisant directement glisser dans la fenêtre. Le curseur prend la forme d’une main. Ce mode de navigation est particulièrement utile en cas de zoom dans le formulaire. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permet de modifier l’échelle d’affichage du formulaire (100% par défaut). Vous pouvez passer en mode “Zoom” en cliquant sur le bouton loupe ou en cliquant directement sur la barre correspondant à l’échelle désirée. Cette fonction est détaillée dans le paragraphe précédent. | @@ -146,18 +146,18 @@ Avant de pouvoir réaliser une opération sur un objet (comme le changement de l Pour sélectionner un objet à l’aide de la barre d’outils : -1. Cliquez sur l'outil Flèche dans la barre d'outils.

    ![](../assets/en/FormEditor/selection.png)

    +1. Cliquez sur l'outil Flèche dans la barre d'outils.
    ![](../assets/en/FormEditor/selection.png) -

    Lorsque vous le faites glisser au-dessus du formulaire, le pointeur prend la forme du pointeur standard

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Cliquez sur l’objet que vous souhaitez sélectionner. Les poignées de redimensionnement identifient l'objet sélectionné.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Cliquez sur l’objet que vous souhaitez sélectionner. Les poignées de redimensionnement identifient l'objet sélectionné.
    ![](../assets/en/FormEditor/selectResize.png) Pour sélectionner un objet à l’aide de la Liste des propriétés : 1. Sélectionnez le nom de l’objet dans la liste de sélection située en haut de la palette. De cette manière, vous pouvez sélectionner un objet masqué par d’autres objets ou situé en-dehors des limites de la fenêtre. Pour désélectionner un objet, cliquez hors de ses limites ou cliquez dessus en maintenant la touche **Majuscule** enfoncée. -> Il est également possible de sélectionner des objets en double-cliquant dans la fenêtre de résultat d’une recherche globale. +> It is also possible to select objects by double-clicking them in the result window of "Find in design" operation. ### Sélection de plusieurs objets @@ -241,13 +241,13 @@ Pour grouper les objets : 1. Sélectionnez les objets que vous souhaitez grouper. 2. Sélectionnez **Grouper** dans le menu Objets. OU - Cliquez sur le bouton Grouper dans la barre d'outils de l'éditeur de formulaire:

    ![](../assets/en/FormEditor/group.png)

    + Cliquez sur le bouton Grouper dans la barre d'outils de l'éditeur de formulaire:
    ![](../assets/en/FormEditor/group.png) 4D indique la limite des objets regroupés nouvellement avec des poignées. Les objets du groupe ne sont plus marqués séparément par des poignées. Désormais, lorsque vous modifiez le groupe d’objets, vous modifiez tous les objets qui le composent. Pour dégrouper un groupe d’objets : 1. Sélectionnez le groupe que vous souhaitez dégrouper. -2. Choisissez **Dégrouper** dans le menu **Objet**.

    OU

    Cliquez sur le bouton **Dégrouper** (variante du bouton **Groupe**) dans la barre d'outils de l'éditeur de formulaire.

    Si **Ungroup** est estompé, cela signifie que l'objet sélectionné est déjà séparé dans sa forme la plus simple.

    4D marque les limites des objets individuels avec des poignées. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. ### Aligner des objets @@ -275,9 +275,9 @@ La boîte de dialogue d’alignement vous permet d’appliquer tout type d’ali Pour afficher cette boîte de dialogue, vous devez sélectionner les objets que vous souhaitez aligner puis choisir la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. -- Dans les zones “Alignement droite/gauche” et/ou “Alignement haut/bas”, cliquez sur l’icône correspondant à l'alignement que vous souhaitez effectuer.

    La zone d'exemple affiche les résultats de votre sélection.

    +- Dans les zones “Alignement droite/gauche” et/ou “Alignement haut/bas”, cliquez sur l’icône correspondant à l'alignement que vous souhaitez effectuer.
    La zone d'exemple affiche les résultats de votre sélection. -- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OU:

    Pour aligner les objets sur un objet spécifique, sélectionnez l'option **Aligner sur** et sélectionnez l'objet sur lequel vous voulez que les autres objets soient alignés dans la liste d'objets. Dans ce cas, la position de l’objet de référence ne variera pas.

    +- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OU:
    Pour aligner les objets sur un objet spécifique, sélectionnez l'option **Aligner sur** et sélectionnez l'objet sur lequel vous voulez que les autres objets soient alignés dans la liste d'objets. Dans ce cas, la position de l’objet de référence ne variera pas. Vous pouvez prévisualiser le résultat réel de vos paramétrages en cliquant sur le bouton **Prévisualisation**. Les objets sont ensuite alignés dans l'éditeur de formulaires, mais comme la boîte de dialogue ne disparaît pas, vous pouvez toujours annuler ou appliquer l'alignement. @@ -314,7 +314,8 @@ Pour répartir directement une sélection d’objets (verticalement ou horizonta 1. Sélectionnez les objets (au moins trois) que vous souhaitez répartir. -2. Dans la barre d'outils, cliquez sur l'outil de distribution qui correspond à la distribution que vous souhaitez appliquer.

    ![](../assets/en/FormEditor/distributionTool.png)

    OU

    Sélectionnez une commande de distribution dans le sous-menu **Aligner** du menu **Objet** ou dans le menu contextuel de l'éditeur.

    4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et répartition : @@ -322,9 +323,9 @@ Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et r 2. Choisissez la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. La boîte de dialogue suivante apparaît :![](../assets/en/FormEditor/alignmentAssistant.png) -3. Dans les zones Alignement gauche/droite et/ou haut/bas, cliquez sur l'icône de distribution standard : ![](../assets/en/FormEditor/horizontalDistribution.png)

    (icône standard de distribution horizontale)

    La zone d'exemple affiche les résultats de votre sélection. +3. Dans les zones Alignement gauche/droite et/ou haut/bas, cliquez sur l'icône de distribution standard : ![](../assets/en/FormEditor/horizontalDistribution.png)
    (icône standard de distribution horizontale)
    La zone d'exemple affiche les résultats de votre sélection. -4. Pour effectuer une distribution qui utilise le schéma standard, cliquez sur **Aperçu** ou *Appliquer*.

    Dans ce cas, 4D effectuera une distribution standard, de sorte que les objets soient répartis avec une quantité d'espace égale entre eux.

    OU :

    Pour exécuter une distribution spécifique, sélectionnez l'option **Distribuer** (par exemple, si vous souhaitez distribuer les objets en fonction de la distance par rapport à leur côté droit). Cette option agit comme un interrupteur. Si la case à cocher Répartir est sélectionnée, les icônes situées en dessous effectuent une fonction différente:

    +4. Pour effectuer une distribution qui utilise le schéma standard, cliquez sur **Aperçu** ou *Appliquer*.
    Dans ce cas, 4D effectuera une distribution standard, de sorte que les objets soient répartis avec une quantité d'espace égale entre eux.
    OU :
    Pour exécuter une distribution spécifique, sélectionnez l'option **Distribuer** (par exemple, si vous souhaitez distribuer les objets en fonction de la distance par rapport à leur côté droit). Cette option agit comme un interrupteur. Si la case à cocher Répartir est sélectionnée, les icônes situées en dessous effectuent une fonction différente:
    - Horizontalement, les icônes correspondent aux répartitions suivantes : équidistance des côtés gauches, des centres (hor.) et des côtés droits des objets sélectionnés. - Verticalement, les icônes correspondent aux répartitions suivantes : équidistance des bords supérieurs, des centres (vert.) et des bords inférieurs des objets sélectionnés. @@ -379,11 +380,11 @@ Ce paragraphe décrit la visualisation et la modification de l’ordre de saisie Pour visualiser ou modifier l’ordre de saisie : -1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :
    ![](../assets/en/FormEditor/zOrder.png)
    Le pointeur prend la forme d’un pointeur d’ordre, et 4D dessine une ligne qui permet de visualiser la séquence de l’ordre de saisie courant. Visualiser et modifier l’ordre de saisie sont les seules opérations que vous pouvez réaliser dans ce mode. -2. Pour changer l’ordre de saisie, positionnez le pointeur sur un objet dans le formulaire et, tout en maintenant le bouton de la souris enfoncé, faites glisser le pointeur vers l'objet que vous souhaitez ensuite dans l'ordre de saisie des données.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D ajustera automatiquement l'ordre de saisie. +2. Pour changer l’ordre de saisie, positionnez le pointeur sur un objet dans le formulaire et, tout en maintenant le bouton de la souris enfoncé, faites glisser le pointeur vers l'objet que vous souhaitez ensuite dans l'ordre de saisie des données.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D ajustera automatiquement l'ordre de saisie. 3. Répétez l’étape 2 autant de fois que nécessaire pour obtenir le nouvel ordre de saisie. 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 aa94b2fc1eac72..b4c8d0fc186071 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/forms.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/forms.md @@ -96,72 +96,80 @@ Il n'y a aucune restriction sur le nombre de pages qu'un formulaire peut conteni Un formulaire multi-pages contient à la fois une page d'arrière-plan et plusieurs pages d'affichage. Les objets placés sur la page d'arrière-plan peuvent être visibles sur toutes les pages d'affichage, mais il ne peuvent être sélectionnés et modifiés que sur la page d'arrière-plan. Dans les formulaires multi-pages, vous devez placer votre palette de boutons sur la page d'arrière-plan. Vous devez également inclure un ou plusieurs objets sur la page d'arrière-plan qui fournissent à l'utilisateur des outils de navigation de page. -## Fluent UI rendering (Developer Preview) +## Rendu Fluent UI (Developer Preview) -On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +Sous Windows, 4D prend en charge le rendu de formulaire **Fluent UI**, l'interface utilisateur graphique moderne de Microsoft, basée sur la technologie **WinUI 3**. **WinUI 3** est la base du Windows App SDK et représente les prochaines interfaces graphiques de Windows. + +Le rendu Fluent UI offre des contrôles modernes et agréables, la prise en charge des thèmes système dark/light, un rendu plus fluide optimisé pour les écrans haute résolution et une expérience utilisateur cohérente alignée sur les applications Microsoft récentes. + +| Thème clair | Thème sombre | +| --------------------------------------- | -------------------------------------------- | +| ![](../assets/en/FormEditor/fluent.png) | ![](../assets/en/FormEditor/fluent-dark.png) | :::caution Developer Preview -Fluent UI support is currently in the Developer Preview phase. Il ne doit pas être utilisé en production. +La prise en charge de Fluent UI est actuellement en phase d'aperçu pour les développeurs. Il ne doit pas être utilisé en production. ::: :::info macOS -This feature can only be used on Windows. On macOS, it is ignored. +Cette fonctionnalité ne peut être utilisée que sous Windows. Sous macOS, elle est ignorée. ::: -### Fluent UI rendering availability +:::tip Article(s) de blog sur le sujet -The Fluent UI rendering is available in the following execution environments only: +[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- Application 4D fusionnée [autonome](../Desktop/building.md#build-stand-alone-application) ou [cliente](../Desktop/building.md#build-client-application) -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +::: -:::note +### Conditions requises -If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. +The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms. -::: +Si le Windows App SDK n'est pas correctement installé, 4D utilisera le rendu classique pour vos formulaires sans erreur. -### Enabling the Fluent UI rendering +### Activer le rendu Fluent UI -You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. +Vous pouvez activer le mode de rendu Fluent UI au niveau de l'application ou au niveau du formulaire. Le paramétrage du formulaire a la priorité par rapport aux paramètres de l'application. -#### Application setting +#### Paramètres de l'application -Check the **Use Fluent UI on Windows** option in the "Interface" page of the Settings dialog box. +Cochez l'option **Utiliser Fluent UI sous Windows** dans la page "Interface" de la boîte de dialogue des Propriétés. ![](../assets/en/FormObjects/fluentui-setting.png) -In this case, the Fluent UI rendering mode will be used by default on Windows for all forms. +Dans ce cas, le mode de rendu Fluent UI sera utilisé par défaut sur Windows pour tous les formulaires. -#### Form setting +#### Paramètres du formulaire -Each form can define its own rendering via the **Widget appearance** property. Les options suivantes sont disponibles : +Chaque formulaire peut définir son propre rendu via la propriété **Apparence des contrôles**. Les options suivantes sont disponibles : -- **Inherited**: inherits the global application setting (default), -- **Classic**: uses the classic Windows style, -- **Fluent UI**: enables the modern rendering based on Fluent UI.
    +- **Hérité** : hérite des propriétés globales de l'application (par défaut), +- **Classic** : utilise le style classique de Windows, +- **Fluent UI** : active le rendu moderne basé sur Fluent UI.
    ![](../assets/en/FormObjects/fluentui-form.png) -The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". +La [propriété de formulaire JSON](./properties_JSONref.md) correspondante est `fluentUI` avec la valeur undefined (i.e. hérité, valeur par défaut), "true" ou "false". -### Features and limitations +### Specific behaviors -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. +Lorsque vous utilisez les formulaires 4D avec le rendu Fluent UI, vous devez prêter attention aux points suivants : -When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: +- The new `FORM Windows theme` command returns the actual display theme of the current form. Valeurs possibles : "Classic" ou "FluentUI". S'il n'y a pas de formulaire courant ou si la commande est appelée sous macOS, une chaîne vide est renvoyée. +- Si [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) est appelée dans le contexte d'un formulaire, les informations renvoyées concernent l'apparence courante du formulaire (Classic ou FluentUI). Si la commande est appelée en dehors du contexte d'un formulaire, les informations renvoyées concernent les [propriétés globales du projet](#application-setting). +- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) avec le paramètre *itemStyle* `Underline` n'est pas pris en charge (ignoré) pour les menus pop up. +- L'objet de formulaire [Stepper](../FormObjects/stepper.md) ne prend pas en charge l'événement [double-clic](../Events/onDoubleClicked.md). +- Les [boutons circulaires](../FormObjects/button_overview.md#circle) sont pris en charge (comme sur macOS). +- Les commandes [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) ne sont pas prises en charge dans les zones Web avec moteur de rendu système. +- Un rectangle de focus peut être ajouté aux [zones de saisie](../FormObjects/input_overview.md) image et texte. -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. -- If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). -- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). -- [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). -- [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). -- The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +:::info Limitations + +This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: ## Formulaires hérités diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/properties_FormSize.md b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/properties_FormSize.md index 6ab25ecd64f45e..f7d879c24c7fac 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/properties_FormSize.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/FormEditor/properties_FormSize.md @@ -11,15 +11,15 @@ Les options de taille dépendent de la valeur de l'option **Taille basée sur**. ## Taille basée sur -- **Automatic Size**: The size of the form will be that necessary to display all the objects, to which will be added the margin values (in pixels) entered in the [**Hor Margin**](#hor-margin) and [**Vert Margin**](#vert-margin) fields. +- **Taille automatique** : La taille du formulaire sera celle nécessaire à l'affichage de tous les objets, à laquelle s'ajouteront les valeurs de marge (en pixels) saisies dans les champs [**Marge hor.**](#hor-margin) et [**Marge vert.**](#vert-margin). Vous pouvez choisir cette option lorsque vous souhaitez utiliser des objets actifs placés dans une zone hors écran (c'est-à-dire en dehors du rectangle de délimitation de la fenêtre) avec une fenêtre de taille automatique. Grâce à cette option, la présence de ces objets ne modifiera pas la taille de la fenêtre. -- **Set Size**: The size of the form will be based on what you enter (in pixels) in the [**Width**](#width) and [**Height**](#height) fields. +- **Fixer taille** : La taille du formulaire sera basée sur ce que vous entrez (en pixels) dans les champs [**Largeur**](#width) and [**Hauteur**](#height). -- `\`: The size of the form will be based on the position of the selected form object. Par exemple, si vous choisissez un objet qui est placé dans la partie inférieure droite de la zone à afficher, la taille du formulaire sera constituée d'un rectangle dont le coin supérieur gauche sera l'origine du formulaire et le coin inférieur droit correspondra à celle de l'objet sélectionné, plus les éventuelles valeurs de marge. +- `` : La taille du formulaire sera basée sur la position de l'objet du formulaire sélectionné. Par exemple, si vous choisissez un objet qui est placé dans la partie inférieure droite de la zone à afficher, la taille du formulaire sera constituée d'un rectangle dont le coin supérieur gauche sera l'origine du formulaire et le coin inférieur droit correspondra à celle de l'objet sélectionné, plus les éventuelles valeurs de marge. -> For output forms, only the [**Hor margin**](#hor-margin) or [**Width**](#width) fields are available. +> Pour les formulaires de sortie, seuls les champs [**Marge hor.**](#hor-margin) ou [**Largeur**](#width) sont disponibles. #### Grammaire JSON @@ -43,7 +43,7 @@ Hauteur du formulaire (en pixels) lorsque la [taille du formulaire](#size-based- ## Marge hor. -Valeur à ajouter (en pixels) à la marge droite du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\` +Valeur à ajouter (en pixels) à la marge droite du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\` Cette valeur détermine également les marges droites des formulaires utilisés dans l'éditeur d'étiquettes. @@ -57,7 +57,7 @@ Cette valeur détermine également les marges droites des formulaires utilisés ## Marge hor. -Value to add (in pixels) to the bottom margin of the form when the [form size](#size-based-on) is **Automatic size** or `\`. +Valeur à ajouter (en pixels) à la marge inférieure du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\`. Cette valeur détermine également les marges supérieures des formulaires utilisés dans l'éditeur d'étiquettes. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md b/i18n/fr/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md index 35f9af9007f7a2..d55a8a9d02a490 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md @@ -13,10 +13,10 @@ Deux modes de glisser-déposer sont proposés dans 4D : - Un mode **personnalisé**, dans lequel le glisser déclenche l'événement formulaire `Sur début glisser` dans le contexte de l'objet. Custom: In this mode, any drag operation performed on the object triggers the On Begin Drag form event in the context of the object. You then manage the drag action using a method. Ce mode vous permet de mettre en place des interfaces basées sur le glisser-déposer, y compris des interfaces qui ne déplacent pas nécessairement des données mais qui peuvent effectuer tout type d'action, telle que l'ouverture de fichiers ou le lancement d'un calcul. Ce mode est basé sur un ensemble de propriétés, d'événements et de commandes spécifiques à partir du thème `Conteneur de données`. -- Un mode **automatique**, dans lequel 4D **copie** du texte ou des images directement à partir de l'objet formulaire. Il peut alors être utilisé dans la même zone 4D, entre deux zones 4D, ou entre 4D et une autre application. Par exemple, le glisser-déposer automatique vous permet de copier une valeur entre deux champs sans utiliser de programmation : +- Un mode **automatique**, dans lequel 4D **copie** du texte ou des images directement à partir de l'objet formulaire. Il peut alors être utilisé dans la même zone 4D, entre deux zones 4D, ou entre 4D et une autre application. For example, automatic drag (and drop) lets you copy a value between two fields without using programming: ![](../assets/en/FormObjects/property_automaticDragDrop.png) - ![](../assets/en/FormObjects/property_automaticDragDrop2.png) - Dans ce mode, l'événement de formulaire `On Begin Drag` n'est PAS généré. Si vous souhaitez "forcer" l'utilisation du glissement personnalisé alors que le glissement automatique est activé, maintenez la touche **Alt** (Windows) ou **Option** (macOS) enfoncée pendant l'action. Cette option n'est pas disponible pour les images. + ![](../assets/en/FormObjects/property_automaticDragDrop2.png)
    + In this mode, the `On Begin Drag` form event is NOT generated. Si vous souhaitez "forcer" l'utilisation du glissement personnalisé alors que le glissement automatique est activé, maintenez la touche **Alt** (Windows) ou **Option** (macOS) enfoncée pendant l'action. Cette option n'est pas disponible pour les images. Pour plus d'informations, reportez-vous à [Glisser-déposer](https://doc.4d.com/4Dv20/4D/20.6/Drag-and-Drop.300-7487471.en.html) dans le manuel *Langage 4D*. @@ -191,15 +191,15 @@ Dans d'autres cas (list box basées sur des sélections nommées, colonnes assoc ## Action standard -Les actions types effectuées par les objets actifs (par exemple, permettre à l'utilisateur d'accepter, d'annuler ou de supprimer des enregistrements, de passer d'un enregistrement à l'autre ou d'une page à l'autre dans un formulaire à plusieurs pages, etc.) ont été prédéfinies par 4D comme des actions standard. Elles sont décrites en détail dans la section [Actions standard](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) du *manuel de développement*. +Les actions types effectuées par les objets actifs (par exemple, permettre à l'utilisateur d'accepter, d'annuler ou de supprimer des enregistrements, de passer d'un enregistrement à l'autre ou d'une page à l'autre dans un formulaire à plusieurs pages, etc.) ont été prédéfinies par 4D comme des actions standard. Elles sont décrites en détail dans la section [Actions standard](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) du *manuel de développement*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Vous pouvez associer à la fois une action standard et une méthode projet à un objet. Dans ce cas, l'action standard est généralement exécutée après la méthode et 4D utilise cette action pour activer/désactiver l'objet en fonction du contexte courant. Lorsqu’un objet est désactivé, la méthode projet associée ne peut être exécutée. #### Grammaire JSON -| Nom | Type de données | Valeurs possibles | -| ------ | --------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| action | string | Le nom d'une [action standard valide](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nom | Type de données | Valeurs possibles | +| ------ | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objets pris en charge diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/GettingStarted/Installation.md b/i18n/fr/docusaurus-plugin-content-docs/current/GettingStarted/Installation.md index 5f6e601f300fa6..d246dceb901e57 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/GettingStarted/Installation.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/GettingStarted/Installation.md @@ -7,7 +7,7 @@ Bienvenue dans 4D ! Cette page regroupe toutes les informations nécessaires sur ## Configuration requise -La page [Téléchargements](https://us.4d.com/product-download) dut site de 4D fournit des informations sur les pré-requis macOS / Windows nécessaires à la gamme 4D. +La page [Téléchargements](https://us.4d.com/product-download) du site de 4D fournit des informations sur les pré-requis macOS / Windows nécessaires à la gamme 4D. Des détails techniques supplémentaires sont disponibles sur la [page Ressources](https://us.4d.com/resources/feature-release) du site web de 4D. @@ -32,8 +32,8 @@ Apparaît ensuite l'assistant de bienvenue : - Si vous souhaitez découvrir et explorer 4D, cliquez sur le lien **essai gratuit**. Il vous sera demandé de vous connecter ou de créer un compte 4D. - Si vous possédez déjà un compte 4D, cliquez sur le lien **Se connecter** sur le côté supérieur droit de l'assistant d'installation et saisissez les informations relatives à votre compte. - - Any already activated 4D products are automatically updated (or additional expansion packs loaded) on your machine. - - If no product is activated on the machine but there is a development license associated with the 4D account, a dialog box appears, prompting you to install it directly. + - Tous les produits 4D déjà activés sont automatiquement mis à jour (ou des packs d'extension supplémentaires sont chargés) sur votre machine. + - Si aucun produit n'est activé sur la machine mais qu'une licence de développement est associée au compte 4D, une boîte de dialogue apparaît, vous proposant de l'installer directement. Élargissez la zone **Ouvrir ou créer un projet d'application** et sélectionnez l'action que vous souhaitez exécuter : 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 6ef10ae1658572..18c1e9996dd119 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -44,7 +44,7 @@ Le [rendu **Fluent UI** pour les formulaires 4D](../FormEditor/forms.md#fluent-u - Serveur web : la prise en charge des URLs dépréciés `4DSYNC/` et `4DCGI/` est supprimée. Plus aucun traitement spécifique n'est effectué sur ces URLs. - Les sessions utilisateurs Web sont désormais renvoyées par [`Process activity`](../commands/process-activity.md). - La commande [`HIGHLIGHT TEXT`](../commands/highlight-text) est maintenant prise en charge dans le contexte des sous-formulaires. -- **Les composants ne sont plus intégrés** : à partir de 4D 21, les composants développés par 4D (4D NetKit, 4D SVG..., voir [cette liste](../Extensions/overview-old.md)) ne sont plus intégrés dans l'application 4D. Lors de la mise à jour d'un projet vers 4D 21 ou supérieur, une boîte de dialogue s'affiche :
    +- **Les composants ne sont plus intégrés** : à partir de 4D 21, les composants développés par 4D (4D NetKit, 4D SVG..., voir [cette liste](../Extensions/overview.md#components-developed-by-4d)) ne sont plus intégrés dans l'application 4D. Lors de la mise à jour d'un projet vers 4D 21 ou supérieur, une boîte de dialogue s'affiche :
    ![alt-text](../assets/en/getStart/convert.png)
    \- **Import**/**Importer** : importer automatiquement les composants 4D comme dépendances du projet
    \- **Ignore**/**Ignorer** : ne pas importer les composants et vous laisser [gérer les composants manuellement](../Project/components.md)
    @@ -100,6 +100,7 @@ Dans les bases de données binaires, vous devez sélectionner les composants req - Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. - Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. - Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). +- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. #### Developer Preview @@ -157,6 +158,34 @@ In binary databases, you need to select the required components in the 4D instal ::: +#### Developer Preview + +Le [rendu **Fluent UI** pour les formulaires 4D](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) est proposé en Developer Preview pendant le programme de bêta-test. + +#### Changements de comportement + +:::caution Reconstruction d'index + +4D 21 inclut une mise à jour de la bibliothèque ICU ([voir ci-dessous](#library-table)) qui forcera une reconstruction automatique des index de type alpha, texte et objet. En fonction de la taille du fichier de données, cette opération peut prendre un certain temps et nécessiter une planification. + +::: + +- Services web (SOAP) : lorsque les [sessions évolutives](../WebServer/sessions.md#enabling-web-sessions) sont activées, les services web s'exécutent désormais dans des [**process préemptifs**](../Develop/preemptive.md) en mode compilé. Assurez-vous que votre code SOAP est thread-safe. +- Serveur web : la prise en charge des URLs dépréciés `4DSYNC/` et `4DCGI/` est supprimée. Plus aucun traitement spécifique n'est effectué sur ces URLs. +- Les sessions utilisateurs Web sont désormais renvoyées par [`Process activity`](../commands/process-activity.md). +- La commande [`HIGHLIGHT TEXT`](../commands/highlight-text) est maintenant prise en charge dans le contexte des sous-formulaires. +- **Les composants ne sont plus intégrés** : à partir de 4D 21, les composants développés par 4D (4D NetKit, 4D SVG..., voir [cette liste](../Extensions/overview-old.md)) ne sont plus intégrés dans l'application 4D. Lors de la mise à jour d'un projet vers 4D 21 ou supérieur, une boîte de dialogue s'affiche :
    + ![alt-text](../assets/en/getStart/convert.png)
    + \- **Import**/**Importer** : importer automatiquement les composants 4D comme dépendances du projet
    + \- **Ignore**/**Ignorer** : ne pas importer les composants et vous laisser [gérer les composants manuellement](../Project/components.md)
    + \- **Ask later**/**Redemander** : ne pas importer les composants et afficher la boîte de dialogue lors de la prochaine ouverture du projet. + +:::note + +Dans les bases de données binaires, vous devez sélectionner les composants requis dans le programme d'installation de 4D ou les télécharger à partir du [portail de téléchargement des produits 4D](https://product-download.4d.com/?type=components). + +::: + ## 4D 20 R10 Lisez [**Les nouveautés de 4D 20 R10**](https://blog.4d.com/fe-whats-new-in-4d-20-R10/), l'article de blog qui liste toutes les nouvelles fonctionnalités et améliorations de 4D 20 R10. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/client-server-optimization.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/client-server-optimization.md index 5cc95b6062eb55..090b1b0011716a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/client-server-optimization.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/client-server-optimization.md @@ -3,7 +3,7 @@ id: client-server-optimization title: Optimisation client/serveur --- -4D optimise automatiquement les requêtes ORDA qui utilisent des entity selections ou chargent des entités dans l'architecture client/serveur. Ces optimisations accélèrent l'exécution de votre application 4D en réduisant drastiquement le volume d'informations transmises sur le réseau. Elles incluent : +En architecture client/serveur, 4D optimise automatiquement les requêtes ORDA qui utilisent des entity selections ou chargent des entités. Ces optimisations accélèrent l'exécution de votre application 4D en réduisant drastiquement le volume d'informations transmises sur le réseau. Elles incluent : - le **contexte d'optimisation** - le **Cache ORDA** @@ -27,7 +27,7 @@ Le contexte d'optimisation est fondé sur ce qui suit : - [`dataClass.query()`](../API/DataClassClass.md#query) - [`entitySelection.query()`](../API/EntitySelectionClass.md#query) -- Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. L'affichage des lignes suivantes est optimisé. Les fonctions suivantes associent automatiquement le contexte d'optimisation de l'entity selection d'origine à l'entity selection retournée : +- Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. Par exemple, dans une [list box de type entity selection](#entity-selection-based-list-box), la phase d'apprentissage a lieu pendant l'affichage de la première ligne. L'affichage des lignes suivantes est optimisé. Les fonctions suivantes associent automatiquement le contexte d'optimisation de l'entity selection d'origine à l'entity selection retournée : - [`entitySelection.and()`](../API/EntitySelectionClass.md#and) - [`entitySelection.minus()`](../API/EntitySelectionClass.md#minus) - [`entitySelection.or()`](../API/EntitySelectionClass.md#or) @@ -35,7 +35,7 @@ Le contexte d'optimisation est fondé sur ce qui suit : - [`entitySelection.slice()`](../API/EntitySelectionClass.md#slice) - [`entitySelection.drop()`](../API/EntitySelectionClass.md#drop) -- An existing optimization context can be passed as a property to another entity selection of the same dataclass, thus bypassing the learning phase and accelerating the application (see [Reusing the context property](#reusing-the-context-property) below). +- Un contexte d'optimisation existant peut être passé en tant que propriété à une autre entity selection de la même dataclass, ce qui permet d'économiser la phase d'apprentissage et d'accélérer l'application (voir [Réutilisation de la propriété context](#reusing-the-context-property) ci-dessous). - Vous pouvez créer des contextes d'optimisation manuellement à l'aide de la fonction [`dataStore.setRemoteContextInfo()`](../API/DataStoreClass.md#setremotecontextinfo) (voir [Préconfiguration des contextes](#preconfiguring-contexts)). @@ -66,7 +66,7 @@ Vous pouvez augmenter les avantages de l'optimisation en utilisant la propriét > Vous pouvez également créer des contextes en utilisant la fonction [`.setRemoteContextInfo()`](../API/DataStoreClass.md#setremotecontextinfo). -Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Il est toutefois important de garder à l'esprit qu'un contexte est automatiquement mis à jour lorsque de nouveaux attributs sont utilisés dans d'autres parties du code. Si le même contexte est réutilisé dans différents codes, il risque d'être surchargé et de perdre en efficacité. +Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Toutes les fonctions ORDA qui gèrent les entity selections prennent en charge la propriété **context** (par exemple [`dataClass.query()`](../API/DataClassClass.md#query) ou [`dataClass.all()`](../API/DataClassClass.md#all)). Il est toutefois important de garder à l'esprit qu'un contexte est automatiquement mis à jour lorsque de nouveaux attributs sont utilisés dans d'autres parties du code. Si le même contexte est réutilisé dans différents codes, il risque d'être surchargé et de perdre en efficacité. > Un mécanisme similaire est implémenté pour les entités qui sont chargées, de sorte que seuls les attributs utilisés sont demandés (voir la fonction [`dataClass.get()`](../API/DataClassClass.md#get)). @@ -77,22 +77,22 @@ Une même propriété de contexte d'optimisation peut être passée à un nombre var $data : Collection $querysettings:=New object("context";"shortList") $querysettings2:=New object("context";"longList") - + $sel1:=ds.Employee.query("lastname = S@";$querysettings) - $data:=extractData($sel1) // In extractData method an optimization is triggered - // and associated to context "shortList" - + $data:=extractData($sel1) // dans la méthode extractData un contexte d'optimisation + // est généré et associé au contexte "shortList" + $sel2:=ds.Employee.query("lastname = Sm@";$querysettings) - $data:=extractData($sel2) // In extractData method the optimization associated - // to context "shortList" is applied - + $data:=extractData($sel2) // dans la méthode extractData le contexte d'optimisation + // associé au contexte "shortList" est appliqué + $sel3:=ds.Employee.query("lastname = Smith";$querysettings2) - $data:=extractDetailedData($sel3) // In extractDetailedData method an optimization - // is triggered and associated to context "longList" - + $data:=extractDetailedData($sel3) // dans la méthode extractDetailedData un contexte d'optimisation + // est généré et associé au contexte "longList" + $sel4:=ds.Employee.query("lastname = Brown";$querysettings2) - $data:=extractDetailedData($sel4) // In extractDetailedData method the optimization - // associated to context "longList" is applied + $data:=extractDetailedData($sel4) // dans extractDetailedData le contexte d'optimisation + // associé au contexte "longList" est appliqué ``` ### List box de type entity selection @@ -133,7 +133,7 @@ Pour des raisons d'optimisation, les données demandées au serveur via ORDA son Les données contenues dans le cache sont considérées comme expirées lorsque le délai d'attente est atteint. Tout accès à des données périmées provoquera l'envoi d'une requête au serveur. Les données périmées restent dans le cache jusqu'à ce que l'on ait besoin d'espace. -You can force entity selection data in the ORDA cache to expire at any moment by using the [`refresh()`](../API/EntitySelectionClass.md#refresh) function. +Vous pouvez forcer les données de sélection d'entité dans le cache ORDA à expirer à tout moment en utilisant la fonction [`refresh()`](../API/EntitySelectionClass.md#refresh). Par défaut, le cache ORDA est géré de manière transparente par 4D. Cependant, vous pouvez contrôler son contenu en utilisant les fonctions ORDA suivantes : diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/dsMapping.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/dsMapping.md index 15c307c47cc3e3..f6ec06c336527b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/dsMapping.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/dsMapping.md @@ -3,15 +3,15 @@ id: dsmapping title: Objets du modèle de données --- -The ORDA technology is based upon an automatic mapping of an underlying [database structure](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Elle permet également d'accéder aux données via des objets sélection d'entités (entity selection) et entité (entity). Par conséquent, ORDA expose la base de données entière comme un ensemble d'objets de modèle de données. +La technologie ORDA est basée sur une correspondance automatique d'une [structure de base de données](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html) sous-jacente. Elle permet également d'accéder aux données via des objets sélection d'entités (entity selection) et entité (entity). Par conséquent, ORDA expose la base de données entière comme un ensemble d'objets de modèle de données. ## Correspondance de la structure Lorsque vous appelez un datastore à l'aide de la commande [`ds`](commands/ds.md) ou [`Open datastore`](commands/open-datastore.md), 4D référence automatiquement les tables et les champs de la structure 4D correspondante en tant que propriétés de l'objet [datastore](#datastore) renvoyé : -- Tables are mapped to [dataclasses](#dataclass). -- Fields are mapped to [storage attributes](#storage-and-relation-attributes). -- Relations are mapped to [relation attributes](#storage-and-relation-attributes) - relation names, defined in the [Structure editor](https://doc.4d.com/4Dv20/4D/20.2/Creating-and-modifying-relations.300-6750296.en.html), are used as relation attribute names. +- Les tables correspondent à des [dataclasses](#dataclass). +- Les champs correspondent à des [attributs de stockage](#storage-and-relation-attributes). +- Les liens correspondent à des [attributs relationnels](#storage-and-relation-attributes) - les noms des liens, définis dans l'[éditeur de structure](https://doc.4d.com/4Dv20/4D/20.2/Creating-and-modifying-relations.300-6750296.en.html), sont utilisés comme noms d'attributs de relation. ![](../assets/en/ORDA/datastoreMapping.png) @@ -19,7 +19,7 @@ Lorsque vous appelez un datastore à l'aide de la commande [`ds`](commands/ds.md Les règles suivantes s'appliquent à toutes les conversions : -- Les noms de table, de champ et de relation correspondent à des noms de propriété d'objet. Assurez-vous que ces noms sont conformes aux règles générales de dénomination des objets, comme expliqué dans la section [Conventions de dénomination des objets](Concepts/identifiers.md). +- Les noms de table, de champ et de relation correspondent à des noms de propriété d'objet. Assurez-vous que ces noms sont conformes aux règles générales de dénomination des objets, comme expliqué dans la section [consacrée aux identifiants](Concepts/identifiers.md). - Un datastore ne référence que les tables avec une seule clé primaire. Les tables suivantes ne sont pas référencées : - Tables sans clé primaire - Tables avec clés primaires composites. @@ -28,12 +28,12 @@ Les règles suivantes s'appliquent à toutes les conversions : > La correspondance ORDA ne prend pas en compte : > > - l'option "Invisible" pour les tables ou les champs, -> - the virtual structure defined through [`SET TABLE TITLES`](../commands-legacy/set-table-titles.md) or [`SET FIELD TITLES`](../commands-legacy/set-field-titles.md), +> - la structure virtuelle définie par [`SET TABLE TITLES`](../commands-legacy/set-table-titles.md) et [`SET FIELD TITLES`](../commands-legacy/set-field-titles.md), > - la propriété "manuelle" ou "automatique" des relations. ### Règles de contrôle d'accès à distance -Lorsque vous accédez à un datastore distant via la commande `Ouvrir datastore` ou des [requêtes REST](REST/gettingStarted.md), seules les tables et les champs avec la propriété de ressource **Expose as REST resource** sont disponibles à distance. +Lorsque vous accédez à un datastore distant via la commande `Open datastore` ou des [requêtes REST](REST/gettingStarted.md), seuls les tables et les champs avec la propriété **Exposer avec le service REST** sont disponibles à distance. Cette option doit être choisie au niveau de la structure 4D pour chaque table et chaque champ que vous souhaitez voir apparaître comme dataclass et attribut dans le datastore : @@ -47,12 +47,12 @@ Toute modification apportée à la structure de la base invalide la couche coura - le renommage d'une table, d'un champ ou d'une relation - la modification d'une propriété principale d'un champ (type, unique, index, autoincrement, valeur null) -Lorsque la couche courante de données ORDA est invalidée, elle est automatiquement rechargée et mise à jour dans les prochains appels du datastore local `ds` vers 4D et 4D Server. A noter que les références existantes vers des objets ORDA tels que des entités ou des sélections d'entités continueront d'utiliser les données à partir desquelles elles ont été créées, et ce jusqu'à ce qu'elles soient regénérées. +Lorsque le modèle ORDA courant est invalidé, il est automatiquement rechargé et mis à jour dans les appels ultérieurs du datastore local `ds` sur 4D et 4D Server. A noter que les références existantes vers des objets ORDA tels que des entités ou des sélections d'entités continueront d'utiliser les données à partir desquelles elles ont été créées, et ce jusqu'à ce qu'elles soient regénérées. -Toutefois, la couche de données ORDA mise à jour n'est pas automatiquement disponible dans les contextes suivants : +Toutefois, le modèle de données ORDA mis à jour n'est pas automatiquement disponible dans les contextes suivants : - une application 4D distante connectée à 4D Server -- l'application distante doit être reconnectée au serveur. -- un datastore distant ouvert à l'aide de `Ouvrir datastore` ou des [appels REST](REST/gettingStarted.md) -- une nouvelle session doit être ouverte. +- un datastore distant ouvert à l'aide de `Open datastore` ou des [appels REST](REST/gettingStarted.md) -- une nouvelle session doit être ouverte. ## Définitions des objets @@ -63,14 +63,14 @@ Un datastore est l'objet d'interface d'une base de données. Il crée une repré - Le modèle contient et décrit toutes les dataclasses qui composent le datastore. Il est indépendant de la base de données sous-jacente. - Les données se réfèrent à l'information qui va être utilisée et stockée dans ce modèle. Par exemple, les noms, adresses et dates de naissance des employés sont des éléments de données que vous pouvez utiliser dans un datastore. -A datastore object is handled through functions and properties of the [**DataStore**](../API/DataStoreClass.md) class. +Un objet datastore est géré par les fonctions et les propriétés de la classe [**DataStore**](../API/DataStoreClass.md). Lorsqu'il est géré via le code, le datastore est un objet dont les propriétés sont toutes les [dataclasses](#dataclass) ayant été spécifiquement exposées. -4d vous permet de gérer les datastores suivants : +4D vous permet de gérer les datastores suivants : - le datastore local, fondé sur la base 4D courante, retourné par la commande `ds` (le datastore principal). -- un ou plusieurs datastores distants, exposés en tant que ressources RESET dans des bases 4D distantes, retournés par la commande `Ouvrir datastore`. +- un ou plusieurs datastores distants, exposés en tant que ressources RESET dans des bases 4D distantes, retournés par la commande `Open datastore`. Un datastore ne référence qu'une seule base de données locale ou distante. @@ -88,21 +88,21 @@ Les propriétés du datastore sont toutefois énumérables : //$prop contient les noms de toutes les dataclasses ``` -Le datastore principal (par défaut) est toujours disponible via la commande `ds`, mais la commande `Ouvrir datastore` permet de référencer n'importe quel datastore distant. +Le datastore principal (par défaut) est toujours disponible via la commande `ds`, mais la commande `Open datastore` permet de référencer n'importe quel datastore distant. ### Dataclass Une dataclasse est l'équivalent d'une table. Elle est utilisée comme modèle d'objet et référence tous les champs comme attributs, y compris les attributs relationnels (attributs construits à partir des relations entre les dataclasses). Les attributs relationnels peuvent être utilisés dans les requêtes comme tout autre attribut. -A dataclass object is handled through functions and properties of the [**DataClass**](../API/DataClassClass.md) class. +Un objet dataclass est géré par les fonctions et les propriétés de la classe [**DataClass**](../API/DataClassClass.md). -Toutes les dataclasses d'un projet 4D sont disponibles en tant que propriété du datastore `ds`. Pour les datastores distants accédés via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer comme ressource REST** doit être sélectionnée au niveau de la structure 4D pour chaque table que vous souhaitez exposer en tant que dataclass du datastore. +Toutes les dataclasses d'un projet 4D sont disponibles en tant que propriété du datastore `ds`. Pour les datastores distants accédés via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer avec le service REST** doit être sélectionnée au niveau de la structure 4D pour chaque table que vous souhaitez exposer en tant que dataclass du datastore. Par exemple, considérons cette table dans la structure suivante : ![](../assets/en/ORDA/companyTable.png) -La table `Company` est automatiquement disponible en tant que dataclasse dans la banque de données `ds`. Vous pouvez écrire : +La table `Company` est automatiquement disponible en tant que dataclass dans le datastore `ds`. Vous pouvez écrire : ```4d var $compClass : cs.Company //déclare une variable objet $compClass de la classe Company @@ -111,7 +111,7 @@ $compClass:=ds.Company //affecte la référence de dataclasse Company à $compCl Un objet dataclass peut contenir : -- attributes +- des attributs - des attributs relationnels La dataclass offre une abstraction de la base de données physique et permet de gérer un modèle de données conceptuel. La dataclass est le seul moyen d'interroger le datastore. Une requête est effectuée à partir d'une seule dataclass. Les requêtes sont construites autour des attributs et des noms d'attributs relationnels des dataclasses. Les attributs relationnels sont ainsi les moyens d'impliquer plusieurs tables liées dans une requête. @@ -139,10 +139,10 @@ Les propriétés de dataclass sont des objets attribut décrivant les champs ou $revenuesAttribute:=ds.Company["revenues"] //méthode alternative ``` -Ce code attribue à `$nameAttribute` et `$revenuesAttribute` des références aux attributs name et revenues de la classe `Company`. This syntax does NOT return values held inside of the attribute, but instead returns references to the attributes themselves [with their **attribute properties**](../API/DataClassClass.md#attributename). +Ce code attribue à `$nameAttribute` et `$revenuesAttribute` des références aux attributs name et revenues de la classe `Company`. Cette syntaxe ne renvoie PAS les valeurs contenues dans l'attribut, mais des références aux attributs eux-mêmes [avec leurs **propriétés d'attribut**](../API/DataClassClass.md#attributename). Pour gérer les valeurs, vous devez passer par les [Entités](#entite). -Tous les fichiers éligibles d'une table sont disponibles en tant qu'attributs de leur [dataclass](#dataclass) parente. Pour les datastores distants accessibles via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer comme ressource REST** doit être sélectionnée au niveau de la structure 4D pour chaque champ que vous souhaitez exposer en tant qu'attribut de dataclass. +Tous les champs éligibles d'une table sont disponibles en tant qu'attributs de leur [dataclass](#dataclass) parente. Pour les datastores distants accessibles via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer avec le service REST** doit être sélectionnée au niveau de la structure 4D pour chaque champ que vous souhaitez exposer en tant qu'attribut de dataclass. #### Attributs de stockage et relationnels @@ -155,17 +155,17 @@ Prenons l'exemple de la structure de base de données partielle suivante et les ![](../assets/en/ORDA/relationProperties.png) -Tous les attributs relationnels seront disponibles automatiquement : +Tous les attributs de stockage seront disponibles automatiquement : - dans la dataclass Project : "ID", "name", et "companyID" - dans la dataclass Company : "ID", "name", et "discount" -En outre, les attributs relationnels suivant seront également disponibles automatiquement : +En outre, les attributs relationnels suivants seront également disponibles automatiquement : - dans la dataclass Project : l'attribut **theClient**, du type "relatedEntity" ; il y a au plus une compagnie pour chaque projet (le client) - dans la dataclass Company : l'attribut **companyProjects**, du type "relatedEntities" ; pour chaque compagnie, il existe un certain nombre de projets reliés. -> La propriété manuelle ou automatique d'une relation de base de données n'a aucun effet dans ORDA. +> La propriété Manuel ou Automatique d'un lien de base de données n'a aucun effet dans ORDA. Tous les attributs de la dataclass sont exposés en tant que propriétés de la dataclass : @@ -175,7 +175,7 @@ Gardez à l'esprit que ces objets décrivent des attributs, mais ne donnent pas #### Attributs calculés et Alias -Les [attributs calculés](ordaClasses.md#computed-attributes) et les[attributs alias](ordaClasses.md#alias-attributes) sont des attributs "virtuels". Leur valeur n'est pas stockée mais évaluée à chaque fois qu'on y accède. Ils n'appartiennent pas à la structure sous-jacente de la base, mais ils se basent sur elle et peuvent être utilisés comme n'importe quel champ du modèle de données. +Les [attributs calculés](ordaClasses.md#computed-attributes) et les [attributs alias](ordaClasses.md#alias-attributes) sont des attributs "virtuels". Leur valeur n'est pas stockée mais évaluée à chaque fois qu'on y accède. Ils n'appartiennent pas à la structure sous-jacente de la base, mais ils se basent sur elle et peuvent être utilisés comme n'importe quel champ du modèle de données. ### Entity @@ -183,7 +183,7 @@ Une entité est l'équivalent d'un enregistrement. Il s'agit d'un objet qui fait Le but de l'entité est de gérer les données (créer, mettre à jour, supprimer). Lorsqu'une référence d'entité est obtenue au moyen d'une sélection d'entité, elle conserve également des informations sur la sélection d'entité qui permet une itération à travers la sélection. -An entity object is handled through functions and properties of the [**Entity**](../API/EntityClass.md) class. +Un objet entité est géré par les fonctions et les propriétés de la classe [**Entity**](../API/EntityClass.md). L'objet entité lui-même ne peut pas être copié en tant qu'objet : @@ -203,7 +203,7 @@ Les propriétés de l'entité sont toutefois énumérables : Une entity selection est un objet contenant une ou plusieurs référence(s) à des entités appartenant à la même dataclasse. Elle est généralement créée à la suite d'une requête ou retournée à partir d'un attribut relationnel. Une entity selection peut contenir 0, 1 ou X entités de la dataclass - où X peut représenter le nombre total d'entités contenues dans la dataclass. -An entity selection object is handled through functions and properties of the [**EntitySelection**](../API/EntitySelectionClass.md) class. +Un objet Entity selection est géré par les fonctions et les propriétés de la classe [**EntitySelection**](../API/EntitySelectionClass.md). Voici un exemple : @@ -233,18 +233,18 @@ Les propriétés des entity selections sont toutefois énumérables : #### Entity selections triées vs Entity selections non-triées -Pour des raisons d'optimisation, par défaut, 4D ORDA crée généralement des sélections d'entités non-ordonnées, sauf lorsque vous utilisez la méthode `orderBy( )` ou si vous utilisez les options appropriées. Dans cette documentation, sauf indication contraire, "entity selection" fait généralement référence à une "entity selection non-triée". +Pour des raisons d'optimisation, par défaut, 4D ORDA crée généralement des entity selections non-ordonnées, sauf lorsque vous utilisez la méthode `orderBy()` ou si vous utilisez les options appropriées. Dans cette documentation, sauf indication contraire, "entity selection" fait généralement référence à une "entity selection non-triée". Les entity selections triées sont créées uniquement lorsque cela est nécessaire ou lorsqu'elles sont spécifiquement demandées à l'aide d'options, c'est-à-dire dans les cas suivants : -- résultat d'un `orderBy( )` sur une sélection (de n'importe quel type) ou un `orderBy( )` sur une dataclass, -- résultat de la méthode `newSelection( )` avec l'option `dk keep ordered` +- résultat d'un `orderBy()` sur une sélection (de n'importe quel type) ou un `orderBy()` sur une dataclass, +- résultat de la méthode `newSelection()` avec l'option `dk keep ordered` -Les sélections d'entités non-triées sont créées dans les cas suivants : +Les entity selections non-triées sont créées dans les cas suivants : - résultat d'un `query()` standard sur une sélection (de n'importe quel type) ou un `query()` sur une dataclass, - résultat de la méthode `newSelection()` sans option, -- résultat de l'une des méthodes de comparaison, quel que soit le type de sélection saisi : `or()`, `and()`, `minus()`. +- résultat de l'une des méthodes de comparaison, quel que soit le type de sélection d'origine : `or()`, `and()`, `minus()`. > Les entity selections suivantes sont toujours **triées** : > diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/entities.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/entities.md index 0be4eacb122866..bf8083100bc9ed 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/entities.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/entities.md @@ -120,7 +120,7 @@ $entity.save() //sauvegarder les modifications :::note Notes -- Database Object fields can be [associated with classes](../Develop/field-properties.md), in which case only objects of the defined class can be assigned to the entity attribute. +- Les champs objet de la base de données peuvent être [associés à des classes](../Develop/field-properties.md), auquel cas seuls les objets de la classe définie peuvent être affectés à l'attribut de l'entité. - Les champs Blob des bases de données ([blobs scalaires](Concepts/dt_blob.md)) sont automatiquement convertis en attributs d'objets blob ([`4D.Blob`](Concepts/dt_blob.md)) lorsqu'ils sont traités par ORDA. Lorsque vous sauvegardez un attribut d'objet blob, gardez à l'esprit que, contrairement à la taille de l'objet blob qui n'est limitée que par la mémoire disponible, la taille du champ Blob est limitée à 2 Go. ::: @@ -288,7 +288,7 @@ La nature **partageable** ou **modifiable** d'une entity selection est définie Une nouvelle entity selection est **partageable** dans les cas suivants : -- la nouvelle entity selection résulte d'une fonction de classe ORDA appliquée à une dataClass : [dataClass.all()](API/DataClassClass.md#all), [dataClass.fromCollection()](API/DataClassClass.md#fromcollection), [dataClass.query()](API/DataClassClass.md#quer +- la nouvelle entity selection résulte d'une fonction de classe ORDA appliquée à une dataClass : [dataClass.all()](API/DataClassClass.md#all), [dataClass.fromCollection()](API/DataClassClass.md#fromcollection), [dataClass.query()](API/DataClassClass.md#query), - la nouvelle entity selection est basée sur une relation [entity.*attributeName*](API/EntityClass.md#attributename) (par exemple, "company.employees") lorsque *attributeName* est un attribut lié 1-vers-N mais que l'entité n'appartient pas à une entity selection. - la nouvelle entity selection est explicitement copiée comme partageable avec [entitySelection.copy()](API/EntitySelectionClass.md#copy) ou `OB Copy` (c'est-à-dire avec l'option `ck shared`). @@ -449,7 +449,7 @@ Les filtres s'appliquent aux **entités**. Si vous souhaitez restreindre l'accè ### Comment définir un filtre de restriction -You create a filter for a dataclass by defining an `event restrict` function in the [**dataclass class**](dsMapping.md#dataclass) of the dataclass. Le filtre est alors automatiquement activé. +Vous créez un filtre pour une dataclass en définissant une fonction `event restrict` dans la [**classe**](dsMapping.md#dataclass) de la dataclasse. Le filtre est alors automatiquement activé. ### `Function event restrict` @@ -462,11 +462,11 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Cette fonction est appelée chaque fois qu'une entity selection ou une entité de la dataclass est demandée. Le filtre est exécuté une seule fois, lors de la création de l'entity selection. -Le filtre doit retourner une entity selection de la dataclass. Il peut s'agir d'une entity selection basée sur une recherche, stockée dans le [`Storage`], etc. +Le filtre doit retourner une entity selection de la dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note -Pour des raisons de performances, nous recommandons d'utiliser les **attributs indexés** dans la définition du filtre. +Pour des raisons de performances, nous recommandons d'utiliser des **attributs indexés** dans la définition du filtre. ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/glossary.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/glossary.md index 29ecb988e206b8..0802de867e16c6 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/glossary.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/glossary.md @@ -9,7 +9,7 @@ title: Glossaire ## Action -Chaque action qui peut être effectuée sur une [ressource](#resource). Available actions are: create, read, update, drop, execute, and promote. +Chaque action qui peut être effectuée sur une [ressource](#resource). Les actions disponibles sont : create, read, update, drop, execute, and promote. ## Attribut @@ -18,11 +18,11 @@ Un attribut est la plus petite cellule de stockage dans une base de données rel - Dans un objet dataclass, chaque propriété est un attribut de dataclass qui correspond à un champ dans la table correspondante (même nom et même type). - Dans un objet entity, les attributs d'entités sont des propriétés qui contiennent les valeurs pour les attributs du datastore correspondants. -> \> Attributes and properties are similar concepts. "Attribut" est utilisé pour désigner les propriétés de la dataclass qui stockent les données, tandis que "propriété" est plus générique et définit une donnée stockée dans un objet. +> Les *attributs* et les *propriétés* sont des concepts similaires. "Attribut" est utilisé pour désigner les propriétés de la dataclass qui stockent les données, tandis que "propriété" est plus générique et définit une donnée stockée dans un objet. ## AttributePath -Un attributePath est le chemin d'un attribut à l'intérieur d'une dataclass ou d'une entité donnée. See also [PropertyPath](#propertypath). +Un attributePath est le chemin d'un attribut à l'intérieur d'une dataclass ou d'une entité donnée. Voir aussi [PropertyPath](#propertypath). ## Class code @@ -89,7 +89,7 @@ Une entité est un objet qui correspond à un modèle de dataclass. Une entité Une entité peut être vue comme une instance de la dataclass, comme un enregistrement de la table correspondante à la dataclass dans son datastore associé. Cependant, une entité contient également des données connexes. Le but de l'entité est de gérer les données (créer, mettre à jour, supprimer). -For more information, see [entities](entities.md). +Pour plus d'informations, voir [entities](entities.md). ## Entity selection diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 1f4e78f6cc9c23..10a47f8f80a131 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -1,122 +1,122 @@ --- id: orda-events -title: Events +title: Évènements d'entité ---
    Historique -| Release | Modifications | -| ------- | ----------------------------------------------------------------------------------------------------- | -| 21 | Added events: validateSave / saving / afterSave / validateDrop / dropping / afterDrop | -| 20 R10 | touched event added | +| Release | Modifications | +| ------- | ------------------------------------------------------------------------------------------------------------ | +| 21 | Événements ajoutés : validateSave / saving / afterSave / validateDrop / dropping / afterDrop | +| 20 R10 | ajout événement touched |
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Les événements d'entité sont des fonctions qui sont automatiquement invoquées par ORDA chaque fois que des entités et des attributs d'entité sont touchés (ajoutés, supprimés ou modifiés). Vous pouvez écrire des événements très simples, puis les rendre plus sophistiqués. -You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. +Vous ne pouvez pas déclencher directement l'exécution d'une fonction d'événement. Les événements sont appelés automatiquement par ORDA en fonction des actions de l'utilisateur ou des opérations effectuées par le code sur les entités et leurs attributs. -:::tip Related blog post +:::tip Article(s) de blog sur le sujet -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA - Gérer une logique événementielle lors des actions de persistance des données](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: -:::info Compatibility note +:::info Note de compatibilité -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +Les événements d'entité ORDA dans le magasin de données sont équivalents aux triggers dans la base de données 4D. Cependant, les actions déclenchées au niveau de la base de données 4D à l'aide des commandes du langage classique 4D ou des actions standard ne déclenchent pas les événements ORDA. ::: ## Vue d’ensemble -### Event level +### Niveau de l'événement -A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). +Une fonction d'événement d'entité est toujours définie dans la [classe Entity](../ORDA/ordaClasses.md#entity-class). -It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute. +Un événement peut être défini au niveau de l'**entité** et/ou de l'**attribut** (y compris les [**attributs calculés**](../ORDA/ordaClasses.md#computed-attributes)). Dans le premier cas, il sera déclenché pour tous les attributs de l'entité ; dans l'autre cas, il ne sera déclenché que pour l'attribut ciblé. -For the same event, you can define different functions for different attributes. +Pour un même événement, vous pouvez définir différentes fonctions pour différents attributs. -You can also define the same event at both attribute and entity levels. The attribute event is called first and then the entity event. +Vous pouvez également définir le même événement au niveau de l'attribut et de l'entité. L'événement attribut est appelé en premier, puis l'événement entité. -### Execution in remote configurations +### Exécution en configuration distante -Usually, ORDA events are executed on the server. +En général, les événements ORDA sont exécutés sur le serveur. -In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](./ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. +Cependant, dans une configuration client/serveur, la fonction d'événement `touched()` peut être exécutée sur **le serveur ou le client**, en fonction de l'utilisation du mot-clé [`local`](./ordaClasses.md#local-functions). Une implémentation spécifique côté client permet de déclencher l'événement sur le client. :::note -ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed on the client. +Les fonctions ORDA [`constructor()`](./ordaClasses.md#class-constructor) sont toujours exécutées sur le client. ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. Cela signifie que vous devez vous assurer que le serveur peut "voir" qu'un attribut a été touché pour déclencher l'événement (voir ci-dessous). -### Summary table +### Tableau de synthèse -The following table lists ORDA events along with their rules. +Le tableau suivant liste les événements d'entité ORDA ainsi que leurs règles. -| Evénement | Niveau | Function name | (C/S) Executed on | Can stop action by returning an error | -| :------------------------ | :------- | :------------------------------------------------------ | :------------------------------------------------------------------: | ------------------------------------- | -| Entity instantiation | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | non | -| Attribute touched | Attribut | `event touched ()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | non | -| | Entity | `event touched()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | non | -| Before saving an entity | Attribut | `validateSave ()` | server | oui | -| | Entity | `validateSave()` | server | oui | -| When saving an entity | Attribut | `saving ()` | server | oui | -| | Entity | `saving()` | server | oui | -| After saving an entity | Entity | `afterSave()` | server | non | -| Before dropping an entity | Attribut | `validateDrop ()` | server | oui | -| | Entity | `validateDrop()` | server | oui | -| When dropping an entity | Attribut | `dropping ()` | server | oui | -| | Entity | `dropping()` | server | oui | -| After dropping an entity | Entity | `afterDrop()` | server | non | +| Evénement | Niveau | Nom de la fonction | (C/S) Exécuté sur | Peut arrêter l'action en renvoyant une erreur | +| :------------------------------------ | :------- | :------------------------------------------------------ | :-----------------------------------------------------------------: | --------------------------------------------- | +| Instanciation d'entité | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | non | +| Attribut touched | Attribut | `event touched ()` | Dépend du mot-clé [`local`](../ORDA/ordaClasses.md#local-functions) | non | +| | Entity | `event touched()` | Dépend du mot-clé [`local`](../ORDA/ordaClasses.md#local-functions) | non | +| Avant l'enregistrement d'une entité | Attribut | `validateSave ()` | serveur | oui | +| | Entity | `validateSave()` | serveur | oui | +| Pendant l'enregistrement d'une entité | Attribut | `saving ()` | serveur | oui | +| | Entity | `saving()` | serveur | oui | +| Après l'enregistrement d'une entité | Entity | `afterSave()` | serveur | non | +| Avant la suppression d'une entité | Attribut | `validateDrop ()` | serveur | oui | +| | Entity | `validateDrop()` | serveur | oui | +| Pendant la suppression d'une entité | Attribut | `dropping ()` | serveur | oui | +| | Entity | `dropping()` | serveur | oui | +| Après la suppression d'une entité | Entity | `afterDrop()` | serveur | non | :::note -The [`constructor()`](./ordaClasses.md#class-constructor-1) function is not actually an event function but is always called when a new entity is instantiated. +La fonction [`constructor()`](./ordaClasses.md#class-constructor-1) n'est pas en soi une fonction d'événement, mais elle est toujours appelée lorsqu'une nouvelle entité est instanciée. ::: -## *event* parameter +## Paramètre *event* -Event functions accept a single *event* object as parameter. When the function is called, the parameter is filled with several properties: +Les fonctions d'événement acceptent un seul objet *event* comme paramètre. Lorsque la fonction est appelée, le paramètre est rempli avec diverses propriétés : -| Nom de propriété | Disponibilité | Type | Description | | -| :------------------ | :----------------------------------------------------------------------------------------------------------------------- | :------------------- | :-------------------------------------------------------------------------------------------------------------------- | - | -| "kind" | Toujours | String | Event name: "touched", "validateSave", "saving", "afterSave", "validateDrop", "dropping", "afterDrop" | | -| *attributeName* | Only for events implemented at attribute level ("validateSave", "saving", "validateDrop", "dropping") | String | Nom de l'attribut (*ex.* "firstname") | | -| *dataClassName* | Toujours | String | Nom du verre de données (*ex.* "Company") | | -| "savedAttributes" | Only in [`afterSave()`](#function-event-aftersave) | Collection of String | Names of attributes properly saved | | -| "droppedAttributes" | Only in [`afterDrop()`](#function-event-afterdrop) | Collection of String | Names of attributes properly dropped | | -| "saveStatus" | Only in [`afterSave()`](#function-event-aftersave) | String | "success" if the save was successful, "failed" otherwise | | -| "dropStatus" | Only in [`afterDrop()`](#function-event-afterdrop) | String | "success" if the drop was successful, "failed" otherwise | | +| Nom de propriété | Disponibilité | Type | Description | | +| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------- | - | +| "kind" | Toujours | String | Nom de l'événement : "touched", "validateSave", "saving", "afterSave", "validateDrop", "dropping", "afterDrop" | | +| *attributeName* | Uniquement pour les événements définis au niveau des attributs ("validateSave", "saving", "validateDrop", "dropping") | String | Nom de l'attribut (*ex.* "firstname") | | +| *dataClassName* | Toujours | String | Nom du verre de données (*ex.* "Company") | | +| "savedAttributes" | Uniquement dans [`afterSave()`](#function-event-aftersave) | Collection de chaînes | Noms des attributs correctement enregistrés | | +| "droppedAttributes" | Uniquement dans [`afterDrop()`](#function-event-afterdrop) | Collection de chaînes | Noms des attributs correctement supprimés | | +| "saveStatus" | Uniquement dans [`afterSave()`](#function-event-aftersave) | String | "success" si l'enregistrement a réussi, "failed" sinon | | +| "dropStatus" | Uniquement dans [`afterDrop()`](#function-event-afterdrop) | String | "success" si la suppression a réussi, "failed" sinon | | -## Error object +## Objet error -[Some event functions](#summary-table) can return an **error object** to raise an error and stop the running action. +[Certaines fonctions d'événement](#summary-table) peuvent renvoyer un **objet error** pour déclencher une erreur et arrêter l'action en cours. -When an error occurs in an event, the other events are stopped at the first raised error and the action (save or drop) is also stopped. This error is sent before other potential errors like [stamp has changed, entity locked](../API/EntityClass.md#save), etc. +Lorsqu'une erreur survient dans un événement, les autres événements sont stoppés à la première erreur signalée et l'action (enregistrement pu suppression) est également arrêtée. Cette erreur est envoyée avant d'autres erreurs potentielles telles que [stamp has changed, entity locked](../API/EntityClass.md#save), etc. -### Error object properties +### Propriétés de l'objet error -| Propriété | Type | Description | Set by the developer | -| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Oui | -| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Oui | -| extraDescription | Object | Free information to set up | Oui | -| seriousError | Boolean | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • | Yes (default is false) | -| componentSignature | Text | Always "DBEV" | Non | +| Propriété | Type | Description | Fixé par le développeur | +| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| errCode | Integer | Identique à la commande [`Last errors`](../commands/last-errors.md) | Oui | +| message | Text | Identique à la commande [`Last errors`](../commands/last-errors.md) | Oui | +| extraDescription | Object | Informations libres à définir | Oui | +| seriousError | Boolean | Utilisé uniquement avec les événements de validation (voir ci-dessous).
  • `True` : crée une [erreur critique (imprévisible)](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) et déclenche une exception. Ajoute le statut `dk status serious validation error`
  • `False` : crée seulement une [erreur silencieuse (prévisible)](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Ajoute le statut `dk status validation failed`.
  • | Oui (par défaut : False) | +| componentSignature | Text | Toujours "DBEV" | Non | -- [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. -- In case of an error triggered by a **validate** event, the `seriousError` property allows you to choose the level of the error to generate: - - If **true**: a serious error is thrown and should be handled by the [error processing code](../Concepts/error-handling.md#predictable-vs-unpredictable-errors), such as a [try catch](../Concepts/error-handling.md#trycatchend-try). In the result object of the calling function, `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". The error is raised at the end of the event and reach the client requesting the save/drop action (REST client for example). - - If **false** (default): a [silent (predictable) error is generated](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). It does not trigger any exception and is not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. In the result object of the calling function, `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". -- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error whatever the `seriousError` property value. +- Les [erreurs critiques](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) sont empilées dans la collection de la propriété `errors` de l'objet **Result** renvoyé par les fonctions [`save()`](../API/EntityClass.md#save) ou [`drop()`](../API/EntityClass.md#drop). +- Dans le cas d'une erreur déclenchée par un événement **validate**, la propriété `seriousError` permet de choisir le niveau d'erreur à générer : + - Si **true** : une erreur critique est déclenchée et doit être traitée par le [code de traitement des erreurs](../Concepts/error-handling.md#predictable-vs-unpredictable-errors), tel qu'un ["try catch"](../Concepts/error-handling.md#trycatchend-try). Dans l'objet résultat de la fonction appelante, `status` vaut `dk status serious validation error` et `statusText` vaut "Serious Validation Error". L'erreur est levée à la fin de l'événement et parvient au client qui demande l'action d'enregistrement/suppression (client REST par exemple). + - Si **false** (défaut) : une [erreur silencieuse (prévisible) est générée](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Elle ne déclenche aucune exception et n'est pas empilée dans les erreurs retournées par la commande [`Last errors`](../commands/last-errors.md). Dans l'objet résultat de la fonction appelante, `status` vaut `dk status validation failed` et `statusText` vaut "Mild Validation Error". +- Dans le cas d'une erreur déclenchée par un événement **saving/dropping**, lorsqu'un objet d'erreur est renvoyé, l'erreur est toujours définie comme critique, quelle que soit la valeur de la propriété `seriousError`. -## Event function description +## Description des fonctions ### `Function event touched` @@ -128,30 +128,30 @@ When an error occurs in an event, the other events are stopped at the first rais // code ``` -This event is triggered each time a value is modified in the entity. +Cet événement est déclenché chaque fois qu'une valeur est modifiée dans l'entité. -- If you defined the function at the entity level (first syntax), it is triggered for modifications on any attribute of the entity. -- If you defined the function at the attribute level (second syntax), it is triggered only for modifications on this attribute. +- Si vous avez défini la fonction au niveau de l'entité (première syntaxe), elle est déclenchée pour des modifications sur n'importe quel attribut de l'entité. +- Si vous avez défini la fonction au niveau de l'attribut (deuxième syntaxe), elle n'est déclenchée que pour les modifications sur cet attribut. -This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: +Cet événement est déclenché dès que le moteur de 4D Server / 4D détecte une modification de la valeur de l'attribut qui peut être due aux actions suivantes : -- in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). -- in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. -- with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) +- en **client/serveur avec le [mot-clé `local`](../ORDA/ordaClasses.md#local-functions)** ou en **4D mono-utilisateur** : + - l'utilisateur saisit une valeur dans un formulaire 4D, + - le code 4D effectue une assignation avec l'opérateur `:=`. L'événement est également déclenché en cas d'auto-assignation (`$entity.attribute:=$entity.attribute`). +- en **client/serveur sans le mot-clé `local`** : du code 4D effectue une assignation avec l'opérateur `:=` est [exécuté sur le serveur](../commands-legacy/execute-on-server.md). +- en **client/serveur sans le mot-clé `local`**, une **[application Qodly](https://developer.4d.com/qodly)** ou **[datastore distant](../commands/open-datastore.md)** : l'entité est reçue sur le serveur 4D lors de l'appel d'une fonction ORDA (sur l'entité ou avec l'entité en tant que paramètre). Cela signifie que vous devrez peut-être mettre en place une fonction *refresh* ou *preview* sur l'application distante qui envoie une requête ORDA au serveur et déclenche l'événement. +- avec le serveur REST : la valeur est reçue sur le serveur REST avec une [requête REST](../REST/$method.md#methodupdate) (`$method=update`) -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. -If this function [throws](../commands/throw) an error, it will not stop the undergoing action. +Si cette fonction [génère](../commands/throw) une erreur, elle n'arrêtera pas l'action en cours. :::note -This event is also triggered: +Cet événement est également déclenché : -- when attributes are assigned by the [`constructor()`](./ordaClasses.md#class-constructor-1) event, -- when attributes are edited through the [Data Explorer](../Admin/dataExplorer.md). +- lorsque les attributs sont assignés par l'événement [`constructor()`](./ordaClasses.md#class-constructor-1), +- lorsque les attributs sont modifiés via l'[Explorateur de données](../Admin/dataExplorer.md). ::: @@ -329,7 +329,7 @@ This event is triggered each time an entity is about to be saved. - if you defined the function at the entity level (first syntax), it is called for any attribute of the entity. - if you defined the function at the attribute level (second syntax), it is called only for this attribute. This function is **not** executed if the attribute has not been touched in the entity. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. This event is triggered by the following functions: @@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`). #### Exemple -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -387,7 +382,7 @@ This event is triggered each time an entity is being saved. - If you defined the function at the entity level (first syntax), it is called for any attribute of the entity. The function is executed even if no attribute has been touched in the entity (e.g. in case of sending data to an external app each time a save is done). - If you defined the function at the attribute level (second syntax), it is called only for this attribute. The function is **not** executed if the attribute has not been touched in the entity. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. This event is triggered by the following functions: @@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro #### Exemple -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` ### `Function event afterSave` @@ -449,34 +447,30 @@ This event is triggered just after an entity is saved in the data file, when at This event is useful after saving data to propagate the save action outside the application or to execute administration tasks. For example, it can be used to send a confirmation email after data have been saved. Or, in case of error while saving data, it can make a rollback to restore a consistent state of data. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. - To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. - Throwing an [error object](#error-object) is **not supported** by this function. -#### Exemple 1 +#### Exemple -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` ### `Function event validateDrop` @@ -494,7 +488,7 @@ This event is triggered each time an entity is about to be dropped. - If you defined the function at the entity level (first syntax), it is called for any attribute of the entity. - If you defined the function at the attribute level (second syntax), it is called only for this attribute. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. This event is triggered by the following features: @@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### Exemple 1 +#### Exemple -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### Exemple 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` ### `Function event dropping` @@ -561,7 +535,7 @@ This event is triggered each time an entity is being dropped. - If you defined the function at the entity level (first syntax), it is called for any attribute of the entity. - If you defined the function at the attribute level (second syntax), it is called only for this attribute. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. This event is triggered by the following features: @@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### Exemple 1 +#### Exemple -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### Exemple 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -642,7 +593,7 @@ This event is triggered just after an entity is dropped. This event is useful after dropping data to propagate the drop action outside the application or to execute administration tasks. For example, it can be used to send a cancellation email after data have been dropped. Or, in case of error while dropping data, it can log an information for the administrator to check data consistency. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. - To avoid infinite loops, calling a [`drop()`](../API/EntityClass.md#drop) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. - Throwing an [error object](#error-object) is **not supported** by this function. @@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### Exemple 1 +#### Exemple -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### Exemple 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md index 84479ca7fefcae..d4738c0141b15f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/ORDA/ordaClasses.md @@ -306,52 +306,52 @@ Class constructor() :::note -Il n'y a pas de mot-clé de fin pour le code d'une fonction class constructor. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. +Il n'y a pas de mot-clé de fin pour le code d'une fonction de constructeur de classe. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. ::: -An ORDA class constructor function is triggered just after a new entity is created in memory, [whatever the way it is created](#commands-that-trigger-the-class-constructor-functions). It is useful to set initial values for entity instantiation, for example a custom ID. +Une fonction de construction de classe ORDA est déclenchée juste après la création d'une nouvelle entité en mémoire, [quelle que soit la manière dont elle est créée](#commands-that-trigger-the-class-constructor-functions). Elle est utile pour définir des valeurs d'initialisation lors de l'instanciation de l'entité, par exemple un identifiant personnalisé. -This function can only be set at the [entity level](#entity-class). There can only be one constructor function in an entity class (otherwise an error is returned). +Cette fonction ne peut être définie qu'au [niveau de l'entité](#entity-class). Il ne peut y avoir qu'une seule fonction constructor dans une classe d'entité (sinon une erreur est renvoyée). -This ORDA class constructor function does not receive or return parameters. However, you can use it to initialize attribute values using [`This`](../commands/this.md). Note that values initialized by the constructor are overriden if corresponding attributes are filled by the code. +La fonction du constructeur de la classe ORDA ne reçoit ni ne renvoie de paramètres. Cependant, vous pouvez l'utiliser pour initialiser les valeurs des attributs en utilisant [`This`](../commands/this.md). Notez que les valeurs initialisées par le constructeur sont remplacées si les attributs correspondants sont remplis par le code. :::note -An ORDA class constructor function is similar to a [user class constructor function](../Concepts/classes.md#class-constructor), with the following differences: +Une fonction de construction de classe ORDA est similaire à une [fonction de construction de classe utilisateur](../Concepts/classes.md#class-constructor), avec les différences suivantes : -- you cannot pass parameters to the constructor, -- you cannot use `shared`, `session`, or `singleton` keywords, -- you cannot call the [`Super`](../Concepts/classes.md#super) keyword within the function, -- the class constructor cannot be called using the `new()` function on an entity (entities can only be created by specific functions, see below). +- vous ne pouvez pas passer de paramètres au constructeur, +- vous ne pouvez pas utiliser les mots-clés `shared`, `session`, ou `singleton`, +- vous ne pouvez pas appeler le mot-clé [`Super`](../Concepts/classes.md#super) à l'intérieur de la fonction, +- le constructeur de la classe ne peut pas être appelé en utilisant la fonction `new()` sur une entité (les entités ne peuvent être créées que par des fonctions spécifiques, voir ci-dessous). ::: -#### Commands that trigger the Class constructor functions +#### Commandes qui déclenchent les fonctions du constructeur de classe -The `Class constructor` function is triggered by the following commands and features: +La fonction `Class constructor` est déclenchée par les commandes et fonctionnalités suivantes : - [`dataClass.new()`](../API/DataClassClass.md#new) - [`dataClass.fromCollection()`](../API/DataClassClass#fromcollection) -- [REST API $method=update](../REST/$method.md#methodupdate) in a POST without the `__KEY` and `__STAMP` parameters -- the [Data Explorer](../Admin/dataExplorer.md#editing-data). +- [API REST $method=update](../REST/$method.md#methodupdate) dans un POST sans les paramètres `__KEY` et `__STAMP`. +- l'[Explorateur de données](../Admin/dataExplorer.md#editing-data). :::note Notes -- The [`entity.clone()`](../API/EntityClass.md#clone) function does not trigger the entity Class constructor. -- Records created at the 4D database level using 4D classic language commands or standard actions do not trigger the entity Class constructor. +- La fonction [`entity.clone()`](../API/EntityClass.md#clone) ne déclenche pas le constructeur de la classe de l'entité. +- Les enregistrements créés au niveau de la base de données 4D à l'aide de commandes du langage classique 4D ou d'actions standard ne déclenchent pas le constructeur de la classe de l'entité. ::: -#### Remote configurations +#### Configurations distantes -When using a remote configurations, you need to pay attention to the following principles: +Lorsque vous utilisez une configuration à distance, il convient de respecter les principes suivants : -- In **client/server** the function can be called on the client or on the server, depending on the location of the calling code. When it is called on the client, it is not triggered again when the client attempts to save the new entity and sends an update request to the server to create in memory on the server. +- En **client/serveur**, la fonction peut être appelée sur le client ou sur le serveur, en fonction de l'emplacement du code d'appel. Lorsqu'elle est appelée sur le client, elle n'est pas déclenchée à nouveau lorsque le client tente d'enregistrer la nouvelle entité et envoie une demande de mise à jour au serveur pour la créer en mémoire sur le serveur. :::warning -Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md#fromcollection) can create a large number of entities and thus trigger the entity Class constructor consequently, you need to make sure the constructor code does not execute excessive time-consuming processings, for performance reasons. In remote configurations (see below), the code should not trigger multiple requests to the server. +Des fonctions telles que [`dataClass.fromCollection()`](../API/DataClassClass.md#fromcollection) pouvant créer un grand nombre d'entités et donc déclencher le constructeur de la classe d'entités en conséquence, vous devez vous assurer que le code du constructeur n'exécute pas de traitements qui prennent du temps, pour des raisons de performance. Dans les configurations distantes (voir ci-dessous), le code ne doit pas déclencher de requêtes multiples au serveur. ::: @@ -367,7 +367,7 @@ Class constructor() ``` -#### Example 2 (diagram): Client/server +#### Exemple 2 (diagramme) : Client/serveur ```mermaid @@ -386,7 +386,7 @@ Server-->>-Client: Success ``` -#### Example 3 (diagram): Qodly - Standard action +#### Exemple 3 (diagramme): Qodly - Action standard ```mermaid @@ -404,7 +404,7 @@ sequenceDiagram ``` -#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity +#### Exemple 4 (diagramme): Qodly - Action standard et mise à jour de valeur sur la nouvelle entité créée ```mermaid @@ -426,7 +426,7 @@ Note over Qodly page: product.creationDate is "06/17/25"
    and product.commen ``` -#### Example 5 (diagram): Qodly - Entity instanciated in a function +#### Exemple 5 (diagramme) : Qodly - Entité instanciée dans une fonction ```mermaid @@ -896,23 +896,23 @@ Exposed Alias studentName student.name //scalar value Vous pouvez alors exécuter les recherches suivantes : ```4d -// Find course named "Archaeology" +// Trouver le cours nommé "Archaeology" ds.Course.query("courseName = :1";"Archaeology") -// Find courses given by the professor Smith +// Trouver les cours du professeur Smith ds.Course.query("teacherName = :1";"Smith") -// Find courses where Student "Martin" assists +// Trouver les cours auxquels assiste l'étudiant "Martin" ds.Course.query("studentName = :1";"Martin") -// Find students who have M. Smith as teacher +// Trouver les étudiants qui ont le professeur Smith ds.Student.query("teachers.name = :1";"Smith") -// Find teachers who have M. Martin as Student +// Trouver les professeurs qui ont M. Martin comme étudiant ds.Teacher.query("students.name = :1";"Martin") -// Note that this very simple query string processes a complex -// query including a double join, as you can see in the queryPlan: -// "Join on Table : Course : Teacher.ID = Course.teacherID, +// Notez que cette chaîne très simple traite une requête complexe +// incluant une double jointure, comme vous pouvez le voir dans le queryPlan : +// "Join on Table : Course : Teacher.ID = Course.teacherID, // subquery:[ Join on Table : Student : Course.studentID = Student.ID, // subquery:[ Student.name === Martin]]" ``` @@ -986,59 +986,59 @@ $status:=$remoteDS.Schools.registerNewStudent($student) // OK $id:=$remoteDS.Schools.computeIDNumber() // Erreur "Unknown member method" ``` -## onHTTPGet keyword +## onHTTPGet -Use the `onHTTPGet` keyword to declare functions that can be called through HTTP requests using the `GET` verb. Such functions can return any web contents, for example using the [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) class. +Utilisez le mot-clé `onHTTPGet` pour déclarer des fonctions qui peuvent être appelées par des requêtes HTTP utilisant le verbe `GET`. Ces fonctions peuvent renvoyer n'importe quel contenu web, par exemple en utilisant la classe [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md). -The `onHTTPGet` keyword is available with: +Le mot-clé `onHTTPGet` est disponible avec : -- ORDA Data model class functions -- [Singletons class functions](../Concepts/classes.md#singleton-classes) +- les fonctions de classe du modèle de données ORDA +- les [fonctions de classe de singletons](../Concepts/classes.md#singleton-classes) La syntaxe formelle est la suivante : ```4d -// declare an onHTTPGet function +// déclarer une fonction onHTTPGet exposed onHTTPGet Function (params) : result ``` :::info -The `exposed` keyword must also be added in this case, otherwise an error will be generated. +Le mot-clé `exposed` doit également être ajouté dans ce cas, sinon une erreur sera générée. ::: :::caution -As this type of call is an easy offered action, the developer must ensure no sensitive action is done in such functions. +Comme ce type d'appel est une action facile d'accès, le développeur doit s'assurer qu'aucune action sensible n'est effectuée dans ces fonctions. ::: ### params -A function with `onHTTPGet` keyword accepts [parameters](../Concepts/parameters.md). +Une fonction avec le mot-clé `onHTTPGet` accepte des [paramètres](../Concepts/parameters.md). -In the HTTP GET request, parameters must be passed directly in the URL and declared using the `$params` keyword (they must be enclosed in a collection). +Dans la requête HTTP GET, les paramètres doivent être passés directement dans l'URL et déclarés à l'aide du mot-clé `$params` (ils doivent être inclus dans une collection). ``` IP:port/rest//functionName?$params='[]' ``` -See the [Parameters](../REST/classFunctions#parameters) section in the REST server documentation. +Voir la section [Paramètres](../REST/classFunctions#parameters) dans la documentation du serveur REST. ### Résultat -A function with `onHTTPGet` keyword can return any value of a supported type (same as for REST [parameters](../REST/classFunctions#parameters)). +Une fonction avec le mot-clé `onHTTPGet` peut renvoyer n'importe quelle valeur d'un type supporté (comme pour les [paramètres REST](../REST/classFunctions#parameters)). :::info -You can return a value of the [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) class type to benefit from properties and functions to set the header, the body, and the status of the answer. +Vous pouvez renvoyer une valeur de type [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) pour bénéficier des propriétés et des fonctions permettant de définir l'en-tête, le corps et le statut de la réponse. ::: ### Exemple -You have defined the following function: +Vous avez défini la fonction suivante : ```4d Class extends DataClass @@ -1056,10 +1056,10 @@ exposed onHTTPGet Function getThumbnail($name : Text; $width : Integer; $height return $response ``` -It can be called by the following HTTP GET request: +Elle peut être appelée par la requête HTTP GET suivante : ``` -IP:port/rest/Products/getThumbnail?$params='["Yellow Pack",200,200]' +IP:port/rest/Products/getThumbnail ?$params='["Yellow Pack",200,200]' ``` ## Fonctions locales diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/Project/components.md b/i18n/fr/docusaurus-plugin-content-docs/current/Project/components.md index 0dd5ed8c4fdfbf..f18f0d6bc25387 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/Project/components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/Project/components.md @@ -3,11 +3,11 @@ id: components title: Dépendances --- -[L'architecture des projets](../Project/architecture.md) 4D est modulaire. Vous pouvez ajouter des fonctionnalités supplémentaires dans vos projets 4D en installant des [**composants**](Concepts/components.md) et des [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md). +[L'architecture des projets](../Project/architecture.md) 4D est modulaire. Vous pouvez ajouter des fonctionnalités supplémentaires dans vos projets 4D en installant des [**composants**](Concepts/components.md) et des [**plug-ins**](../Concepts/plug-ins.md). Les composants sont constitués de code 4D, tandis que les plug-ins peuvent être [construits à l'aide de n'importe quel langage](../Extensions/develop-plug-ins.md). -Vous pouvez [développer](../Extensions/develop-components.md) et [construire](../Desktop/building.md) vos propres composants 4D, ou télécharger des composants publics partagés par la communauté 4D qui se trouvent sur GitHub. +Vous pouvez [développer](../Extensions/develop-components.md) et [construire](../Desktop/building.md) vos propres composants 4D, ou télécharger des composants publics partagés par la communauté 4D [sur GitHub](https://github.com/topics/4d-component). -Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties. +Une fois installées dans votre environnement 4D, les extensions sont traitées comme des **dépendances** avec des propriétés spécifiques. ## Composants interprétés et compilés @@ -33,7 +33,7 @@ L'architecture de dossier "Contents" est recommandée pour les composants si vou ::: -## Component Locations +## Emplacements des composants :::note @@ -317,20 +317,20 @@ Les composants GitHub référencés sont téléchargés dans un dossier de cache ...où `` peut être "4D", "4D Server" ou "tool4D". -### Automatic dependency resolution +### Résolution automatique des dépendances -When you add or update a component (whether [local](#local-components) or [from GitHub](#components-stored-on-github)), 4D automatically resolves and installs all dependencies required by that component. Cela inclut : +Lorsque vous ajoutez ou mettez à jour un composant (qu'il soit [local](#local-components) ou [obtenu depuis GitHub](#components-stored-on-github)), 4D résout et installe automatiquement toutes les dépendances requises par ce composant. Cela inclut : -- **Primary dependencies**: Components you explicitly declare in your `dependencies.json` file -- **Secondary dependencies**: Components required by primary dependencies or other secondary dependencies, which are automatically resolved and installed +- les **dépendances primaires** : Composants que vous déclarez explicitement dans votre fichier `dependencies.json`. +- les **dépendances secondaires** : Composants requis par des dépendances primaires ou d'autres dépendances secondaires, qui sont automatiquement résolues et installées. -The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. +Le gestionnaire de dépendances lit le fichier `dependencies.json` de chaque composant et installe récursivement toutes les dépendances nécessaires, en respectant les spécifications de version dans la mesure du possible. Il n'est donc pas nécessaire d'identifier et d'ajouter manuellement les dépendances imbriquées, une par une. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **les résolutions de conflits** : Lorsque plusieurs dépendances nécessitent [différentes versions](#defining-a-github-dependency-version-range) du même composant, le gestionnaire de dépendances tente automatiquement de résoudre les conflits en trouvant une version qui satisfait toutes les plages de versions qui se chevauchent. Si une dépendance primaire entre en conflit avec des dépendances secondaires, la dépendance primaire est prioritaire. :::note -`dependencies.json` files are ignored in components loaded from the [**Components** folder](architecture.md#components). +Les fichiers `dependencies.json` sont ignorés dans les composants chargés depuis le dossier [**Components**](architecture.md#components). ::: @@ -364,19 +364,19 @@ Par défaut, toutes les dépendances identifiées par le Gestionnaire de dépend ![dependency-tabs](../assets/en/Project/dependency-tabs.png) -- **All**: All dependencies including both primary (declared) and secondary (automatically resolved) dependencies in a flat list view. -- **Declared**: Primary dependencies that are explicitly declared in the `dependencies.json` file. This tab helps you distinguish between dependencies you've directly added and those that were [automatically resolved](#automatic-dependency-resolution). -- **Actifs** : Dépendances chargées et utilisables dans le projet. Il comprend des dépendances *overloading*, qui sont effectivement chargées. Les dépendances *overloaded* sont listées dans l'onglet **Conflits**, ainsi que toutes les dépendances conflictuelles. -- **Inactifs** : Dépendances qui ne sont pas chargées dans le projet et qui ne sont pas disponibles. Diverses raisons peuvent expliquer ce statut : fichiers manquants, incompatibilité de version... -- **Conflicts**: Dependencies that are loaded but that overloads at least one other dependency at a lower [priority level](#priority). Les dépendances surchargées sont également affichées afin que vous puissiez vérifier l'origine du conflit et prendre les mesures appropriées. +- **Toutes** : Toutes les dépendances, y compris les dépendances primaires (déclarées) et secondaires (résolues automatiquement), sous forme de liste. +- **Déclarées** : Les dépendances primaires qui sont explicitement déclarées dans le fichier `dependencies.json`. Cet onglet vous aide à distinguer les dépendances que vous avez directement ajoutées de celles qui ont été [automatiquement résolues](#automatic-dependency-resolution). +- **Actives** : Dépendances chargées et utilisables dans le projet. Il comprend des dépendances *overloading*, qui sont effectivement chargées. Les dépendances *overloaded* sont listées dans l'onglet **Conflits**, ainsi que toutes les dépendances conflictuelles. +- **Inactives** : Dépendances qui ne sont pas chargées dans le projet et qui ne sont pas disponibles. Diverses raisons peuvent expliquer ce statut : fichiers manquants, incompatibilité de version... +- **Conflits** : Les dépendances qui sont chargées mais qui surchargent au moins une autre dépendance à un [niveau de priorité](#priority) inférieur. Les dépendances surchargées sont également affichées afin que vous puissiez vérifier l'origine du conflit et prendre les mesures appropriées. -### Secondary dependencies +### Dépendances secondaires -The Dependencies panel displays [**secondary dependencies**](#automatic-dependency-resolution) with the `Component dependency` [origin](#dependency-origin): +Le panneau Dépendances indique les [**dépendances secondaires**](#automatic-dependency-resolution) en affichant comme [origin](#dependency-origin) `Dépendance de composant` : ![recursive-dependency](../assets/en/Project/recursive.png) -When you hover over a secondary dependency, a tooltip displays the parent dependency that requires it. A secondary dependency cannot be [removed](#removing-a-dependency) directly, you must remove or edit the primary dependency that requires it. +Lorsque vous survolez une dépendance secondaire, une infobulle affiche la dépendance parente qui la requiert. Une dépendance secondaire ne peut pas être [supprimée](#removing-a-dependency) directement, vous devez supprimer ou modifier la dépendance primaire qui la requiert. ### Statut des dépendances @@ -403,19 +403,19 @@ Une infobulle s'affiche lorsque vous survolez la ligne de dépendance, fournissa ### Origine de la dépendance -Le panneau Dépendances liste toutes les dépendances du projet, quelle que soit leur origine, c'est-à-dire d'où qu'elles viennent. L'origine de la dépendance est fournie par l'étiquette sous son nom : +Le panneau Dépendances liste toutes les dépendances du projet, quelle que soit leur origine. L'origine de la dépendance est fournie par l'étiquette sous son nom : ![dependency-origin](../assets/en/Project/dependency-origin.png) Les options suivantes sont disponibles : -| Étiquette d'origine | Description | -| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Built in 4D | Composant 4D intégré, stocké dans le dossier `Components` de l'application 4D | -| Declared in project | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) | -| Declared in environment | Component declared in the [`dependencies.json`](#dependenciesjson) file and overriden in the [`environment4d.json`](#environment4djson) file | -| Dossier Components | Composant situé dans le dossier [`Components`](architecture.md#components) | -| Component dependency | Secondary component ([required by a another component](#automatic-dependency-resolution)) | +| Étiquette | Description | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| Intégré à 4D | Composant 4D intégré, stocké dans le dossier `Components` de l'application 4D | +| Déclaré dans le projet | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) | +| Déclaré dans l'environnement | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) et surchargé dans le fichier [`environment4d.json`](#environment4djson) | +| Dossier Components | Composant situé dans le dossier [`Components`](architecture.md#components) | +| Dépendance de composant | Composant secondaire ([requis par un autre composant](#automatic-dependency-resolution)) | **Cliquez avec le bouton droit de la souris** dans une ligne de dépendance et sélectionnez **Afficher sur le disque** pour révéler l'emplacement d'une dépendance : @@ -469,11 +469,11 @@ Pour ajouter une [dépendance GitHub](#components-stored-on-github), cliquez sur :::note -By default, [components developed by 4D](../Extensions/overview.md#components-developed-by-4d) are listed in the combo box, so that you can easily select and install these features in your environment: +Par défaut, les [composants développés par 4D](../Extensions/overview.md#components-developed-by-4d) sont répertoriés dans la liste, ce qui vous permet de sélectionner et d'installer facilement ces fonctionnalités dans votre environnement : ![dependency-default-git](../assets/en/Project/dependency-default.png) -Components already installed are not listed. +Les composants déjà installés ne sont pas dans la liste. ::: @@ -493,7 +493,7 @@ Définissez la [plage de versions des dépendances](#tags-and-versions) à utili Cliquez sur le bouton **Ajouter** pour ajouter la dépendance au projet. -The GitHub dependency is declared in the [**dependencies.json**](#dependenciesjson) file and added to the [inactive dependency list](#dependency-status) with the **Available at restart** status. Elle sera chargée une fois que l'application aura redémarré. +La dépendance GitHub est déclarée dans le fichier [**dependencies.json**](#dependenciesjson) et ajoutée à la [liste des dépendances inactives](#dependency-status) avec le statut **Disponible après redémarrage**. Elle sera chargée une fois que l'application aura redémarré. #### Définir une plage de versions pour une dépendance GitHub @@ -505,7 +505,7 @@ Vous pouvez définir l'option [règle de dépendance](#tags-and-versions) pour u - **Jusqu'à la version majeure suivante** : Définit une [plage sémantique de versions](#tags-and-versions) pour limiter les mises à jour à la version majeure suivante. - **Jusqu'à la prochaine version mineure** : De même, limite les mises à jour à la version mineure suivante. - **Version exacte (balise)** : Sélectionnez ou saisissez manuellement un [tag spécifique](#tags-and-versions) dans la liste disponible. -- **Suivre la version 4D** : Téléchargez la dernière version du composant compatible avec la version 4D courante. Vous ne pouvez utiliser cette règle de dépendance que si les tags de release des composants respectent la [convention de nommage](#naming-conventions-for-4d-version-tags) appropriée. This option is recommended for the [components developed by 4D](../Extensions/overview.md#components-developed-by-4d). +- **Suivre la version 4D** : Téléchargez la dernière version du composant compatible avec la version 4D courante. Vous ne pouvez utiliser cette règle de dépendance que si les tags de release des composants respectent la [convention de nommage](#naming-conventions-for-4d-version-tags) appropriée. Cette option est recommandée pour les [composants développés par 4D](../Extensions/overview.md#components-developed-by-4d). La version courante de la dépendance GitHub est affichée sur le côté droit de l'élément de la dépendance : @@ -513,7 +513,7 @@ La version courante de la dépendance GitHub est affichée sur le côté droit d #### Modifier la plage de versions des dépendances GitHub -You can modify the [version setting](#defining-a-github-dependency-version-range) for a listed GitHub dependency: select the dependency to modify and select **Edit the dependency...** from the contextual menu. In the "Edit the dependency" dialog box, edit the Dependency Rule menu and click **Apply**. +Vous pouvez modifier le [paramètre de version](#defining-a-github-dependency-version-range) pour une dépendance GitHub listée : sélectionnez la dépendance à modifier et sélectionnez **Editer la dépendance...** dans le menu contextuel. Dans la boîte de dialogue "Editer la dépendance", modifiez le menu Règle de dépendance et cliquez sur **Appliquer**. La modification de la plage de versions est utile par exemple si vous utilisez la fonction de mise à jour automatique et que vous souhaitez verrouiller une dépendance à un numéro de version spécifique. @@ -611,7 +611,7 @@ Pour supprimer une dépendance de la fenêtre Dépendances, sélectionnez la dé :::note -Only primary dependencies declared in the [**dependencies.json**](#dependenciesjson) file can be removed using the Dependencies panel. Secondary dependencies cannot be removed directly - to remove a secondary dependency, you must remove the primary dependency that requires it. Si une dépendance sélectionnée ne peut pas être supprimée, le bouton **-** est désactivé et l'élément de menu **Supprimer la dépendance** est masqué. +Seules les dépendances primaires déclarées dans le fichier [**dependencies.json**](#dependenciesjson) peuvent être supprimées dans la fenêtre Dépendances. Les dépendances secondaires ne peuvent pas être supprimées directement - pour supprimer une dépendance secondaire, vous devez supprimer la dépendance primaire qui la requiert. Si une dépendance sélectionnée ne peut pas être supprimée, le bouton **-** est désactivé et l'élément de menu **Supprimer la dépendance** est masqué. ::: @@ -621,7 +621,7 @@ Une boîte de dialogue de confirmation s'affiche. Si la dépendance a été déc Si vous confirmez la boîte de dialogue, le [statut](#dependency-status) de la dépendance supprimée est automatiquement modifié en "Déchargé après redémarrage". Elle sera chargée une fois que l'application aura redémarré. -#### Dependency usage warnings +#### Avertissements relatifs à l'utilisation des dépendances -When you attempt to remove a primary dependency that is required by other dependencies in your project, you will be warned that the dependency is still in use. The system will display which other dependencies require it and prompt you to confirm the removal, as removing it may cause those dependent components to stop working properly. +Lorsque vous tentez de supprimer une dépendance primaire qui est requise par d'autres dépendances dans votre projet, vous serez averti que la dépendance est toujours en cours d'utilisation. Le système affichera les autres dépendances qui la requièrent et vous demandera de confirmer la suppression, car celle-ci peut entraîner l'arrêt du fonctionnement de ces composants dépendants. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$filter.md b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$filter.md index 225bb92db1df45..a94eeffc58ee5b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/REST/$filter.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/REST/$filter.md @@ -90,11 +90,11 @@ Use the `params` property to provide the filter with the vector comparison param The *vectorComparison* parameter is a collection of the following elements: -| Propriété | Type | Description | | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [].vector | Collection d'objets) | Obligatoire. A collection that represents the vector to compare | | -| [].metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | | -| | [].threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. | +| Propriété | Type | Description | +| -------------------------------------------------------------------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [].vector | Collection of numbers | Obligatoire. A collection that represents the vector to compare | +| [].metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | +| [].threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. | Only a subset of **comparator** symbols are supported with vector comparisons. Notez qu'ils comparent les résultats à la valeur de seuil (threshold) : diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md index a9e16ab1adf8ea..cc9ddee4b5c362 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-request-handler.md @@ -17,35 +17,35 @@ Les gestionnaires de requêtes HTTP personnalisés répondent à divers besoins, ## Conditions requises -Custom HTTP Request handlers are supported in the following context: +Les gestionnaires de requêtes HTTP personnalisés sont pris en charge dans le contexte suivant : -- [scalable sessions](./sessions.md#enabling-web-sessions) or [no sessions](../settings/web.md#no-sessions) are enabled, -- a web server run locally by 4D or 4D Server, including those [run by components](./webServerObject.md). +- les [sessions extensibles](./sessions.md#enabling-web-sessions) ou [pas de sessions](../settings/web.md#no-sessions) sont activées, +- un serveur web exécuté localement par 4D ou 4D Server, y compris ceux [exécutés par des composants](./webServerObject.md). :::warning -For security reasons, external access to the datastore can be disallowed in 4D. Vous devez configurer les [privilèges ORDA](../ORDA/privileges.md) pour autoriser les requêtes HTTP. +Pour des raisons de sécurité, l'accès externe au datastore peut être interdit dans 4D. Vous devez configurer les [privilèges ORDA](../ORDA/privileges.md) pour autoriser les requêtes HTTP. ::: -## How to set handlers +## Comment définir les gestionnaires -You can declare HTTP Request handlers: +Vous pouvez déclarer des gestionnaires de requêtes HTTP : -- in a configuration file named **HTTPHandlers.json** stored in the [`Project/Sources`](../Project/architecture.md#sources) folder of the project. HTTP Request handlers are loaded and applied in the main Web server once it is started. -- using a [`.handlers`](../API/WebServerClass.md#handlers) property set in the *settings* parameter of the [start()](../API/WebServerClass.md#start) function, for any web server object: +- dans un fichier de configuration nommé **HTTPHandlers.json** stocké dans le dossier [`Project/Sources`](../Project/architecture.md#sources) du projet. Les gestionnaires de requêtes HTTP sont chargés et appliqués dans le serveur Web principal une fois qu'il est démarré. +- en utilisant une propriété [`.handlers`](../API/WebServerClass.md#handlers) dans le paramètre *settings* de la fonction [start()](../API/WebServerClass.md#start), pour n'importe quel objet serveur web : ```4d -WEB Server.start($settings.handlers) //set rules at web server startup +WEB Server.start($settings.handlers) //prise en compte au démarrage du server web ``` -If both a **HTTPHandlers.json** file and a call to the [`WEB Server`](../commands/web-server.md) command with a valid `$settings.handlers` are used, the `WEB Server` command has priority. +Si à la fois un fichier **HTTPHandlers.json** et un appel à la commande [`WEB Server`](../commands/web-server.md) avec un `$settings.handlers` valide sont utilisés, la commande `WEB Server` est prioritaire. -The json file (or the object in the *settings* parameter) contains all listened URL patterns, the handled verbs, and the code to be called. +Le fichier json (ou l'objet dans le paramètre *settings*) contient tous les modèles d'URL listés, les verbes traités et le code à appeler. -Handlers are provided as a collection. +Les *handlers* sont fournis sous la forme d'une collection. -Au moment de l'exécution, le premier motif correspondant à l'URL est exécuté, les autres sont ignorés. +Au moment de l'exécution, le premier motif (*pattern*) correspondant à l'URL est exécuté, les autres sont ignorés. Voici un exemple du contenu d'un fichier *HTTPHandlers.json* : diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-rules.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-rules.md index c5d53afb1f666c..ebc926199d567c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-rules.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/http-rules.md @@ -11,8 +11,8 @@ To define HTTP rules, you just need to write some RegEx to declare the URL patte HTTP rules are supported in the following contexts: -- [scalable sessions](./sessions.md#enabling-web-sessions) or [no sessions](../settings/web.md#no-sessions) are enabled, -- a web server run locally by 4D or 4D Server, including those [run by components](./webServerObject.md). +- les [sessions extensibles](./sessions.md#enabling-web-sessions) ou [pas de sessions](../settings/web.md#no-sessions) sont activées, +- un serveur web exécuté localement par 4D ou 4D Server, y compris ceux [exécutés par des composants](./webServerObject.md). ## How to set rules @@ -64,12 +64,17 @@ The following action keywords are supported: ### Non-modifiable headers -The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions: +Some headers could not be added, modified or removed: -- "Date", -- "Content-Length" +| Header | Ajouter | Set | Remove | +| ---------------- | ------- | ---------- | ------ | +| Date | Non | Non | Non | +| Content-Length | Non | Non | Non | +| Content-Encoding | Non | Non | Non | +| Vary | Oui | Non | Non | +| Set-Cookie | Oui | Add cookie | Non | -Modifying these headers do not generate errors, however modifications will be ignored. +Unauthorized changes on these headers do not generate errors, however modifications will be ignored. ### Current rules @@ -215,7 +220,7 @@ $return:=WEB Server.start($settings) ``` -:::tip Related blog post +:::tip Article(s) de blog sur le sujet [New Way to Control Your HTTP Responses](https://blog.4d.com/new-way-to-control-your-http-responses/) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md index a61af9ff781cc8..7395ed0a06637b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/preemptiveWeb.md @@ -44,7 +44,7 @@ Tout le code 4D exécuté par le serveur Web doit être thread-safe si vous souh - La méthode projet `compiler_web` (indépendamment de sa propriété "Mode d'exécution") ; -- Basically any code processed by the [`PROCESS 4D TAGS`](../commands-legacy/process-4d-tags.md) command in the web context, for example through .shtml pages +- En principe, tout code traité par la commande [`PROCESS 4D TAGS`](../commands-legacy/process-4d-tags.md) dans le contexte du web, par exemple par le biais de pages .shtml - Toute méthode projet comportant l'attribut "Available through 4D tags and URLS (`4DACTION`, etc.)" diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/sessions.md index 3524feb00429dd..20caa69023fa0f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/sessions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/WebServer/sessions.md @@ -12,7 +12,7 @@ Les sessions Web permettent de : - stocker et partager des données entre les process d'un client web en utilisant le [.storage](../API/SessionClass.md#storage) de la session, - associer des privilèges à l'utilisateur qui exécute la session. -:::tip Related blog post +:::tip Article(s) de blog sur le sujet [Sessions évolutives pour applications web avancées](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) @@ -22,7 +22,7 @@ Les sessions Web permettent de : Les sessions Web sont utilisées par : -- [Web applications](gettingStarted.md) sending http requests (including [SOAP Web services](../commands/theme/Web_Services_Server.md) and [/4DACTION](../WebServer/httpRequests.md#4daction) requests), +- les [applications Web](gettingStarted.md) envoyant des requêtes http (y compris les [Web services SOAP](../commands/theme/Web_Services_Server.md) et les requêtes [/4DACTION](../WebServer/httpRequests.md#4daction)), - les appels à l'[API REST](../REST/authUsers.md), qui sont effectués par les [datastores distants](../ORDA/remoteDatastores.md) et les [pages Qodly](qodly-studio.md). ## Activation des sessions web @@ -36,7 +36,7 @@ Cette option est sélectionnée par défaut dans les nouveaux projets. Elle peut - En utilisant la propriété [`.scalableSession`](API/WebServerClass.md#scalablession) de l'objet Web Server (à passer dans le paramètre *settings* de la fonction [`.start()`](API/WebServerClass.md#start) ). Dans ce cas, ce paramètre remplace l'option définie dans la boîte de dialogue Propriétés pour l'objet Web Server (il n'est pas stocké sur disque). -> The [`WEB SET OPTION`](../commands-legacy/web-set-option.md) command can also set the session mode for the main Web server. +> La commande [`WEB SET OPTION`](../commands-legacy/web-set-option.md) peut également définir le mode de session du serveur Web principal. Dans tous les cas, ce paramètre est local à la machine ; il peut donc être différent sur le serveur Web 4D Server et les serveurs Web des machines 4D distantes. @@ -44,7 +44,7 @@ Dans tous les cas, ce paramètre est local à la machine ; il peut donc être di ## Implémentation des sessions -When [sessions are enabled](#enabling-web-sessions), automatic mechanisms are implemented, based upon a private cookie set by 4D itself: "4DSID__AppName_", where *AppName* is the name of the application project. Ce cookie référence la session web courante pour l'application. +Lorsque [les sessions sont activées](#enabling-web-sessions), des mécanismes automatiques sont mis en œuvre, sur la base d'un cookie privé défini par 4D lui-même : "4DSID_*AppName*", où *AppName* est le nom du projet d'application. Ce cookie référence la session web courante pour l'application. :::info @@ -73,7 +73,7 @@ L'objet `Session` de la session en cours peut ensuite être manipulé via la com :::info -Les process Web ne se terminent généralement pas, ils sont recyclés dans un pool pour des raisons d'optimisation. Lorsqu'un process termine l'exécution d'une requête, il est replacé dans le pool et rendu disponible pour la requête suivante. Since a web process can be reused by any session, [process variables](Concepts/variables.md#process-variables) must be cleared by your code at the end of its execution (using [`CLEAR VARIABLE`](../commands-legacy/clear-variable.md) for example). Ce nettoyage est nécessaire pour toute information liée au process, comme une référence à un fichier ouvert. C'est la raison pour laquelle **il est recommandé** d'utiliser l'objet [Session](API/SessionClass.md) lorsque vous souhaitez conserver les informations relatives à la session. +Les process Web ne se terminent généralement pas, ils sont recyclés dans un pool pour des raisons d'optimisation. Lorsqu'un process termine l'exécution d'une requête, il est replacé dans le pool et rendu disponible pour la requête suivante. Comme un process web peut être réutilisé par n'importe quelle session, les [variables process](Concepts/variables.md#process-variables) doivent être effacées par votre code à la fin de son exécution (en utilisant [`CLEAR VARIABLE`](../commands-legacy/clear-variable.md) par exemple). Ce nettoyage est nécessaire pour toute information liée au process, comme une référence à un fichier ouvert. C'est la raison pour laquelle **il est recommandé** d'utiliser l'objet [Session](API/SessionClass.md) lorsque vous souhaitez conserver les informations relatives à la session. ::: @@ -90,7 +90,7 @@ Une session web évolutive est fermée lorsque: La durée de vie d'un cookie inactif est de 60 minutes par défaut, ce qui signifie que le serveur Web fermera automatiquement les sessions inactives après 60 minutes. -This timeout can be set using the [`.idleTimeout`](API/SessionClass.md#idletimeout) property of the `Session` object (the timeout cannot be less than 60 minutes) or the *connectionInfo* parameter of the [`Open datastore`](../commands/open-datastore.md) command. +Ce délai peut être défini en utilisant la propriété [`.idleTimeout`](API/SessionClass.md#idletimeout) de l'objet `Session` (le délai ne peut être inférieur à 60 minutes) ou le paramètre *connectionInfo* de la commande [`Open datastore`](../commands/open-datastore.md). Lorsqu'une session web est fermée, si la commande [`Session`](commands/session.md) est appelée par la suite : @@ -159,7 +159,7 @@ http://localhost:8044/authenticate.shtml ![alt-text](../assets/en/WebServer/authenticate.png) -3. La méthode de projet d'authentification recherche la personne *userID* et valide le mot de passe par rapport à la valeur hachée déjà stockée dans la table *SalesPersons* : +3. La méthode projet d'authentification recherche la personne *userID* et valide le mot de passe par rapport à la valeur hachée déjà stockée dans la table *SalesPersons* : ```4d var $indexUserId; $indexPassword; $userId : Integer @@ -201,82 +201,82 @@ Else End if ``` -:::note +:::tips Articles de blog sur le sujet -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Sessions évolutives pour applications web avancées](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: -## Session Token (OTP) +## Token de session (OTP) -The 4D web server allows you to generate, share, and use OTP (One-Time Passcode) session tokens. OTP session tokens are used to secure communications with third-party applications or websites. For information on OTP, please refer to the [One-time password page](https://en.wikipedia.org/wiki/One-time_password) on Wikipedia. +Le serveur web 4D vous permet de générer, de partager et d'utiliser des tokens de session OTP (One-Time Passcode). Les tokens (ou *jetons*) de session OTP sont utilisés pour sécuriser les communications avec des applications ou des sites web tiers. Pour plus d'informations sur OTP, veuillez vous référer à la page [Mot de passe à usage unique](https://en.wikipedia.org/wiki/One-time_password) sur Wikipedia. -In 4D, OTP session tokens are useful when calling external URLs and being called back in another browser or device (mobile/computer). Typically, a third-party application sends a confirmation email containing a callback link on which the user has to click. The callback link includes the OTP token, so that the session which triggered the callback is loaded along with its data and privileges. This principle allows you to share the same session on multiple devices. Thanks to this architecture, the [session cookie](#session-implementation) is not exposed on the network, which eliminates the risk of man-in-the-middle attack. +Dans 4D, les tokens de session OTP sont utiles pour appeler des URL externes et être rappelé dans un autre navigateur ou appareil (mobile/ordinateur). Généralement, une application tierce envoie un courriel de confirmation contenant un lien de rappel sur lequel l'utilisateur doit cliquer. Le lien de rappel inclut le token OTP, de sorte que la session qui a déclenché le rappel est chargée avec ses données et ses privilèges. Ce principe vous permet de partager la même session sur plusieurs appareils. Grâce à cette architecture, le [cookie de session] (#session-implementation) n'est pas exposé sur le réseau, ce qui élimine le risque d'une attaque de type "man-in-the-middle". :::tips Articles de blog sur le sujet -[Connect Your Web Apps to Third-Party Systems](https://blog.4d.com/connect-your-web-apps-to-third-party-systems/) +[Connectez vos applications Web à des systèmes tiers](https://blog.4d.com/connect-your-web-apps-to-third-party-systems/) ::: ### Vue d’ensemble -The basic sequence of an OTP session token use in a 4D web application is the following: +La séquence de base de l'utilisaton d'un token de session OTP dans une application web 4D est la suivante : -1. The web user initiates an action that requires a secured third-party connection, for example a validation, from within a specific session. -2. In your 4D code, you create a new OTP for the session using the [`Session.createOTP()`](../API/SessionClass.md#createotp) function. -3. You send a request to the third-party application with the session token included in the callback Uri. Note that the way to provide the callback Uri to a third-party application depends on its API (see below). -4. The third-party application sends back a request to 4D with the pattern you provided in the callback Uri. -5. The request callback is processed in your application. +1. L'utilisateur web initie une action qui nécessite une connexion tierce sécurisée, par exemple une validation, à partir d'une session spécifique. +2. Dans votre code 4D, vous créez un nouvel OTP pour la session à l'aide de la fonction [`Session.createOTP()`](../API/SessionClass.md#createotp). +3. Vous envoyez une requête à l'application tierce avec le token de session inclus dans l'Uri de callback (rappel). Notez que la manière de fournir l'Uri de rappel à une application tierce dépend de son API (voir ci-dessous). +4. L'application tierce renvoie une requête à 4D avec le modèle que vous avez fourni dans l'Uri de rappel. +5. Le rappel de la requête est traité dans votre application. -By definition, an OTP token can only be used once. In this scenario, if a web request is received with a session token as parameter that has already been used, the initial session is not restored. +Par définition, un token OTP ne peut être utilisé qu'une seule fois. Dans ce scénario, si une requête web est reçue avec un token de session comme paramètre qui a déjà été utilisé, la session initiale n'est pas restaurée. -### Processing the OTP in the callback +### Traitement de l'OTP dans le callback -Callbacks from third-party applications that include the OTP token can be processed in different ways in your 4D application, depending on your development and the third-party API. Basically, you have two possibilities to handle the token: through the **`$4DSID`** parameter for an automatic processing, or through a custom parameter that you need to process. +Les callbacks d'applications tierces qui incluent le token OTP peuvent être traités de différentes manières dans votre application 4D, en fonction de votre développement et de l'API tierce. En principe, vous avez deux possibilités pour gérer le token : via le paramètre **`$4DSID`** pour un traitement automatique, ou via un paramètre personnalisé que vous devez traiter. -#### Using `$4DSID` in the URL +#### Utilisation de `$4DSID` dans l'URL -Using the `$4DSID` parameter is the most simple way to process a callback from the third-party application: +L'utilisation du paramètre `$4DSID` est la façon la plus simple de traiter un callback de l'application tierce : -- The OTP token is provided as a parameter directly in the callback url using the standard `?$4DSID=XXXX123` syntax. -- In 4D, you implement a dedicated [HTTP Request handler](http-request-handler.md) in your 4D application using [`IncomingMessage`](../API/IncomingMessageClass.md) and [`OutgoingMessage`](../API/OutgoingMessageClass.md) classes. -- If the `$4DSID` token is valid, the related web user session is **automatically restored** in any web process with its storage and privileges. +- Le token OTP est fourni en tant que paramètre directement dans l'url de callback en utilisant la syntaxe standard `?$4DSID=XXXX123`. +- Dans votre application 4D, vous implémentez un [HTTP Request handler](http-request-handler.md) dédié en utilisant les classes [`IncomingMessage`](../API/IncomingMessageClass.md) et [`OutgoingMessage`](../API/OutgoingMessageClass.md). +- Si le token `$4DSID` est valide, la session de l'utilisateur web concerné est **automatiquement restaurée** dans n'importe quel process web avec son *storage* et ses privilèges. :::note -A [`4DACTION`](./httpRequests.md#4daction) url can also be used on the 4D side. +Une url [`4DACTION`](./httpRequests.md#4daction) peut également être utilisée du côté 4D. ::: -#### Using a custom parameter +#### Utilisation d'un paramètre personnalisé -The OTP token can also be provided as a custom parameter that you need to process specifically to restore the session. You must use this solution if: +Le token OTP peut également être fourni en tant que paramètre personnalisé que vous devez traiter spécifiquement pour restaurer la session. Vous devez utiliser cette solution si : -- the third-party application does not allow to insert parameters such as a `$4DSID` directly in the redirect Uri, and provides a dedicated API (the implementation depends on the third-party application), -- or, you want to call an ORDA function through REST to process the callback, in which case you need to pass the OTP with the [REST parameter syntax](../REST/ClassFunctions.md#parameters) (e.g. `?$params='["XXX123"]'`). +- l'application tierce ne permet pas d'insérer des paramètres tels que `$4DSID` directement dans l'Uri de redirection, et fournit une API dédiée (l'implémentation dépend de l'application tierce), +- ou bien vous souhaitez appeler une fonction ORDA via REST pour traiter le callback, auquel cas vous devez transmettre l'OTP avec la [syntaxe des paramètres REST](../REST/ClassFunctions.md#parameters) (par exemple `?$params='["XXX123"]'`). -In both cases, you need to extract the token from the custom parameter and to call the [`Session.restore()`](../API/SessionClass.md#restore) function with the token as parameter. +Dans les deux cas, vous devez extraire le token du paramètre personnalisé et appeler la fonction [`Session.restore()`](../API/SessionClass.md#restore) avec le token en paramètre. -#### Processing a invalid OTP +#### Traitement d'un OTP non valide -The OTP token is considered invalid if: +Le token OTP est considéré comme invalide si : - le token de session a déjà été utilisé, - le token de session a expiré, - le token de session n'existe pas, - la session d'origine elle-même a expiré. -In this case, no web user session is restored and the current session (if any) is left unchanged. Usually, you can decide to display a login page or to open a guest session. +Dans ce cas, aucune session d'utilisateur Web n'est restaurée et la session courante (s'il y en a une) reste inchangée. En général, vous pouvez décider d'afficher une page de connexion ou d'ouvrir une session guest. -Verifying if the received OTP token is valid depends on how it was handled: +La vérification de la validité du token OTP reçu dépend de la manière dont il a été géré : -- If you used a `$4DSID`, you can store a custom status property in the [session storage](../API/SessionClass.md#storage) at the moment of the token creation, and check this status once the OTP token was received to see if it is the same value (see example). -- If you used the [`Session.restore()`](../API/SessionClass.md#restore) function, it returns true if the session correctly restored. +- Si vous avez utilisé un `$4DSID`, vous pouvez stocker une propriété d'état personnalisée dans le [storage de la session](../API/SessionClass.md#storage) au moment de la création du token, et vérifier cet état une fois que le token OTP a été reçu pour voir s'il s'agit de la même valeur (voir l'exemple). +- Si vous avez utilisé la fonction [`Session.restore()`](../API/SessionClass.md#restore), elle renvoie true si la session a été correctement restaurée. -### Scenario with $4DSID +### Scénario avec $4DSID -The scenario using the `$4DSID` key is illustrated in the following diagram: +Le scénario utilisant la clé `$4DSID` est illustré dans le diagramme suivant : ```mermaid sequenceDiagram @@ -289,25 +289,25 @@ sequenceDiagram FrontEnd ->>+ 4DServer: ValidateOperation() - 4DServer ->> 4DServer: Generate OTP with session.createOTP() -Note over 4DServer: e.g. OTP is 2E5D0D5xxx + 4DServer ->> 4DServer: Créer OTP avec session.createOTP() +Note over 4DServer: e.g. OTP vaut 2E5D0D5xxx - 4DServer ->>+ ExternalPlatform: Call the external platform, give a callback URL containing a $4DSID parameter (depends on the platform API) + 4DServer ->>+ ExternalPlatform: Appel de la plate-forme tirece, envoi d'un URL de rappel contenant un paramètre $4DSID (dépend de l'API de la plate-forme) Note right of 4DServer: e.g. callback URL: "https://acme.com/my4DApp/completeOperation?$4DSID=2E5D0D5xxx" - ExternalPlatform ->>+ ExternalPlatform: Process request -ExternalPlatform ->>+ 4DServer: External platform calls back 4D Server if validation OK + ExternalPlatform ->>+ ExternalPlatform: Traitement de la requête +ExternalPlatform ->>+ 4DServer: Rappel de 4D Server si validation OK Note right of 4DServer: e.g. https://acme.com/my4DApp/completeOperation?$4DSID=2E5D0D57751D471DB29FD110D2DCE253 - 4DServer ->> 4DServer: An HTTP request handler processes the URL pattern "/my4DApp/completeOperation"
    (e.g. handleOperation() function of the OperationsHandler singleton, see code below) + 4DServer ->> 4DServer: Un HTTP request handler traite le motif d'URL "/my4DApp/completeOperation"
    (e.g. fonction handleOperation() du singleton OperationsHandler, voir code ci-dessous) - Note over 4DServer: The original session is retrieved thanks to the OTP given in the $4DSID parameter. - Note over 4DServer: Session object refers to the session which generated the OTP - 4DServer ->>+ FrontEnd: Restore session + Note over 4DServer: La session d'origine session est restaurée grâce à l'OTP fourni dans le paramètre $4DSID. + Note over 4DServer: L'objet Session référence la session qui a généré l'OTP + 4DServer ->>+ FrontEnd: Restauration de la session ``` -The 4D HTTP request handler definition: +La définition du gestionnaire de requêtes HTTP 4D : ```json [ @@ -320,7 +320,7 @@ The 4D HTTP request handler definition: ] ``` -The singleton class: +La classe du singleton : ```4d //Class OperationsHandler @@ -329,9 +329,9 @@ shared singleton Class constructor() $session:=Session ``` -### Scenario with `restore` function +### Scénario avec la fonction `restore` -The scenario using a custom parameter is illustrated in the following diagram: +Le scénario utilisant un paramètre personnalisé est illustré dans le diagramme suivant : ```mermaid sequenceDiagram @@ -344,29 +344,29 @@ sequenceDiagram FrontEnd ->>+ 4DServer: Validate() - 4DServer ->> 4DServer: Generate OTP with session.createOTP() + 4DServer ->> 4DServer: Créer OTP avec session.createOTP() Note over 4DServer: e.g. OTP is 2E5D0D5xxx - 4DServer ->> ExternalPlatform: Call the external platform giving the OTP, for example as a state parameter (depends on the platform) + 4DServer ->> ExternalPlatform: Appel de la plate-forme externe en donnant l'OTP, par exemple sous forme de paramètre state (dépend de la plate-forme) Note right of 4DServer: e.g. https://thirdPartSystem.com/validate?state=2E5D0D5xxx&redirect_uri=https://acme.com/my4DApp/completeOperation - Note right of 4DServer: The callback URL will be like: https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx - ExternalPlatform ->> ExternalPlatform: Process request - ExternalPlatform ->> 4DServer: The state parameter is sent back by the third party system in the callback + Note right of 4DServer: L'URLde rappel sera du type : https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx + ExternalPlatform ->> ExternalPlatform: Traitement de la requête + ExternalPlatform ->> 4DServer: Le paramètre state est renvoyé par le système tiers dans la callback Note right of 4DServer: e.g. https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx - 4DServer ->> 4DServer: An HTTP request handler processes the URL pattern "/my4DApp/completeOperation"
    (e.g. handleOperation() function of the OperationHandler singleton, see code below) + 4DServer ->> 4DServer: Un HTTP request handler traite le motif d'URL "/my4DApp/completeOperation"
    (e.g. fonction handleOperation() du singleton OperationHandler, voir code ci-dessous) 4DServer ->> 4DServer: Session.restore() - Note over 4DServer:The state parameter is got from the received request ($req.urlQuery.state) - Note over 4DServer:The original session is retrieved by calling the restore() function - Note over 4DServer:Session object refers to the session which generated the OTP - 4DServer ->>+ FrontEnd: Restore session + Note over 4DServer:Le paramètre state est extrait de la requête reçue ($req.urlQuery.state) + Note over 4DServer:La session originale est restaurée par l'appel à la fonction restore() + Note over 4DServer: L'objet Session référence la session qui a généré l'OTP + 4DServer ->>+ FrontEnd: Restauration de la session ``` -The 4D HTTP request handler definition: +La définition du gestionnaire de requêtes HTTP 4D : ```json [ @@ -379,7 +379,7 @@ The 4D HTTP request handler definition: ] ``` -The singleton class: +La classe du singleton : ```4d //Class OperationsHandler @@ -388,9 +388,9 @@ shared singleton Class constructor() Session.restore($req.urlQuery.state) ``` -### Example of email validation with $4DSID +### Exemple de validation d'email avec $4DSID -1. A user account is created in a *Users* dataclass. A *$info* object is received with the email and password. An OTP corresponding to the current session is generated. An URL is then returned with this OTP given in the $4DSID parameter. +1. Un compte d'utilisateur est créé dans une dataclass *Users*. Un objet *$info* est reçu avec l'email et le mot de passe. Un OTP correspondant à la session courante est généré. Une URL est alors renvoyée avec l'OTP indiqué dans le paramètre $4DSID. ```4d //cs.Users class @@ -401,26 +401,26 @@ var $user : cs.UsersEntity var $status : Object var $token : Text -$user:=This.new() //create a new user +$user:=This.new() //créatoin d'un user $user.fromObject($info) $status:=$user.save() -//Store information in the session -//including user creation status +//Stockage d'information dans la session +//y compris le statut de création de l'utilisateur Use (Session.storage) Session.storage.status:=New shared object("step"; "Waiting for validation email"; / "email"; $user.email; "ID"; $user.ID) End use -//Generate an OTP corresponding to the session +//Génération d'un OTP correspondant à la session $token:=Session.createOTP() -// Return an URL with a $4DSID parameter +// Renvoi d'un URL avec un paramètre $4DSID return "https://my.server.com/tools/validateEmail?$4DSID="+$token` ``` -2. The user is sent this URL as a link in an email. The URL prefix `/validateEmail` is handled by a [custom HTTP request handler](./http-request-handler.md): +2. L'utilisateur reçoit cette URL sous la forme d'un lien dans un courrier électronique. Le préfixe d'URL `/validateEmail` est traité par un [gestionnaire de requête HTTP personnalisé](./http-request-handler.md) : ```json [ @@ -433,7 +433,7 @@ return "https://my.server.com/tools/validateEmail?$4DSID="+$token` ] ``` -The *validateEmail()* function of the RequestHandler singleton: +La fonction *validateEmail()* du singleton RequestHandler : ```4d //validateEmail class @@ -443,12 +443,12 @@ shared singleton Class constructor() Function validateEmail() : 4D.OutgoingMessage var $result:=4D.OutgoingMessage.new() - //The session which generated the OTP is retrieved - //thanks to the $4DSID parameter given in the URL + //La session qui a généré l'OTP est restaurée + //grâce au paramètre $4DSID fourni dans l'URL If (Session.storage.status.step="Waiting for validation email") $user:=ds.Users.get(Session.storage.status.ID) - $user.emailValidated() //set to true + $user.emailValidated() //fixé à vrai $result.setBody("Congratulations
    "\ +"Your email "+Session.storage.status.email+" has been validated") @@ -466,21 +466,21 @@ Function validateEmail() : 4D.OutgoingMessage ``` -Since the `$4DSID` parameter contains a valid OTP corresponding to the original session, the `Session` object refers to the session that created the OTP. +Comme le paramètre `$4DSID` contient un OTP valide correspondant à la session d'origine, l'objet `Session` référence la session qui a créé l'OTP. -A new user is created, and some information is stored in the session, especially the current step of the user account creation process (Waiting for validation email) and the user ID. +Un nouvel utilisateur est créé et des informations sont stockées dans la session, en particulier l'étape courante du processus de création du compte utilisateur (attente du courriel de validation) et l'identifiant de l'utilisateur. -### Supported contexts +### Contextes pris en charge -- Both HTTP and HTTPS schemas are supported. -- Only [scalable sessions](#enabling-web-sessions) can be reused with tokens. -- Only sessions of the host database can be reused (sessions created in component web servers cannot be restored). -- Tokens are not supported with client/server sessions or single-user sessions. +- Les schémas HTTP et HTTPS sont tous deux pris en charge. +- Seules des [sessions évolutives](#enabling-web-sessions) peuvent être réutilisées avec des tokens. +- Seules les sessions de la base de données hôte peuvent être réutilisées (les sessions créées dans les serveurs web des composants ne peuvent pas être restaurées). +- Les tokens ne sont pas pris en charge dans les sessions client/serveur ou les sessions mono-utilisateur. -### Lifespan +### Durée de vie -A session token has a lifespan, and the session itself has a lifespan. The session token lifespan can be set [at the token creation](../API/SessionClass.md#createotp). By default, the token lifespan is the same value as the [`.idleTimeout`](../API/SessionClass.md#idletimeout) value. +Un token de session a une durée de vie, et la session elle-même a une durée de vie. La durée de vie du token de session peut être définie [lors de sa création](../API/SessionClass.md#createotp). Par défaut, la durée de vie du token est la même que la valeur [`.idleTimeout`](../API/SessionClass.md#idletimeout). -A session is only restored by a token if both the session token lifespan and the session lifespan have not expired. In other cases (the session token has expired and/or the session itself has expired), a guest session is created when a web request with a session token is received. +Une session n'est restaurée par un token que si ni la durée de vie du token de session ni celle de la session n'ont expiré. Dans les autres cas (le token de session a expiré et/ou la session elle-même a expiré), une session *guest* est créée lorsqu'une requête web avec un token de session est reçue. 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 2d275428873a7d..729be9ccb55332 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 @@ -9,29 +9,29 @@ La classe OpenAI fournit un client permettant d'accéder à diverses ressources ## Propriétés de configuration -| Nom de propriété | Type | Description | Optionnel | -| ---------------- | ---- | ------------------------------------------------------------------------------ | --------------- | -| `apiKey` | Text | Votre [clé API OpenAI ](https://platform.openai.com/api-keys). | Non pour OpenAI | -| `baseURL` | Text | URL de base pour les requêtes de l'API OpenAI. | Oui | -| `organisation` | Text | Votre identifiant d'organisation OpenAI. | Oui | -| `project` | Text | Votre identifiant de projet OpenAI. | Oui | +| Nom de propriété | Type | Description | Optionnel | +| ---------------- | ---- | ------------------------------------------------------------------------------ | --------------------------------------------------------- | +| `apiKey` | Text | Votre [clé API OpenAI ](https://platform.openai.com/api-keys). | Peut être requis par le fournisseur | +| `baseURL` | Text | URL de base pour les requêtes de l'API OpenAI. | Yes (if omitted = use OpenAI Platform) | +| `organisation` | Text | Votre identifiant d'organisation OpenAI. | Oui | +| `project` | Text | Votre identifiant de projet OpenAI. | Oui | ### Propriétés HTTP supplémentaires -| Nom de propriété | Type | Description | -| ---------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `timeout` | Real | Time in seconds before timeout occurs. | -| `maxRetries` | Real | Maximum number of retry attempts in case of failure. | -| `httpAgent` | [4D.HTTPAgent](https://developer.4d.com/docs/API/HTTPAgentClass) | HTTP agent used for making requests. | -| `customHeaders` | Real | Custom headers to be included in the HTTP requests. | +| Nom de propriété | Type | Description | +| ---------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | +| `timeout` | Real | Délai en secondes avant l'expiration du délai. | +| `maxRetries` | Real | Nombre maximum de tentatives en cas d'échec. | +| `httpAgent` | [4D.HTTPAgent](https://developer.4d.com/docs/API/HTTPAgentClass) | Agent HTTP utilisé pour effectuer des requêtes. | +| `customHeaders` | Real | En-têtes personnalisés à inclure dans les requêtes HTTP. | ### Class constructor Créer une instance de la classe client OpenAI. -| Nom de l'argument | Type | Description | -| ------------------------- | ------------ | ------------------------------------------------------- | -| `apiKey or configuration` | Text, Object | apiKey if Text or configuration Object. | +| Nom de l'argument | Type | Description | +| ------------------------- | ------------ | ----------------------------------------------------------- | +| `apiKey` ou configuration | Text, Object | apiKey si Texte, ou objet de configuration. | #### Clé API @@ -58,15 +58,15 @@ $client.baseURL:="https://server.ai" ## Ressources API -L'API donne accès à de multiples ressources qui permettent une interaction transparente avec les services de l'OpenAI. Each resource is encapsulated within a dedicated API class, offering a structured and intuitive way to interact with different functionalities. +L'API donne accès à de multiples ressources qui permettent une interaction transparente avec les services de l'OpenAI. Chaque ressource est encapsulée dans une classe d'API dédiée, offrant un moyen structuré et intuitif d'interagir avec les différentes fonctionnalités. -| Nom de propriété | Type | Description | -| ---------------- | ----------------------------------------------- | ---------------------------------------------- | -| `models` | [OpenAIModelsAPI](OpenAIModelsAPI.md) | Accès à l'API des modèles. | -| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | Accès à l'API de Chat. | -| `images` | [OpenAIImagesAPI](OpenAIImagesAPI.md) | Accès à l'API Images. | -| `moderations` | [OpenAIModerationsAPI](OpenAIModerationsAPI.md) | Accès à l'API des modérations. | -| `embeddings` | [OpenAIEmbeddingsAPI](OpenAIEmbeddingsAPI.md) | Access to the Embeddings API. | +| Nom de propriété | Type | Description | +| ---------------- | ----------------------------------------------- | ---------------------------------------------------------------------------- | +| `models` | [OpenAIModelsAPI](OpenAIModelsAPI.md) | Accès à l'API des modèles. | +| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | Accès à l'API de discussion (Chat). | +| `images` | [OpenAIImagesAPI](OpenAIImagesAPI.md) | Accès à l'API Images. | +| `moderations` | [OpenAIModerationsAPI](OpenAIModerationsAPI.md) | Accès à l'API des modérations. | +| `embeddings` | [OpenAIEmbeddingsAPI](OpenAIEmbeddingsAPI.md) | Accès à l'API Embeddings (vectorisation). | ### Exemple d'utilisation diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatAPI.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatAPI.md index 936135592b6429..85b9cc589d5ccc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatAPI.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatAPI.md @@ -5,14 +5,14 @@ title: OpenAIChatAPI # OpenAIChatAPI -La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la fonctionnalité de chat de l'OpenAI, en tirant parti des capacités de complétion et de vision. +La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la fonctionnalité de discussion (*chat*) de l'OpenAI, en tirant parti des capacités de complétion et de vision. ## Propriétés -| Propriété | Type | Description | -| ------------- | ------------------------------------------------------- | ----------------------------------------------------------------------- | -| `completions` | [OpenAIChatCompletionsAPI](OpenAIChatCompletionsAPI.md) | An instance that handles chat completions requests. | -| `vision` | [OpenAIVision](OpenAIVision.md) | A helper instance that handles vision-related requests. | +| Propriété | Type | Description | +| ------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `completions` | [OpenAIChatCompletionsAPI](OpenAIChatCompletionsAPI.md) | Une instance qui gère les requêtes de complétion de la discussion. | +| `vision` | [OpenAIVision](OpenAIVision.md) | A helper instance that handles vision-related requests. | ## Function @@ -20,10 +20,10 @@ La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la f **create**(*systemPrompt* : Text) : OpenAIChatHelper -| Paramètres | Type | Description | -| -------------- | --------------------------------------- | ----------------------------------------------------------------- | -| *systemPrompt* | Text | The system prompt to initialize the chat. | -| Résultat | [OpenAIChatHelper](OpenAIChatHelper.md) | A helper instance for managing chat interactions. | +| Paramètres | Type | Description | +| -------------- | --------------------------------------- | -------------------------------------------------------------------------------------- | +| *systemPrompt* | Text | L'invite du système pour initialiser la discussion. | +| Résultat | [OpenAIChatHelper](OpenAIChatHelper.md) | Une instance du helper pour gérer les interactions dans la discussion. | #### Exemple d'utilisation 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 d3a3e3cf405c79..c662fa21029b46 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 @@ -30,9 +30,9 @@ The `OpenAIChatCompletionParameters` class is designed to handle the parameters ### Asynchronous Callback Properties -| Propriété | Type | Description | -| ------------------------------------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `onData` (or `formula`) | 4D.Function | A function to be called asynchronously when receiving data chunk. Ensure that the current process does not terminate. | +| Propriété | Type | Description | +| ------------------------------------------ | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `onData` (or `formula`) | 4D.Function | A function to be called asynchronously when receiving data chunk. Assurez-vous que le process courant ne se termine pas. | `onData` will receive as argument an [OpenAIChatCompletionsStreamResult](./OpenAIChatCompletionsStreamResult.md). diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md index 918611abe323f1..25400a67a22838 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md @@ -12,16 +12,16 @@ La classe `OpenAIMessage` représente un message structuré contenant un rôle, | Propriété | Type | Description | | -------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | `rôle` | Text | The role of the message (e.g., "user", "assistant", "system", "tool"). | -| `contenu` | Variant | The content of the message, which can be a text or a collection of objects. | -| `user` | Text | An optional property representing the user associated with the message. | +| `contenu` | Variant | Le contenu du message, qui peut être un texte ou une collection d'objets. | +| `user` | Text | Une propriété facultative représentant l'utilisateur associé au message. | | `tool_calls` | Collection | A collection of tool calls requested by the assistant. Each tool call contains an `id`, `type`, and a `function` object. | | `tool_call_id` | Text | The ID of the tool call that this message is responding to (used when `role` is "tool"). | ## Propriétés calculées -| Propriété | Type | Description | -| --------- | ---- | --------------------------------------------------------- | -| `text` | Text | A property representing the text message. | +| Propriété | Type | Description | +| --------- | ---- | -------------------------------------------------------------- | +| `text` | Text | Une propriété représentant le message textuel. | ## Fonctions @@ -29,23 +29,23 @@ La classe `OpenAIMessage` représente un message structuré contenant un rôle, **addImageURL**(*imageURL* : Text; *detail* : Text) -| Paramètres | Type | Description | -| ---------- | ---- | ----------------------------------------------------------- | -| *imageURL* | Text | The URL of the image to add to the message. | -| *detail* | Text | Additional details about the image. | +| Paramètres | Type | Description | +| ---------- | ---- | ------------------------------------------------------ | +| *imageURL* | Text | L'URL de l'image à ajouter au message. | +| *detail* | Text | Détails supplémentaires sur l'image. | -Adds an image URL to the content of the message. +Ajoute une URL d'image au contenu du message. ## Exemple d'utilisation ### Create a simple message and attach an image ```4d -// Create an instance of OpenAIMessage -var $message:=cs.AIKit.OpenAIMessage({role: "user"; content: "Hello!"}) +// Créer une instance d'OpenAIMessage +var $message:=cs.AIKit.OpenAIMessage({role : "user" ; content : "Hello !"}) -// Add an image URL with details -$message.addImageURL("http://example.com/image.jpg"; "high") +// Ajouter une image URL avec des détails +$message.addImageURL("http://example.com/image.jpg" ; "high") ``` ### Respond to a tool call message diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md index ab0f9184839a4f..3e875d09183335 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md @@ -5,7 +5,7 @@ title: OpenAIParameters # OpenAIParameters -The `OpenAIParameters` class is designed to handle execution and request parameters for interacting with the OpenAI API. +La classe `OpenAIParameters` est conçue pour gérer les paramètres d'exécution et de requête pour interagir avec l'API OpenAI. ## Propriétés @@ -13,16 +13,16 @@ The `OpenAIParameters` class is designed to handle execution and request paramet Use this callback property to receive the result regardless of success or error: -| Propriété | Type | Description | -| -------------------------------------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -| `onTerminate`
    (or `formula`) | 4D.Function | A function to be called asynchronously when finished. Ensure that the current process does not terminate. | +| Propriété | Type | Description | +| -------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `onTerminate`
    (or `formula`) | 4D.Function | Une fonction à appeler de manière asynchrone lorsqu'elle est terminée. Assurez-vous que le process courant ne se termine pas. | Use these callback properties for more granular control over success and error handling: -| Propriété | Type | Description | -| ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `onResponse` | 4D.Function | A function to be called asynchronously when the request finishes **successfully**. Ensure that the current process does not terminate. | -| `onError` | 4D.Function | A function to be called asynchronously when the request finishes **with errors**. Ensure that the current process does not terminate. | +| Propriété | Type | Description | +| ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `onResponse` | 4D.Function | A function to be called asynchronously when the request finishes **successfully**. Assurez-vous que le process courant ne se termine pas. | +| `onError` | 4D.Function | A function to be called asynchronously when the request finishes **with errors**. Assurez-vous que le process courant ne se termine pas. | > The callback function will receive the same result object type (one of [OpenAIResult](./OpenAIResult.md) child classes) that would be returned by the function in synchronous code. @@ -30,28 +30,28 @@ See [documentation about asynchronous code for examples](../asynchronous-call.md ### Network Properties -| Propriété | Type | Description | -| -------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `timeout` | Real | Overrides the client-level default timeout for the request, in seconds. Default is 0. | -| `httpAgent` | HTTPAgent | Overrides the client-level default HTTP agent for the request. | -| `maxRetries` | Integer | The maximum number of retries for the request. (Only if code not asynchrone ie. no function provided) | -| `extraHeaders` | Object | Extra headers to send with the request. | +| Propriété | Type | Description | +| -------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `timeout` | Real | Remplace le délai d'attente par défaut au niveau du client pour la requête, en secondes. Par défaut, 0. | +| `httpAgent` | HTTPAgent | Remplace l'agent HTTP par défaut au niveau du client pour la requête. | +| `maxRetries` | Integer | Nombre maximal de tentatives pour la requêtes. (Seulement si le code n'est pas asynchrone, c'est-à-dire s'il n'y a pas de fonction fournie) | +| `extraHeaders` | Object | En-têtes supplémentaires à envoyer avec la requête. | ### OpenAPI Properties -| Propriété | Type | Description | -| --------- | ---- | ----------------------------------------------------------------------------------------------------------- | -| `user` | Text | A unique identifier representing the end-user, which helps OpenAI monitor and detect abuse. | +| Propriété | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| `user` | Text | Un identifiant unique représentant l'utilisateur final, ce qui aide OpenAI à surveiller et à détecter les abus. | ### Others -| Propriété | Type | Description | -| --------- | ------- | ------------------------------------------------------------------------------------------------------------ | -| `throw` | Boolean | If true, throws an error if one occurs. Only if no formula callback defined. | +| Propriété | Type | Description | +| --------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `throw` | Boolean | Si true, faire un throw en cas d'erreur. Uniquement si aucune formule de callback n'est définie. | ## Classes héritées -Several classes inherit from `OpenAIParameters` to extend its functionality for specific use cases. Below are some of the classes that extend `OpenAIParameters`: +Plusieurs classes héritent de `OpenAIParameters` pour étendre ses fonctionnalités à des cas d'utilisation spécifiques. Voici quelques-unes des classes qui étendent `OpenAIParameters` : - [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - [OpenAIChatCompletionsMessagesParameters](OpenAIChatCompletionsMessagesParameters.md) diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/asynchronous-call.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/asynchronous-call.md index c0c0c453eb7436..aa37bc3c85f2bb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/asynchronous-call.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/asynchronous-call.md @@ -5,27 +5,27 @@ title: Appel asynchrone # Appel asynchrone -If you do not want to wait for the OpenAPI response when making a request to its API, you need to use asynchronous code. +Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. -To make asynchronous calls, you must provide a callback `4D.Function`(`Formula`) in the [OpenAIParameters](Classes/OpenAIParameters.md) object parameter to receive the result. +Pour effectuer des appels asynchrones, vous devez fournir une `4D.Function`(`Formula`) de rappel (*callback*) dans le paramètre objet [OpenAIParameters](Classes/OpenAIParameters.md) pour recevoir le résultat. -The callback function will receive the same result object type (one of [OpenAIResult](Classes/OpenAIResult.md) child classes) that would be returned by the function in synchronous code. Voir les exemples ci-dessous. +La fonction de callback recevra le même type d'objet de résultat (l'une des classes enfant de [OpenAIResult](Classes/OpenAIResult.md)) que celui qui serait renvoyé par la fonction dans un code synchrone. Voir les exemples ci-dessous. -## Process Considerations +## A propos des process -The asynchronous method is based on [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), so the response will be received within the current process. +La méthode asynchrone est basée sur [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), ainsi la réponse sera reçue dans le process courant. -> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. In such cases, consider using `CALL WORKER` or `CALL FORM`. +> ⚠️ Si votre process se termine à la fin de la méthode courante (par exemple, si vous utilisez New process ou l'éditeur de méthode), la formule de callback peut ne pas être appelée de manière asynchrone. Dans ce cas, il est nécessaire d'utiliser `CALL WORKER` ou `CALL FORM`. ## Exemples d’utilisation -### liste de modèles +### Liste de modèles ```4d $client.models.list({formula: Formula(MyReceiveMethod($1))}) ``` -`$1` sera une instance de [OpenAIModelListResult] (Classes/OpenAIModelListResult.md), donc la méthode `MyReceiveMethod` pourrait être : +`$1` sera une instance de [OpenAIModelListResult](Classes/OpenAIModelListResult.md), donc la méthode `MyReceiveMethod` pourrait être : ```4d #DECLARE($result: cs.AIKit.OpenAIModelListResult) @@ -41,7 +41,7 @@ Else End if ``` -### complétions de chat +### Complétions de chat ```4d var $messages:=[{role: "system"; content: "You are a helpful assistant."}] diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md index a27cd014683587..6f376ddde06727 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md @@ -7,17 +7,17 @@ title: Fournisseurs (Providers) De nombreux fournisseurs d'IA proposent une API de type OpenAI, vous pouvez donc utiliser ce projet pour vous y connecter. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +Pour ce faire, il suffit de passer l'adresse du fournisseur dans `baseURL` et d'utiliser sa clé d'api si nécessaire. ```4d $client.baseURL:="https://api.mistral.ai/v1" ``` -Some of them +Quelques-uns : -## Distant +## A distance -| Fournisseur | Url de base | +| Fournisseur | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Some of them ## Local -| Fournisseur | Url de base par défaut | Doc | +| Fournisseur | baseURL par défaut | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/overview.md b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/overview.md index 790109ee1305cf..27f37b8f05b508 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/aikit/overview.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/aikit/overview.md @@ -11,7 +11,7 @@ title: 4D-AIKit ## OpenAI -La classe [`OpenAI`](Classes/OpenAI.md) vous permet de faire des demandes à l'[API OpenAI](https://platform.openai.com/docs/api-reference/). +La classe [`OpenAI`](Classes/OpenAI.md) vous permet d'envoyer des requêtes à l'[API OpenAI](https://platform.openai.com/docs/api-reference/). ### Configuration @@ -21,7 +21,7 @@ Tout d'abord, initialisez le client OpenAI en utilisant votre clé API var $client:=cs.AIKit.OpenAI.new("your api key") ``` -Pour une API [ compatible provider ](compatible-openai.md), vous pouvez configurer l'URL du serveur en définissant le paramètre `baseURL`. +Pour l'API d'un [founisseur compatible](compatible-openai.md), vous devez configurer l'URL du serveur en définissant le paramètre `baseURL`. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -33,7 +33,7 @@ ou $client.baseURL:="https://your.server.ai" ``` -### Formuler des demandes +### Formuler des requêtes `OpenAI` fournit différents points de terminaison appelés ressources, chacun offrant diverses fonctions. @@ -41,7 +41,7 @@ $client.baseURL:="https://your.server.ai" var $result:=$client..() ``` -Le `$result` contient le `HTTPRequest`, un statut `success`, une collection de `errors` et plus encore. Voir [OpenAIResult](Classes/OpenAIResult.md) +Le résultat `$result` contient la requête `HTTPRequest`, un statut `success`, une collection de `errors` et plus encore. Voir [OpenAIResult](Classes/OpenAIResult.md) Voir quelques exemples ci-dessous. @@ -60,9 +60,9 @@ var $result:=$client.chat.completions.create($messages; {model: "gpt-4o-mini"}) // résultat dans $result.choice ``` -##### Assistant de chat +##### Helper de discussion (chat) -Cet assistant vous permet de maintenir une liste de messages d'utilisateurs et de réponses d'assistants. +Cet assistant vous permet de maintenir une liste de messages d'utilisateurs et de réponses de l'assistant. ```4d var $helper:=$client.chat.create("You are a helpful assistant.") @@ -71,9 +71,9 @@ $result:=$helper.prompt("and could you decompose this number") // conversation dans $helper.messages ``` -##### Assistant de vision +##### Helper de vision -Cet assistant permet l'analyse des images à travers le chat. +Cet assistant permet l'analyse des images à travers la discussion. ```4d var $result:=$client.chat.vision.create($imageUrl).prompt("give me a description of the image") @@ -113,13 +113,13 @@ var $moderation:=$client.moderations.create("This text contains inappropriate la #### Code asynchrone -Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. L'objet résultat sera reçu dans une fonction de rappel. +Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. L'objet résultat sera reçu dans une fonction de callback. Voir [documentation détaillée pour les exemples](asynchronous-call.md) ## Droits d'auteur -- This library is not affiliated with, endorsed by, or officially connected to OpenAI in any way. -- "OpenAI" and any related marks are trademarks or registered trademarks of OpenAI, LLC. All rights related to OpenAI's services, APIs, and technologies remain the property of OpenAI. -- This project simply provides an interface to OpenAI’s services and does not claim any ownership over their technology, branding, or intellectual property. +- Cette bibliothèque n'est pas affiliée à OpenAI, ni approuvée par elle, ni officiellement liée à elle de quelque manière que ce soit. +- "OpenAI" et toutes les marques associées sont des marques commerciales ou des marques déposées d'OpenAI, LLC. Tous les droits liés aux services, API et technologies de l'OpenAI restent la propriété de OpenAI. +- Ce projet fournit simplement une interface aux services d'OpenAI et ne revendique aucune propriété sur leur technologie, leur marque ou leur propriété intellectuelle. diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png new file mode 100644 index 00000000000000..7c9d523d0372f1 Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png new file mode 100644 index 00000000000000..8a4a075fd1f5d3 Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png new file mode 100644 index 00000000000000..b339a988df6172 Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md b/i18n/fr/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md index b3427c13e9a4fe..09dd557d1de1c5 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/fr/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md @@ -128,7 +128,11 @@ L’exemple suivant interdit toute nouvelle connexion entre 2 et 4 heures du mat   // Méthode base Sur ouverture connexion serveur  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time) ## Utilisation de tables et de champs -Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. +Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. Une base de données externe est un projet 4D indépendant du projet 4D principal, mais avec lequel vous pouvez travailler à partir du projet 4D principal. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. ### Exemple diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md b/i18n/fr/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md index 76df3863376f97..34145b3195459d 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barre d’outils comporte les éléments suivants : | Icône | Nom | Description | | ------------------------------------------------ | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Exécuter le formulaire | Permet de tester l’exécution du formulaire. Lorsque vous cliquez sur ce bouton, 4D ouvre une nouvelle fenêtre et affiche le formulaire dans son contexte (liste d’enregistrements pour un formulaire liste et enregistrement courant en page pour un formulaire détaillé). Le formulaire est exécuté dans le process principal. | -| ![](../assets/en/FormEditor/selection.png) | [Flèche de sélection](#selecting-objects) | Permet de sélectionner, déplacer et redimensionner les objets du formulaire.

    **Note** : Lorsqu'un objet de type Texte ou Zone de Groupe est sélectionné, appuyez sur la touche **Entrée** pour passer en mode édition.

    | +| ![](../assets/en/FormEditor/selection.png) | [Flèche de sélection](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordre de saisie](#data-entry-order) | Passe en mode “Ordre de saisie”, dans lequel il est possible de visualiser et de modifier l’ordre de saisie courant du formulaire. A noter que vous pouvez également visualiser l’ordre de saisie courant tout en travaillant dans le formulaire. | | ![](../assets/en/FormEditor/moving.png) | [Déplacement](#moving-objects) | Passe en mode “Déplacement”, dans lequel il est possible d’atteindre rapidement n’importe quelle partie du formulaire en le faisant directement glisser dans la fenêtre. Le curseur prend la forme d’une main. Ce mode de navigation est particulièrement utile en cas de zoom dans le formulaire. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permet de modifier l’échelle d’affichage du formulaire (100% par défaut). Vous pouvez passer en mode “Zoom” en cliquant sur le bouton loupe ou en cliquant directement sur la barre correspondant à l’échelle désirée. Cette fonction est détaillée dans le paragraphe précédent. | @@ -146,11 +146,11 @@ Avant de pouvoir réaliser une opération sur un objet (comme le changement de l Pour sélectionner un objet à l’aide de la barre d’outils : -1. Cliquez sur l’outil Flèche dans la barre d’outils.

    ![](../assets/en/FormEditor/selection.png)

    +1. Cliquez sur l’outil Flèche dans la barre d’outils.
    ![](../assets/en/FormEditor/selection.png) -

    Lorsque vous le faites glisser au-dessus du formulaire, le pointeur prend la forme du pointeur standard

    . +
    Lorsque vous le faites glisser au-dessus du formulaire, le pointeur prend la forme du pointeur standard. -2. Cliquez sur l’objet que vous souhaitez sélectionner. Des poignées de sélection identifient l’objet sélectionné.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Cliquez sur l’objet que vous souhaitez sélectionner. Des poignées de sélection identifient l’objet sélectionné.
    ![](../assets/en/FormEditor/selectResize.png) Pour sélectionner un objet à l’aide de la Liste des propriétés : @@ -235,13 +235,12 @@ Grouper des objets n’a d’effet que dans l’éditeur de formulaires. Lors de Pour grouper les objets : 1. Sélectionnez les objets que vous souhaitez grouper. -2. Sélectionnez **Grouper** dans le menu Objets. OR Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    -4D matérialise les bordures du groupe avec des poignées. Les objets du groupe ne sont plus marqués séparément par des poignées. Désormais, lorsque vous modifiez le groupe d’objets, vous modifiez tous les objets qui le composent. +2. Sélectionnez **Grouper** dans le menu Objets. OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. Les objets du groupe ne sont plus marqués séparément par des poignées. Désormais, lorsque vous modifiez le groupe d’objets, vous modifiez tous les objets qui le composent. Pour dégrouper un groupe d’objets : 1. Sélectionnez le groupe que vous souhaitez dégrouper. -2. Choisissez **Dégrouper** dans le menu **Objets**.

    OU

    Sélectionnez la commande **Dégrouper** (menu du bouton **Grouper**) dans la barre d’outils de l’éditeur de formulaires.

    Si la commande **Dégrouper** est désactivée, cela veut dire que l’objet sélectionné est déjà sous sa forme la plus simple.

    4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. ### Aligner des objets @@ -268,9 +267,10 @@ La boîte de dialogue d’alignement vous permet d’appliquer tout type d’ali Pour afficher cette boîte de dialogue, vous devez sélectionner les objets que vous souhaitez aligner puis choisir la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. -- Cliquez sur l’icône d’alignement de votre choix dans les zones “Alignement droite/gauche” et/ou “Alignement haut/bas”.

    La zone d’exemple illustre le principe de l’opération sélectionnée.

    +- Dans les zones “Alignement droite/gauche” et/ou “Alignement haut/bas”, cliquez sur l’icône correspondant à l'alignement que vous souhaitez effectuer.
    La zone d'exemple affiche les résultats de votre sélection. + +- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. Dans ce cas, la position de l’objet de référence ne variera pas. -- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OU BIEN :

    Pour aligner des objets sur un objet spécifique, sélectionnez l'option **Aligner sur** et sélectionnez l'objet sur lequel vous souhaitez que les autres objets soient alignés dans la liste des objets. Dans ce cas, la position de l’objet de référence ne variera pas.

    Vous pouvez prévisualiser le résultat réel de vos paramétrages en cliquant sur le bouton **Prévisualisation**. Les objets sont ensuite alignés dans l'éditeur de formulaires, mais comme la boîte de dialogue ne disparaît pas, vous pouvez toujours annuler ou appliquer l'alignement. > Cette boîte de dialogue combine l’alignement d’objets et leur répartition. Pour plus d’informations sur la répartition, reportez-vous au paragraphe [Répartir des objets](#distributing-objects). @@ -304,7 +304,7 @@ Pour répartir directement une sélection d’objets (verticalement ou horizonta 1. Sélectionnez les objets (au moins trois) que vous souhaitez répartir. -2. Dans la barre d’outils, cliquez sur l’outil de répartition qui correspond la répartition que vous souhaitez appliquer.

    ![](../assets/en/FormEditor/distributionTool.png)

    OU

    Sélectionnez une commande de distribution dans le sous-menu **Alignement** du menu **Objet** ou dans le menu contextuel de l'éditeur.

    4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et répartition : @@ -312,9 +312,9 @@ Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et r 2. Choisissez la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. La boîte de dialogue suivante apparaît :![](../assets/en/FormEditor/alignmentAssistant.png) -3. Cliquez sur l’icône de répartition standard (horizontale ou verticale) de votre choix: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (icône de répartition horizontale standard)

    La zone d’exemple illustre le principe de l’opération sélectionnée. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. Pour effectuer une répartition standard, cliquez sur le bouton **Prévisualisation** ou *Appliquer*.

    Dans ce cas, les objets seront répartis de manière à ce que leurs côtés soient équidistants (répartition standard).

    OU BIEN :

    Pour exécuter une distribution spécifique, sélectionnez l'option **Répartir** (par exemple si vous souhaitez répartir les objets en fonction de la distance de leur côté droit). Cette option agit comme un interrupteur. Lorsque l'option Répartir est cochée, les icônes situées au-dessous d’elle s’appliquent alors à la répartition :

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Cette option agit comme un interrupteur. Lorsque l'option Répartir est cochée, les icônes situées au-dessous d’elle s’appliquent alors à la répartition :
    - Horizontalement, les icônes correspondent aux répartitions suivantes : équidistance des côtés gauches, des centres (hor.) et des côtés droits des objets sélectionnés. - Verticalement, les icônes correspondent aux répartitions suivantes : équidistance des bords supérieurs, des centres (vert.) et des bords inférieurs des objets sélectionnés. @@ -367,11 +367,11 @@ Ce paragraphe décrit la visualisation et la modification de l’ordre de saisie Pour visualiser ou modifier l’ordre de saisie : -1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :
    ![](../assets/en/FormEditor/zOrder.png)
    Le pointeur prend la forme d’un pointeur d’ordre, et 4D dessine une ligne qui permet de visualiser la séquence de l’ordre de saisie courant. Visualiser et modifier l’ordre de saisie sont les seules opérations que vous pouvez réaliser dans ce mode. -2. Pour changer l’ordre de saisie, placez le pointeur sur un objet, cliquez dessus et, tout en maintenant le bouton de la souris enfoncé, déplacez le pointeur vers l’objet qui doit le suivre dans l’ordre de saisie.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D ajuste l’ordre de saisie en conséquence. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Répétez l’étape 2 autant de fois que nécessaire pour obtenir le nouvel ordre de saisie. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-19/ORDA/dsMapping.md b/i18n/fr/docusaurus-plugin-content-docs/version-19/ORDA/dsMapping.md index 08f36d867a5392..b1b1098459a8b0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-19/ORDA/dsMapping.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-19/ORDA/dsMapping.md @@ -67,7 +67,7 @@ A datastore object is handled through functions and properties of the [**DataSto Lorsqu'il est géré via le code, le datastore est un objet dont les propriétés sont toutes les [dataclasses](#dataclass) ayant été spécifiquement exposées. -4d vous permet de gérer les datastores suivants : +4D vous permet de gérer les datastores suivants : * le datastore local, fondé sur la base 4D courante, retourné par la commande `ds` (le datastore principal). * un ou plusieurs datastores distants, exposés en tant que ressources RESET dans des bases 4D distantes, retournés par la commande `Ouvrir datastore`. @@ -154,12 +154,12 @@ Prenons l'exemple de la structure de base de données partielle suivante et les ![](../assets/en/ORDA/relationProperties.png) -Tous les attributs relationnels seront disponibles automatiquement : +Tous les attributs de stockage seront disponibles automatiquement : * dans la dataclass Project : "ID", "name", et "companyID" * dans la dataclass Company : "ID", "name", et "discount" -En outre, les attributs relationnels suivant seront également disponibles automatiquement : +En outre, les attributs relationnels suivants seront également disponibles automatiquement : * dans la dataclass Project : l'attribut **theClient**, du type "relatedEntity" ; il y a au plus une compagnie pour chaque projet (le client) * dans la dataclass Company : l'attribut **companyProjects**, du type "relatedEntities" ; pour chaque compagnie, il existe un certain nombre de projets reliés. @@ -235,7 +235,7 @@ Les entity selections triées sont créées uniquement lorsque cela est nécessa * résultat d'un `orderBy()` sur une sélection (de n'importe quel type) ou un `orderBy()` sur une dataclass, * résultat de la méthode `newSelection()` avec l'option `dk keep ordered` -Les sélections d'entités non-triées sont créées dans les cas suivants : +Les entity selections non-triées sont créées dans les cas suivants : * résultat d'un `query()` standard sur une sélection (de n'importe quel type) ou un `query()` sur une dataclass, * résultat de la méthode `newSelection()` sans option, diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/CollectionClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/CollectionClass.md index 0f3efe19eef728..4988f47bd80d77 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/CollectionClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/CollectionClass.md @@ -3216,15 +3216,15 @@ La fonction `.sort()` trie les éléments > Cette fonction modifie la collection d'origine. Si `.sort()` est appelé sans paramètres, seules les valeurs scalaires (nombres, textes, dates, booléens) sont triées. Les éléments sont triés par défaut par ordre croissant, en fonction de leur type. -You can also pass one of the following constants in the *ascOrDesc* parameter: +Vous pouvez également passer une des constantes suivantes dans le paramètre *ascOrDesc* : ``` - |Constant| Type|Value|Comment| - |---|---|---|---| - |ck ascending|Integer|0|Elements are ordered in ascending order (default)| - |ck descending|Integer|1|Elements are ordered in descending order| + |Constante| Type|Valeur|Comment| + |---|---|---| + |ck ascending|Integer|0|Les éléments sont classés par ordre croissant (par défaut)| + |ck descending|Integer|1|Les éléments sont classés par ordre décroissant| - This syntax orders scalar values in the collection only (other element types such as objects or collections are returned unordered). + Cette syntaxe ordonne uniquement les valeurs scalaires dans la collection (les autres types d'éléments tels que les objets ou les collections sont renvoyés non ordonnés). ``` Si la collection contient des éléments de différents types, ils sont d'abord groupés par type et triés par la suite. Les types sont renvoyés dans l'ordre suivant : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/DataClassClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/DataClassClass.md index 2c280ab9385cac..833e8629f5469a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/DataClassClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/DataClassClass.md @@ -1181,7 +1181,7 @@ La formule doit avoir été créée à l'aide de la commande [`Formula`](../comm - *formula* est évaluée pour chaque entité et doit renvoyer vrai ou faux. Lors de l'exécution de la requête, si le résultat de la formule n'est pas un booléen, il est considéré comme faux. - dans *formula*, l'entité est disponible via l'objet `This`. -- if the `Formula` object is **null**, the error 1626 ("Expecting a text or formula") is generated, that you can intercept using a method installed with `ON ERR CALL`. +- si l'objet `Formula` est **null**, l'erreur 1626 ("Expecting a text or formula") est générée, que vous pouvez intercepter en utilisant une méthode installée avec `ON ERR CALL`. > Pour des raisons de sécurité, les appels de formule dans les fonctions `query()` peuvent être interdits. Voir la description du paramètre *querySettings*. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/EntityClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/EntityClass.md index e7b012bba8b244..1207bd9123c398 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/EntityClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/EntityClass.md @@ -509,7 +509,7 @@ La correspondance entre l'objet et l'entité est établie à partir des noms de - Si une propriété de l'objet n'existe pas dans la dataclass, elle est ignorée. - Les types de données doivent être équivalents. S'il existe une différence de type entre l'objet et la dataclass, 4D essaie de convertir les données lorsque cela est possible (voir [`Converting data types`](Concepts/data-types.md#converting-data-types)), sinon l'attribut est laissé intact. -- La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). Si la clé primaire n'est pas fournie, l'entité est créée et la valeur de la clé primaire est affectée en fonction des règles de la base de données. L'auto-incrémentation n'est calculée que si la clé primaire est nulle. +- La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). Si elle n'existe pas déjà dans la dataclass, l'entité est créée avec la valeur donnée lorsque [.save()](#save) est appelée. Si la clé primaire n'est pas fournie, l'entité est créée et la valeur de la clé primaire est affectée en fonction des règles de la base de données. L'auto-incrémentation n'est calculée que si la clé primaire est nulle. *filler* peut contenir une related entity dans les conditions suivantes : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/SessionClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/SessionClass.md index 75b05496143148..4d9f4368ef4fba 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/SessionClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/API/SessionClass.md @@ -80,7 +80,7 @@ Cette fonction ne fait rien et retourne toujours **True** avec les sessions clie La fonction `.clearPrivileges()` supprime tous les privilèges associés à la session (à l'exception des privilèges promus) et renvoie **True** si l'exécution a réussi. -Hormis si vous êtes en mode ["forceLogin"](../REST/authUsers.md#force-login-mode), la session devient automatiquement une session Invité. En mode "forceLogin", `.clearPrivileges()` ne transforme pas la session en session Invité, elle efface seulement les privilèges de la session. +Hormis si vous êtes en mode ["forceLogin"](../REST/authUsers.md#force-login-mode), la session devient automatiquement une session Guest. En mode "forceLogin", `.clearPrivileges()` ne transforme pas la session en session Invité, elle efface seulement les privilèges de la session. :::note @@ -120,7 +120,7 @@ $isGuest:=Session.isGuest() //$isGuest est True | Paramètres | Type | | Description | | ---------- | ------- | :-------------------------: | -------------------------------------------- | | lifespan | Integer | -> | Durée de vie du token de session en secondes | -| Résultat | Text | <- | UUID of the OTP token | +| Résultat | Text | <- | UUID du token OTP | @@ -735,7 +735,7 @@ Function callback($request : 4D.IncomingMessage) : 4D.OutgoingMessage :::note -Cette fonction ne fait rien et retourne toujours **False** avec les sessions client distants, procédures stockées et autonomes. +Cette fonction ne fait rien et retourne toujours **False** avec les sessions client distantes, procédures stockées et autonomes. ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md index c9dd9a9243b577..e1452bbeb57077 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Concepts/classes.md @@ -333,7 +333,7 @@ Function getRectArea($width : Integer; $height : Integer) : Integer :::note -Il n'y a pas de mot-clé de fin pour le code d'une fonction class constructor. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. +Il n'y a pas de mot-clé de fin pour le code d'une fonction de constructeur de classe. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md index 7db6e099377e5b..88689190e4c61a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md @@ -7,7 +7,7 @@ Un composant 4D est un ensemble de code et de formulaires 4D représentant une o ## Installation des composants -Plusieurs composants sont [préinstallés dans l'environnement de développement 4D](Extensions/overview.md), mais de nombreux composants 4D de la communauté 4D sont disponibles sur GitHub. De plus, vous pouvez développer vos propres composants 4D. +Plusieurs composants sont [préinstallés dans l'environnement de développement 4D](Extensions/overview.md), mais de nombreux composants 4D de la communauté 4D [sont disponibles sur GitHub](https://github.com/topics/4d-component). De plus, vous pouvez développer vos propres composants 4D. L'installation et le chargement des composants dans vos projets 4D sont gérés par le [Gestionnaire de dépendances de 4D](../Project/components.md). diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md index ed7b6e7559eddd..f863fc241bac86 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md index e8cbe982173df0..c3ca0c1e72ffd8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md @@ -3,34 +3,34 @@ id: field-properties title: Propriétés des champs --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class ![](../assets/en/Develop/inspector-class.png) -This property is available for fields of type **Object** (in 4D projects only). It allows you to define a **class-typed object field**, enhancing code completion, syntax checking, and runtime validation when typing code that involves object fields. +Cette propriété est disponible pour les champs de type **Objet** (dans les projets 4D uniquement). Elle vous permet de définir un **champ de type classe d'objet**, ce qui améliore la complétion de code, la vérification syntaxique et la validation d'exécution lors de la saisie de code impliquant des champs objet. -You can enter any valid class name in this property, including: +Vous pouvez saisir n'importe quel nom de classe valide dans cette propriété, y compris : -- User classes (e.g. `cs.MyClass`) -- Built-in 4D classes (e.g. `4D.File`, `4D.Folder`) -- [Exposed](../Extensions/develop-components.md#sharing-of-classes) component-defined classes (e.g. `cs.MyComponent.MyClass`) +- des classes utilisateurs (par exemple `cs.MyClass`) +- des classes 4D intégrées (par exemple `4D.File`, `4D.Folder`) +- des classes [exposées](../Extensions/develop-components.md#sharing-of-classes) définies par les composants (par exemple `cs.MyComponent.MyClass`) -If you enter an invalid class name, a warning is triggered and the input is rejected. +Si vous saisissez un nom de classe non valide, la saisie est rejetée. :::note -**Non-streamable classes** such as [ORDA Data Model classes](../ORDA/ordaClasses.md), [file handles](../API/FileHandleClass.md), [web server](../API/WebServerClass.md)... cannot be associated to object fields. +Les **classes non *streamables*** telles que les [classes du modèle de données ORDA](../ORDA/ordaClasses.md), la classe [FileHandle](../API/FileHandleClass.md), [WebServer](../API/WebServerClass.md)... ne peuvent pas être associées à des champs objets. ::: -In your code, when assigning a value to a class-typed object field, 4D verifies that it belongs to the declared class. If not or if the object has no class, an error is triggered. Accessing unknown attributes will also raise syntax errors. +Dans votre code, lors de l'affectation d'une valeur à un champ de type classe d'objet, 4D vérifie qu'elle appartient à la classe déclarée. Si ce n'est pas le cas ou si l'objet n'a pas de classe, une erreur est déclenchée. L'accès à des attributs inconnus entraîne également des erreurs de syntaxe. -To retrieve the associated class name at runtime, use the [`classID`](../API/DataClassClass.md#attributename) property, for example `ds.MyTable.MyField.classID`. +Pour récupérer le nom de la classe associée lors de l'exécution, utilisez la propriété [`classID`](../API/DataClassClass.md#attributename), par exemple `ds.MyTable.MyField.classID`. ### Voir également -- [Blog post: Stricter class-based typing for objects](https://blog.4d.com/stricter-class-based-typing-for-objects/) +- [Article de blog : Un typage plus strict des objets basé sur les classes](https://blog.4d.com/stricter-class-based-typing-for-objects/) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Events/onAfterEdit.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Events/onAfterEdit.md index 1b7faf45be6041..0850656f6df974 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Events/onAfterEdit.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Events/onAfterEdit.md @@ -62,11 +62,11 @@ En fonction de la valeur de la propriété `action`, l'[objet event](overview.md #### action = DragFillBlock -| Propriété | Type | Description | -| ------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| fillRange | object | Plage utilisée pour le remplissage | -| autoFillType | entier long | Value used for the fill.
  • 0: Cells are filled with all data (values, formatting, and formulas)
  • 1: Cells are filled with automatically sequential data
  • 2: Cells are filled with formatting only
  • 3: Cells are filled with values but not formatting
  • 4: Values are removed from the cells
  • 5: Cells are filled automatically
  • | -| fillDirection | entier long | Direction of the fill.
  • 0: The cells to the left are filled
  • 1: The cells to the right are filled
  • 2: The cells above are filled
  • 3: The cells below are filled
  • | +| Propriété | Type | Description | +| ------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| fillRange | object | Plage utilisée pour le remplissage | +| autoFillType | entier long | Valeur utilisée pour le remplissage.
  • 0 : Les cellules sont remplies avec toutes les données (valeurs, formatage et formules)
  • 1 : Les cellules sont remplies avec des données séquentielles automatiques
  • 2 : Les cellules sont remplies avec la mise en forme uniquement
  • 3 : Les cellules sont remplies avec les valeurs mais pas la mise en forme
  • 4 : Les valeurs sont supprimées des cellules
  • 5 : Les cellules sont remplies automatiquement
  • | +| fillDirection | entier long | Direction du remplissage.
  • 0 : Les cellules de gauche sont remplies
  • 1 : Les cellules de droite sont remplies
  • 2 : Les cellules du haut sont remplies
  • 3 : Les cellules du bas sont remplies
  • | #### action = formulaChanged diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Extensions/develop-components.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Extensions/develop-components.md index 46767a27be495d..433926e8528b88 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Extensions/develop-components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Extensions/develop-components.md @@ -108,7 +108,7 @@ Un *namespace* garantit qu'aucun conflit n'émerge lorsqu'un projet hôte utilis ::: -Lorsque vous entrez une valeur, vous déclarez que les classes de composants seront disponibles dans la [user class store (**cs**)](../Concepts/classes.md#cs) du projet hôte ainsi que ses composants chargés, à travers les `cs.` espace de noms. Par exemple, si vous entrez "eGeometry" comme namespace, en supposant que vous avez créé une classe `Rectangle` contenant une fonction `getArea()`, une fois votre projet installé comme composant, le développeur du projet hôte peut écrire : +Lorsque vous entrez une valeur, vous déclarez que les classes de composants seront disponibles dans la [class store utilisateurs (**cs**)](../Concepts/classes.md#cs) du projet hôte ainsi que ses composants chargés, à travers les espaces de noms `cs.`. Par exemple, si vous entrez "eGeometry" comme namespace, en supposant que vous avez créé une classe `Rectangle` contenant une fonction `getArea()`, une fois votre projet installé comme composant, le développeur du projet hôte peut écrire : ```4d //dans le projet hôte ou l'une de ses composantes @@ -143,19 +143,19 @@ $rect:=cs.eGeometry._Rectangle.new(10;20) ## Modification des composants à partir de l'hôte -To facilitate component tuning in the actual context of host projects, you can directly modify and save the code of a loaded component from an interpreted host project. Le code du composant est modifiable lorsque les conditions suivantes sont remplies : +Pour faciliter la mise au point des composants dans le contexte réel des projets hôtes, vous pouvez modifier et sauvegarder directement le code d'un composant chargé depuis un projet hôte interprété. Le code du composant est modifiable lorsque les conditions suivantes sont remplies : -- the component has been [loaded in interpreted mode](../Project/components.md#interpreted-and-compiled-components), -- the component is not loaded from the [local cache of the Dependency manager](../Project/components.md#local-cache-for-dependencies), i.e. it is not [downloaded from GitHub](../Project/components.md#adding-a-github-dependency). +- le composant a été [chargé en mode interprété](../Project/components.md#interpreted-and-compiled-components), +- le composant n'est pas chargé à partir du [cache local du gestionnaire de dépendances](../Project/components.md#local-cache-for-dependencies), c'est-à-dire qu'il n'est pas [téléchargé depuis GitHub](../Project/components.md#adding-a-github-dependency). -In this case, you can open, edit, and save your component code in the Code editor on the host project, so that modifications are immediately taken into account. +Dans ce cas, vous pouvez ouvrir, éditer et enregistrer le code de votre composant dans l'éditeur de code du projet hôte, afin que les modifications soient immédiatement prises en compte. -In the Explorer, a specific icon indicates that the component code is editable:
    +Dans l'Explorateur, une icône spécifique indique que le code du composant est modifiable :
    ![](../assets/en/Develop/editable-component.png) :::warning -Only [exposed classes](#sharing-of-classes) and [shared methods](#sharing-of-project-methods) of your component can be edited. +Seules les [classes exposées](#sharing-of-classes) et les [méthodes partagées](#sharing-of-project-methods) de votre composant peuvent être modifiées. ::: @@ -237,7 +237,7 @@ Dans ce cas, il est nécessaire d’utiliser la comparaison de pointeurs : Une [méthode de gestion d'erreurs](Concepts/error-handling.md) installée par la commande `ON ERR CALL` s'applique à l'application en cours d'exécution uniquement. En cas d'erreur générée par un composant, la méthode d'appel sur erreur `ON ERR CALL` du projet hôte n'est pas appelée, et inversement. -However, you can install a [component error handler in the host application](../Concepts/error-handling.md#scope-and-components) to manage uncaught errors from compponents. +Cependant, vous pouvez installer un [gestionnaire d'erreurs de composants dans l'application hôte](../Concepts/error-handling.md#scope-and-components) pour gérer les erreurs non capturées des composants. ## Accès aux tables du projet hôte @@ -267,7 +267,7 @@ SAVE RECORD($tablepointer- ## Utilisation de tables et de champs -Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. +Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. Une base de données externe est un projet 4D indépendant du projet 4D principal, mais avec lequel vous pouvez travailler à partir du projet 4D principal. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. ### Exemple @@ -384,7 +384,7 @@ Ce fichier n'est pas obligatoire mais il est nécessaire pour construire des com Les clés prises en charge dans les fichiers `Info.plist` des composants sont principalement des [clés bundle d'Apple](https://developer.apple.com/documentation/bundleresources/information-property-list) qui sont ignorées sous Windows. Cependant, elles sont utilisés par le [Gestionnaire de dépendances](../Project/components.md#loading-components) sur toutes les plates-formes. -The following keys can be defined: +Les clés suivantes peuvent être définies : | key | Description | | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Extensions/overview.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Extensions/overview.md index 227a3b0ae64922..750da38a611e75 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Extensions/overview.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Extensions/overview.md @@ -3,11 +3,11 @@ id: overview title: Extension des applications 4D --- -The 4D architecture is open and can be extended in different ways. Si vous avez besoin d'une fonctionnalité qui n'est pas disponible de manière native dans 4D, vous pouvez toujours l'intégrer dans votre application de différentes manières : +L'architecture de 4D est ouverte et peut être étendue de plusieurs façons. Si vous avez besoin d'une fonctionnalité qui n'est pas disponible de manière native dans 4D, vous pouvez toujours l'intégrer dans votre application de différentes manières : - les [**System workers**](../API/SystemWorkerClass.md) permettent au code 4D d'appeler n'importe quel process externe (une commande shell, PHP, un script, etc.) et d'en contrôler l'exécution. - les [**commandes SQL**](../commands/theme/SQL) vous permettent de vous connecter à diverses sources de données SQL et de les utiliser . - Le [**client HTTP intégré**](../API/HTTPRequestClass.md) peut envoyer des requêtes à n'importe quel serveur HTTP et traiter les données. - les [**zones web**](../FormObjects/webArea_overview.md) peuvent donner accès à des pages web ou à divers contenus HTML à l'intérieur de vos formulaires. -- les [**Composants**](Concepts/components.md). Les composants sont faits de code 4D. 4D includes by default [a set of built-in 4D components](../Project/components.md#preinstalled-4d-components). Vous pouvez également [développer vos propres composants 4D](develop-components.md), ou utiliser des composants tiers. De nombreux développeurs de la communauté 4D ont partagé des composants 4D (consultez Github pour obtenir une liste des composants 4D publics rassemblés dans le topic [`4d-component`](https://github.com/topics/4d-component)). +- les [**Composants**](Concepts/components.md). Les composants sont faits de code 4D. 4D inclut par défaut [un ensemble de composants 4D](../Project/components.md#preinstalled-4d-components). Vous pouvez également [développer vos propres composants 4D](develop-components.md), ou utiliser des composants tiers. De nombreux développeurs de la communauté 4D ont partagé des composants 4D (consultez Github pour obtenir une liste des composants 4D publics rassemblés dans le topic [`4d-component`](https://github.com/topics/4d-component)). - les [**Plug-ins**](../Concepts/plug-ins.md). Les plug-ins peuvent être créés dans n'importe quel langage. Les plugins font des choses que 4D ne fait pas nativement (par exemple, une technologie de plateforme spécifique), ou qui seraient très difficiles à écrire en utilisant uniquement 4D. Comme décrit dans [cette page](develop-plug-ins.md), vous pouvez développer vos propres plugins. De nombreuses fonctionnalités sont couvertes par les plug-ins 4D existants. Parcourez GitHub pour obtenir la liste des plugins 4D publics rassemblés sous le topic [`4d-plugin`](https://github.com/topics/4d-plugin). diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md index 2497cd8da5994e..b02e53afe34d53 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md @@ -56,12 +56,12 @@ La barre d’outils comporte les éléments suivants : | Icône | Nom | Description | | ------------------------------------------------ | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Exécuter le formulaire | Permet de tester l’exécution du formulaire. Lorsque vous cliquez sur ce bouton, 4D ouvre une nouvelle fenêtre et affiche le formulaire dans son contexte (liste d’enregistrements pour un formulaire liste et enregistrement courant en page pour un formulaire détaillé). Le formulaire est exécuté dans le process principal. | -| ![](../assets/en/FormEditor/selection.png) | [Outil de sélection](#selecting-objects) | Allows selecting, moving and resizing form objects.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +| ![](../assets/en/FormEditor/selection.png) | [Outil de sélection](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note** : Lorsqu'un objet de type Texte ou Zone de Groupe est sélectionné, appuyez sur la touche **Entrée** pour passer en mode édition. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordre de saisie](#data-entry-order) | Passe en mode “Ordre de saisie”, dans lequel il est possible de visualiser et de modifier l’ordre de saisie courant du formulaire. A noter que vous pouvez également visualiser l’ordre de saisie courant tout en travaillant dans le formulaire. | | ![](../assets/en/FormEditor/moving.png) | [Déplacement](#déplacement-objets) | Passe en mode “Déplacement”, dans lequel il est possible d’atteindre rapidement n’importe quelle partie du formulaire en le faisant directement glisser dans la fenêtre. Le curseur prend la forme d’une main. Ce mode de navigation est particulièrement utile en cas de zoom dans le formulaire. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permet de modifier l’échelle d’affichage du formulaire (100% par défaut). Vous pouvez passer en mode “Zoom” en cliquant sur le bouton loupe ou en cliquant directement sur la barre correspondant à l’échelle désirée. Cette fonction est détaillée dans le paragraphe précédent. | -| ![](../assets/en/FormEditor/alignment.png) | [Alignement](#aligning-objects) | Ce bouton est associé à un menu permettant d’aligner les objets dans le formulaire. It is enabled (or not) depending on the objects selected.
    Disabled if one selected object position is locked by a CSS property | -| ![](../assets/en/FormEditor/distribution.png) | [Distribution](#distributing-objects) | Ce bouton est associé à un menu permettant de répartir les objets dans le formulaire. It is enabled (or not) depending on the objects selected.
    Disabled if one selected object position is locked by a CSS property | +| ![](../assets/en/FormEditor/alignment.png) | [Alignement](#aligning-objects) | Ce bouton est associé à un menu permettant d’aligner les objets dans le formulaire. Il est activé (ou non) en fonction des objets sélectionnés.
    Désactivé si la position d'un objet sélectionné est verrouillée par une propriété CSS | +| ![](../assets/en/FormEditor/distribution.png) | [Distribution](#distributing-objects) | Ce bouton est associé à un menu permettant de répartir les objets dans le formulaire. Il est activé (ou non) en fonction des objets sélectionnés.
    Désactivé si la position d'un objet sélectionné est verrouillée par une propriété CSS | | ![](../assets/en/FormEditor/level.png) | [Plan](#gérer-les-plans-des-objets) | Ce bouton est associé à un menu permettant de répartir les objets dans le formulaire. Il est activé (ou non) en fonction des objets sélectionnés. | | ![](../assets/en/FormEditor/group.png) | [Grouper/Dégrouper](#grouping-objects) | Ce bouton est associé à un menu permettant de grouper et dégrouper la sélection d’objets du formulaire. Il est activé (ou non) en fonction des objets sélectionnés. | | ![](../assets/en/FormEditor/displyAndPage.png) | [Affichage et gestion des pages](forms.html#form-pages) | Cette zone permet de passer d’une page du formulaire à une autre et d’ajouter des pages. Pour naviguer parmi les pages du formulaire, cliquez sur les boutons fléchés ou cliquez sur la zone centrale et choisissez la page à afficher dans le menu qui apparaît. Si vous cliquez sur le bouton fléché de droite alors que vous êtes sur la dernière page du formulaire, 4D vous permet d’ajouter une page. | @@ -146,11 +146,11 @@ Avant de pouvoir réaliser une opération sur un objet (comme le changement de l Pour sélectionner un objet à l’aide de la barre d’outils : -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    Lorsque vous le faites glisser au-dessus du formulaire, le pointeur prend la forme du pointeur standard

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Cliquez sur l’objet que vous souhaitez sélectionner. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Cliquez sur l’objet que vous souhaitez sélectionner. Resizing handles identify the selected object.
    ![](../assets/en/FormEditor/selectResize.png) Pour sélectionner un objet à l’aide de la Liste des propriétés : @@ -241,13 +241,13 @@ Pour grouper les objets : 1. Sélectionnez les objets que vous souhaitez grouper. 2. Sélectionnez **Grouper** dans le menu Objets. OU - Cliquez sur le bouton Grouper dans la barre d'outils de l'éditeur de formulaire:

    ![](../assets/en/FormEditor/group.png)

    + Cliquez sur le bouton Grouper dans la barre d'outils de l'éditeur de formulaire:
    ![](../assets/en/FormEditor/group.png) 4D indique la limite des objets regroupés nouvellement avec des poignées. Les objets du groupe ne sont plus marqués séparément par des poignées. Désormais, lorsque vous modifiez le groupe d’objets, vous modifiez tous les objets qui le composent. Pour dégrouper un groupe d’objets : 1. Sélectionnez le groupe que vous souhaitez dégrouper. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    Si la commande **Dégrouper** est désactivée, cela veut dire que l’objet sélectionné est déjà sous sa forme la plus simple. 4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. ### Aligner des objets @@ -275,9 +275,9 @@ La boîte de dialogue d’alignement vous permet d’appliquer tout type d’ali Pour afficher cette boîte de dialogue, vous devez sélectionner les objets que vous souhaitez aligner puis choisir la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    La zone d’exemple illustre le principe de l’opération sélectionnée. -- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OU:

    Pour aligner les objets sur un objet spécifique, sélectionnez l'option **Aligner sur** et sélectionnez l'objet sur lequel vous voulez que les autres objets soient alignés dans la liste d'objets. Dans ce cas, la position de l’objet de référence ne variera pas.

    +- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OU:
    Pour aligner les objets sur un objet spécifique, sélectionnez l'option **Aligner sur** et sélectionnez l'objet sur lequel vous voulez que les autres objets soient alignés dans la liste d'objets. Dans ce cas, la position de l’objet de référence ne variera pas. Vous pouvez prévisualiser le résultat réel de vos paramétrages en cliquant sur le bouton **Prévisualisation**. Les objets sont ensuite alignés dans l'éditeur de formulaires, mais comme la boîte de dialogue ne disparaît pas, vous pouvez toujours annuler ou appliquer l'alignement. @@ -314,7 +314,8 @@ Pour répartir directement une sélection d’objets (verticalement ou horizonta 1. Sélectionnez les objets (au moins trois) que vous souhaitez répartir. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et répartition : @@ -322,9 +323,9 @@ Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et r 2. Choisissez la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. La boîte de dialogue suivante apparaît :![](../assets/en/FormEditor/alignmentAssistant.png) -3. Dans les zones Alignement gauche/droite et/ou haut/bas, cliquez sur l'icône de distribution standard : ![](../assets/en/FormEditor/horizontalDistribution.png)

    (icône standard de distribution horizontale)

    La zone d'exemple affiche les résultats de votre sélection. +3. Dans les zones Alignement gauche/droite et/ou haut/bas, cliquez sur l'icône de distribution standard : ![](../assets/en/FormEditor/horizontalDistribution.png)
    (icône standard de distribution horizontale)
    La zone d'exemple affiche les résultats de votre sélection. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Cette option agit comme un interrupteur. Si la case à cocher Répartir est sélectionnée, les icônes situées en dessous effectuent une fonction différente:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Cette option agit comme un interrupteur. Si la case à cocher Répartir est sélectionnée, les icônes situées en dessous effectuent une fonction différente:
    - Horizontalement, les icônes correspondent aux répartitions suivantes : équidistance des côtés gauches, des centres (hor.) et des côtés droits des objets sélectionnés. - Verticalement, les icônes correspondent aux répartitions suivantes : équidistance des bords supérieurs, des centres (vert.) et des bords inférieurs des objets sélectionnés. @@ -379,11 +380,11 @@ Ce paragraphe décrit la visualisation et la modification de l’ordre de saisie Pour visualiser ou modifier l’ordre de saisie : -1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :
    ![](../assets/en/FormEditor/zOrder.png)
    Le pointeur prend la forme d’un pointeur d’ordre, et 4D dessine une ligne qui permet de visualiser la séquence de l’ordre de saisie courant. Visualiser et modifier l’ordre de saisie sont les seules opérations que vous pouvez réaliser dans ce mode. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Répétez l’étape 2 autant de fois que nécessaire pour obtenir le nouvel ordre de saisie. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/pictures.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/pictures.md index ea0e62531b19ed..cef951e302f09c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/pictures.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/pictures.md @@ -57,10 +57,10 @@ Les images haute résolution avec la convention @nx peuvent être utilisées dan Si 4D donne automatiquement la priorité à la résolution la plus élevée, il existe cependant des différences de comportement en fonction de la résolution de l'écran et de l'image *(\*)* et du format de l'image : -| Opération | Comportement | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Déposer ou Coller | If the picture has:
    • **72dpi or 96dpi** - The picture is "[Center](FormObjects/properties_Picture.md#center--truncated-non-centered)" formatted and the object containing the picture has the same number of pixels.
    • **Other dpi** - The picture is "[Scaled to fit](FormObjects/properties_Picture.md#scaled-to-fit)" formatted and the object containing the picture is equal to (picture's number of pixels \* screen dpi) / (picture's dpi)
    • **No dpi** - The picture is "[Scaled to fit](FormObjects/properties_Picture.md#scaled-to-fit)" formatted.
    | -| [Taille automatique](https://doc.4d.com/4Dv20/4D/20.2/Setting-object-display-properties.300-6750143.en.html#148057) (menu contextuel de l'éditeur de formulaires) | If the picture's display format is:
    • **[Scaled](FormObjects/properties_Picture.md#scaled-to-fit)** - The object containing the picture is resized according to (picture's number of pixels \* screen dpi) / (picture's dpi)
    • **Not scaled** - The object containing the picture has the same number of pixels as the picture.
    | +| Opération | Comportement | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Déposer ou Coller | Si l'image a :
    • **72dpi ou 96dpi** - L'image est formatée en "[Center](FormObjects/properties_Picture.md#center--truncated-non-centered)" et l'objet contenant l'image a le même nombre de pixels.
    • **Autre dpi** - L'image est formatée en "[Scaled to fit](FormObjects/properties_Picture.md#scaled-to-fit)" et l'objet contenant l'image est égal au (nombre de pixels de l'image \* dpi) / (dpi) de l'image
    • **Pas de dpi** - L'image est formatée en "[Scaled to fit](FormObjects/properties_Picture.md#scaled-to-fit)".
    | +| [Taille automatique](https://doc.4d.com/4Dv20/4D/20.2/Setting-object-display-properties.300-6750143.en.html#148057) (menu contextuel de l'éditeur de formulaires) | Si le format d'affichage de l'image est :
    • **[Scaled](FormObjects/properties_Picture.md#scaled-to-fit)** - L'objet contenant l'image est redimensionné en fonction du (nombre de pixels de l'image \* dpi écran) / (dpi image
    • ) **Not scaled** - L'objet contenant l'image a le même nombre de pixels que l'image.
    | *(\*) Généralement, macOS = 72 dpi, Windows = 96 dpi* diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/properties_FormSize.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/properties_FormSize.md index 6ab25ecd64f45e..f7d879c24c7fac 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/properties_FormSize.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/properties_FormSize.md @@ -11,15 +11,15 @@ Les options de taille dépendent de la valeur de l'option **Taille basée sur**. ## Taille basée sur -- **Automatic Size**: The size of the form will be that necessary to display all the objects, to which will be added the margin values (in pixels) entered in the [**Hor Margin**](#hor-margin) and [**Vert Margin**](#vert-margin) fields. +- **Taille automatique** : La taille du formulaire sera celle nécessaire à l'affichage de tous les objets, à laquelle s'ajouteront les valeurs de marge (en pixels) saisies dans les champs [**Marge hor.**](#hor-margin) et [**Marge vert.**](#vert-margin). Vous pouvez choisir cette option lorsque vous souhaitez utiliser des objets actifs placés dans une zone hors écran (c'est-à-dire en dehors du rectangle de délimitation de la fenêtre) avec une fenêtre de taille automatique. Grâce à cette option, la présence de ces objets ne modifiera pas la taille de la fenêtre. -- **Set Size**: The size of the form will be based on what you enter (in pixels) in the [**Width**](#width) and [**Height**](#height) fields. +- **Fixer taille** : La taille du formulaire sera basée sur ce que vous entrez (en pixels) dans les champs [**Largeur**](#width) and [**Hauteur**](#height). -- `\`: The size of the form will be based on the position of the selected form object. Par exemple, si vous choisissez un objet qui est placé dans la partie inférieure droite de la zone à afficher, la taille du formulaire sera constituée d'un rectangle dont le coin supérieur gauche sera l'origine du formulaire et le coin inférieur droit correspondra à celle de l'objet sélectionné, plus les éventuelles valeurs de marge. +- `` : La taille du formulaire sera basée sur la position de l'objet du formulaire sélectionné. Par exemple, si vous choisissez un objet qui est placé dans la partie inférieure droite de la zone à afficher, la taille du formulaire sera constituée d'un rectangle dont le coin supérieur gauche sera l'origine du formulaire et le coin inférieur droit correspondra à celle de l'objet sélectionné, plus les éventuelles valeurs de marge. -> For output forms, only the [**Hor margin**](#hor-margin) or [**Width**](#width) fields are available. +> Pour les formulaires de sortie, seuls les champs [**Marge hor.**](#hor-margin) ou [**Largeur**](#width) sont disponibles. #### Grammaire JSON @@ -43,7 +43,7 @@ Hauteur du formulaire (en pixels) lorsque la [taille du formulaire](#size-based- ## Marge hor. -Valeur à ajouter (en pixels) à la marge droite du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\` +Valeur à ajouter (en pixels) à la marge droite du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\` Cette valeur détermine également les marges droites des formulaires utilisés dans l'éditeur d'étiquettes. @@ -57,7 +57,7 @@ Cette valeur détermine également les marges droites des formulaires utilisés ## Marge hor. -Value to add (in pixels) to the bottom margin of the form when the [form size](#size-based-on) is **Automatic size** or `\`. +Valeur à ajouter (en pixels) à la marge inférieure du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\`. Cette valeur détermine également les marges supérieures des formulaires utilisés dans l'éditeur d'étiquettes. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/properties_Markers.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/properties_Markers.md index 59ce0d98af04cc..7d0eb15a2dd553 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/properties_Markers.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormEditor/properties_Markers.md @@ -21,9 +21,9 @@ Vous agrandissez ou réduisez la zone de rupture en faisant glisser le taquet ve #### Grammaire JSON -| Nom | Type de données | Valeurs possibles | -| ----------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| markerBreak | integer | integer collection | Break marker position or collection of break marker positions in pixels.
    Valeur minimale : 0 | +| Nom | Type de données | Valeurs possibles | +| ----------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| markerBreak | integer | integer collection | Position du taquet de rupture ou collection des positions de taquets de rupture en pixels.
    Valeur minimale : 0 | --- @@ -77,9 +77,9 @@ Zone de rupture Un en-tête de niveau 1 est imprimé juste avant que les enregis #### Grammaire JSON -| Nom | Type de données | Valeurs possibles | -| ------------ | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| markerHeader | integer | integer collection | Header marker position or collection of header marker positions in pixels.
    Valeur minimale : 0 | +| Nom | Type de données | Valeurs possibles | +| ------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| markerHeader | integer | integer collection | Position du taquet d'en-tête ou collection des positions de taquets d'en-tête en pixels.
    Valeur minimale : 0 | ## Zones supplémentaires diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md index 35f9af9007f7a2..2405612664b108 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md @@ -191,15 +191,15 @@ Dans d'autres cas (list box basées sur des sélections nommées, colonnes assoc ## Action standard -Les actions types effectuées par les objets actifs (par exemple, permettre à l'utilisateur d'accepter, d'annuler ou de supprimer des enregistrements, de passer d'un enregistrement à l'autre ou d'une page à l'autre dans un formulaire à plusieurs pages, etc.) ont été prédéfinies par 4D comme des actions standard. Elles sont décrites en détail dans la section [Actions standard](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) du *manuel de développement*. +Les actions types effectuées par les objets actifs (par exemple, permettre à l'utilisateur d'accepter, d'annuler ou de supprimer des enregistrements, de passer d'un enregistrement à l'autre ou d'une page à l'autre dans un formulaire à plusieurs pages, etc.) ont été prédéfinies par 4D comme des actions standard. Elles sont décrites en détail dans la section [Actions standard](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) du *manuel de développement*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Vous pouvez associer à la fois une action standard et une méthode projet à un objet. Dans ce cas, l'action standard est généralement exécutée après la méthode et 4D utilise cette action pour activer/désactiver l'objet en fonction du contexte courant. Lorsqu’un objet est désactivé, la méthode projet associée ne peut être exécutée. #### Grammaire JSON -| Nom | Type de données | Valeurs possibles | -| ------ | --------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| action | string | Le nom d'une [action standard valide](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nom | Type de données | Valeurs possibles | +| ------ | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objets pris en charge diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/GettingStarted/Installation.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/GettingStarted/Installation.md index 836724a1316baa..ee7cb640813304 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/GettingStarted/Installation.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/GettingStarted/Installation.md @@ -7,7 +7,7 @@ Bienvenue dans 4D ! Cette page regroupe toutes les informations nécessaires sur ## Configuration requise -La page [Téléchargements](https://us.4d.com/product-download) dut site de 4D fournit des informations sur les pré-requis macOS / Windows nécessaires à la gamme 4D. +La page [Téléchargements](https://us.4d.com/product-download) du site de 4D fournit des informations sur les pré-requis macOS / Windows nécessaires à la gamme 4D. Des détails techniques supplémentaires sont disponibles sur la [page Ressources](https://us.4d.com/resources/feature-release) du site web de 4D. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/client-server-optimization.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/client-server-optimization.md index 5cc95b6062eb55..090b1b0011716a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/client-server-optimization.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/client-server-optimization.md @@ -3,7 +3,7 @@ id: client-server-optimization title: Optimisation client/serveur --- -4D optimise automatiquement les requêtes ORDA qui utilisent des entity selections ou chargent des entités dans l'architecture client/serveur. Ces optimisations accélèrent l'exécution de votre application 4D en réduisant drastiquement le volume d'informations transmises sur le réseau. Elles incluent : +En architecture client/serveur, 4D optimise automatiquement les requêtes ORDA qui utilisent des entity selections ou chargent des entités. Ces optimisations accélèrent l'exécution de votre application 4D en réduisant drastiquement le volume d'informations transmises sur le réseau. Elles incluent : - le **contexte d'optimisation** - le **Cache ORDA** @@ -27,7 +27,7 @@ Le contexte d'optimisation est fondé sur ce qui suit : - [`dataClass.query()`](../API/DataClassClass.md#query) - [`entitySelection.query()`](../API/EntitySelectionClass.md#query) -- Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. L'affichage des lignes suivantes est optimisé. Les fonctions suivantes associent automatiquement le contexte d'optimisation de l'entity selection d'origine à l'entity selection retournée : +- Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. Par exemple, dans une [list box de type entity selection](#entity-selection-based-list-box), la phase d'apprentissage a lieu pendant l'affichage de la première ligne. L'affichage des lignes suivantes est optimisé. Les fonctions suivantes associent automatiquement le contexte d'optimisation de l'entity selection d'origine à l'entity selection retournée : - [`entitySelection.and()`](../API/EntitySelectionClass.md#and) - [`entitySelection.minus()`](../API/EntitySelectionClass.md#minus) - [`entitySelection.or()`](../API/EntitySelectionClass.md#or) @@ -35,7 +35,7 @@ Le contexte d'optimisation est fondé sur ce qui suit : - [`entitySelection.slice()`](../API/EntitySelectionClass.md#slice) - [`entitySelection.drop()`](../API/EntitySelectionClass.md#drop) -- An existing optimization context can be passed as a property to another entity selection of the same dataclass, thus bypassing the learning phase and accelerating the application (see [Reusing the context property](#reusing-the-context-property) below). +- Un contexte d'optimisation existant peut être passé en tant que propriété à une autre entity selection de la même dataclass, ce qui permet d'économiser la phase d'apprentissage et d'accélérer l'application (voir [Réutilisation de la propriété context](#reusing-the-context-property) ci-dessous). - Vous pouvez créer des contextes d'optimisation manuellement à l'aide de la fonction [`dataStore.setRemoteContextInfo()`](../API/DataStoreClass.md#setremotecontextinfo) (voir [Préconfiguration des contextes](#preconfiguring-contexts)). @@ -66,7 +66,7 @@ Vous pouvez augmenter les avantages de l'optimisation en utilisant la propriét > Vous pouvez également créer des contextes en utilisant la fonction [`.setRemoteContextInfo()`](../API/DataStoreClass.md#setremotecontextinfo). -Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Il est toutefois important de garder à l'esprit qu'un contexte est automatiquement mis à jour lorsque de nouveaux attributs sont utilisés dans d'autres parties du code. Si le même contexte est réutilisé dans différents codes, il risque d'être surchargé et de perdre en efficacité. +Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Toutes les fonctions ORDA qui gèrent les entity selections prennent en charge la propriété **context** (par exemple [`dataClass.query()`](../API/DataClassClass.md#query) ou [`dataClass.all()`](../API/DataClassClass.md#all)). Il est toutefois important de garder à l'esprit qu'un contexte est automatiquement mis à jour lorsque de nouveaux attributs sont utilisés dans d'autres parties du code. Si le même contexte est réutilisé dans différents codes, il risque d'être surchargé et de perdre en efficacité. > Un mécanisme similaire est implémenté pour les entités qui sont chargées, de sorte que seuls les attributs utilisés sont demandés (voir la fonction [`dataClass.get()`](../API/DataClassClass.md#get)). @@ -77,22 +77,22 @@ Une même propriété de contexte d'optimisation peut être passée à un nombre var $data : Collection $querysettings:=New object("context";"shortList") $querysettings2:=New object("context";"longList") - + $sel1:=ds.Employee.query("lastname = S@";$querysettings) - $data:=extractData($sel1) // In extractData method an optimization is triggered - // and associated to context "shortList" - + $data:=extractData($sel1) // dans la méthode extractData un contexte d'optimisation + // est généré et associé au contexte "shortList" + $sel2:=ds.Employee.query("lastname = Sm@";$querysettings) - $data:=extractData($sel2) // In extractData method the optimization associated - // to context "shortList" is applied - + $data:=extractData($sel2) // dans la méthode extractData le contexte d'optimisation + // associé au contexte "shortList" est appliqué + $sel3:=ds.Employee.query("lastname = Smith";$querysettings2) - $data:=extractDetailedData($sel3) // In extractDetailedData method an optimization - // is triggered and associated to context "longList" - + $data:=extractDetailedData($sel3) // dans la méthode extractDetailedData un contexte d'optimisation + // est généré et associé au contexte "longList" + $sel4:=ds.Employee.query("lastname = Brown";$querysettings2) - $data:=extractDetailedData($sel4) // In extractDetailedData method the optimization - // associated to context "longList" is applied + $data:=extractDetailedData($sel4) // dans extractDetailedData le contexte d'optimisation + // associé au contexte "longList" est appliqué ``` ### List box de type entity selection @@ -133,7 +133,7 @@ Pour des raisons d'optimisation, les données demandées au serveur via ORDA son Les données contenues dans le cache sont considérées comme expirées lorsque le délai d'attente est atteint. Tout accès à des données périmées provoquera l'envoi d'une requête au serveur. Les données périmées restent dans le cache jusqu'à ce que l'on ait besoin d'espace. -You can force entity selection data in the ORDA cache to expire at any moment by using the [`refresh()`](../API/EntitySelectionClass.md#refresh) function. +Vous pouvez forcer les données de sélection d'entité dans le cache ORDA à expirer à tout moment en utilisant la fonction [`refresh()`](../API/EntitySelectionClass.md#refresh). Par défaut, le cache ORDA est géré de manière transparente par 4D. Cependant, vous pouvez contrôler son contenu en utilisant les fonctions ORDA suivantes : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/dsMapping.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/dsMapping.md index 15c307c47cc3e3..e5dbe4896d20e7 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/dsMapping.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/dsMapping.md @@ -3,15 +3,15 @@ id: dsmapping title: Objets du modèle de données --- -The ORDA technology is based upon an automatic mapping of an underlying [database structure](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Elle permet également d'accéder aux données via des objets sélection d'entités (entity selection) et entité (entity). Par conséquent, ORDA expose la base de données entière comme un ensemble d'objets de modèle de données. +La technologie ORDA est basée sur une correspondance automatique d'une [structure de base de données](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html) sous-jacente. Elle permet également d'accéder aux données via des objets sélection d'entités (entity selection) et entité (entity). Par conséquent, ORDA expose la base de données entière comme un ensemble d'objets de modèle de données. ## Correspondance de la structure Lorsque vous appelez un datastore à l'aide de la commande [`ds`](commands/ds.md) ou [`Open datastore`](commands/open-datastore.md), 4D référence automatiquement les tables et les champs de la structure 4D correspondante en tant que propriétés de l'objet [datastore](#datastore) renvoyé : -- Tables are mapped to [dataclasses](#dataclass). -- Fields are mapped to [storage attributes](#storage-and-relation-attributes). -- Relations are mapped to [relation attributes](#storage-and-relation-attributes) - relation names, defined in the [Structure editor](https://doc.4d.com/4Dv20/4D/20.2/Creating-and-modifying-relations.300-6750296.en.html), are used as relation attribute names. +- Les tables correspondent à des [dataclasses](#dataclass). +- Les champs correspondent à des [attributs de stockage](#storage-and-relation-attributes). +- Les liens correspondent à des [attributs relationnels](#storage-and-relation-attributes) - les noms des liens, définis dans l'[éditeur de structure](https://doc.4d.com/4Dv20/4D/20.2/Creating-and-modifying-relations.300-6750296.en.html), sont utilisés comme noms d'attributs de relation. ![](../assets/en/ORDA/datastoreMapping.png) @@ -19,7 +19,7 @@ Lorsque vous appelez un datastore à l'aide de la commande [`ds`](commands/ds.md Les règles suivantes s'appliquent à toutes les conversions : -- Les noms de table, de champ et de relation correspondent à des noms de propriété d'objet. Assurez-vous que ces noms sont conformes aux règles générales de dénomination des objets, comme expliqué dans la section [Conventions de dénomination des objets](Concepts/identifiers.md). +- Les noms de table, de champ et de relation correspondent à des noms de propriété d'objet. Assurez-vous que ces noms sont conformes aux règles générales de dénomination des objets, comme expliqué dans la section [consacrée aux identifiants](Concepts/identifiers.md). - Un datastore ne référence que les tables avec une seule clé primaire. Les tables suivantes ne sont pas référencées : - Tables sans clé primaire - Tables avec clés primaires composites. @@ -28,12 +28,12 @@ Les règles suivantes s'appliquent à toutes les conversions : > La correspondance ORDA ne prend pas en compte : > > - l'option "Invisible" pour les tables ou les champs, -> - the virtual structure defined through [`SET TABLE TITLES`](../commands-legacy/set-table-titles.md) or [`SET FIELD TITLES`](../commands-legacy/set-field-titles.md), +> - la structure virtuelle définie par [`SET TABLE TITLES`](../commands-legacy/set-table-titles.md) et [`SET FIELD TITLES`](../commands-legacy/set-field-titles.md), > - la propriété "manuelle" ou "automatique" des relations. ### Règles de contrôle d'accès à distance -Lorsque vous accédez à un datastore distant via la commande `Ouvrir datastore` ou des [requêtes REST](REST/gettingStarted.md), seules les tables et les champs avec la propriété de ressource **Expose as REST resource** sont disponibles à distance. +Lorsque vous accédez à un datastore distant via la commande `Open datastore` ou des [requêtes REST](REST/gettingStarted.md), seuls les tables et les champs avec la propriété **Exposer avec le service REST** sont disponibles à distance. Cette option doit être choisie au niveau de la structure 4D pour chaque table et chaque champ que vous souhaitez voir apparaître comme dataclass et attribut dans le datastore : @@ -47,12 +47,12 @@ Toute modification apportée à la structure de la base invalide la couche coura - le renommage d'une table, d'un champ ou d'une relation - la modification d'une propriété principale d'un champ (type, unique, index, autoincrement, valeur null) -Lorsque la couche courante de données ORDA est invalidée, elle est automatiquement rechargée et mise à jour dans les prochains appels du datastore local `ds` vers 4D et 4D Server. A noter que les références existantes vers des objets ORDA tels que des entités ou des sélections d'entités continueront d'utiliser les données à partir desquelles elles ont été créées, et ce jusqu'à ce qu'elles soient regénérées. +Lorsque le modèle ORDA courant est invalidé, il est automatiquement rechargé et mis à jour dans les appels ultérieurs du datastore local `ds` sur 4D et 4D Server. A noter que les références existantes vers des objets ORDA tels que des entités ou des sélections d'entités continueront d'utiliser les données à partir desquelles elles ont été créées, et ce jusqu'à ce qu'elles soient regénérées. Toutefois, la couche de données ORDA mise à jour n'est pas automatiquement disponible dans les contextes suivants : - une application 4D distante connectée à 4D Server -- l'application distante doit être reconnectée au serveur. -- un datastore distant ouvert à l'aide de `Ouvrir datastore` ou des [appels REST](REST/gettingStarted.md) -- une nouvelle session doit être ouverte. +- un datastore distant ouvert à l'aide de `Open datastore` ou des [appels REST](REST/gettingStarted.md) -- une nouvelle session doit être ouverte. ## Définitions des objets @@ -63,14 +63,14 @@ Un datastore est l'objet d'interface d'une base de données. Il crée une repré - Le modèle contient et décrit toutes les dataclasses qui composent le datastore. Il est indépendant de la base de données sous-jacente. - Les données se réfèrent à l'information qui va être utilisée et stockée dans ce modèle. Par exemple, les noms, adresses et dates de naissance des employés sont des éléments de données que vous pouvez utiliser dans un datastore. -A datastore object is handled through functions and properties of the [**DataStore**](../API/DataStoreClass.md) class. +Un objet datastore est géré par les fonctions et les propriétés de la classe [**DataStore**](../API/DataStoreClass.md). Lorsqu'il est géré via le code, le datastore est un objet dont les propriétés sont toutes les [dataclasses](#dataclass) ayant été spécifiquement exposées. -4d vous permet de gérer les datastores suivants : +4D vous permet de gérer les datastores suivants : - le datastore local, fondé sur la base 4D courante, retourné par la commande `ds` (le datastore principal). -- un ou plusieurs datastores distants, exposés en tant que ressources RESET dans des bases 4D distantes, retournés par la commande `Ouvrir datastore`. +- un ou plusieurs datastores distants, exposés en tant que ressources RESET dans des bases 4D distantes, retournés par la commande `Open datastore`. Un datastore ne référence qu'une seule base de données locale ou distante. @@ -88,21 +88,21 @@ Les propriétés du datastore sont toutefois énumérables : //$prop contient les noms de toutes les dataclasses ``` -Le datastore principal (par défaut) est toujours disponible via la commande `ds`, mais la commande `Ouvrir datastore` permet de référencer n'importe quel datastore distant. +Le datastore principal (par défaut) est toujours disponible via la commande `ds`, mais la commande `Open datastore` permet de référencer n'importe quel datastore distant. ### Dataclass Une dataclasse est l'équivalent d'une table. Elle est utilisée comme modèle d'objet et référence tous les champs comme attributs, y compris les attributs relationnels (attributs construits à partir des relations entre les dataclasses). Les attributs relationnels peuvent être utilisés dans les requêtes comme tout autre attribut. -A dataclass object is handled through functions and properties of the [**DataClass**](../API/DataClassClass.md) class. +Un objet dataclass est géré par les fonctions et les propriétés de la classe [**DataClass**](../API/DataClassClass.md). -Toutes les dataclasses d'un projet 4D sont disponibles en tant que propriété du datastore `ds`. Pour les datastores distants accédés via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer comme ressource REST** doit être sélectionnée au niveau de la structure 4D pour chaque table que vous souhaitez exposer en tant que dataclass du datastore. +Toutes les dataclasses d'un projet 4D sont disponibles en tant que propriété du datastore `ds`. Pour les datastores distants accédés via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer avec le service REST** doit être sélectionnée au niveau de la structure 4D pour chaque table que vous souhaitez exposer en tant que dataclass du datastore. Par exemple, considérons cette table dans la structure suivante : ![](../assets/en/ORDA/companyTable.png) -La table `Company` est automatiquement disponible en tant que dataclasse dans la banque de données `ds`. Vous pouvez écrire : +La table `Company` est automatiquement disponible en tant que dataclass dans le datastore `ds`. Vous pouvez écrire : ```4d var $compClass : cs.Company //déclare une variable objet $compClass de la classe Company @@ -139,10 +139,10 @@ Les propriétés de dataclass sont des objets attribut décrivant les champs ou $revenuesAttribute:=ds.Company["revenues"] //méthode alternative ``` -Ce code attribue à `$nameAttribute` et `$revenuesAttribute` des références aux attributs name et revenues de la classe `Company`. This syntax does NOT return values held inside of the attribute, but instead returns references to the attributes themselves [with their **attribute properties**](../API/DataClassClass.md#attributename). +Ce code attribue à `$nameAttribute` et `$revenuesAttribute` des références aux attributs name et revenues de la classe `Company`. Cette syntaxe ne renvoie PAS les valeurs contenues dans l'attribut, mais des références aux attributs eux-mêmes [avec leurs **propriétés d'attribut**](../API/DataClassClass.md#attributename). Pour gérer les valeurs, vous devez passer par les [Entités](#entite). -Tous les fichiers éligibles d'une table sont disponibles en tant qu'attributs de leur [dataclass](#dataclass) parente. Pour les datastores distants accessibles via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer comme ressource REST** doit être sélectionnée au niveau de la structure 4D pour chaque champ que vous souhaitez exposer en tant qu'attribut de dataclass. +Tous les champs éligibles d'une table sont disponibles en tant qu'attributs de leur [dataclass](#dataclass) parente. Pour les datastores distants accessibles via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer avec le service REST** doit être sélectionnée au niveau de la structure 4D pour chaque champ que vous souhaitez exposer en tant qu'attribut de dataclass. #### Attributs de stockage et relationnels @@ -155,12 +155,12 @@ Prenons l'exemple de la structure de base de données partielle suivante et les ![](../assets/en/ORDA/relationProperties.png) -Tous les attributs relationnels seront disponibles automatiquement : +Tous les attributs de stockage seront disponibles automatiquement : - dans la dataclass Project : "ID", "name", et "companyID" - dans la dataclass Company : "ID", "name", et "discount" -En outre, les attributs relationnels suivant seront également disponibles automatiquement : +En outre, les attributs relationnels suivants seront également disponibles automatiquement : - dans la dataclass Project : l'attribut **theClient**, du type "relatedEntity" ; il y a au plus une compagnie pour chaque projet (le client) - dans la dataclass Company : l'attribut **companyProjects**, du type "relatedEntities" ; pour chaque compagnie, il existe un certain nombre de projets reliés. @@ -175,7 +175,7 @@ Gardez à l'esprit que ces objets décrivent des attributs, mais ne donnent pas #### Attributs calculés et Alias -Les [attributs calculés](ordaClasses.md#computed-attributes) et les[attributs alias](ordaClasses.md#alias-attributes) sont des attributs "virtuels". Leur valeur n'est pas stockée mais évaluée à chaque fois qu'on y accède. Ils n'appartiennent pas à la structure sous-jacente de la base, mais ils se basent sur elle et peuvent être utilisés comme n'importe quel champ du modèle de données. +Les [attributs calculés](ordaClasses.md#computed-attributes) et les [attributs alias](ordaClasses.md#alias-attributes) sont des attributs "virtuels". Leur valeur n'est pas stockée mais évaluée à chaque fois qu'on y accède. Ils n'appartiennent pas à la structure sous-jacente de la base, mais ils se basent sur elle et peuvent être utilisés comme n'importe quel champ du modèle de données. ### Entity @@ -183,7 +183,7 @@ Une entité est l'équivalent d'un enregistrement. Il s'agit d'un objet qui fait Le but de l'entité est de gérer les données (créer, mettre à jour, supprimer). Lorsqu'une référence d'entité est obtenue au moyen d'une sélection d'entité, elle conserve également des informations sur la sélection d'entité qui permet une itération à travers la sélection. -An entity object is handled through functions and properties of the [**Entity**](../API/EntityClass.md) class. +Un objet entité est géré par les fonctions et les propriétés de la classe [**Entity**](../API/EntityClass.md). L'objet entité lui-même ne peut pas être copié en tant qu'objet : @@ -203,7 +203,7 @@ Les propriétés de l'entité sont toutefois énumérables : Une entity selection est un objet contenant une ou plusieurs référence(s) à des entités appartenant à la même dataclasse. Elle est généralement créée à la suite d'une requête ou retournée à partir d'un attribut relationnel. Une entity selection peut contenir 0, 1 ou X entités de la dataclass - où X peut représenter le nombre total d'entités contenues dans la dataclass. -An entity selection object is handled through functions and properties of the [**EntitySelection**](../API/EntitySelectionClass.md) class. +Un objet Entity selection est géré par les fonctions et les propriétés de la classe [**EntitySelection**](../API/EntitySelectionClass.md). Voici un exemple : @@ -233,18 +233,18 @@ Les propriétés des entity selections sont toutefois énumérables : #### Entity selections triées vs Entity selections non-triées -Pour des raisons d'optimisation, par défaut, 4D ORDA crée généralement des sélections d'entités non-ordonnées, sauf lorsque vous utilisez la méthode `orderBy( )` ou si vous utilisez les options appropriées. Dans cette documentation, sauf indication contraire, "entity selection" fait généralement référence à une "entity selection non-triée". +Pour des raisons d'optimisation, par défaut, 4D ORDA crée généralement des entity selections non-ordonnées, sauf lorsque vous utilisez la méthode `orderBy()` ou si vous utilisez les options appropriées. Dans cette documentation, sauf indication contraire, "entity selection" fait généralement référence à une "entity selection non-triée". Les entity selections triées sont créées uniquement lorsque cela est nécessaire ou lorsqu'elles sont spécifiquement demandées à l'aide d'options, c'est-à-dire dans les cas suivants : -- résultat d'un `orderBy( )` sur une sélection (de n'importe quel type) ou un `orderBy( )` sur une dataclass, -- résultat de la méthode `newSelection( )` avec l'option `dk keep ordered` +- résultat d'un `orderBy()` sur une sélection (de n'importe quel type) ou un `orderBy()` sur une dataclass, +- résultat de la méthode `newSelection()` avec l'option `dk keep ordered` -Les sélections d'entités non-triées sont créées dans les cas suivants : +Les entity selections non-triées sont créées dans les cas suivants : - résultat d'un `query()` standard sur une sélection (de n'importe quel type) ou un `query()` sur une dataclass, - résultat de la méthode `newSelection()` sans option, -- résultat de l'une des méthodes de comparaison, quel que soit le type de sélection saisi : `or()`, `and()`, `minus()`. +- résultat de l'une des méthodes de comparaison, quel que soit le type de sélection d'origine : `or()`, `and()`, `minus()`. > Les entity selections suivantes sont toujours **triées** : > diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md index 50d4730852d6fa..460a8d4b10f780 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md @@ -120,7 +120,7 @@ $entity.save() //sauvegarder les modifications :::note Notes -- Database Object fields can be [associated with classes](../Develop/field-properties.md), in which case only objects of the defined class can be assigned to the entity attribute. +- Les champs objet de la base de données peuvent être [associés à des classes](../Develop/field-properties.md), auquel cas seuls les objets de la classe définie peuvent être affectés à l'attribut de l'entité. - Les champs Blob des bases de données ([blobs scalaires](Concepts/dt_blob.md)) sont automatiquement convertis en attributs d'objets blob ([`4D.Blob`](Concepts/dt_blob.md)) lorsqu'ils sont traités par ORDA. Lorsque vous sauvegardez un attribut d'objet blob, gardez à l'esprit que, contrairement à la taille de l'objet blob qui n'est limitée que par la mémoire disponible, la taille du champ Blob est limitée à 2 Go. ::: @@ -288,7 +288,7 @@ La nature **partageable** ou **modifiable** d'une entity selection est définie Une nouvelle entity selection est **partageable** dans les cas suivants : -- la nouvelle entity selection résulte d'une fonction de classe ORDA appliquée à une dataClass : [dataClass.all()](API/DataClassClass.md#all), [dataClass.fromCollection()](API/DataClassClass.md#fromcollection), [dataClass.query()](API/DataClassClass.md#quer +- la nouvelle entity selection résulte d'une fonction de classe ORDA appliquée à une dataClass : [dataClass.all()](API/DataClassClass.md#all), [dataClass.fromCollection()](API/DataClassClass.md#fromcollection), [dataClass.query()](API/DataClassClass.md#query), - la nouvelle entity selection est basée sur une relation [entity.*attributeName*](API/EntityClass.md#attributename) (par exemple, "company.employees") lorsque *attributeName* est un attribut lié 1-vers-N mais que l'entité n'appartient pas à une entity selection. - la nouvelle entity selection est explicitement copiée comme partageable avec [entitySelection.copy()](API/EntitySelectionClass.md#copy) ou `OB Copy` (c'est-à-dire avec l'option `ck shared`). @@ -449,7 +449,7 @@ Les filtres s'appliquent aux **entités**. Si vous souhaitez restreindre l'accè ### Comment définir un filtre de restriction -You create a filter for a dataclass by defining an `event restrict` function in the [**dataclass class**](dsMapping.md#dataclass) of the dataclass. Le filtre est alors automatiquement activé. +Vous créez un filtre pour une dataclass en définissant une fonction `event restrict` dans la [**classe**](dsMapping.md#dataclass) de la dataclasse. Le filtre est alors automatiquement activé. ### `Function event restrict` @@ -462,11 +462,11 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Cette fonction est appelée chaque fois qu'une entity selection ou une entité de la dataclass est demandée. Le filtre est exécuté une seule fois, lors de la création de l'entity selection. -Le filtre doit retourner une entity selection de la dataclass. Il peut s'agir d'une entity selection basée sur une recherche, stockée dans le [`Storage`], etc. +Le filtre doit retourner une entity selection de la dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note -Pour des raisons de performances, nous recommandons d'utiliser les **attributs indexés** dans la définition du filtre. +Pour des raisons de performances, nous recommandons d'utiliser des **attributs indexés** dans la définition du filtre. ::: @@ -564,11 +564,11 @@ Ce mécanisme automatique est basé sur le concept de "verrouillage optimiste" q Le diagramme suivant illustre le verrouillage optimiste : -1. Two processes load the same entity.

    ![](../assets/en/ORDA/optimisticLock1.png) +1. Deux process chargent la même entité.

    ![](../assets/en/ORDA/optimisticLock1.png) -2. Le premier process modifie l'entité et valide le changement. La méthode `entity.save()` est appelée. Le moteur 4D compare automatiquement la valeur du marqueur interne de l'entité modifiée avec celle de l'entité stockée dans les données. Since they match, the entity is saved and its stamp value is incremented.

    ![](../assets/en/ORDA/optimisticLock2.png) +2. Le premier process modifie l'entité et valide le changement. La méthode `entity.save()` est appelée. Le moteur 4D compare automatiquement la valeur du marqueur interne de l'entité modifiée avec celle de l'entité stockée dans les données. Puisqu'elles correspondent, l'entité est enregistrée et la valeur de son marqueur est incrémentée.

    ![](../assets/en/ORDA/optimisticLock2.png) -3. Le deuxième process modifie également l'entité chargée et valide ses modifications. La méthode `entity.save()` est appelée. Since the stamp value of the modified entity does not match the one of the entity stored in the data, the save is not performed and an error is returned.

    ![](../assets/en/ORDA/optimisticLock3.png) +3. Le deuxième process modifie également l'entité chargée et valide ses modifications. La méthode `entity.save()` est appelée. Puisque la valeur du marqueur de l'entité modifiée ne correspond pas à celle de l'entité stockée dans les données, la sauvegarde n'est pas effectuée et une erreur est retournée.

    ![](../assets/en/ORDA/optimisticLock3.png) Cela peut également être illustré par le code suivant : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/glossary.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/glossary.md index 29ecb988e206b8..0802de867e16c6 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/glossary.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/glossary.md @@ -9,7 +9,7 @@ title: Glossaire ## Action -Chaque action qui peut être effectuée sur une [ressource](#resource). Available actions are: create, read, update, drop, execute, and promote. +Chaque action qui peut être effectuée sur une [ressource](#resource). Les actions disponibles sont : create, read, update, drop, execute, and promote. ## Attribut @@ -18,11 +18,11 @@ Un attribut est la plus petite cellule de stockage dans une base de données rel - Dans un objet dataclass, chaque propriété est un attribut de dataclass qui correspond à un champ dans la table correspondante (même nom et même type). - Dans un objet entity, les attributs d'entités sont des propriétés qui contiennent les valeurs pour les attributs du datastore correspondants. -> \> Attributes and properties are similar concepts. "Attribut" est utilisé pour désigner les propriétés de la dataclass qui stockent les données, tandis que "propriété" est plus générique et définit une donnée stockée dans un objet. +> Les *attributs* et les *propriétés* sont des concepts similaires. "Attribut" est utilisé pour désigner les propriétés de la dataclass qui stockent les données, tandis que "propriété" est plus générique et définit une donnée stockée dans un objet. ## AttributePath -Un attributePath est le chemin d'un attribut à l'intérieur d'une dataclass ou d'une entité donnée. See also [PropertyPath](#propertypath). +Un attributePath est le chemin d'un attribut à l'intérieur d'une dataclass ou d'une entité donnée. Voir aussi [PropertyPath](#propertypath). ## Class code @@ -89,7 +89,7 @@ Une entité est un objet qui correspond à un modèle de dataclass. Une entité Une entité peut être vue comme une instance de la dataclass, comme un enregistrement de la table correspondante à la dataclass dans son datastore associé. Cependant, une entité contient également des données connexes. Le but de l'entité est de gérer les données (créer, mettre à jour, supprimer). -For more information, see [entities](entities.md). +Pour plus d'informations, voir [entities](entities.md). ## Entity selection diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index ba1fd2735d3605..369a06d7efda4f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -1,79 +1,79 @@ --- id: orda-events -title: ORDA Events +title: Évènements d'entité ---
    Historique -| Release | Modifications | -| ------- | ------------------- | -| 20 R10 | touched event added | +| Release | Modifications | +| ------- | ----------------------- | +| 20 R10 | ajout événement touched |
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Les événements d'entité sont des fonctions qui sont automatiquement invoquées par ORDA chaque fois que des entités et des attributs d'entité sont touchés (ajoutés, supprimés ou modifiés). Vous pouvez écrire des événements très simples, puis les rendre plus sophistiqués. -You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. +Vous ne pouvez pas déclencher directement l'exécution d'une fonction d'événement. Les événements sont appelés automatiquement par ORDA en fonction des actions de l'utilisateur ou des opérations effectuées par le code sur les entités et leurs attributs. -:::info Compatibility note +:::info Note de compatibilité -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +Les événements d'entité ORDA dans le magasin de données sont équivalents aux triggers dans la base de données 4D. Cependant, les actions déclenchées au niveau de la base de données 4D à l'aide des commandes du langage classique 4D ou des actions standard ne déclenchent pas les événements ORDA. ::: ## Vue d’ensemble -### Event level +### Niveau de l'événement -A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). +Une fonction d'événement d'entité est toujours définie dans la [classe Entity](../ORDA/ordaClasses.md#entity-class). -It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute. +Un événement peut être défini au niveau de l'**entité** et/ou de l'**attribut** (y compris les [**attributs calculés**](../ORDA/ordaClasses.md#computed-attributes)). Dans le premier cas, il sera déclenché pour tous les attributs de l'entité ; dans l'autre cas, il ne sera déclenché que pour l'attribut ciblé. -For the same event, you can define different functions for different attributes. +Pour un même événement, vous pouvez définir différentes fonctions pour différents attributs. -You can also define the same event at both attribute and entity levels. The attribute event is called first and then the entity event. +Vous pouvez également définir le même événement au niveau de l'attribut et de l'entité. L'événement attribut est appelé en premier, puis l'événement entité. -### Execution in remote configurations +### Exécution en configuration distante -Usually, ORDA events are executed on the server. +En général, les événements ORDA sont exécutés sur le serveur. -In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](./ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. +Cependant, dans une configuration client/serveur, la fonction d'événement `touched()` peut être exécutée sur **le serveur ou le client**, en fonction de l'utilisation du mot-clé [`local`](./ordaClasses.md#local-functions). Une implémentation spécifique côté client permet de déclencher l'événement sur le client. :::note -ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed on the client. +Les fonctions ORDA [`constructor()`](./ordaClasses.md#class-constructor) sont toujours exécutées sur le client. ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +Avec d'autres configurations distantes (i.e. applications Qodly, [requêtes via l'API REST](../REST/REST_requests.md), ou requêtes via [`Open datastore`](../commands/open-datastore.md)), la fonction d'événement `touched()` est toujours exécutée **côté serveur**. Cela signifie que vous devez vous assurer que le serveur peut "voir" qu'un attribut a été touché pour déclencher l'événement (voir ci-dessous). -### Summary table +### Tableau de synthèse -The following table lists ORDA events along with their rules. +Le tableau suivant liste les événements d'entité ORDA ainsi que leurs principes. -| Evénement | Niveau | Function name | (C/S) Executed on | -| :------------------- | :------- | :------------------------------------------------------ | :------------------------------------------------------------------: | -| Entity instantiation | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | -| Attribute touched | Attribut | `event touched ()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | -| | Entity | `event touched()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | +| Evénement | Niveau | Nom de la fonction | (C/S) Exécuté sur | +| :--------------------- | :------- | :------------------------------------------------------ | :-----------------------------------------------------------------: | +| Instanciation d'entité | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | +| Attribut touched | Attribut | `event touched ()` | Dépend du mot-clé [`local`](../ORDA/ordaClasses.md#local-functions) | +| | Entity | `event touched()` | Dépend du mot-clé [`local`](../ORDA/ordaClasses.md#local-functions) | :::note -The [`constructor()`](./ordaClasses.md#class-constructor-1) function is not actually an event function but is always called when a new entity is instantiated. +La fonction [`constructor()`](./ordaClasses.md#class-constructor-1) n'est pas en soi une fonction d'événement, mais elle est toujours appelée lorsqu'une nouvelle entité est instanciée. ::: -## *event* parameter +## Paramètre *event* -Event functions accept a single *event* object as parameter. When the function is called, the parameter is filled with several properties: +Les fonctions d'événement acceptent un seul objet *event* comme paramètre. Lorsque la fonction est appelée, le paramètre est rempli avec diverses propriétés : -| Nom de propriété | Disponibilité | Type | Description | -| :--------------- | :------------------------------------- | :----- | :--------------------------------------------------------------------------- | -| `kind` | Toujours | String | Nom de l'événement ("touched") | -| *attributeName* | Only for events involving an attribute | String | Nom de l'attribut (*ex.* "firstname") | -| *dataClassName* | Toujours | String | Nom du verre de données (*ex.* "Company") | +| Nom de propriété | Disponibilité | Type | Description | +| :--------------- | :---------------------------------------------------- | :----- | :--------------------------------------------------------------------------- | +| `kind` | Toujours | String | Nom de l'événement ("touched") | +| *attributeName* | Uniquement pour les événements impliquant un attribut | String | Nom de l'attribut (*ex.* "firstname") | +| *dataClassName* | Toujours | String | Nom du verre de données (*ex.* "Company") | -## Event function description +## Description des fonctions ### `Function event touched` @@ -85,30 +85,30 @@ Event functions accept a single *event* object as parameter. When the function i // code ``` -This event is triggered each time a value is modified in the entity. +Cet événement est déclenché chaque fois qu'une valeur est modifiée dans l'entité. -- if you defined the function at the entity level (first syntax), it is triggered for modifications on any attribute of the entity. -- if you defined the function at the attribute level (second syntax), it is triggered only for modifications on this attribute. +- si vous avez défini la fonction au niveau de l'entité (première syntaxe), elle est déclenchée pour des modifications sur n'importe quel attribut de l'entité. +- si vous avez défini la fonction au niveau de l'attribut (deuxième syntaxe), elle n'est déclenchée que pour les modifications sur cet attribut. -This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: +Cet événement est déclenché dès que le moteur de 4D Server / 4D détecte une modification de la valeur de l'attribut qui peut être due aux actions suivantes : -- in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). -- in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. -- with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) +- en **client/serveur avec le [mot-clé `local`](../ORDA/ordaClasses.md#local-functions)** ou en **4D mono-utilisateur** : + - l'utilisateur saisit une valeur dans un formulaire 4D, + - le code 4D effectue une assignation avec l'opérateur `:=`. L'événement est également déclenché en cas d'auto-assignation (`$entity.attribute:=$entity.attribute`). +- en **client/serveur sans le mot-clé `local`** : du code 4D effectue une assignation avec l'opérateur `:=` est [exécuté sur le serveur](../commands-legacy/execute-on-server.md). +- en **client/serveur sans le mot-clé `local`**, une **[application Qodly](https://developer.qodly.com/docs)** ou **[datastore distant](../commands/open-datastore.md)** : l'entité est reçue sur le serveur 4D lors de l'appel d'une fonction ORDA (sur l'entité ou avec l'entité en tant que paramètre). Cela signifie que vous devrez peut-être mettre en place une fonction *refresh* ou *preview* sur l'application distante qui envoie une requête ORDA au serveur et déclenche l'événement. +- avec le serveur REST : la valeur est reçue sur le serveur REST avec une [requête REST](../REST/$method.md#methodupdate) (`$method=update`) -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. -If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. +Si cet événement [génère une erreur](../commands-legacy/throw.md), il n'arrêtera pas l'action en cours. :::note -This event is also triggered: +Cet événement est également déclenché : -- when attributes are assigned by the [`constructor()`](./ordaClasses.md#class-constructor-1) event, -- when attributes are edited through the [Data Explorer](../Admin/dataExplorer.md). +- lorsque les attributs sont assignés par l'événement [`constructor()`](./ordaClasses.md#class-constructor-1), +- lorsque les attributs sont modifiés via l'[Explorateur de données](../Admin/dataExplorer.md). ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md index 84479ca7fefcae..d4738c0141b15f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ORDA/ordaClasses.md @@ -306,52 +306,52 @@ Class constructor() :::note -Il n'y a pas de mot-clé de fin pour le code d'une fonction class constructor. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. +Il n'y a pas de mot-clé de fin pour le code d'une fonction de constructeur de classe. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. ::: -An ORDA class constructor function is triggered just after a new entity is created in memory, [whatever the way it is created](#commands-that-trigger-the-class-constructor-functions). It is useful to set initial values for entity instantiation, for example a custom ID. +Une fonction de construction de classe ORDA est déclenchée juste après la création d'une nouvelle entité en mémoire, [quelle que soit la manière dont elle est créée](#commands-that-trigger-the-class-constructor-functions). Elle est utile pour définir des valeurs d'initialisation lors de l'instanciation de l'entité, par exemple un identifiant personnalisé. -This function can only be set at the [entity level](#entity-class). There can only be one constructor function in an entity class (otherwise an error is returned). +Cette fonction ne peut être définie qu'au [niveau de l'entité](#entity-class). Il ne peut y avoir qu'une seule fonction constructor dans une classe d'entité (sinon une erreur est renvoyée). -This ORDA class constructor function does not receive or return parameters. However, you can use it to initialize attribute values using [`This`](../commands/this.md). Note that values initialized by the constructor are overriden if corresponding attributes are filled by the code. +La fonction du constructeur de la classe ORDA ne reçoit ni ne renvoie de paramètres. Cependant, vous pouvez l'utiliser pour initialiser les valeurs des attributs en utilisant [`This`](../commands/this.md). Notez que les valeurs initialisées par le constructeur sont remplacées si les attributs correspondants sont remplis par le code. :::note -An ORDA class constructor function is similar to a [user class constructor function](../Concepts/classes.md#class-constructor), with the following differences: +Une fonction de construction de classe ORDA est similaire à une [fonction de construction de classe utilisateur](../Concepts/classes.md#class-constructor), avec les différences suivantes : -- you cannot pass parameters to the constructor, -- you cannot use `shared`, `session`, or `singleton` keywords, -- you cannot call the [`Super`](../Concepts/classes.md#super) keyword within the function, -- the class constructor cannot be called using the `new()` function on an entity (entities can only be created by specific functions, see below). +- vous ne pouvez pas passer de paramètres au constructeur, +- vous ne pouvez pas utiliser les mots-clés `shared`, `session`, ou `singleton`, +- vous ne pouvez pas appeler le mot-clé [`Super`](../Concepts/classes.md#super) à l'intérieur de la fonction, +- le constructeur de la classe ne peut pas être appelé en utilisant la fonction `new()` sur une entité (les entités ne peuvent être créées que par des fonctions spécifiques, voir ci-dessous). ::: -#### Commands that trigger the Class constructor functions +#### Commandes qui déclenchent les fonctions du constructeur de classe -The `Class constructor` function is triggered by the following commands and features: +La fonction `Class constructor` est déclenchée par les commandes et fonctionnalités suivantes : - [`dataClass.new()`](../API/DataClassClass.md#new) - [`dataClass.fromCollection()`](../API/DataClassClass#fromcollection) -- [REST API $method=update](../REST/$method.md#methodupdate) in a POST without the `__KEY` and `__STAMP` parameters -- the [Data Explorer](../Admin/dataExplorer.md#editing-data). +- [API REST $method=update](../REST/$method.md#methodupdate) dans un POST sans les paramètres `__KEY` et `__STAMP`. +- l'[Explorateur de données](../Admin/dataExplorer.md#editing-data). :::note Notes -- The [`entity.clone()`](../API/EntityClass.md#clone) function does not trigger the entity Class constructor. -- Records created at the 4D database level using 4D classic language commands or standard actions do not trigger the entity Class constructor. +- La fonction [`entity.clone()`](../API/EntityClass.md#clone) ne déclenche pas le constructeur de la classe de l'entité. +- Les enregistrements créés au niveau de la base de données 4D à l'aide de commandes du langage classique 4D ou d'actions standard ne déclenchent pas le constructeur de la classe de l'entité. ::: -#### Remote configurations +#### Configurations distantes -When using a remote configurations, you need to pay attention to the following principles: +Lorsque vous utilisez une configuration à distance, il convient de respecter les principes suivants : -- In **client/server** the function can be called on the client or on the server, depending on the location of the calling code. When it is called on the client, it is not triggered again when the client attempts to save the new entity and sends an update request to the server to create in memory on the server. +- En **client/serveur**, la fonction peut être appelée sur le client ou sur le serveur, en fonction de l'emplacement du code d'appel. Lorsqu'elle est appelée sur le client, elle n'est pas déclenchée à nouveau lorsque le client tente d'enregistrer la nouvelle entité et envoie une demande de mise à jour au serveur pour la créer en mémoire sur le serveur. :::warning -Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md#fromcollection) can create a large number of entities and thus trigger the entity Class constructor consequently, you need to make sure the constructor code does not execute excessive time-consuming processings, for performance reasons. In remote configurations (see below), the code should not trigger multiple requests to the server. +Des fonctions telles que [`dataClass.fromCollection()`](../API/DataClassClass.md#fromcollection) pouvant créer un grand nombre d'entités et donc déclencher le constructeur de la classe d'entités en conséquence, vous devez vous assurer que le code du constructeur n'exécute pas de traitements qui prennent du temps, pour des raisons de performance. Dans les configurations distantes (voir ci-dessous), le code ne doit pas déclencher de requêtes multiples au serveur. ::: @@ -367,7 +367,7 @@ Class constructor() ``` -#### Example 2 (diagram): Client/server +#### Exemple 2 (diagramme) : Client/serveur ```mermaid @@ -386,7 +386,7 @@ Server-->>-Client: Success ``` -#### Example 3 (diagram): Qodly - Standard action +#### Exemple 3 (diagramme): Qodly - Action standard ```mermaid @@ -404,7 +404,7 @@ sequenceDiagram ``` -#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity +#### Exemple 4 (diagramme): Qodly - Action standard et mise à jour de valeur sur la nouvelle entité créée ```mermaid @@ -426,7 +426,7 @@ Note over Qodly page: product.creationDate is "06/17/25"
    and product.commen ``` -#### Example 5 (diagram): Qodly - Entity instanciated in a function +#### Exemple 5 (diagramme) : Qodly - Entité instanciée dans une fonction ```mermaid @@ -896,23 +896,23 @@ Exposed Alias studentName student.name //scalar value Vous pouvez alors exécuter les recherches suivantes : ```4d -// Find course named "Archaeology" +// Trouver le cours nommé "Archaeology" ds.Course.query("courseName = :1";"Archaeology") -// Find courses given by the professor Smith +// Trouver les cours du professeur Smith ds.Course.query("teacherName = :1";"Smith") -// Find courses where Student "Martin" assists +// Trouver les cours auxquels assiste l'étudiant "Martin" ds.Course.query("studentName = :1";"Martin") -// Find students who have M. Smith as teacher +// Trouver les étudiants qui ont le professeur Smith ds.Student.query("teachers.name = :1";"Smith") -// Find teachers who have M. Martin as Student +// Trouver les professeurs qui ont M. Martin comme étudiant ds.Teacher.query("students.name = :1";"Martin") -// Note that this very simple query string processes a complex -// query including a double join, as you can see in the queryPlan: -// "Join on Table : Course : Teacher.ID = Course.teacherID, +// Notez que cette chaîne très simple traite une requête complexe +// incluant une double jointure, comme vous pouvez le voir dans le queryPlan : +// "Join on Table : Course : Teacher.ID = Course.teacherID, // subquery:[ Join on Table : Student : Course.studentID = Student.ID, // subquery:[ Student.name === Martin]]" ``` @@ -986,59 +986,59 @@ $status:=$remoteDS.Schools.registerNewStudent($student) // OK $id:=$remoteDS.Schools.computeIDNumber() // Erreur "Unknown member method" ``` -## onHTTPGet keyword +## onHTTPGet -Use the `onHTTPGet` keyword to declare functions that can be called through HTTP requests using the `GET` verb. Such functions can return any web contents, for example using the [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) class. +Utilisez le mot-clé `onHTTPGet` pour déclarer des fonctions qui peuvent être appelées par des requêtes HTTP utilisant le verbe `GET`. Ces fonctions peuvent renvoyer n'importe quel contenu web, par exemple en utilisant la classe [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md). -The `onHTTPGet` keyword is available with: +Le mot-clé `onHTTPGet` est disponible avec : -- ORDA Data model class functions -- [Singletons class functions](../Concepts/classes.md#singleton-classes) +- les fonctions de classe du modèle de données ORDA +- les [fonctions de classe de singletons](../Concepts/classes.md#singleton-classes) La syntaxe formelle est la suivante : ```4d -// declare an onHTTPGet function +// déclarer une fonction onHTTPGet exposed onHTTPGet Function (params) : result ``` :::info -The `exposed` keyword must also be added in this case, otherwise an error will be generated. +Le mot-clé `exposed` doit également être ajouté dans ce cas, sinon une erreur sera générée. ::: :::caution -As this type of call is an easy offered action, the developer must ensure no sensitive action is done in such functions. +Comme ce type d'appel est une action facile d'accès, le développeur doit s'assurer qu'aucune action sensible n'est effectuée dans ces fonctions. ::: ### params -A function with `onHTTPGet` keyword accepts [parameters](../Concepts/parameters.md). +Une fonction avec le mot-clé `onHTTPGet` accepte des [paramètres](../Concepts/parameters.md). -In the HTTP GET request, parameters must be passed directly in the URL and declared using the `$params` keyword (they must be enclosed in a collection). +Dans la requête HTTP GET, les paramètres doivent être passés directement dans l'URL et déclarés à l'aide du mot-clé `$params` (ils doivent être inclus dans une collection). ``` IP:port/rest//functionName?$params='[]' ``` -See the [Parameters](../REST/classFunctions#parameters) section in the REST server documentation. +Voir la section [Paramètres](../REST/classFunctions#parameters) dans la documentation du serveur REST. ### Résultat -A function with `onHTTPGet` keyword can return any value of a supported type (same as for REST [parameters](../REST/classFunctions#parameters)). +Une fonction avec le mot-clé `onHTTPGet` peut renvoyer n'importe quelle valeur d'un type supporté (comme pour les [paramètres REST](../REST/classFunctions#parameters)). :::info -You can return a value of the [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) class type to benefit from properties and functions to set the header, the body, and the status of the answer. +Vous pouvez renvoyer une valeur de type [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) pour bénéficier des propriétés et des fonctions permettant de définir l'en-tête, le corps et le statut de la réponse. ::: ### Exemple -You have defined the following function: +Vous avez défini la fonction suivante : ```4d Class extends DataClass @@ -1056,10 +1056,10 @@ exposed onHTTPGet Function getThumbnail($name : Text; $width : Integer; $height return $response ``` -It can be called by the following HTTP GET request: +Elle peut être appelée par la requête HTTP GET suivante : ``` -IP:port/rest/Products/getThumbnail?$params='["Yellow Pack",200,200]' +IP:port/rest/Products/getThumbnail ?$params='["Yellow Pack",200,200]' ``` ## Fonctions locales diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Project/components.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Project/components.md index a200cf127c27d5..785281501ef4cd 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Project/components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/Project/components.md @@ -5,7 +5,7 @@ title: Dépendances Un composant 4D est un ensemble de code 4D et de formulaires représentant une ou plusieurs fonctionnalité(s) que vous pouvez installer et utiliser dans vos projets. Par exemple, le composant [4D SVG](https://github.com/4d/4D-SVG) ajoute des commandes avancées et un moteur de rendu intégré qui peut être utilisé pour afficher des fichiers SVG. -Vous pouvez [développer](../Extensions/develop-components.md) et [construire](../Desktop/building.md) vos propres composants 4D, ou télécharger des composants publics partagés par la communauté 4D qui se trouvent sur GitHub. +Vous pouvez [développer](../Extensions/develop-components.md) et [construire](../Desktop/building.md) vos propres composants 4D, ou télécharger des composants publics partagés par la communauté 4D [sur GitHub](https://github.com/topics/4d-component). Lorsque vous développez dans 4D, les fichiers de composants peuvent être stockés de manière transparente sur votre ordinateur ou sur un dépôt Github. @@ -31,20 +31,20 @@ L'architecture de dossier "Contents" est recommandée pour les composants si vou ::: -## Components made by 4D +## Composants développés par 4D -4D includes a set of components developed in-house. They can also be found in the [4D github repository](https://github.com/4d). +4D comprend un ensemble de composants développés en interne. Ces composants sont également présents sur le [dépôt github de 4D](https://github.com/4d). -| Composant | Description | Principales fonctionnalités | -| --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| [4D AiIKit](https://github.com/4d/4D-AIKit) | Ensemble de classes permettant de se connecter à des API OpenAI tierces | `OpenAIChat`, `OpenAIImage`... | -| [4D Labels](https://github.com/4d/4D-Labels) | Composant interne requis pour la création de modèles de labels | | -| [4D NetKit](https://developer.4d.com/4D-NetKit) | Ensemble d'outils de services web permettant de se connecter à des API tierces | `OAuth2Provider` class, `New OAuth2 provider`, `OAuth2ProviderObject.getToken()` | -| [4D Progress](https://github.com/4d/4D-Progress) | Ouverture d'une ou plusieurs barres de progression dans la même fenêtre | `Progress New`, `Progress SET ON STOP METHOD`, `Progress SET PROGRESS`, ... | -| [4D SVG](https://github.com/4d/4D-SVG) | Création et manipulation d'objets graphiques svg courants | `SVGTool_Display_viewer`, multiple `SVG_` methods | -| [4D View Pro](ViewPro/getting-started.md) | Fonctions de tableur dans vos formulaires | Voir la [documentation de 4D View Pro](ViewPro/getting-started.md) | -| [4D Widgets](https://github.com/4d/4D-Widgets) | Gestion des widgets 4D DatePicker, TimePicker et SearchPicker | `DatePicker calendar`, `DateEntry area`, `TimeEntry`, `SearchPicker SET HELP TEXT`, ... | -| [4D Write Pro Interface](https://github.com/4d/4D-WritePro-Interface) | Manage [4D Write Pro palettes](https://doc.4d.com/4Dv20R9/4D/20-R9/Entry-areas.300-7543821.en.html) and [table wizard](../WritePro/writeprointerface.md#table-wizard) | `WP PictureSettings`, `WP ShowTabPages`, `WP SwitchToolbar`, `WP UpdateWidget` | +| Composant | Description | Principales fonctionnalités | +| --------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | +| [4D AiIKit](https://github.com/4d/4D-AIKit) | Ensemble de classes permettant de se connecter à des API OpenAI tierces | `OpenAIChat`, `OpenAIImage`... | +| [4D Labels](https://github.com/4d/4D-Labels) | Composant interne requis pour la création de modèles de labels | | +| [4D NetKit](https://developer.4d.com/4D-NetKit) | Ensemble d'outils de services web permettant de se connecter à des API tierces | `OAuth2Provider` class, `New OAuth2 provider`, `OAuth2ProviderObject.getToken()` | +| [4D Progress](https://github.com/4d/4D-Progress) | Ouverture d'une ou plusieurs barres de progression dans la même fenêtre | `Progress New`, `Progress SET ON STOP METHOD`, `Progress SET PROGRESS`, ... | +| [4D SVG](https://github.com/4d/4D-SVG) | Création et manipulation d'objets graphiques svg courants | `SVGTool_Display_viewer`, multiple `SVG_` methods | +| [4D View Pro](ViewPro/getting-started.md) | Fonctions de tableur dans vos formulaires | Voir la [documentation de 4D View Pro](ViewPro/getting-started.md) | +| [4D Widgets](https://github.com/4d/4D-Widgets) | Gestion des widgets 4D DatePicker, TimePicker et SearchPicker | `DatePicker calendar`, `DateEntry area`, `TimeEntry`, `SearchPicker SET HELP TEXT`, ... | +| [4D Write Pro Interface](https://github.com/4d/4D-WritePro-Interface) | Gestion des [palettes de 4D Write Pro](https://doc.4d.com/4Dv20R9/4D/20-R9/Entry-areas.300-7543821.en.html) et de [l'assistant de table](../WritePro/writeprointerface.md#table-wizard) | `WP PictureSettings`, `WP ShowTabPages`, `WP SwitchToolbar`, `WP UpdateWidget` | ## Chargement des composants @@ -330,20 +330,20 @@ Les composants GitHub référencés sont téléchargés dans un dossier de cache ...où `` peut être "4D", "4D Server" ou "tool4D". -### Automatic dependency resolution +### Résolution automatique des dépendances -When you add or update a component (whether [local](#local-components) or [from GitHub](#components-stored-on-github)), 4D automatically resolves and installs all dependencies required by that component. Cela inclut : +Lorsque vous ajoutez ou mettez à jour un composant (qu'il soit [local](#local-components) ou [obtenu depuis GitHub](#components-stored-on-github)), 4D résout et installe automatiquement toutes les dépendances requises par ce composant. Cela inclut : -- **Primary dependencies**: Components you explicitly declare in your `dependencies.json` file -- **Secondary dependencies**: Components required by primary dependencies or other secondary dependencies, which are automatically resolved and installed +- les **dépendances primaires** : Composants que vous déclarez explicitement dans votre fichier `dependencies.json`. +- les **dépendances secondaires** : Composants requis par des dépendances primaires ou d'autres dépendances secondaires, qui sont automatiquement résolues et installées. -The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. +Le gestionnaire de dépendances lit le fichier `dependencies.json` de chaque composant et installe récursivement toutes les dépendances nécessaires, en respectant les spécifications de version dans la mesure du possible. Il n'est donc pas nécessaire d'identifier et d'ajouter manuellement les dépendances imbriquées, une par une. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **les résolutions de conflits** : Lorsque plusieurs dépendances nécessitent [différentes versions](#defining-a-github-dependency-version-range) du même composant, le gestionnaire de dépendances tente automatiquement de résoudre les conflits en trouvant une version qui satisfait toutes les plages de versions qui se chevauchent. Si une dépendance primaire entre en conflit avec des dépendances secondaires, la dépendance primaire est prioritaire. :::note -`dependencies.json` files are ignored in components loaded from the [**Components** folder](architecture.md#components). +Les fichiers `dependencies.json` sont ignorés dans les composants chargés depuis le dossier [**Components**](architecture.md#components). ::: @@ -377,19 +377,19 @@ Par défaut, toutes les dépendances identifiées par le Gestionnaire de dépend ![dependency-tabs](../assets/en/Project/dependency-tabs.png) -- **All**: All dependencies including both primary (declared) and secondary (automatically resolved) dependencies in a flat list view. -- **Declared**: Primary dependencies that are explicitly declared in the `dependencies.json` file. This tab helps you distinguish between dependencies you've directly added and those that were [automatically resolved](#automatic-dependency-resolution). -- **Actifs** : Dépendances chargées et utilisables dans le projet. Il comprend des dépendances *overloading*, qui sont effectivement chargées. Les dépendances *overloaded* sont listées dans l'onglet **Conflits**, ainsi que toutes les dépendances conflictuelles. -- **Inactifs** : Dépendances qui ne sont pas chargées dans le projet et qui ne sont pas disponibles. Diverses raisons peuvent expliquer ce statut : fichiers manquants, incompatibilité de version... -- **Conflicts**: Dependencies that are loaded but that overloads at least one other dependency at a lower [priority level](#priority). Les dépendances surchargées sont également affichées afin que vous puissiez vérifier l'origine du conflit et prendre les mesures appropriées. +- **Toutes** : Toutes les dépendances, y compris les dépendances primaires (déclarées) et secondaires (résolues automatiquement), sous forme de liste. +- **Déclarées** : Les dépendances primaires qui sont explicitement déclarées dans le fichier `dependencies.json`. Cet onglet vous aide à distinguer les dépendances que vous avez directement ajoutées de celles qui ont été [automatiquement résolues](#automatic-dependency-resolution). +- **Actives** : Dépendances chargées et utilisables dans le projet. Il comprend des dépendances *overloading*, qui sont effectivement chargées. Les dépendances *overloaded* sont listées dans l'onglet **Conflits**, ainsi que toutes les dépendances conflictuelles. +- **Inactives** : Dépendances qui ne sont pas chargées dans le projet et qui ne sont pas disponibles. Diverses raisons peuvent expliquer ce statut : fichiers manquants, incompatibilité de version... +- **Conflits** : Les dépendances qui sont chargées mais qui surchargent au moins une autre dépendance à un [niveau de priorité](#priority) inférieur. Les dépendances surchargées sont également affichées afin que vous puissiez vérifier l'origine du conflit et prendre les mesures appropriées. -### Secondary dependencies +### Dépendances secondaires -The Dependencies panel displays [**secondary dependencies**](#automatic-dependency-resolution) with the `Component dependency` [origin](#dependency-origin): +Le panneau Dépendances indique les [**dépendances secondaires**](#automatic-dependency-resolution) en affichant comme [origin](#dependency-origin) `Dépendance de composant` : ![recursive-dependency](../assets/en/Project/recursive.png) -When you hover over a secondary dependency, a tooltip displays the parent dependency that requires it. A secondary dependency cannot be [removed](#removing-a-dependency) directly, you must remove or edit the primary dependency that requires it. +Lorsque vous survolez une dépendance secondaire, une infobulle affiche la dépendance parente qui la requiert. Une dépendance secondaire ne peut pas être [supprimée](#removing-a-dependency) directement, vous devez supprimer ou modifier la dépendance primaire qui la requiert. ### Statut des dépendances @@ -416,19 +416,19 @@ Une infobulle s'affiche lorsque vous survolez la ligne de dépendance, fournissa ### Origine de la dépendance -Le panneau Dépendances liste toutes les dépendances du projet, quelle que soit leur origine, c'est-à-dire d'où qu'elles viennent. L'origine de la dépendance est fournie par l'étiquette sous son nom : +Le panneau Dépendances liste toutes les dépendances du projet, quelle que soit leur origine. L'origine de la dépendance est fournie par l'étiquette sous son nom : ![dependency-origin](../assets/en/Project/dependency-origin.png) Les options suivantes sont disponibles : -| Étiquette d'origine | Description | -| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Built in 4D | Composant 4D intégré, stocké dans le dossier `Components` de l'application 4D | -| Declared in project | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) | -| Declared in environment | Component declared in the [`dependencies.json`](#dependenciesjson) file and overriden in the [`environment4d.json`](#environment4djson) file | -| Dossier Components | Composant situé dans le dossier [`Components`](architecture.md#components) | -| Component dependency | Secondary component ([required by a another component](#automatic-dependency-resolution)) | +| Étiquette | Description | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| Intégré à 4D | Composant 4D intégré, stocké dans le dossier `Components` de l'application 4D | +| Déclaré dans le projet | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) | +| Déclaré dans l'environnement | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) et surchargé dans le fichier [`environment4d.json`](#environment4djson) | +| Dossier Components | Composant situé dans le dossier [`Components`](architecture.md#components) | +| Dépendance de composant | Composant secondaire ([requis par un autre composant](#automatic-dependency-resolution)) | **Cliquez avec le bouton droit de la souris** dans une ligne de dépendance et sélectionnez **Afficher sur le disque** pour révéler l'emplacement d'une dépendance : @@ -496,7 +496,7 @@ Définissez la [plage de versions des dépendances](#tags-and-versions) à utili Cliquez sur le bouton **Ajouter** pour ajouter la dépendance au projet. -The GitHub dependency is declared in the [**dependencies.json**](#dependenciesjson) file and added to the [inactive dependency list](#dependency-status) with the **Available at restart** status. Elle sera chargée une fois que l'application aura redémarré. +La dépendance GitHub est déclarée dans le fichier [**dependencies.json**](#dependenciesjson) et ajoutée à la [liste des dépendances inactives](#dependency-status) avec le statut **Disponible après redémarrage**. Elle sera chargée une fois que l'application aura redémarré. #### Définir une plage de versions pour une dépendance GitHub @@ -614,7 +614,7 @@ Pour supprimer une dépendance de la fenêtre Dépendances, sélectionnez la dé :::note -Only primary dependencies declared in the [**dependencies.json**](#dependenciesjson) file can be removed using the Dependencies panel. Secondary dependencies cannot be removed directly - to remove a secondary dependency, you must remove the primary dependency that requires it. Si une dépendance sélectionnée ne peut pas être supprimée, le bouton **-** est désactivé et l'élément de menu **Supprimer la dépendance** est masqué. +Seules les dépendances primaires déclarées dans le fichier [**dependencies.json**](#dependenciesjson) peuvent être supprimées dans la fenêtre Dépendances. Les dépendances secondaires ne peuvent pas être supprimées directement - pour supprimer une dépendance secondaire, vous devez supprimer la dépendance primaire qui la requiert. Si une dépendance sélectionnée ne peut pas être supprimée, le bouton **-** est désactivé et l'élément de menu **Supprimer la dépendance** est masqué. ::: @@ -624,7 +624,7 @@ Une boîte de dialogue de confirmation s'affiche. Si la dépendance a été déc Si vous confirmez la boîte de dialogue, le [statut](#dependency-status) de la dépendance supprimée est automatiquement modifié en "Déchargé après redémarrage". Elle sera chargée une fois que l'application aura redémarré. -#### Dependency usage warnings +#### Avertissements relatifs à l'utilisation des dépendances -When you attempt to remove a primary dependency that is required by other dependencies in your project, you will be warned that the dependency is still in use. The system will display which other dependencies require it and prompt you to confirm the removal, as removing it may cause those dependent components to stop working properly. +Lorsque vous tentez de supprimer une dépendance primaire qui est requise par d'autres dépendances dans votre projet, vous serez averti que la dépendance est toujours en cours d'utilisation. Le système affichera les autres dépendances qui la requièrent et vous demandera de confirmer la suppression, car celle-ci peut entraîner l'arrêt du fonctionnement de ces composants dépendants. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-set-workbook-options.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-set-workbook-options.md index 7407f3c7a4eb04..621644af08ae2f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-set-workbook-options.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/commands/vp-set-workbook-options.md @@ -29,66 +29,66 @@ Les options modifiées du classeur sont enregistrées avec le document. Le tableau suivant répertorie les options de classeur disponibles : -| Propriété | Type | Description | -| ------------------------------------- | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| allowUserDragMerge | boolean | L'opération de fusion par glisser est autorisée (sélection des cellules et glisser de la sélection pour fusionner les cellules) | -| allowAutoCreateHyperlink | boolean | Permet la création automatique d'hyperliens dans la feuille de calcul. | -| allowContextMenu | boolean | Le menu contextuel intégré peut être ouvert. | -| allowCopyPasteExcelStyle | boolean | Les styles d'une feuille de calcul peuvent être copiés et collés dans Excel, et vice-versa. | -| allowDynamicArray | boolean | Active les tableaux dynamiques dans les feuilles de travail | -| allowExtendPasteRange | boolean | Étend la plage collée si la plage collée n'est pas suffisante pour les données collées | -| allowSheetReorder | boolean | La réorganisation de la feuille est autorisée | -| allowUndo | boolean | L'annulation des modifications est autorisée. | -| allowUserDeselect | boolean | La désélection de cellules spécifiques d'une sélection est autorisée. | -| allowUserDragDrop | boolean | Glisser-déposer des données de plage est autorisé | -| allowUserDragFill | boolean | Le remplissage par glisser est autorisé | -| allowUserEditFormula | boolean | Des formules peuvent être saisies dans les cellules | -| allowUserResize | boolean | Les colonnes et les lignes peuvent être redimensionnées | -| allowUserZoom | boolean | Le zoom (ctrl + molette de la souris) est autorisé | -| autoFitType | number | Le contenu est formaté pour tenir dans les cellules, les cellules et les en-têtes. Valeurs disponibles :
    ConstanteValeurDescription
    vk auto fit type cell 0 Le contenu ajuste automatiquement les cellules
    vk auto fit type cell with header 1 Le contenu ajuste automatiquement les cellules et les en-têtes
    | -| backColor | string | Chaîne de couleur utilisée pour représenter la couleur de fond de la zone, comme "rouge", "#FFFF00", "rgb(255,0,0)", "Accent 5". La couleur de fond initiale est masquée lorsqu'une image de fond est définie. | -| backgroundImage | string / picture / file | Image de fond de la zone. | -| backgroundImageLayout | number | Comment l'image de fond s'affiche. Available values:
    ConstantValueDescription
    vk image layout center 1 In the center of the area.
    vk image layout none 3 In the upper left corner of the area with its original size.
    vk image layout stretch 0 Fills the area.
    vk image layout zoom 2 Displayed with its original aspect ratio.
    | -| calcOnDemand | boolean | Les formules ne sont calculées que lorsqu'elles sont demandées. | -| columnResizeMode | number | Mode redimensionnement pour les colonnes. Valeurs disponibles :
    ConstanteValeurDescription
    vk resize mode normal 0 Utilise le mode de redimensionnement normal (c'est-à-dire que les colonnes restantes sont affectées)
    vk resize mode split 1 Utiliser le mode fractionné (les colonnes restantes ne sont pas affectées)
    | -| copyPasteHeaderOptions | number | En-têtes à inclure lorsque les données sont copiées ou collées. Available values:
    ConstantValueDescription
    vk copy paste header options all headers3 Includes selected headers when data is copied; overwrites selected headers when data is pasted.
    vk copy paste header options column headers 2 Includes selected column headers when data is copied; overwrites selected column headers when data is pasted.
    vk copy paste header options no headers0 Column and row headers are not included when data is copied; does not overwrite selected column or row headers when data is pasted.
    vk copy paste header options row headers1 Includes selected row headers when data is copied; overwrites selected row headers when data is pasted.
    | -| customList | collection | Liste pour que les utilisateurs personnalisent le remplissage par glisser-déposer, en priorisant la correspondance de cette liste dans chaque remplissage. Chaque élément de collection est une collection de strings. Voir sur [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/cells/AutoFillData/AutoFillLists). | -| cutCopyIndicatorBorderColor | string | Couleur de bordure de l'indicateur affiché lorsque l'utilisateur coupe ou copie la sélection. | -| cutCopyIndicatorVisible | boolean | Afficher un indicateur lors du copier ou du coller de l'élément sélectionné. | -| defaultDragFillType | number | Le type de remplissage par défaut du glisser-déposer. Valeurs disponibles :
    ConstanteValeurDescription
    vk auto fill type auto 5 Remplit automatiquement les cellules.
    vk auto fill type clear values 4 Clears cell values.
    vk auto fill type copycells 0 Fills cells with all data objects, including values, formatting, and formulas.
    vk auto fill type fill formatting only 2 Fills cells only with formatting.
    vk auto fill type fill series 1 Fills cells with series.
    vk auto fill type fill without formatting 3 Remplit les cellules avec des valeurs sans les formater.
    | -| enableAccessibility | boolean | La prise en charge de l'accessibilité est activée dans la feuille de calcul. | -| enableFormulaTextbox | boolean | La zone de texte de la formule est activée. | -| grayAreaBackColor | string | Une chaîne de couleur utilisée pour représenter la couleur de fond de la zone grise, comme "red", "#FFFF00", "rgb(255,0,0)", "Accent 5", etc. | -| highlightInvalidData | boolean | Les données non valides sont surlignées. | -| iterativeCalculation | boolean | Active le calcul itératif. Voir sur [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/formulareference/formulaoverview/calculating-iterative). | -| iterativeCalculationMaximumChange | numérique | Montant maximum de changement entre deux valeurs de calcul. | -| iterativeCalculationMaximumIterations | numérique | Nombre de fois maximum que la formule doit recalculer. | -| newTabVisible | boolean | Afficher un onglet spécial pour permettre aux utilisateurs d'insérer de nouvelles feuilles. | -| numbersFitMode | number | Modifie le mode d'affichage lorsque la largeur des données date/nombre est plus longue que la largeur des colonnes. Valeurs disponibles : vk
    ConstanteValeurDescription
    vk numbers fit mode mask0 Remplace le contenu des données par "###" et affiche l'astuce
    numbers fit mode overflow 1 Affiche le contenu des données sous forme de chaîne de caractères. Si la cellule suivante est vide, le contenu est débordé.
    | -| pasteSkipInvisibleRange | boolean | Coller ou ne pas coller les données dans les plages invisibles :
    • False (par défaut) : coller les données
    • True : Ne pas coller les données dans les plages invisibles
    Voir [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) pour plus d'informations sur les plages invisibles. | -| referenceStyle | number | Style pour les références de cellules et de plages dans les formules de cellules. Available values:
    ConstantValueDescription
    vk reference style A1 0 Use A1 style.
    vk reference style R1C1 1 Use R1C1 style
    | -| resizeZeroIndicator | number | Règle de dessin lorsque la ligne ou la colonne est redimensionnée à zéro. Available values:
    ConstantValueDescription
    vk resize zero indicator default 0 Uses the current drawing policy when the row or column is resized to zero.
    vk resize zero indicator enhanced 1 Draws two short lines when the row or column is resized to zero.
    | -| rowResizeMode | number | La façon dont les lignes sont redimensionnées. Les valeurs disponibles sont les mêmes que columnResizeMode | -| scrollbarAppearance | number | Apparence de la barre de défilement. Available values:
    ConstantValueDescription
    vk scrollbar appearance mobile1 Mobile scrollbar appearance.
    vk scrollbar appearance skin (default)0 Excel-like classic scrollbar appearance.
    | -| scrollbarMaxAlign | boolean | La barre de défilement s'aligne sur la dernière ligne et la dernière colonne de la feuille courante. | -| scrollbarShowMax | boolean | Les barres de défilement affichées sont basées sur le nombre total de colonnes et de lignes dans la feuille. | -| scrollByPixel | boolean | Activer le défilement de précision par pixel. | -| scrollIgnoreHidden | boolean | La barre de défilement ignore les lignes ou colonnes cachées. | -| scrollPixel | integer | Définit le défilement par ce nombre de pixels lorsque scrollByPixel est true. Définit le défilement par ce nombre de pixels lorsque scrollByPixel est true. Par exemple : le delta de défilement est de 3, scrollPixel est de 5, le défilement final de pixels est de 15. | -| showDragDropTip | boolean | Afficher l'info bulle de glisser-déposer. | -| showDragFillSmartTag | boolean | Afficher la boîte de dialogue de remplissage par glisser-déplacer. | -| showDragFillTip | boolean | Afficher l'info bulle de glisser-remplir. | -| showHorizontalScrollbar | boolean | Afficher la barre de défilement horizontale. | -| showResizeTip | number | Comment afficher l'info-bulle de redimensionnement. Available values:
    ConstantValueDescription
    vk show resize tip both 3 Horizontal and vertical resize tips are displayed.
    vk show resize tip column 1 Only the horizontal resize tip is displayed.
    vk show resize tip none 0 No resize tip is displayed.
    vk show resize tip row 2 Only the vertical resize tip is displayed.
    | -| showScrollTip | number | Comment afficher les info-bulles de défilement. Available values:
    ConstantValueDescription
    vk show scroll tip both 3 Horizontal and vertical scroll tips are displayed.
    vk show scroll tip horizontal 1 Only the horizontal scroll tip is displayed.
    vk show scroll tip none No scroll tip is displayed.
    vk show scroll tip vertical 2 Only the vertical scroll tip is displayed.
    | -| showVerticalScrollbar | boolean | Afficher la barre de défilement verticale. | -| tabEditable | boolean | La barre d'onglets de la feuille peut être modifiée. | -| tabNavigationVisible | boolean | Afficher l'onglet de navigation de la feuille. | -| tabStripPosition | number | Position de la barre d'onglets. Available values:
    ConstantValueDescription
    vk tab strip position bottom 0 Tab strip position is relative to the bottom of the workbook.
    vk tab strip position left 2 Tab strip position is relative to the left of the workbook.
    vk tab strip position right 3 Tab strip position is relative to the right of the workbook.
    vk tab strip position top 1 Tab strip position is relative to the top of the workbook.
    | -| tabStripRatio | number | Valeur de pourcentage (0.x) qui spécifie combien d'espace horizontal sera alloué à la barre d'onglets. Le reste de la zone horizontale (1 - 0.x) sera alloué à la barre de défilement horizontale. | -| tabStripVisible | boolean | Afficher la barre d'onglets de la feuille. | -| tabStripWidth | number | Largeur de la barre d'onglets lorsque la position est à gauche ou à droite. Par défaut et minimum 80. | -| useTouchLayout | boolean | Utiliser ou non le format tactile pour présenter le composant Spread. | +| Propriété | Type | Description | +| ------------------------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| allowUserDragMerge | boolean | L'opération de fusion par glisser est autorisée (sélection des cellules et glisser de la sélection pour fusionner les cellules) | +| allowAutoCreateHyperlink | boolean | Permet la création automatique d'hyperliens dans la feuille de calcul. | +| allowContextMenu | boolean | Le menu contextuel intégré peut être ouvert. | +| allowCopyPasteExcelStyle | boolean | Les styles d'une feuille de calcul peuvent être copiés et collés dans Excel, et vice-versa. | +| allowDynamicArray | boolean | Active les tableaux dynamiques dans les feuilles de travail | +| allowExtendPasteRange | boolean | Étend la plage collée si la plage collée n'est pas suffisante pour les données collées | +| allowSheetReorder | boolean | La réorganisation de la feuille est autorisée | +| allowUndo | boolean | L'annulation des modifications est autorisée. | +| allowUserDeselect | boolean | La désélection de cellules spécifiques d'une sélection est autorisée. | +| allowUserDragDrop | boolean | Glisser-déposer des données de plage est autorisé | +| allowUserDragFill | boolean | Le remplissage par glisser est autorisé | +| allowUserEditFormula | boolean | Des formules peuvent être saisies dans les cellules | +| allowUserResize | boolean | Les colonnes et les lignes peuvent être redimensionnées | +| allowUserZoom | boolean | Le zoom (ctrl + molette de la souris) est autorisé | +| autoFitType | number | Le contenu est formaté pour tenir dans les cellules, les cellules et les en-têtes. Valeurs disponibles :
    ConstanteValeurDescription
    vk auto fit type cell 0 Le contenu ajuste automatiquement les cellules
    vk auto fit type cell with header 1 Le contenu ajuste automatiquement les cellules et les en-têtes
    | +| backColor | string | Chaîne de couleur utilisée pour représenter la couleur de fond de la zone, comme "rouge", "#FFFF00", "rgb(255,0,0)", "Accent 5". La couleur de fond initiale est masquée lorsqu'une image de fond est définie. | +| backgroundImage | string / picture / file | Image de fond de la zone. | +| backgroundImageLayout | number | Comment l'image de fond s'affiche. Valeurs disponibles :
    ConstanteValeurDescription
    vk image layout center 1 Au centre de la zone.
    vk mise en page d'image aucun 3 Dans le coin supérieur gauche de la zone à sa taille originale.
    vk image layout stretch 0 Remplit la zone.
    vk image layout zoom 2 Affiché avec son rapport d'aspect d'origine.
    | +| calcOnDemand | boolean | Les formules ne sont calculées que lorsqu'elles sont demandées. | +| columnResizeMode | number | Mode redimensionnement pour les colonnes. Valeurs disponibles :
    ConstanteValeurDescription
    vk resize mode normal 0 Utilise le mode de redimensionnement normal (c'est-à-dire que les colonnes restantes sont affectées)
    vk resize mode split 1 Utiliser le mode fractionné (les colonnes restantes ne sont pas affectées)
    | +| copyPasteHeaderOptions | number | En-têtes à inclure lorsque les données sont copiées ou collées. Available values:
    ConstantValueDescription
    vk copy paste header options all headers3 Includes selected headers when data is copied; overwrites selected headers when data is pasted.
    vk copy paste header options column headers 2 Includes selected column headers when data is copied; overwrites selected column headers when data is pasted.
    vk copy paste header options no headers0 Column and row headers are not included when data is copied; does not overwrite selected column or row headers when data is pasted.
    vk copy paste header options row headers1 Inclut les en-têtes de ligne sélectionnés lors de la copie des données ; surcharge les en-têtes de ligne sélectionnés lors du collage des données.
    | +| customList | collection | Liste pour que les utilisateurs personnalisent le remplissage par glisser-déposer, en priorisant la correspondance de cette liste dans chaque remplissage. Chaque élément de collection est une collection de strings. Voir sur [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/cells/AutoFillData/AutoFillLists). | +| cutCopyIndicatorBorderColor | string | Couleur de bordure de l'indicateur affiché lorsque l'utilisateur coupe ou copie la sélection. | +| cutCopyIndicatorVisible | boolean | Afficher un indicateur lors du copier ou du coller de l'élément sélectionné. | +| defaultDragFillType | number | Le type de remplissage par défaut du glisser-déposer. Valeurs disponibles :
    ConstanteValeurDescription
    vk auto fill type auto 5 Remplit automatiquement les cellules.
    vk auto fill type clear values 4 Efface les valeurs des cellules.
    vk auto fill type copycells 0 Remplit les cellules avec tous les objets de données, y compris les valeurs, la mise en forme et les formules.
    vk auto fill type fill formatting only 2 Remplit les cellules uniquement avec la mise en forme.
    vk auto fill type fill series 1 Remplit les cellules avec des séries.
    vk auto fill type fill without formatting 3 Remplit les cellules avec des valeurs sans les formater.
    | +| enableAccessibility | boolean | La prise en charge de l'accessibilité est activée dans la feuille de calcul. | +| enableFormulaTextbox | boolean | La zone de texte de la formule est activée. | +| grayAreaBackColor | string | Une chaîne de couleur utilisée pour représenter la couleur de fond de la zone grise, comme "red", "#FFFF00", "rgb(255,0,0)", "Accent 5", etc. | +| highlightInvalidData | boolean | Les données non valides sont surlignées. | +| iterativeCalculation | boolean | Active le calcul itératif. Voir sur [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/formulareference/formulaoverview/calculating-iterative). | +| iterativeCalculationMaximumChange | numérique | Montant maximum de changement entre deux valeurs de calcul. | +| iterativeCalculationMaximumIterations | numérique | Nombre de fois maximum que la formule doit recalculer. | +| newTabVisible | boolean | Afficher un onglet spécial pour permettre aux utilisateurs d'insérer de nouvelles feuilles. | +| numbersFitMode | number | Modifie le mode d'affichage lorsque la largeur des données date/nombre est plus longue que la largeur des colonnes. Valeurs disponibles : vk
    ConstanteValeurDescription
    vk numbers fit mode mask0 Remplace le contenu des données par "###" et affiche l'astuce
    numbers fit mode overflow 1 Affiche le contenu des données sous forme de chaîne de caractères. Si la cellule suivante est vide, le contenu est débordé.
    | +| pasteSkipInvisibleRange | boolean | Coller ou ne pas coller les données dans les plages invisibles :
    • False (par défaut) : coller les données
    • True : Ne pas coller les données dans les plages invisibles
    Voir [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) pour plus d'informations sur les plages invisibles. | +| referenceStyle | number | Style pour les références de cellules et de plages dans les formules de cellules. Valeurs disponibles :
    ConstanteValeurDescription
    vk reference style A10 Utilise le style A1.
    vk reference style R1C1 1 Utiliser le style R1C1
    | +| resizeZeroIndicator | number | Règle de dessin lorsque la ligne ou la colonne est redimensionnée à zéro. Available values:
    ConstantValueDescription
    vk resize zero indicator default 0 Uses the current drawing policy when the row or column is resized to zero.
    vk resize zero indicator enhanced 1 Dessine deux lignes courtes lorsque la ligne ou la colonne est redimensionnée à zéro.
    | +| rowResizeMode | number | La façon dont les lignes sont redimensionnées. Les valeurs disponibles sont les mêmes que columnResizeMode | +| scrollbarAppearance | number | Apparence de la barre de défilement. Valeurs disponibles :
    ConstanteValeurDescription
    vk scrollbar appearance mobile1 Apparence de la barre de défilement mobile
    vk scrollbar appearance skin (default)0 Apparence classique de la barre de défilement, similaire à celle d'Excel.
    | +| scrollbarMaxAlign | boolean | La barre de défilement s'aligne sur la dernière ligne et la dernière colonne de la feuille courante. | +| scrollbarShowMax | boolean | Les barres de défilement affichées sont basées sur le nombre total de colonnes et de lignes dans la feuille. | +| scrollByPixel | boolean | Activer le défilement de précision par pixel. | +| scrollIgnoreHidden | boolean | La barre de défilement ignore les lignes ou colonnes cachées. | +| scrollPixel | integer | Définit le défilement par ce nombre de pixels lorsque scrollByPixel est true. Définit le défilement par ce nombre de pixels lorsque scrollByPixel est true. Par exemple : le delta de défilement est de 3, scrollPixel est de 5, le défilement final de pixels est de 15. | +| showDragDropTip | boolean | Afficher l'info bulle de glisser-déposer. | +| showDragFillSmartTag | boolean | Afficher la boîte de dialogue de remplissage par glisser-déplacer. | +| showDragFillTip | boolean | Afficher l'info bulle de glisser-remplir. | +| showHorizontalScrollbar | boolean | Afficher la barre de défilement horizontale. | +| showResizeTip | number | Comment afficher l'info-bulle de redimensionnement. Available values:
    ConstantValueDescription
    vk show resize tip both 3 Horizontal and vertical resize tips are displayed.
    vk show resize tip column 1 Only the horizontal resize tip is displayed.
    vk show resize tip none 0 No resize tip is displayed.
    vk show resize tip row 2 Only the vertical resize tip is displayed.
    | +| showScrollTip | number | Comment afficher les info-bulles de défilement. Available values:
    ConstantValueDescription
    vk show scroll tip both 3 Horizontal and vertical scroll tips are displayed.
    vk show scroll tip horizontal 1 Only the horizontal scroll tip is displayed.
    vk show scroll tip none No scroll tip is displayed.
    vk show scroll tip vertical 2 Only the vertical scroll tip is displayed.
    | +| showVerticalScrollbar | boolean | Afficher la barre de défilement verticale. | +| tabEditable | boolean | La barre d'onglets de la feuille peut être modifiée. | +| tabNavigationVisible | boolean | Afficher l'onglet de navigation de la feuille. | +| tabStripPosition | number | Position de la barre d'onglets. Valeurs disponibles :
    ConstanteValeurDescription
    vk tab strip position bottom 0La position de la barre de tabulation est relative au bas du classeur.
    vk tab strip position left 2 La position de la barre de tabulation est relative à la gauche du classeur.
    vk tab strip position right 3 La position de la barre de tabulation est relative à la droite du classeur.
    vk tab strip position top 1 La position de la barre de tabulation est relative au haut du classeur.
    | +| tabStripRatio | number | Valeur de pourcentage (0.x) qui spécifie combien d'espace horizontal sera alloué à la barre d'onglets. Le reste de la zone horizontale (1 - 0.x) sera alloué à la barre de défilement horizontale. | +| tabStripVisible | boolean | Afficher la barre d'onglets de la feuille. | +| tabStripWidth | number | Largeur de la barre d'onglets lorsque la position est à gauche ou à droite. Par défaut et minimum 80. | +| useTouchLayout | boolean | Utiliser ou non le format tactile pour présenter le composant Spread. | ## Exemple diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/configuring.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/configuring.md index 5cdbaa95105016..6648693d558630 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/configuring.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/ViewPro/configuring.md @@ -332,16 +332,16 @@ Les attributs d'orientation sont utilisés pour spécifier la direction de la mi Les attributs de page sont utilisés pour spécifier les paramètres généraux d'impression du document. -| Propriété | Type | Description | -| --------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| blackAndWhite | boolean | Impression en noir et blanc seulement.

    Valeur par défaut = false

    **Note**: Les PDF ne sont pas affectés par cet attribut. Les couleurs en PDF restent.

    | -| centering | entier long | Comment le contenu est centré sur la page imprimée. Valeurs disponibles : `vk print centering both`, `vk print centering horizontal`, `vk print centering none` (par défaut), `vk print centering vertical` | -| firstPageNumber | entier long | Le numéro de page à imprimer sur la première page. Valeur par défaut = 1 | -| pageOrder | entier long | L'ordre d'impression des pages. Valeurs disponibles : `vk print page order auto` (par défaut), `vk print page order down then over`, `vk print page order over then down`. | -| pageRange | text | La plage de pages pour l'impression | -| qualityFactor | entier long | Le facteur de qualité pour l'impression (1 - 8). The higher the quality factor, the better the printing quality, however printing performance may be affected.

    Default value = 2

    | -| useMax | boolean | Only columns and rows with data are printed.

    Default value = true

    | -| zoomFactor | réel | The amount to enlarge or reduce the printed page.

    Default value = 1

    | +| Propriété | Type | Description | +| --------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| blackAndWhite | boolean | Impression en noir et blanc seulement.

    Valeur par défaut = false

    **Note**: Les PDF ne sont pas affectés par cet attribut. Les couleurs en PDF restent.

    | +| centering | entier long | Comment le contenu est centré sur la page imprimée. Valeurs disponibles : `vk print centering both`, `vk print centering horizontal`, `vk print centering none` (par défaut), `vk print centering vertical` | +| firstPageNumber | entier long | Le numéro de page à imprimer sur la première page. Valeur par défaut = 1 | +| pageOrder | entier long | L'ordre d'impression des pages. Valeurs disponibles : `vk print page order auto` (par défaut), `vk print page order down then over`, `vk print page order over then down`. | +| pageRange | text | La plage de pages pour l'impression | +| qualityFactor | entier long | Le facteur de qualité pour l'impression (1 - 8). Plus le facteur de qualité est élevé, meilleure est la qualité d'impression, cependant les performances d'impression peuvent être affectées.

    Valeur par défaut = 2

    | +| useMax | boolean | Seules les colonnes et les lignes contenant des données sont imprimées.

    Valeur par défaut = true

    | +| zoomFactor | réel | Le montant pour agrandir ou réduire la page imprimée.

    Valeur par défaut = 1

    | ### Taille du papier diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md index 61877412ae2d4c..8e30dc8a9b7ecd 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/http-request-handler.md @@ -34,7 +34,7 @@ Vous définissez vos gestionnaires de requêtes HTTP personnalisés dans un fich Ce fichier contient tous les motifs d'URL à intercepter, les verbes manipulés et le code à appeler. Les gestionnaires sont fournis sous la forme d'une collection au format JSON. -Au moment de l'exécution, le premier motif correspondant à l'URL est exécuté, les autres sont ignorés. +Au moment de l'exécution, le premier motif (*pattern*) correspondant à l'URL est exécuté, les autres sont ignorés. Voici un exemple du contenu d'un fichier *HTTPHandlers.json* : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/preemptiveWeb.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/preemptiveWeb.md index 1b2b27e26c6d0a..829fa0155037b3 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/preemptiveWeb.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/preemptiveWeb.md @@ -26,10 +26,10 @@ Le tableau suivant indique si l'utilisation du mode préemptif pour les process - Serveur REST : gère les [fonctions de classe du modèle de données ORDA](../REST/ClassFunctions.md) - Serveur Web : gère les [modèles Web](templates.md), [4DACTION et les méthodes base](httpRequests.md) - Serveur de services Web : gère les requêtes SOAP -- ***web setting*** signifie que le mode préemptif dépend d'une valeur de réglage : - - when [**Scalable sessions**](sessions.md#enabling-web-sessions) option is selected, the preemptive mode is automatically used for web processes. +- ***paramètres web*** signifie que le mode préemptif dépend d'une valeur de réglage : + - lorsque l'option [**Sessions évolutives**](sessions.md#enabling-web-sessions) est sélectionnée, le mode préemptif est automatiquement utilisé pour les process web. - sinon, l'option [**Utiliser des process préemptifs**](webServerConfig.md#use-preemptive-processes) est prise en compte. - - en ce qui concerne les process de service Web (serveur ou client), le mode préemptif est pris en charge au niveau de la méthode. You just have to select "Can be run in preemptive processes" property for published SOAP server methods (see [Publishing a Web Service with 4D](https://doc.4d.com/4Dv20/4D/20.2/Publishing-a-Web-Service-with-4D.300-6750334.en.html)) or proxy client methods (see [Subscribing to a Web Service in 4D](https://doc.4d.com/4Dv20/4D/20.2/Subscribing-to-a-Web-Service-in-4D.300-6750336.en.html)) and make sure they are confirmed thread-safe by the compiler. + - en ce qui concerne les process de service Web (serveur ou client), le mode préemptif est pris en charge au niveau de la méthode. Il suffit de sélectionner la propriété "Peut être exécutée dans un process préemptif" pour les méthodes de serveur SOAP publiées (voir [Publier un Service Web avec 4D](https://doc.4d.com/4Dv20/4D/20.2/Publier-un-Service-Web-avec-4D.300-6750334.fe.html)) ou les méthodes de client proxy (voir [Souscrire à un Service Web dans 4D](https://doc.4d.com/4Dv20/4D/20.2/Souscrire-a-un-Service-Web-dans-4D.300-6750336.fe.html)) et de s'assurer qu'elles sont confirmées thread-safe par le compilateur. ## Ecrire du code serveur Web thread-safe @@ -43,7 +43,7 @@ Tout le code 4D exécuté par le serveur Web doit être thread-safe si vous souh - La méthode projet `compiler_web` (indépendamment de sa propriété "Mode d'exécution") ; -- Basically any code processed by the [`PROCESS 4D TAGS`](../commands-legacy/process-4d-tags.md) command in the web context, for example through .shtml pages +- En principe, tout code traité par la commande [`PROCESS 4D TAGS`](../commands-legacy/process-4d-tags.md) dans le contexte du web, par exemple par le biais de pages .shtml - Toute méthode projet comportant l'attribut "Available through 4D tags and URLS (`4DACTION`, etc.)" diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md index 222f22401c7e53..4e83fc460e136d 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md @@ -12,7 +12,7 @@ Les sessions Web permettent de : - stocker et partager des données entre les process d'un client web en utilisant le [.storage](../API/SessionClass.md#storage) de la session, - associer des privilèges à l'utilisateur qui exécute la session. -:::tip Related blog post +:::tip Article(s) de blog sur le sujet [Sessions évolutives pour applications web avancées](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) @@ -36,7 +36,7 @@ Cette option est sélectionnée par défaut dans les nouveaux projets. Elle peut - En utilisant la propriété [`.scalableSession`](API/WebServerClass.md#scalablession) de l'objet Web Server (à passer dans le paramètre *settings* de la fonction [`.start()`](API/WebServerClass.md#start) ). Dans ce cas, ce paramètre remplace l'option définie dans la boîte de dialogue Propriétés pour l'objet Web Server (il n'est pas stocké sur disque). -> The [`WEB SET OPTION`](../commands-legacy/web-set-option.md) command can also set the session mode for the main Web server. +> La commande [`WEB SET OPTION`](../commands-legacy/web-set-option.md) peut également définir le mode de session du serveur Web principal. Dans tous les cas, ce paramètre est local à la machine ; il peut donc être différent sur le serveur Web 4D Server et les serveurs Web des machines 4D distantes. @@ -44,7 +44,7 @@ Dans tous les cas, ce paramètre est local à la machine ; il peut donc être di ## Implémentation des sessions -When [sessions are enabled](#enabling-web-sessions), automatic mechanisms are implemented, based upon a private cookie set by 4D itself: "4DSID__AppName_", where *AppName* is the name of the application project. Ce cookie référence la session web courante pour l'application. +Lorsque [les sessions sont activées](#enabling-web-sessions), des mécanismes automatiques sont mis en œuvre, sur la base d'un cookie privé défini par 4D lui-même : "4DSID_*AppName*", où *AppName* est le nom du projet d'application. Ce cookie référence la session web courante pour l'application. :::info @@ -73,7 +73,7 @@ L'objet `Session` de la session en cours peut ensuite être manipulé via la com :::info -Les process Web ne se terminent généralement pas, ils sont recyclés dans un pool pour des raisons d'optimisation. Lorsqu'un process termine l'exécution d'une requête, il est replacé dans le pool et rendu disponible pour la requête suivante. Since a web process can be reused by any session, [process variables](Concepts/variables.md#process-variables) must be cleared by your code at the end of its execution (using [`CLEAR VARIABLE`](../commands-legacy/clear-variable.md) for example). Ce nettoyage est nécessaire pour toute information liée au process, comme une référence à un fichier ouvert. C'est la raison pour laquelle **il est recommandé** d'utiliser l'objet [Session](API/SessionClass.md) lorsque vous souhaitez conserver les informations relatives à la session. +Les process Web ne se terminent généralement pas, ils sont recyclés dans un pool pour des raisons d'optimisation. Lorsqu'un process termine l'exécution d'une requête, il est replacé dans le pool et rendu disponible pour la requête suivante. Comme un process web peut être réutilisé par n'importe quelle session, les [variables process](Concepts/variables.md#process-variables) doivent être effacées par votre code à la fin de son exécution (en utilisant [`CLEAR VARIABLE`](../commands-legacy/clear-variable.md) par exemple). Ce nettoyage est nécessaire pour toute information liée au process, comme une référence à un fichier ouvert. C'est la raison pour laquelle **il est recommandé** d'utiliser l'objet [Session](API/SessionClass.md) lorsque vous souhaitez conserver les informations relatives à la session. ::: @@ -90,7 +90,7 @@ Une session web évolutive est fermée lorsque: La durée de vie d'un cookie inactif est de 60 minutes par défaut, ce qui signifie que le serveur Web fermera automatiquement les sessions inactives après 60 minutes. -This timeout can be set using the [`.idleTimeout`](API/SessionClass.md#idletimeout) property of the `Session` object (the timeout cannot be less than 60 minutes) or the *connectionInfo* parameter of the [`Open datastore`](../commands/open-datastore.md) command. +Ce délai peut être défini en utilisant la propriété [`.idleTimeout`](API/SessionClass.md#idletimeout) de l'objet `Session` (le délai ne peut être inférieur à 60 minutes) ou le paramètre *connectionInfo* de la commande [`Open datastore`](../commands/open-datastore.md). Lorsqu'une session web est fermée, si la commande [`Session`](commands/session.md) est appelée par la suite : @@ -159,7 +159,7 @@ http://localhost:8044/authenticate.shtml ![alt-text](../assets/en/WebServer/authenticate.png) -3. La méthode de projet d'authentification recherche la personne *userID* et valide le mot de passe par rapport à la valeur hachée déjà stockée dans la table *SalesPersons* : +3. La méthode projet d'authentification recherche la personne *userID* et valide le mot de passe par rapport à la valeur hachée déjà stockée dans la table *SalesPersons* : ```4d var $indexUserId; $indexPassword; $userId : Integer @@ -201,76 +201,76 @@ Else End if ``` -:::note +:::tips Articles de blog sur le sujet -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Sessions évolutives pour applications web avancées](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: -## Session Token (OTP) +## Token de session (OTP) -The 4D web server allows you to generate, share, and use OTP (One-Time Passcode) session tokens. OTP session tokens are used to secure communications with third-party applications or websites. For information on OTP, please refer to the [One-time password page](https://en.wikipedia.org/wiki/One-time_password) on Wikipedia. +Le serveur web 4D vous permet de générer, de partager et d'utiliser des tokens de session OTP (One-Time Passcode). Les tokens (ou *jetons*) de session OTP sont utilisés pour sécuriser les communications avec des applications ou des sites web tiers. Pour plus d'informations sur OTP, veuillez vous référer à la page [Mot de passe à usage unique](https://en.wikipedia.org/wiki/One-time_password) sur Wikipedia. -In 4D, OTP session tokens are useful when calling external URLs and being called back in another browser or device (mobile/computer). Typically, a third-party application sends a confirmation email containing a callback link on which the user has to click. The callback link includes the OTP token, so that the session which triggered the callback is loaded along with its data and privileges. This principle allows you to share the same session on multiple devices. Thanks to this architecture, the [session cookie](#session-implementation) is not exposed on the network, which eliminates the risk of man-in-the-middle attack. +Dans 4D, les tokens de session OTP sont utiles pour appeler des URL externes et être rappelé dans un autre navigateur ou appareil (mobile/ordinateur). Généralement, une application tierce envoie un courriel de confirmation contenant un lien de rappel sur lequel l'utilisateur doit cliquer. Le lien de rappel inclut le token OTP, de sorte que la session qui a déclenché le rappel est chargée avec ses données et ses privilèges. Ce principe vous permet de partager la même session sur plusieurs appareils. Grâce à cette architecture, le [cookie de session] (#session-implementation) n'est pas exposé sur le réseau, ce qui élimine le risque d'une attaque de type "man-in-the-middle". ### Vue d’ensemble -The basic sequence of an OTP session token use in a 4D web application is the following: +La séquence de base de l'utilisaton d'un token de session OTP dans une application web 4D est la suivante : -1. The web user initiates an action that requires a secured third-party connection, for example a validation, from within a specific session. -2. In your 4D code, you create a new OTP for the session using the [`Session.createOTP()`](../API/SessionClass.md#createotp) function. -3. You send a request to the third-party application with the session token included in the callback Uri. Note that the way to provide the callback Uri to a third-party application depends on its API (see below). -4. The third-party application sends back a request to 4D with the pattern you provided in the callback Uri. -5. The request callback is processed in your application. +1. L'utilisateur web initie une action qui nécessite une connexion tierce sécurisée, par exemple une validation, à partir d'une session spécifique. +2. Dans votre code 4D, vous créez un nouvel OTP pour la session à l'aide de la fonction [`Session.createOTP()`](../API/SessionClass.md#createotp). +3. Vous envoyez une requête à l'application tierce avec le token de session inclus dans l'Uri de callback (rappel). Notez que la manière de fournir l'Uri de rappel à une application tierce dépend de son API (voir ci-dessous). +4. L'application tierce renvoie une requête à 4D avec le modèle que vous avez fourni dans l'Uri de rappel. +5. Le rappel de la requête est traité dans votre application. -By definition, an OTP token can only be used once. In this scenario, if a web request is received with a session token as parameter that has already been used, the initial session is not restored. +Par définition, un token OTP ne peut être utilisé qu'une seule fois. Dans ce scénario, si une requête web est reçue avec un token de session comme paramètre qui a déjà été utilisé, la session initiale n'est pas restaurée. -### Processing the OTP in the callback +### Traitement de l'OTP dans le callback -Callbacks from third-party applications that include the OTP token can be processed in different ways in your 4D application, depending on your development and the third-party API. Basically, you have two possibilities to handle the token: through the **`$4DSID`** parameter for an automatic processing, or through a custom parameter that you need to process. +Les callbacks d'applications tierces qui incluent le token OTP peuvent être traités de différentes manières dans votre application 4D, en fonction de votre développement et de l'API tierce. En principe, vous avez deux possibilités pour gérer le token : via le paramètre **`$4DSID`** pour un traitement automatique, ou via un paramètre personnalisé que vous devez traiter. -#### Using `$4DSID` in the URL +#### Utilisation de `$4DSID` dans l'URL -Using the `$4DSID` parameter is the most simple way to process a callback from the third-party application: +L'utilisation du paramètre `$4DSID` est la façon la plus simple de traiter un callback de l'application tierce : -- The OTP token is provided as a parameter directly in the callback url using the standard `?$4DSID=XXXX123` syntax. -- In 4D, you implement a dedicated [HTTP Request handler](http-request-handler.md) in your 4D application using [`IncomingMessage`](../API/IncomingMessageClass.md) and [`OutgoingMessage`](../API/OutgoingMessageClass.md) classes. -- If the `$4DSID` token is valid, the related web user session is **automatically restored** in any web process with its storage and privileges. +- Le token OTP est fourni en tant que paramètre directement dans l'url de callback en utilisant la syntaxe standard `?$4DSID=XXXX123`. +- Dans votre application 4D, vous implémentez un [HTTP Request handler](http-request-handler.md) dédié en utilisant les classes [`IncomingMessage`](../API/IncomingMessageClass.md) et [`OutgoingMessage`](../API/OutgoingMessageClass.md). +- Si le token `$4DSID` est valide, la session de l'utilisateur web concerné est **automatiquement restaurée** dans n'importe quel process web avec son *storage* et ses privilèges. :::note -A [`4DACTION`](./httpRequests.md#4daction) url can also be used on the 4D side. +Une url [`4DACTION`](./httpRequests.md#4daction) peut également être utilisée du côté 4D. ::: -#### Using a custom parameter +#### Utilisation d'un paramètre personnalisé -The OTP token can also be provided as a custom parameter that you need to process specifically to restore the session. You must use this solution if: +Le token OTP peut également être fourni en tant que paramètre personnalisé que vous devez traiter spécifiquement pour restaurer la session. Vous devez utiliser cette solution si : -- the third-party application does not allow to insert parameters such as a `$4DSID` directly in the redirect Uri, and provides a dedicated API (the implementation depends on the third-party application), -- or, you want to call an ORDA function through REST to process the callback, in which case you need to pass the OTP with the [REST parameter syntax](../REST/ClassFunctions.md#parameters) (e.g. `?$params='["XXX123"]'`). +- l'application tierce ne permet pas d'insérer des paramètres tels que `$4DSID` directement dans l'Uri de redirection, et fournit une API dédiée (l'implémentation dépend de l'application tierce), +- ou bien vous souhaitez appeler une fonction ORDA via REST pour traiter le callback, auquel cas vous devez transmettre l'OTP avec la [syntaxe des paramètres REST](../REST/ClassFunctions.md#parameters) (par exemple `?$params='["XXX123"]'`). -In both cases, you need to extract the token from the custom parameter and to call the [`Session.restore()`](../API/SessionClass.md#restore) function with the token as parameter. +Dans les deux cas, vous devez extraire le token du paramètre personnalisé et appeler la fonction [`Session.restore()`](../API/SessionClass.md#restore) avec le token en paramètre. -#### Processing a invalid OTP +#### Traitement d'un OTP non valide -The OTP token is considered invalid if: +Le token OTP est considéré comme invalide si : - le token de session a déjà été utilisé, - le token de session a expiré, - le token de session n'existe pas, - la session d'origine elle-même a expiré. -In this case, no web user session is restored and the current session (if any) is left unchanged. Usually, you can decide to display a login page or to open a guest session. +Dans ce cas, aucune session d'utilisateur Web n'est restaurée et la session courante (s'il y en a une) reste inchangée. En général, vous pouvez décider d'afficher une page de connexion ou d'ouvrir une session guest. -Verifying if the received OTP token is valid depends on how it was handled: +La vérification de la validité du token OTP reçu dépend de la manière dont il a été géré : -- If you used a `$4DSID`, you can store a custom status property in the [session storage](../API/SessionClass.md#storage) at the moment of the token creation, and check this status once the OTP token was received to see if it is the same value (see example). -- If you used the [`Session.restore()`](../API/SessionClass.md#restore) function, it returns true if the session correctly restored. +- Si vous avez utilisé un `$4DSID`, vous pouvez stocker une propriété d'état personnalisée dans le [storage de la session](../API/SessionClass.md#storage) au moment de la création du token, et vérifier cet état une fois que le token OTP a été reçu pour voir s'il s'agit de la même valeur (voir l'exemple). +- Si vous avez utilisé la fonction [`Session.restore()`](../API/SessionClass.md#restore), elle renvoie true si la session a été correctement restaurée. -### Scenario with $4DSID +### Scénario avec $4DSID -The scenario using the `$4DSID` key is illustrated in the following diagram: +Le scénario utilisant la clé `$4DSID` est illustré dans le diagramme suivant : ```mermaid sequenceDiagram @@ -283,25 +283,25 @@ sequenceDiagram FrontEnd ->>+ 4DServer: ValidateOperation() - 4DServer ->> 4DServer: Generate OTP with session.createOTP() -Note over 4DServer: e.g. OTP is 2E5D0D5xxx + 4DServer ->> 4DServer: Créer OTP avec session.createOTP() +Note over 4DServer: e.g. OTP vaut 2E5D0D5xxx - 4DServer ->>+ ExternalPlatform: Call the external platform, give a callback URL containing a $4DSID parameter (depends on the platform API) + 4DServer ->>+ ExternalPlatform: Appel de la plate-forme tirece, envoi d'un URL de rappel contenant un paramètre $4DSID (dépend de l'API de la plate-forme) Note right of 4DServer: e.g. callback URL: "https://acme.com/my4DApp/completeOperation?$4DSID=2E5D0D5xxx" - ExternalPlatform ->>+ ExternalPlatform: Process request -ExternalPlatform ->>+ 4DServer: External platform calls back 4D Server if validation OK + ExternalPlatform ->>+ ExternalPlatform: Traitement de la requête +ExternalPlatform ->>+ 4DServer: Rappel de 4D Server si validation OK Note right of 4DServer: e.g. https://acme.com/my4DApp/completeOperation?$4DSID=2E5D0D57751D471DB29FD110D2DCE253 - 4DServer ->> 4DServer: An HTTP request handler processes the URL pattern "/my4DApp/completeOperation"
    (e.g. handleOperation() function of the OperationsHandler singleton, see code below) + 4DServer ->> 4DServer: Un HTTP request handler traite le motif d'URL "/my4DApp/completeOperation"
    (e.g. fonction handleOperation() du singleton OperationsHandler, voir code ci-dessous) - Note over 4DServer: The original session is retrieved thanks to the OTP given in the $4DSID parameter. - Note over 4DServer: Session object refers to the session which generated the OTP - 4DServer ->>+ FrontEnd: Restore session + Note over 4DServer: La session d'origine session est restaurée grâce à l'OTP fourni dans le paramètre $4DSID. + Note over 4DServer: L'objet Session référence la session qui a généré l'OTP + 4DServer ->>+ FrontEnd: Restauration de la session ``` -The 4D HTTP request handler definition: +La définition du gestionnaire de requêtes HTTP 4D : ```json [ @@ -314,7 +314,7 @@ The 4D HTTP request handler definition: ] ``` -The singleton class: +La classe du singleton : ```4d //Class OperationsHandler @@ -323,9 +323,9 @@ shared singleton Class constructor() $session:=Session ``` -### Scenario with `restore` function +### Scénario avec la fonction `restore` -The scenario using a custom parameter is illustrated in the following diagram: +Le scénario utilisant un paramètre personnalisé est illustré dans le diagramme suivant : ```mermaid sequenceDiagram @@ -338,29 +338,29 @@ sequenceDiagram FrontEnd ->>+ 4DServer: Validate() - 4DServer ->> 4DServer: Generate OTP with session.createOTP() + 4DServer ->> 4DServer: Créer OTP avec session.createOTP() Note over 4DServer: e.g. OTP is 2E5D0D5xxx - 4DServer ->> ExternalPlatform: Call the external platform giving the OTP, for example as a state parameter (depends on the platform) + 4DServer ->> ExternalPlatform: Appel de la plate-forme externe en donnant l'OTP, par exemple sous forme de paramètre state (dépend de la plate-forme) Note right of 4DServer: e.g. https://thirdPartSystem.com/validate?state=2E5D0D5xxx&redirect_uri=https://acme.com/my4DApp/completeOperation - Note right of 4DServer: The callback URL will be like: https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx - ExternalPlatform ->> ExternalPlatform: Process request - ExternalPlatform ->> 4DServer: The state parameter is sent back by the third party system in the callback + Note right of 4DServer: L'URLde rappel sera du type : https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx + ExternalPlatform ->> ExternalPlatform: Traitement de la requête + ExternalPlatform ->> 4DServer: Le paramètre state est renvoyé par le système tiers dans la callback Note right of 4DServer: e.g. https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx - 4DServer ->> 4DServer: An HTTP request handler processes the URL pattern "/my4DApp/completeOperation"
    (e.g. handleOperation() function of the OperationHandler singleton, see code below) + 4DServer ->> 4DServer: Un HTTP request handler traite le motif d'URL "/my4DApp/completeOperation"
    (e.g. fonction handleOperation() du singleton OperationHandler, voir code ci-dessous) 4DServer ->> 4DServer: Session.restore() - Note over 4DServer:The state parameter is got from the received request ($req.urlQuery.state) - Note over 4DServer:The original session is retrieved by calling the restore() function - Note over 4DServer:Session object refers to the session which generated the OTP - 4DServer ->>+ FrontEnd: Restore session + Note over 4DServer:Le paramètre state est extrait de la requête reçue ($req.urlQuery.state) + Note over 4DServer:La session originale est restaurée par l'appel à la fonction restore() + Note over 4DServer: L'objet Session référence la session qui a généré l'OTP + 4DServer ->>+ FrontEnd: Restauration de la session ``` -The 4D HTTP request handler definition: +La définition du gestionnaire de requêtes HTTP 4D : ```json [ @@ -373,7 +373,7 @@ The 4D HTTP request handler definition: ] ``` -The singleton class: +La classe du singleton : ```4d //Class OperationsHandler @@ -382,9 +382,9 @@ shared singleton Class constructor() Session.restore($req.urlQuery.state) ``` -### Example of email validation with $4DSID +### Exemple de validation d'email avec $4DSID -1. A user account is created in a *Users* dataclass. A *$info* object is received with the email and password. An OTP corresponding to the current session is generated. An URL is then returned with this OTP given in the $4DSID parameter. +1. Un compte d'utilisateur est créé dans une dataclass *Users*. Un objet *$info* est reçu avec l'email et le mot de passe. Un OTP correspondant à la session courante est généré. Une URL est alors renvoyée avec l'OTP indiqué dans le paramètre $4DSID. ```4d //cs.Users class @@ -395,26 +395,26 @@ var $user : cs.UsersEntity var $status : Object var $token : Text -$user:=This.new() //create a new user +$user:=This.new() //créatoin d'un user $user.fromObject($info) $status:=$user.save() -//Store information in the session -//including user creation status +//Stockage d'information dans la session +//y compris le statut de création de l'utilisateur Use (Session.storage) Session.storage.status:=New shared object("step"; "Waiting for validation email"; / "email"; $user.email; "ID"; $user.ID) End use -//Generate an OTP corresponding to the session +//Génération d'un OTP correspondant à la session $token:=Session.createOTP() -// Return an URL with a $4DSID parameter +// Renvoi d'un URL avec un paramètre $4DSID return "https://my.server.com/tools/validateEmail?$4DSID="+$token` ``` -2. The user is sent this URL as a link in an email. The URL prefix `/validateEmail` is handled by a [custom HTTP request handler](./http-request-handler.md): +2. L'utilisateur reçoit cette URL sous la forme d'un lien dans un courrier électronique. Le préfixe d'URL `/validateEmail` est traité par un [gestionnaire de requête HTTP personnalisé](./http-request-handler.md) : ```json [ @@ -427,7 +427,7 @@ return "https://my.server.com/tools/validateEmail?$4DSID="+$token` ] ``` -The *validateEmail()* function of the RequestHandler singleton: +La fonction *validateEmail()* du singleton RequestHandler : ```4d //validateEmail class @@ -437,12 +437,12 @@ shared singleton Class constructor() Function validateEmail() : 4D.OutgoingMessage var $result:=4D.OutgoingMessage.new() - //The session which generated the OTP is retrieved - //thanks to the $4DSID parameter given in the URL + //La session qui a généré l'OTP est restaurée + //grâce au paramètre $4DSID fourni dans l'URL If (Session.storage.status.step="Waiting for validation email") $user:=ds.Users.get(Session.storage.status.ID) - $user.emailValidated() //set to true + $user.emailValidated() //fixé à vrai $result.setBody("Congratulations
    "\ +"Your email "+Session.storage.status.email+" has been validated") @@ -460,25 +460,25 @@ Function validateEmail() : 4D.OutgoingMessage ``` -Since the `$4DSID` parameter contains a valid OTP corresponding to the original session, the `Session` object refers to the session that created the OTP. +Comme le paramètre `$4DSID` contient un OTP valide correspondant à la session d'origine, l'objet `Session` référence la session qui a créé l'OTP. -A new user is created, and some information is stored in the session, especially the current step of the user account creation process (Waiting for validation email) and the user ID. +Un nouvel utilisateur est créé et des informations sont stockées dans la session, en particulier l'étape courante du processus de création du compte utilisateur (attente du courriel de validation) et l'identifiant de l'utilisateur. -### Supported contexts +### Contextes pris en charge -- Both HTTP and HTTPS schemas are supported. -- Only [scalable sessions](#enabling-web-sessions) can be reused with tokens. -- Only sessions of the host database can be reused (sessions created in component web servers cannot be restored). -- Tokens are not supported with client/server sessions or single-user sessions. +- Les schémas HTTP et HTTPS sont tous deux pris en charge. +- Seules des [sessions évolutives](#enabling-web-sessions) peuvent être réutilisées avec des tokens. +- Seules les sessions de la base de données hôte peuvent être réutilisées (les sessions créées dans les serveurs web des composants ne peuvent pas être restaurées). +- Les tokens ne sont pas pris en charge dans les sessions client/serveur ou les sessions mono-utilisateur. -### Lifespan +### Durée de vie -A session token has a lifespan, and the session itself has a lifespan. The session token lifespan can be set [at the token creation](../API/SessionClass.md#createotp). By default, the token lifespan is the same value as the [`.idleTimeout`](../API/SessionClass.md#idletimeout) value. +Un token de session a une durée de vie, et la session elle-même a une durée de vie. La durée de vie du token de session peut être définie [lors de sa création](../API/SessionClass.md#createotp). Par défaut, la durée de vie du token est la même que la valeur [`.idleTimeout`](../API/SessionClass.md#idletimeout). -A session is only restored by a token if both the session token lifespan and the session lifespan have not expired. In other cases (the session token has expired and/or the session itself has expired), a guest session is created when a web request with a session token is received. +Une session n'est restaurée par un token que si ni la durée de vie du token de session ni celle de la session n'ont expiré. Dans les autres cas (le token de session a expiré et/ou la session elle-même a expiré), une session *guest* est créée lorsqu'une requête web avec un token de session est reçue. :::note -For more information, please refer to the [Connect Your Web Apps to Third-Party Systems](https://blog.4d.com/connect-your-web-apps-to-third-party-systems/) blog post. +Pour plus d'informations, veuillez consulter l'article de blog [Connecter vos applications Web à des systèmes tiers](https://blog.4d.com/connect-your-web-apps-to-third-party-systems/). ::: \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md index 2d275428873a7d..99425a010d3b25 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md @@ -9,29 +9,29 @@ La classe OpenAI fournit un client permettant d'accéder à diverses ressources ## Propriétés de configuration -| Nom de propriété | Type | Description | Optionnel | -| ---------------- | ---- | ------------------------------------------------------------------------------ | --------------- | -| `apiKey` | Text | Votre [clé API OpenAI ](https://platform.openai.com/api-keys). | Non pour OpenAI | -| `baseURL` | Text | URL de base pour les requêtes de l'API OpenAI. | Oui | -| `organisation` | Text | Votre identifiant d'organisation OpenAI. | Oui | -| `project` | Text | Votre identifiant de projet OpenAI. | Oui | +| Nom de propriété | Type | Description | Optionnel | +| ---------------- | ---- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------- | +| `apiKey` | Text | Votre [clé API OpenAI ](https://platform.openai.com/api-keys). | Peut être requis par le fournisseur | +| `baseURL` | Text | URL de base pour les requêtes de l'API OpenAI. | Oui (si omis = utiliser le fournisseur OpenAI) | +| `organisation` | Text | Votre identifiant d'organisation OpenAI. | Oui | +| `project` | Text | Votre identifiant de projet OpenAI. | Oui | ### Propriétés HTTP supplémentaires -| Nom de propriété | Type | Description | -| ---------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `timeout` | Real | Time in seconds before timeout occurs. | -| `maxRetries` | Real | Maximum number of retry attempts in case of failure. | -| `httpAgent` | [4D.HTTPAgent](https://developer.4d.com/docs/API/HTTPAgentClass) | HTTP agent used for making requests. | -| `customHeaders` | Real | Custom headers to be included in the HTTP requests. | +| Nom de propriété | Type | Description | +| ---------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | +| `timeout` | Real | Délai en secondes avant l'expiration du délai. | +| `maxRetries` | Real | Nombre maximum de tentatives en cas d'échec. | +| `httpAgent` | [4D.HTTPAgent](https://developer.4d.com/docs/API/HTTPAgentClass) | Agent HTTP utilisé pour effectuer des requêtes. | +| `customHeaders` | Real | En-têtes personnalisés à inclure dans les requêtes HTTP. | ### Class constructor Créer une instance de la classe client OpenAI. -| Nom de l'argument | Type | Description | -| ------------------------- | ------------ | ------------------------------------------------------- | -| `apiKey or configuration` | Text, Object | apiKey if Text or configuration Object. | +| Nom de l'argument | Type | Description | +| ------------------------- | ------------ | ----------------------------------------------------------- | +| `apiKey` ou configuration | Text, Object | apiKey si Texte, ou objet de configuration. | #### Clé API @@ -58,15 +58,15 @@ $client.baseURL:="https://server.ai" ## Ressources API -L'API donne accès à de multiples ressources qui permettent une interaction transparente avec les services de l'OpenAI. Each resource is encapsulated within a dedicated API class, offering a structured and intuitive way to interact with different functionalities. +L'API donne accès à de multiples ressources qui permettent une interaction transparente avec les services de l'OpenAI. Chaque ressource est encapsulée dans une classe d'API dédiée, offrant un moyen structuré et intuitif d'interagir avec les différentes fonctionnalités. -| Nom de propriété | Type | Description | -| ---------------- | ----------------------------------------------- | ---------------------------------------------- | -| `models` | [OpenAIModelsAPI](OpenAIModelsAPI.md) | Accès à l'API des modèles. | -| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | Accès à l'API de Chat. | -| `images` | [OpenAIImagesAPI](OpenAIImagesAPI.md) | Accès à l'API Images. | -| `moderations` | [OpenAIModerationsAPI](OpenAIModerationsAPI.md) | Accès à l'API des modérations. | -| `embeddings` | [OpenAIEmbeddingsAPI](OpenAIEmbeddingsAPI.md) | Access to the Embeddings API. | +| Nom de propriété | Type | Description | +| ---------------- | ----------------------------------------------- | ---------------------------------------------------------------------------- | +| `models` | [OpenAIModelsAPI](OpenAIModelsAPI.md) | Accès à l'API des modèles. | +| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | Accès à l'API de discussion (Chat). | +| `images` | [OpenAIImagesAPI](OpenAIImagesAPI.md) | Accès à l'API Images. | +| `moderations` | [OpenAIModerationsAPI](OpenAIModerationsAPI.md) | Accès à l'API des modérations. | +| `embeddings` | [OpenAIEmbeddingsAPI](OpenAIEmbeddingsAPI.md) | Accès à l'API Embeddings (vectorisation). | ### Exemple d'utilisation diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatAPI.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatAPI.md index d0c5355b455496..a1488e72ea9acd 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatAPI.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatAPI.md @@ -5,14 +5,14 @@ title: OpenAIChatAPI # OpenAIChatAPI -La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la fonctionnalité de chat de l'OpenAI, en tirant parti des capacités de complétion et de vision. +La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la fonctionnalité de discussion (*chat*) de l'OpenAI, en tirant parti des capacités de complétion et de vision. ## Propriétés -| Propriété | Type | Description | -| ------------- | ------------------------------------------------------- | ------------------------------------------------------------------------ | -| `completions` | [OpenAIChatCompletionsAPI](OpenAIChatCompletionsAPI.md) | An instance that handles chat completions requests. | -| `vision` | [OpenAIVision](OpenAIVision.md) | An helper instance that handles vision-related requests. | +| Propriété | Type | Description | +| ------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `completions` | [OpenAIChatCompletionsAPI](OpenAIChatCompletionsAPI.md) | Une instance qui gère les requêtes de complétion de la discussion. | +| `vision` | [OpenAIVision](OpenAIVision.md) | Une instance du helper qui traite les requêtes liées à la vision. | ## Function @@ -20,7 +20,7 @@ La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la f **create**(*systemPrompt* : Text) : OpenAIChatHelper -| Paramètres | Type | Description | -| -------------- | --------------------------------------- | ----------------------------------------------------------------- | -| *systemPrompt* | Text | The system prompt to initialize the chat. | -| Résultat | [OpenAIChatHelper](OpenAIChatHelper.md) | A helper instance for managing chat interactions. | +| Paramètres | Type | Description | +| -------------- | --------------------------------------- | -------------------------------------------------------------------------------------- | +| *systemPrompt* | Text | L'invite du système pour initialiser la discussion. | +| Résultat | [OpenAIChatHelper](OpenAIChatHelper.md) | Une instance du helper pour gérer les interactions dans la discussion. | diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIMessage.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIMessage.md index c304c356cd8402..d1191c46ad1afa 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIMessage.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIMessage.md @@ -9,17 +9,17 @@ La classe `OpenAIMessage` représente un message structuré contenant un rôle, ## Propriétés -| Propriété | Type | Description | -| --------- | ------- | ----------------------------------------------------------------------------------------------------------------------- | -| `rôle` | Text | The role of the message (e.g., "user", "assistant"). | -| `contenu` | Variant | The content of the message, which can be a text or a collection of objects. | -| `user` | Text | An optional property representing the user associated with the message. | +| Propriété | Type | Description | +| --------- | ------- | ----------------------------------------------------------------------------------------- | +| `role` | Text | Le rôle du message (par exemple, "user", "assistant"). | +| `content` | Variant | Le contenu du message, qui peut être un texte ou une collection d'objets. | +| `user` | Text | Une propriété facultative représentant l'utilisateur associé au message. | ## Propriétés calculées -| Propriété | Type | Description | -| --------- | ---- | --------------------------------------------------------- | -| `text` | Text | A property representing the text message. | +| Propriété | Type | Description | +| --------- | ---- | -------------------------------------------------------------- | +| `text` | Text | Une propriété représentant le message textuel. | ## Fonctions @@ -27,19 +27,19 @@ La classe `OpenAIMessage` représente un message structuré contenant un rôle, **addImageURL**(*imageURL* : Text; *detail* : Text) -| Paramètres | Type | Description | -| ---------- | ---- | ----------------------------------------------------------- | -| *imageURL* | Text | The URL of the image to add to the message. | -| *detail* | Text | Additional details about the image. | +| Paramètres | Type | Description | +| ---------- | ---- | ------------------------------------------------------ | +| *imageURL* | Text | L'URL de l'image à ajouter au message. | +| *detail* | Text | Détails supplémentaires sur l'image. | -Adds an image URL to the content of the message. +Ajoute une URL d'image au contenu du message. ## Exemple d'utilisation ```4d -// Create an instance of OpenAIMessage -var $message:=cs.AIKit.OpenAIMessage({role: "user"; content: "Hello!"}) +// Créer une instance d'OpenAIMessage +var $message:=cs.AIKit.OpenAIMessage({role : "user" ; content : "Hello !"}) -// Add an image URL with details -$message.addImageURL("http://example.com/image.jpg"; "high") +// Ajouter une image URL avec des détails +$message.addImageURL("http://example.com/image.jpg" ; "high") ``` \ No newline at end of file diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIParameters.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIParameters.md index 1c7eba3b517b07..cee5dd07a2af68 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIParameters.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIParameters.md @@ -5,39 +5,39 @@ title: OpenAIParameters # OpenAIParameters -The `OpenAIParameters` class is designed to handle execution and request parameters for interacting with the OpenAI API. +La classe `OpenAIParameters` est conçue pour gérer les paramètres d'exécution et de requête pour interagir avec l'API OpenAI. ## Propriétés ### Propriétés de la programmation asynchrone -| Propriété | Type | Description | -| -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `formula` or `onTerminate` | Function | A function to be called asynchronously when finished. Ensure that the current process does not terminate. | -| `onResponse` | Function | A function to be called asynchronously when the request finishes successfully. Ensure that the current process does not terminate. | -| `onError` | Function | A function to be called asynchronously when the request finishes with errors. Ensure that the current process does not terminate. | -| `throw` | Boolean | If true, throws an error if one occurs. Only if no formula callback defined. | +| Propriété | Type | Description | +| -------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `formula` or `onTerminate` | Function | Une fonction à appeler de manière asynchrone lorsqu'elle est terminée. Assurez-vous que le process courant ne se termine pas. | +| `onResponse` | Function | Une fonction à appeler de manière asynchrone lorsque la requête se termine avec succès. Assurez-vous que le process courant ne se termine pas. | +| `onError` | Function | Une fonction à appeler de manière asynchrone lorsque la requête rencontre des erreurs. Assurez-vous que le process courant ne se termine pas. | +| `throw` | Boolean | Si true, faire un throw en cas d'erreur. Uniquement si aucune formule de callback n'est définie. | Voir [documentation sur le code asynchrone](../asynchronous-call.md) ### Propriétés du réseau -| Propriété | Type | Description | -| -------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `timeout` | Real | Overrides the client-level default timeout for the request, in seconds. Default is 0. | -| `httpAgent` | HTTPAgent | Overrides the client-level default HTTP agent for the request. | -| `maxRetries` | Integer | The maximum number of retries for the request. (Only if code not asynchrone ie. no function provided) | -| `extraHeaders` | Object | Extra headers to send with the request. | +| Propriété | Type | Description | +| -------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `timeout` | Real | Remplace le délai d'attente par défaut au niveau du client pour la requête, en secondes. Par défaut, 0. | +| `httpAgent` | HTTPAgent | Remplace l'agent HTTP par défaut au niveau du client pour la requête. | +| `maxRetries` | Integer | Nombre maximal de tentatives pour la requêtes. (Seulement si le code n'est pas asynchrone, c'est-à-dire s'il n'y a pas de fonction fournie) | +| `extraHeaders` | Object | En-têtes supplémentaires à envoyer avec la requête. | ### Propriétés OpenAPI -| Propriété | Type | Description | -| --------- | ---- | ----------------------------------------------------------------------------------------------------------- | -| `user` | Text | A unique identifier representing the end-user, which helps OpenAI monitor and detect abuse. | +| Propriété | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| `user` | Text | Un identifiant unique représentant l'utilisateur final, ce qui aide OpenAI à surveiller et à détecter les abus. | ## Classes héritées -Several classes inherit from `OpenAIParameters` to extend its functionality for specific use cases. Below are some of the classes that extend `OpenAIParameters`: +Plusieurs classes héritent de `OpenAIParameters` pour étendre ses fonctionnalités à des cas d'utilisation spécifiques. Voici quelques-unes des classes qui étendent `OpenAIParameters` : - [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - [OpenAIChatCompletionsMessagesParameters](OpenAIChatCompletionsMessagesParameters.md) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/asynchronous-call.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/asynchronous-call.md index 621c8e39e15906..670aff8802bd8c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/asynchronous-call.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/asynchronous-call.md @@ -5,23 +5,23 @@ title: Appel asynchrone # Appel asynchrone -If you do not want to wait for the OpenAPI response when making a request to its API, you need to use asynchronous code. +Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. -You must provide a `4D.Formula` to receive the result. See [OpenAIParameters](Classes/OpenAIParameters.md) for a list of them. +Vous devez fournir une `4D.Formula` pour recevoir le résultat. Voir [OpenAIParameters](Classes/OpenAIParameters.md) pour une liste de ces paramètres. -The asynchronous method is based on [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), so the response will be received within the current process. +La méthode asynchrone est basée sur [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), ainsi la réponse sera reçue dans le process courant. -> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. In such cases, consider using `CALL WORKER` or `CALL FORM`. +> ⚠️ Si votre process se termine à la fin de la méthode courante (par exemple, si vous utilisez New process ou l'éditeur de méthode), la formule de callback peut ne pas être appelée de manière asynchrone. Dans ce cas, il est nécessaire d'utiliser `CALL WORKER` ou `CALL FORM`. ## Exemples d’utilisation -### liste de modèles +### Liste de modèles ```4d $client.models.list({formula: Formula(MyReceiveMethod($1))}) ``` -`$1` sera une instance de [OpenAIModelListResult] (Classes/OpenAIModelListResult.md), donc la méthode `MyReceiveMethod` pourrait être : +`$1` sera une instance de [OpenAIModelListResult](Classes/OpenAIModelListResult.md), donc la méthode `MyReceiveMethod` pourrait être : ```4d #DECLARE($result: cs.AIKit.OpenAIModelListResult) @@ -37,7 +37,7 @@ Else End if ``` -### complétions de chat +### Complétions de chat ```4d var $messages:=[{role: "system"; content: "You are a helpful assistant."}] diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md index a27cd014683587..6f376ddde06727 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md @@ -7,17 +7,17 @@ title: Fournisseurs (Providers) De nombreux fournisseurs d'IA proposent une API de type OpenAI, vous pouvez donc utiliser ce projet pour vous y connecter. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +Pour ce faire, il suffit de passer l'adresse du fournisseur dans `baseURL` et d'utiliser sa clé d'api si nécessaire. ```4d $client.baseURL:="https://api.mistral.ai/v1" ``` -Some of them +Quelques-uns : -## Distant +## A distance -| Fournisseur | Url de base | +| Fournisseur | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Some of them ## Local -| Fournisseur | Url de base par défaut | Doc | +| Fournisseur | baseURL par défaut | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md index 790109ee1305cf..27f37b8f05b508 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md @@ -11,7 +11,7 @@ title: 4D-AIKit ## OpenAI -La classe [`OpenAI`](Classes/OpenAI.md) vous permet de faire des demandes à l'[API OpenAI](https://platform.openai.com/docs/api-reference/). +La classe [`OpenAI`](Classes/OpenAI.md) vous permet d'envoyer des requêtes à l'[API OpenAI](https://platform.openai.com/docs/api-reference/). ### Configuration @@ -21,7 +21,7 @@ Tout d'abord, initialisez le client OpenAI en utilisant votre clé API var $client:=cs.AIKit.OpenAI.new("your api key") ``` -Pour une API [ compatible provider ](compatible-openai.md), vous pouvez configurer l'URL du serveur en définissant le paramètre `baseURL`. +Pour l'API d'un [founisseur compatible](compatible-openai.md), vous devez configurer l'URL du serveur en définissant le paramètre `baseURL`. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -33,7 +33,7 @@ ou $client.baseURL:="https://your.server.ai" ``` -### Formuler des demandes +### Formuler des requêtes `OpenAI` fournit différents points de terminaison appelés ressources, chacun offrant diverses fonctions. @@ -41,7 +41,7 @@ $client.baseURL:="https://your.server.ai" var $result:=$client..() ``` -Le `$result` contient le `HTTPRequest`, un statut `success`, une collection de `errors` et plus encore. Voir [OpenAIResult](Classes/OpenAIResult.md) +Le résultat `$result` contient la requête `HTTPRequest`, un statut `success`, une collection de `errors` et plus encore. Voir [OpenAIResult](Classes/OpenAIResult.md) Voir quelques exemples ci-dessous. @@ -60,9 +60,9 @@ var $result:=$client.chat.completions.create($messages; {model: "gpt-4o-mini"}) // résultat dans $result.choice ``` -##### Assistant de chat +##### Helper de discussion (chat) -Cet assistant vous permet de maintenir une liste de messages d'utilisateurs et de réponses d'assistants. +Cet assistant vous permet de maintenir une liste de messages d'utilisateurs et de réponses de l'assistant. ```4d var $helper:=$client.chat.create("You are a helpful assistant.") @@ -71,9 +71,9 @@ $result:=$helper.prompt("and could you decompose this number") // conversation dans $helper.messages ``` -##### Assistant de vision +##### Helper de vision -Cet assistant permet l'analyse des images à travers le chat. +Cet assistant permet l'analyse des images à travers la discussion. ```4d var $result:=$client.chat.vision.create($imageUrl).prompt("give me a description of the image") @@ -113,13 +113,13 @@ var $moderation:=$client.moderations.create("This text contains inappropriate la #### Code asynchrone -Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. L'objet résultat sera reçu dans une fonction de rappel. +Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. L'objet résultat sera reçu dans une fonction de callback. Voir [documentation détaillée pour les exemples](asynchronous-call.md) ## Droits d'auteur -- This library is not affiliated with, endorsed by, or officially connected to OpenAI in any way. -- "OpenAI" and any related marks are trademarks or registered trademarks of OpenAI, LLC. All rights related to OpenAI's services, APIs, and technologies remain the property of OpenAI. -- This project simply provides an interface to OpenAI’s services and does not claim any ownership over their technology, branding, or intellectual property. +- Cette bibliothèque n'est pas affiliée à OpenAI, ni approuvée par elle, ni officiellement liée à elle de quelque manière que ce soit. +- "OpenAI" et toutes les marques associées sont des marques commerciales ou des marques déposées d'OpenAI, LLC. Tous les droits liés aux services, API et technologies de l'OpenAI restent la propriété de OpenAI. +- Ce projet fournit simplement une interface aux services d'OpenAI et ne revendique aucune propriété sur leur technologie, leur marque ou leur propriété intellectuelle. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md index b3427c13e9a4fe..09dd557d1de1c5 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md @@ -128,7 +128,11 @@ L’exemple suivant interdit toute nouvelle connexion entre 2 et 4 heures du mat   // Méthode base Sur ouverture connexion serveur  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time) ## Utilisation de tables et de champs -Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. +Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. Une base de données externe est un projet 4D indépendant du projet 4D principal, mais avec lequel vous pouvez travailler à partir du projet 4D principal. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. ### Exemple diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md index 76df3863376f97..34145b3195459d 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md @@ -56,7 +56,7 @@ La barre d’outils comporte les éléments suivants : | Icône | Nom | Description | | ------------------------------------------------ | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Exécuter le formulaire | Permet de tester l’exécution du formulaire. Lorsque vous cliquez sur ce bouton, 4D ouvre une nouvelle fenêtre et affiche le formulaire dans son contexte (liste d’enregistrements pour un formulaire liste et enregistrement courant en page pour un formulaire détaillé). Le formulaire est exécuté dans le process principal. | -| ![](../assets/en/FormEditor/selection.png) | [Flèche de sélection](#selecting-objects) | Permet de sélectionner, déplacer et redimensionner les objets du formulaire.

    **Note** : Lorsqu'un objet de type Texte ou Zone de Groupe est sélectionné, appuyez sur la touche **Entrée** pour passer en mode édition.

    | +| ![](../assets/en/FormEditor/selection.png) | [Flèche de sélection](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordre de saisie](#data-entry-order) | Passe en mode “Ordre de saisie”, dans lequel il est possible de visualiser et de modifier l’ordre de saisie courant du formulaire. A noter que vous pouvez également visualiser l’ordre de saisie courant tout en travaillant dans le formulaire. | | ![](../assets/en/FormEditor/moving.png) | [Déplacement](#moving-objects) | Passe en mode “Déplacement”, dans lequel il est possible d’atteindre rapidement n’importe quelle partie du formulaire en le faisant directement glisser dans la fenêtre. Le curseur prend la forme d’une main. Ce mode de navigation est particulièrement utile en cas de zoom dans le formulaire. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permet de modifier l’échelle d’affichage du formulaire (100% par défaut). Vous pouvez passer en mode “Zoom” en cliquant sur le bouton loupe ou en cliquant directement sur la barre correspondant à l’échelle désirée. Cette fonction est détaillée dans le paragraphe précédent. | @@ -146,11 +146,11 @@ Avant de pouvoir réaliser une opération sur un objet (comme le changement de l Pour sélectionner un objet à l’aide de la barre d’outils : -1. Cliquez sur l’outil Flèche dans la barre d’outils.

    ![](../assets/en/FormEditor/selection.png)

    +1. Cliquez sur l’outil Flèche dans la barre d’outils.
    ![](../assets/en/FormEditor/selection.png) -

    Lorsque vous le faites glisser au-dessus du formulaire, le pointeur prend la forme du pointeur standard

    . +
    Lorsque vous le faites glisser au-dessus du formulaire, le pointeur prend la forme du pointeur standard. -2. Cliquez sur l’objet que vous souhaitez sélectionner. Des poignées de sélection identifient l’objet sélectionné.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Cliquez sur l’objet que vous souhaitez sélectionner. Des poignées de sélection identifient l’objet sélectionné.
    ![](../assets/en/FormEditor/selectResize.png) Pour sélectionner un objet à l’aide de la Liste des propriétés : @@ -235,13 +235,12 @@ Grouper des objets n’a d’effet que dans l’éditeur de formulaires. Lors de Pour grouper les objets : 1. Sélectionnez les objets que vous souhaitez grouper. -2. Sélectionnez **Grouper** dans le menu Objets. OR Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    -4D matérialise les bordures du groupe avec des poignées. Les objets du groupe ne sont plus marqués séparément par des poignées. Désormais, lorsque vous modifiez le groupe d’objets, vous modifiez tous les objets qui le composent. +2. Sélectionnez **Grouper** dans le menu Objets. OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. Les objets du groupe ne sont plus marqués séparément par des poignées. Désormais, lorsque vous modifiez le groupe d’objets, vous modifiez tous les objets qui le composent. Pour dégrouper un groupe d’objets : 1. Sélectionnez le groupe que vous souhaitez dégrouper. -2. Choisissez **Dégrouper** dans le menu **Objets**.

    OU

    Sélectionnez la commande **Dégrouper** (menu du bouton **Grouper**) dans la barre d’outils de l’éditeur de formulaires.

    Si la commande **Dégrouper** est désactivée, cela veut dire que l’objet sélectionné est déjà sous sa forme la plus simple.

    4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. ### Aligner des objets @@ -268,9 +267,10 @@ La boîte de dialogue d’alignement vous permet d’appliquer tout type d’ali Pour afficher cette boîte de dialogue, vous devez sélectionner les objets que vous souhaitez aligner puis choisir la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. -- Cliquez sur l’icône d’alignement de votre choix dans les zones “Alignement droite/gauche” et/ou “Alignement haut/bas”.

    La zone d’exemple illustre le principe de l’opération sélectionnée.

    +- Dans les zones “Alignement droite/gauche” et/ou “Alignement haut/bas”, cliquez sur l’icône correspondant à l'alignement que vous souhaitez effectuer.
    La zone d'exemple affiche les résultats de votre sélection. + +- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. Dans ce cas, la position de l’objet de référence ne variera pas. -- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OU BIEN :

    Pour aligner des objets sur un objet spécifique, sélectionnez l'option **Aligner sur** et sélectionnez l'objet sur lequel vous souhaitez que les autres objets soient alignés dans la liste des objets. Dans ce cas, la position de l’objet de référence ne variera pas.

    Vous pouvez prévisualiser le résultat réel de vos paramétrages en cliquant sur le bouton **Prévisualisation**. Les objets sont ensuite alignés dans l'éditeur de formulaires, mais comme la boîte de dialogue ne disparaît pas, vous pouvez toujours annuler ou appliquer l'alignement. > Cette boîte de dialogue combine l’alignement d’objets et leur répartition. Pour plus d’informations sur la répartition, reportez-vous au paragraphe [Répartir des objets](#distributing-objects). @@ -304,7 +304,7 @@ Pour répartir directement une sélection d’objets (verticalement ou horizonta 1. Sélectionnez les objets (au moins trois) que vous souhaitez répartir. -2. Dans la barre d’outils, cliquez sur l’outil de répartition qui correspond la répartition que vous souhaitez appliquer.

    ![](../assets/en/FormEditor/distributionTool.png)

    OU

    Sélectionnez une commande de distribution dans le sous-menu **Alignement** du menu **Objet** ou dans le menu contextuel de l'éditeur.

    4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et répartition : @@ -312,9 +312,9 @@ Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et r 2. Choisissez la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. La boîte de dialogue suivante apparaît :![](../assets/en/FormEditor/alignmentAssistant.png) -3. Cliquez sur l’icône de répartition standard (horizontale ou verticale) de votre choix: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (icône de répartition horizontale standard)

    La zone d’exemple illustre le principe de l’opération sélectionnée. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. Pour effectuer une répartition standard, cliquez sur le bouton **Prévisualisation** ou *Appliquer*.

    Dans ce cas, les objets seront répartis de manière à ce que leurs côtés soient équidistants (répartition standard).

    OU BIEN :

    Pour exécuter une distribution spécifique, sélectionnez l'option **Répartir** (par exemple si vous souhaitez répartir les objets en fonction de la distance de leur côté droit). Cette option agit comme un interrupteur. Lorsque l'option Répartir est cochée, les icônes situées au-dessous d’elle s’appliquent alors à la répartition :

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Cette option agit comme un interrupteur. Lorsque l'option Répartir est cochée, les icônes situées au-dessous d’elle s’appliquent alors à la répartition :
    - Horizontalement, les icônes correspondent aux répartitions suivantes : équidistance des côtés gauches, des centres (hor.) et des côtés droits des objets sélectionnés. - Verticalement, les icônes correspondent aux répartitions suivantes : équidistance des bords supérieurs, des centres (vert.) et des bords inférieurs des objets sélectionnés. @@ -367,11 +367,11 @@ Ce paragraphe décrit la visualisation et la modification de l’ordre de saisie Pour visualiser ou modifier l’ordre de saisie : -1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :
    ![](../assets/en/FormEditor/zOrder.png)
    Le pointeur prend la forme d’un pointeur d’ordre, et 4D dessine une ligne qui permet de visualiser la séquence de l’ordre de saisie courant. Visualiser et modifier l’ordre de saisie sont les seules opérations que vous pouvez réaliser dans ce mode. -2. Pour changer l’ordre de saisie, placez le pointeur sur un objet, cliquez dessus et, tout en maintenant le bouton de la souris enfoncé, déplacez le pointeur vers l’objet qui doit le suivre dans l’ordre de saisie.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D ajuste l’ordre de saisie en conséquence. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Répétez l’étape 2 autant de fois que nécessaire pour obtenir le nouvel ordre de saisie. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-20/ORDA/dsMapping.md b/i18n/fr/docusaurus-plugin-content-docs/version-20/ORDA/dsMapping.md index 343d91147dc8fb..1af39035ae89b8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-20/ORDA/dsMapping.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-20/ORDA/dsMapping.md @@ -69,7 +69,7 @@ A datastore object is handled through functions and properties of the [**DataSto Lorsqu'il est géré via le code, le datastore est un objet dont les propriétés sont toutes les [dataclasses](#dataclass) ayant été spécifiquement exposées. -4d vous permet de gérer les datastores suivants : +4D vous permet de gérer les datastores suivants : - le datastore local, fondé sur la base 4D courante, retourné par la commande `ds` (le datastore principal). - un ou plusieurs datastores distants, exposés en tant que ressources RESET dans des bases 4D distantes, retournés par la commande `Ouvrir datastore`. @@ -162,12 +162,12 @@ Prenons l'exemple de la structure de base de données partielle suivante et les ![](../assets/en/ORDA/relationProperties.png) -Tous les attributs relationnels seront disponibles automatiquement : +Tous les attributs de stockage seront disponibles automatiquement : * dans la dataclass Project : "ID", "name", et "companyID" * dans la dataclass Company : "ID", "name", et "discount" -En outre, les attributs relationnels suivant seront également disponibles automatiquement : +En outre, les attributs relationnels suivants seront également disponibles automatiquement : * dans la dataclass Project : l'attribut **theClient**, du type "relatedEntity" ; il y a au plus une compagnie pour chaque projet (le client) * dans la dataclass Company : l'attribut **companyProjects**, du type "relatedEntities" ; pour chaque compagnie, il existe un certain nombre de projets reliés. @@ -250,7 +250,7 @@ Les entity selections triées sont créées uniquement lorsque cela est nécessa * résultat d'un `orderBy()` sur une sélection (de n'importe quel type) ou un `orderBy()` sur une dataclass, * résultat de la méthode `newSelection()` avec l'option `dk keep ordered` -Les sélections d'entités non-triées sont créées dans les cas suivants : +Les entity selections non-triées sont créées dans les cas suivants : * résultat d'un `query()` standard sur une sélection (de n'importe quel type) ou un `query()` sur une dataclass, * résultat de la méthode `newSelection()` sans option, diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/CollectionClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/CollectionClass.md index 0f3efe19eef728..4988f47bd80d77 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/CollectionClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/CollectionClass.md @@ -3216,15 +3216,15 @@ La fonction `.sort()` trie les éléments > Cette fonction modifie la collection d'origine. Si `.sort()` est appelé sans paramètres, seules les valeurs scalaires (nombres, textes, dates, booléens) sont triées. Les éléments sont triés par défaut par ordre croissant, en fonction de leur type. -You can also pass one of the following constants in the *ascOrDesc* parameter: +Vous pouvez également passer une des constantes suivantes dans le paramètre *ascOrDesc* : ``` - |Constant| Type|Value|Comment| - |---|---|---|---| - |ck ascending|Integer|0|Elements are ordered in ascending order (default)| - |ck descending|Integer|1|Elements are ordered in descending order| + |Constante| Type|Valeur|Comment| + |---|---|---| + |ck ascending|Integer|0|Les éléments sont classés par ordre croissant (par défaut)| + |ck descending|Integer|1|Les éléments sont classés par ordre décroissant| - This syntax orders scalar values in the collection only (other element types such as objects or collections are returned unordered). + Cette syntaxe ordonne uniquement les valeurs scalaires dans la collection (les autres types d'éléments tels que les objets ou les collections sont renvoyés non ordonnés). ``` Si la collection contient des éléments de différents types, ils sont d'abord groupés par type et triés par la suite. Les types sont renvoyés dans l'ordre suivant : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md index c6151a92503144..a38923d1b9c912 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md @@ -1181,11 +1181,11 @@ Si *attributePath* désigne un attribut stockant des [**objets vecteurs**](../AP Dans ce cas, le paramètre *value* doit être un **objet vecteur de comparaison** contenant les propriétés suivantes : -| Propriété | Type | Description | -| --------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| vector | [4D.Vector](../API/VectorClass.md) | Obligatoire. Le vecteur à comparer | -| metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine distance between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | -| threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. | +| Propriété | Type | Description | +| --------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| vector | [4D.Vector](../API/VectorClass.md) | Obligatoire. Le vecteur à comparer | +| metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot` : calcule la similarité en points des vecteurs.
  • `mk euclidean` : calcule la distance euclidienne entre les vecteurs. | +| threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. | Seul un sous-ensemble de symboles **comparateurs** est pris en charge. Notez qu'ils comparent les résultats à la valeur de seuil (threshold) : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/EntityClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/EntityClass.md index 2d89f983655f8e..80a165c602664d 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/EntityClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/EntityClass.md @@ -335,10 +335,10 @@ vCompareResult3 (seules les différences sur les attributs touchés de $e1 sont
    Historique -| Release | Modifications | -| ------- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | Ajout | +| Release | Modifications | +| ------- | ------------------------ | +| 21 | Ajout des statuts 7 et 8 | +| 17 | Ajout |
    @@ -365,7 +365,7 @@ Sinon, vous pouvez passer l'option `dk force drop if stamp changed` dans le para **Résultat** -The object returned by `.drop()` contains the following properties: +L'objet renvoyé par `.drop()` contient les propriétés suivantes : | Propriété | | Type | Description | | --------------------------------- | ----------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -390,15 +390,15 @@ The object returned by `.drop()` contains the following properties: (\*) Les valeurs suivantes peuvent être retournées dans les propriétés *status* et *statusText* de l'objet *Résultat* en cas d'erreur : -| Constante | Valeur | Commentaire | -| ----------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). When using entity.drop(), this error can be returned when dk force drop if stamp changed option is used. When using entity.lock(), this error can be returned when dk reload if stamp changed option is used.
  • **Associated statusText**: "Entity does not exist anymore" | -| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste.
    **statusText associé** : "Already locked" | -| `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    **statusText associé** : "Other error" | -| `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | -| `dk status stamp has changed` | 2 | La valeur du marqueur interne (stamp) de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used
  • **Associated statusText**: "Stamp has changed"
  • | -| `dk status wrong permission` | 1 | Les privilèges courants ne permettent pas de supprimer l'entité. **statusText associé** : "Permission error" | +| Constante | Valeur | Commentaire | +| ----------------------------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). Lors de l'utilisation de entity.drop(), cette erreur peut être renvoyée lorsque l'option dk force drop if stamp changed est utilisée. Lors de l'utilisation de entity.lock(), cette erreur peut être renvoyée si l'option dk reload if stamp changed est utilisée.
  • \*\*statusText associé : "Entity does not exist anymore" | +| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste.
    **statusText associé** : "Already locked" | +| `dk status validation failed` | 7 | Erreur non fatale envoyée par le développeur pour un [événement de validation](../ORDA/orda-events.md). **statusText associé**: "Mild Validation Error" | +| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    **statusText associé** : "Other error" | +| `dk status serious validation error` | 8 | Erreur critique envoyée par le développeur pour un [événement de validation](../ORDA/orda-events.md). **statusText associé**: "Serious Validation Error" | +| `dk status stamp has changed` | 2 | La valeur du marqueur interne (stamp) de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • avec `.save()` : erreur seulement si l'option `dk auto merge` n'est pas utilisée
  • avec `.drop()` : erreur uniquement si l'option `dk force drop if stamp changed` n'est pas utilisée
  • avec `.lock()` : erreur seulement si l'option `dk reload if stamp changed` n'est pas utilisée
  • **statusText associé** : "Stamp has chaged"
  • | +| `dk status wrong permission` | 1 | Les privilèges courants ne permettent pas de supprimer l'entité. **statusText associé** : "Permission error" | #### Exemple 1 @@ -512,7 +512,7 @@ La correspondance entre l'objet et l'entité est établie à partir des noms de - Si une propriété de l'objet n'existe pas dans la dataclass, elle est ignorée. - Les types de données doivent être équivalents. S'il existe une différence de type entre l'objet et la dataclass, 4D essaie de convertir les données lorsque cela est possible (voir [`Converting data types`](Concepts/data-types.md#converting-data-types)), sinon l'attribut est laissé intact. -- La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). Si la clé primaire n'est pas fournie, l'entité est créée et la valeur de la clé primaire est affectée en fonction des règles de la base de données. L'auto-incrémentation n'est calculée que si la clé primaire est nulle. +- La clé primaire peut être donnée telle quelle ou avec une propriété "__KEY" (remplie avec la valeur de la clé primaire). Si elle n'existe pas déjà dans la dataclass, l'entité est créée avec la valeur donnée lorsque [.save()](#save) est appelée. Si la clé primaire n'est pas fournie, l'entité est créée et la valeur de la clé primaire est affectée en fonction des règles de la base de données. L'auto-incrémentation n'est calculée que si la clé primaire est nulle. *filler* peut contenir une related entity dans les conditions suivantes : @@ -1011,13 +1011,12 @@ L'objet retourné par `.lock()` contient les propriétés suivantes : (\*) Les valeurs suivantes peuvent être retournées dans les propriétés *status* et *statusText* de l'objet *Résultat* en cas d'erreur : -| Constante | Valeur | Commentaire | -| ----------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • **statusText associé** : "Entity does not exist anymore" | -| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste.
    **statusText associé** : "Already locked" | -| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require | -| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    **statusText associé** : "Other error" | -| `dk status stamp has changed` | 2 | La valeur du marqueur interne (stamp) de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | +| Constante | Valeur | Commentaire | +| ----------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). Lors de l'utilisation de `.drop()`, cette erreur peut être retournée lorsque l'option dk force drop if stamp changed est utilisée. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • **statusText associé** : "Entity does not exist anymore" | +| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste.
    **statusText associé** : "Already locked" | +| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    **statusText associé** : "Other error" | +| `dk status stamp has changed` | 2 | La valeur du marqueur interne (stamp) de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • avec `.save()` : erreur seulement si l'option `dk auto merge` n'est pas utilisée
  • avec `.drop()` : erreur seulement si l'option `dk force drop if stamp changed` n'est pas utilisée
  • avec `.lock()` : erreur seulement si l'option `dk reload if stamp changed` n'est pas utilisée

  • **statusText associé** : "Stamp has changed" | #### Exemple 1 @@ -1178,10 +1177,10 @@ L'objet retourné par `.reload( )` contient les propriétés suivantes : (\*) Les valeurs suivantes peuvent être retournées dans les propriétés *status* et *statusText* de l'objet *Résultat* en cas d'erreur : -| Constante | Valeur | Commentaire | -| ----------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). When using `.drop()`, this error can be returned when `dk force drop if stamp changed` option is used. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • ***statusText associé***: "Entity does not exist anymore" | -| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    ***statusText associé*** : "Other error" | +| Constante | Valeur | Commentaire | +| ----------------------------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). Lors de l'utilisation de `.drop()`, cette erreur peut être retournée lorsque l'option `dk force drop if stamp changed` est utilisée. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • ***statusText associé***: "Entity does not exist anymore" | +| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc.
    ***statusText associé*** : "Other error" | #### Exemple @@ -1210,10 +1209,10 @@ L'objet retourné par `.reload( )` contient les propriétés suivantes :
    Historique -| Release | Modifications | -| ------- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | Ajout | +| Release | Modifications | +| ------- | ------------------------ | +| 21 | Ajout des statuts 7 et 8 | +| 17 | Ajout |
    @@ -1273,16 +1272,16 @@ L'objet retourné par `.save()` contient les propriétés suivantes : Les valeurs suivantes peuvent être retournées dans les propriétés `status` et `statusText` de l'objet Résultat en cas d'erreur : -| Constante | Valeur | Commentaire | -| ----------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dk status automerge failed` | 6 | (Only if the `dk auto merge` option is used) The automatic merge option failed when saving the entity. **Associated statusText**: "Auto merge failed" | -| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). When using `.drop()`, this error can be returned when `dk force drop if stamp changed` option is used. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • **statusText associé** : "Entity does not exist anymore" | -| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste. **statusText associé** : "Already locked" | -| `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc. **Associated statusText**: "Other error" | -| `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | -| `dk status stamp has changed` | 2 | La valeur du marqueur interne (stamp) de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | -| `dk status wrong permission` | 1 | Les privilèges courants ne permettent pas de supprimer l'entité. **statusText associé** : "Permission error" | +| Constante | Valeur | Commentaire | +| ----------------------------------------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status automerge failed` | 6 | (Seulement si l'option `dk auto merge` est utilisée) L'option de fusion automatique a échoué lors de la sauvegarde de l'entité. \*\*statusText associé : "Auto merge failed" | +| `dk status entity does not exist anymore` | 5 | L'entité n'existe plus dans les données. Cette erreur peut se produire dans les cas suivants:
  • l'entité a été supprimée (le marqueur a changé et l'espace mémoire est maintenant libre)
  • l'entité a été supprimée et remplacée par une autre avec une autre clé primaire (le marqueur a changé et une nouvelle entité utilise maintenant l'espace mémoire). Lors de l'utilisation de `.drop()`, cette erreur peut être retournée lorsque l'option `dk force drop if stamp changed` est utilisée. Lors de l'utilisation de `.lock()`, cette erreur peut être retournée lorsque l'option `dk reload if stamp changed` est utilisée

  • **statusText associé** : "Entity does not exist anymore" | +| `dk status locked` | 3 | L'entité est verrouillée par un verrou pessimiste. **statusText associé** : "Already locked" | +| `dk status validation failed` | 7 | Erreur non fatale envoyée par le développeur pour un [événement de validation](../ORDA/orda-events.md). **statusText associé**: "Mild Validation Error" | +| `dk status serious error` | 4 | Une erreur critique peut être une erreur de bas niveau de la base de données (ex. clé dupliquée), une erreur matérielle, etc. **statusText associé** : "Other error" | +| `dk status serious validation error` | 8 | Erreur critique envoyée par le développeur pour un [événement de validation](../ORDA/orda-events.md). **statusText associé**: "Serious Validation Error" | +| `dk status stamp has changed` | 2 | La valeur du marqueur interne (stamp) de l'entité ne correspond pas à celle de l'entité stockée dans les données (verrouillage optimiste).
  • avec `.save()` : erreur seulement si l'option `dk auto merge` n'est pas utilisée
  • avec `.drop()` : erreur seulement si l'option `dk force drop if stamp changed` n'est pas utilisée
  • avec `.lock()` : erreur seulement si l'option `dk reload if stamp changed` n'est pas utilisée

  • **Associated statusText** : "Stamp has changed" | +| `dk status wrong permission` | 1 | Les privilèges courants ne permettent pas de supprimer l'entité. **statusText associé** : "Permission error" | #### Exemple 1 diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/SessionClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/SessionClass.md index b2e186f8db0785..310fc4b378299a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/SessionClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/SessionClass.md @@ -51,6 +51,16 @@ Articles de blog sur cette fonctionnalité : ::: +:::info Pour en savoir plus + +Articles de blog sur cette fonctionnalité : + +- [Sessions évolutives pour applications web avancées](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) +- [Permissions : Inspecter les privilèges de la session pour faciliter le débogage](https://blog.4d.com/permissions-inspect-session-privileges-for-easy-debugging/) +- [Générer, partager et utiliser des passcodes à usage unique (OTP) pour les sessions web](https://blog.4d.com/connect-your-web-apps-to-third-party-systems/) + +::: + ### Types de sessions Les types de sessions suivants sont pris en charge par cette classe : @@ -92,10 +102,10 @@ La disponibilité des propriétés et des fonctions de l'objet `Session` dépend
    Historique -| Release | Modifications | -| ------- | -------------------------- | -| 21 | Support of remote sessions | -| 18 R6 | Ajout | +| Release | Modifications | +| ------- | -------------------------------------- | +| 21 | Prise en charge des sessions distantes | +| 18 R6 | Ajout |
    @@ -113,13 +123,13 @@ La disponibilité des propriétés et des fonctions de l'objet `Session` dépend :::note -This function does nothing and always returns **True** with stored procedure sessions and standalone sessions. +Cette fonction ne fait rien et renvoie toujours **True** avec les sessions de procédures stockées et les sessions autonomes. ::: La fonction `.clearPrivileges()` supprime tous les privilèges associés à la session (à l'exception des privilèges promus) et renvoie **True** si l'exécution a réussi. -Hormis si vous êtes en mode ["forceLogin"](../REST/authUsers.md#force-login-mode), la session devient automatiquement une session Invité. En mode "forceLogin", `.clearPrivileges()` ne transforme pas la session en session Invité, elle efface seulement les privilèges de la session. +Hormis si vous êtes en mode ["forceLogin"](../REST/authUsers.md#force-login-mode), la session devient automatiquement une session Guest. En mode "forceLogin", `.clearPrivileges()` ne transforme pas la session en session Invité, elle efface seulement les privilèges de la session. :::note @@ -127,7 +137,7 @@ Cette fonction ne supprime pas les **privilèges promus** du process web, qu'ils ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). #### Exemple @@ -148,10 +158,10 @@ $isGuest:=Session.isGuest() //$isGuest est True
    Historique -| Release | Modifications | -| ------- | -------------------------- | -| 21 | Support of remote sessions | -| 20 R9 | Ajout | +| Release | Modifications | +| ------- | -------------------------------------- | +| 21 | Prise en charge des sessions distantes | +| 20 R9 | Ajout |
    @@ -426,7 +436,7 @@ Cette fonction renvoie True pour le *privilège* si elle est appelée depuis une ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/WebServerClass.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/WebServerClass.md index cc56372ee96210..870338b9731bb5 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/API/WebServerClass.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/API/WebServerClass.md @@ -187,7 +187,7 @@ Le nom de la page home par d *Propriété en lecture seulement.* -A collection of custom HTTP handler objects. An HTTP handler object contains a listened URL pattern, a handled verb, and the code to be called. HTTP handlers can be defined through a HTTPHandlers.json file or the *settings* parameter of the [`.start()`](#start) function. For more information, please refer to the [HTTP Request handler](../WebServer/http-request-handler.md) page. +Une collection d'objets gestionnaires HTTP personnalisés . Un objet HTTP handler contient un motif d'URL écouté, un verbe pris en charge et le code à appeler. Les gestionnaires HTTP peuvent être définis dans un fichier HTTPHandlers.json ou dans le paramètre *settings* de la fonction [`.start()`](#start). Pour plus d'informations, veuillez consulter la page [HTTP Request handler](../WebServer/http-request-handler.md). @@ -495,7 +495,7 @@ Le chemin du dossier racine du se *Propriété en lecture seulement.* -A collection of rule objects currently handled to customize HTTP headers. A rule object contains a "regexPattern" property, as well as an action name with a value. HTTP rules can be defined through a HTTPRules.json file or the *settings* parameter of the [`.start()`](#start) function. For more information, please refer to the [HTTP Rules](../WebServer/http-rules.md) page. +La collection d'objets de règles HTTP mises en oeuvre pour personnaliser les en-têtes HTTP. Un objet règle contient une propriété "regexPattern" ainsi qu'un nom d'action avec une valeur. Les règles HTTP peuvent être définies dans un fichier HTTPRules.json ou dans le paramètre *settings* de la fonction [`.start()`](#start). Pour plus d'informations, veuillez consulter la page [Règles HTTP](../WebServer/http-rules.md). 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 c9dd9a9243b577..e1452bbeb57077 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 @@ -333,7 +333,7 @@ Function getRectArea($width : Integer; $height : Integer) : Integer :::note -Il n'y a pas de mot-clé de fin pour le code d'une fonction class constructor. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. +Il n'y a pas de mot-clé de fin pour le code d'une fonction de constructeur de classe. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. ::: diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/components.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/components.md index 1a124b4e2246f9..b086a5b4e4092b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/components.md @@ -9,7 +9,7 @@ Un composant 4D est un ensemble de code et de formulaires 4D représentant une o L'installation et le chargement des composants dans vos projets 4D sont gérés par le [Gestionnaire de dépendances de 4D](../Project/components.md). -Plusieurs composants sont [développés par 4D](../Extensions/overview.md#components-developed-by-4d), mais de nombreux composants de la communauté 4D [sont publiés sur GitHub](https://github.com/search?q=4d-component&type=Repositories). De plus, vous pouvez [développer vos propres composants 4D](../Extensions/develop-components.md). +Plusieurs composants sont [développés par 4D](../Extensions/overview.md#components-developed-by-4d), mais de nombreux composants de la communauté 4D [sont publiés sur GitHub](https://github.com/topics/4d-component). De plus, vous pouvez [développer vos propres composants 4D](../Extensions/develop-components.md). ## Utilisation des composants diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/error-handling.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/error-handling.md index e04656ac811885..c068f22b8e9e84 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/error-handling.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Concepts/error-handling.md @@ -21,11 +21,11 @@ Il est fortement recommandé d'installer une méthode globale de gestion des err ::: -## Predictable vs unpredictable errors +## Erreurs prévisibles ou imprévisibles -Many 4D class functions, such as [`entity.save()`](../API/EntityClass.md#save) or [`transporter.send()`](../API/SMTPTransporterClass.md#send), return a object containing *status* information. This object is used to store **predictable** errors in the runtime context, e.g. invalid password, locked entity, etc., that do not require to stop program execution. This category of errors, also named **silent errors** errors, can be handled by regular code. When such errors occur in an error handling context, i.e. a [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or an [error-handling method](#installing-an-error-handling-method), they do not interrupt the execution and do not trigger the error handling (e.g. the `Catch` part of the [`Try/Catch`](#trycatchend-try) is not executed). They are not listed in the [`Last errors`](../commands/last-errors.md) collection. The error is only returned in the `status` and `statusText` properties of the returned object. It can be processed according to your business logic. +De nombreuses fonctions de classe de 4D, telles que [`entity.save()`](../API/EntityClass.md#save) ou [`transporter.send()`](../API/SMTPTransporterClass.md#send), renvoient un objet contenant des informations de *status*. Cet objet est utilisé pour gérer les erreurs **prévisibles** dans le contexte d'exécution, par exemple un mot de passe invalide, une entité verrouillée, etc. qui ne nécessitent pas l'arrêt de l'exécution du programme. Cette catégorie d'erreurs, également appelée **erreurs silencieuses**, peut être gérée par le code normal. Lorsque de telles erreurs se produisent dans un contexte d'interception des erreurs, c'est-à-dire un [`Try`](#tryexpression), un [`Try/Catch`](#trycatchend-try) ou une [méthode de gestion des erreurs](#installing-an-error-handling-method), elles n'interrompent pas l'exécution et ne déclenchent pas le traitement de l'erreur (par exemple, la partie `Catch` du [`Try/Catch`](#trycatchend-try) n'est pas exécutée). Elles ne sont pas listées dans la collection [`Last errors`](../commands/last-errors.md). L'erreur est uniquement renvoyée dans les propriétés `status` et `statusText` de l'objet retourné. Elle peut être traitée selon votre logique d'application. -The other category of errors are **unpredictable** errors, also named **serious errors**. They include disk write error, network failure, or in general any unexpected interruption. This category of errors generates exceptions defined by [a *code*, a *message* and a *signature*](#error-codes). They interrupt the execution and trigger the error processing of the [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) or [error-handling method](#installing-an-error-handling-method) features. They are listed in the [`Last errors`](../commands/last-errors.md) collection. Note that serious errors can also return values in the `status` and `statusText` properties, e.g. `dk status serious error` - "Other error". +L'autre catégorie d'erreurs est celle des erreurs **imprévisibles**, également appelées **erreurs graves**. Il peut s'agir d'une erreur d'écriture sur le disque, d'une panne de réseau ou, plus généralement, de toute interruption inattendue. Cette catégorie d'erreurs génère des exceptions définies par [un *code*, un *message* et une *signature*](#error-codes). Elles interrompent l'exécution et déclenchent le traitement de l'erreur par les fonctions [`Try`](#tryexpression), [`Try/Catch`](#trycatchend-try) ou la [méthode de gestion des erreurs](#installing-an-error-handling-method). Elles sont listées dans la collection [`Last errors`](../commands/last-errors.md). Notez que les erreurs graves peuvent également renvoyer des valeurs dans les propriétés `status` et `statusText`, par exemple `dk status serious error` - "Other error". ## Installer une méthode de gestion des erreurs diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Desktop/clientServer.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Desktop/clientServer.md index 1217eff7a00779..9ece18d4745892 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Desktop/clientServer.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Desktop/clientServer.md @@ -128,7 +128,7 @@ Note that [privileges](../ORDA/privileges.md) should be set in the session befor Shared sessions are handled through [OTP tokens](../WebServer/sessions.md#session-token-otp). After you created an OTP token on the server for the user session, you add the token (through the `$4DSID` parameter value) to web requests sent from web areas containing Qodly pages so that the user session on the server is identified and shared. On the web server side, if a web request contains an *OTP id* in the $4DSID parameter, the session corresponding to this OTP token is used. -:::tip Related blog post +:::tip Article(s) de blog sur le sujet [Share your 4D remote client session with web accesses](https://blog.4d.com/share-your-4d-remote-client-session-with-web-accesses) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md index ed7b6e7559eddd..f863fc241bac86 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md index e8cbe982173df0..c3ca0c1e72ffd8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md @@ -3,34 +3,34 @@ id: field-properties title: Propriétés des champs --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class ![](../assets/en/Develop/inspector-class.png) -This property is available for fields of type **Object** (in 4D projects only). It allows you to define a **class-typed object field**, enhancing code completion, syntax checking, and runtime validation when typing code that involves object fields. +Cette propriété est disponible pour les champs de type **Objet** (dans les projets 4D uniquement). Elle vous permet de définir un **champ de type classe d'objet**, ce qui améliore la complétion de code, la vérification syntaxique et la validation d'exécution lors de la saisie de code impliquant des champs objet. -You can enter any valid class name in this property, including: +Vous pouvez saisir n'importe quel nom de classe valide dans cette propriété, y compris : -- User classes (e.g. `cs.MyClass`) -- Built-in 4D classes (e.g. `4D.File`, `4D.Folder`) -- [Exposed](../Extensions/develop-components.md#sharing-of-classes) component-defined classes (e.g. `cs.MyComponent.MyClass`) +- des classes utilisateurs (par exemple `cs.MyClass`) +- des classes 4D intégrées (par exemple `4D.File`, `4D.Folder`) +- des classes [exposées](../Extensions/develop-components.md#sharing-of-classes) définies par les composants (par exemple `cs.MyComponent.MyClass`) -If you enter an invalid class name, a warning is triggered and the input is rejected. +Si vous saisissez un nom de classe non valide, la saisie est rejetée. :::note -**Non-streamable classes** such as [ORDA Data Model classes](../ORDA/ordaClasses.md), [file handles](../API/FileHandleClass.md), [web server](../API/WebServerClass.md)... cannot be associated to object fields. +Les **classes non *streamables*** telles que les [classes du modèle de données ORDA](../ORDA/ordaClasses.md), la classe [FileHandle](../API/FileHandleClass.md), [WebServer](../API/WebServerClass.md)... ne peuvent pas être associées à des champs objets. ::: -In your code, when assigning a value to a class-typed object field, 4D verifies that it belongs to the declared class. If not or if the object has no class, an error is triggered. Accessing unknown attributes will also raise syntax errors. +Dans votre code, lors de l'affectation d'une valeur à un champ de type classe d'objet, 4D vérifie qu'elle appartient à la classe déclarée. Si ce n'est pas le cas ou si l'objet n'a pas de classe, une erreur est déclenchée. L'accès à des attributs inconnus entraîne également des erreurs de syntaxe. -To retrieve the associated class name at runtime, use the [`classID`](../API/DataClassClass.md#attributename) property, for example `ds.MyTable.MyField.classID`. +Pour récupérer le nom de la classe associée lors de l'exécution, utilisez la propriété [`classID`](../API/DataClassClass.md#attributename), par exemple `ds.MyTable.MyField.classID`. ### Voir également -- [Blog post: Stricter class-based typing for objects](https://blog.4d.com/stricter-class-based-typing-for-objects/) +- [Article de blog : Un typage plus strict des objets basé sur les classes](https://blog.4d.com/stricter-class-based-typing-for-objects/) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Events/onAfterEdit.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Events/onAfterEdit.md index 1b7faf45be6041..0850656f6df974 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Events/onAfterEdit.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Events/onAfterEdit.md @@ -62,11 +62,11 @@ En fonction de la valeur de la propriété `action`, l'[objet event](overview.md #### action = DragFillBlock -| Propriété | Type | Description | -| ------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| fillRange | object | Plage utilisée pour le remplissage | -| autoFillType | entier long | Value used for the fill.
  • 0: Cells are filled with all data (values, formatting, and formulas)
  • 1: Cells are filled with automatically sequential data
  • 2: Cells are filled with formatting only
  • 3: Cells are filled with values but not formatting
  • 4: Values are removed from the cells
  • 5: Cells are filled automatically
  • | -| fillDirection | entier long | Direction of the fill.
  • 0: The cells to the left are filled
  • 1: The cells to the right are filled
  • 2: The cells above are filled
  • 3: The cells below are filled
  • | +| Propriété | Type | Description | +| ------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| fillRange | object | Plage utilisée pour le remplissage | +| autoFillType | entier long | Valeur utilisée pour le remplissage.
  • 0 : Les cellules sont remplies avec toutes les données (valeurs, formatage et formules)
  • 1 : Les cellules sont remplies avec des données séquentielles automatiques
  • 2 : Les cellules sont remplies avec la mise en forme uniquement
  • 3 : Les cellules sont remplies avec les valeurs mais pas la mise en forme
  • 4 : Les valeurs sont supprimées des cellules
  • 5 : Les cellules sont remplies automatiquement
  • | +| fillDirection | entier long | Direction du remplissage.
  • 0 : Les cellules de gauche sont remplies
  • 1 : Les cellules de droite sont remplies
  • 2 : Les cellules du haut sont remplies
  • 3 : Les cellules du bas sont remplies
  • | #### action = formulaChanged diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Extensions/develop-components.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Extensions/develop-components.md index 18d3fa67a68ebd..af93886e74368b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Extensions/develop-components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Extensions/develop-components.md @@ -199,7 +199,7 @@ Un *namespace* garantit qu'aucun conflit n'émerge lorsqu'un projet hôte utilis ::: -Lorsque vous entrez une valeur, vous déclarez que les classes de composants seront disponibles dans la [user class store (**cs**)](../Concepts/classes.md#cs) du projet hôte ainsi que ses composants chargés, à travers les `cs.` espace de noms. Par exemple, si vous entrez "eGeometry" comme namespace, en supposant que vous avez créé une classe `Rectangle` contenant une fonction `getArea()`, une fois votre projet installé comme composant, le développeur du projet hôte peut écrire : +Lorsque vous entrez une valeur, vous déclarez que les classes de composants seront disponibles dans la [class store utilisateurs (**cs**)](../Concepts/classes.md#cs) du projet hôte ainsi que ses composants chargés, à travers les espaces de noms `cs.`. Par exemple, si vous entrez "eGeometry" comme namespace, en supposant que vous avez créé une classe `Rectangle` contenant une fonction `getArea()`, une fois votre projet installé comme composant, le développeur du projet hôte peut écrire : ```4d //dans le projet hôte ou l'une de ses composantes @@ -310,7 +310,7 @@ Dans ce cas, il est nécessaire d’utiliser la comparaison de pointeurs : An [error-handling method](Concepts/error-handling.md) installed by the [`ON ERR CALL`](../commands-legacy/on-err-call.md) command only applies to the running application. En cas d'erreur générée par un composant, la méthode d'appel sur erreur `ON ERR CALL` du projet hôte n'est pas appelée, et inversement. -However, you can install a [component error handler in the host application](../Concepts/error-handling.md#scope-and-components) to manage uncaught errors from compponents. +Cependant, vous pouvez installer un [gestionnaire d'erreurs de composants dans l'application hôte](../Concepts/error-handling.md#scope-and-components) pour gérer les erreurs non capturées des composants. ## Accès aux tables du projet hôte @@ -340,7 +340,7 @@ SAVE RECORD($tablepointer- ## Utilisation de tables et de champs -Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. +Un composant ne peut pas utiliser les tables et les champs définis dans la structure 4D du projet utilisé comme matrice. En revanche, il peut créer et utiliser des bases externes, et donc utiliser des tables et des champs en fonction de ses besoins. Les bases externes sont créées et gérées via le langage SQL. Une base de données externe est un projet 4D indépendant du projet 4D principal, mais avec lequel vous pouvez travailler à partir du projet 4D principal. Utiliser une base externe signifie désigner temporairement cette base comme base courante, c’est-à-dire comme base cible des requêtes SQL exécutées par 4D. Les bases externes sont créées à l'aide de la commande SQL `CREATE DATABASE`. #### Exemple @@ -457,7 +457,7 @@ Ce fichier n'est pas obligatoire mais il est nécessaire pour construire des com Les clés prises en charge dans les fichiers `Info.plist` des composants sont principalement des [clés bundle d'Apple](https://developer.apple.com/documentation/bundleresources/information-property-list) qui sont ignorées sous Windows. Cependant, elles sont utilisés par le [Gestionnaire de dépendances](../Project/components.md#loading-components) sur toutes les plates-formes. -The following keys can be defined: +Les clés suivantes peuvent être définies : | key | Description | | ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md index 2497cd8da5994e..b02e53afe34d53 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md @@ -56,12 +56,12 @@ La barre d’outils comporte les éléments suivants : | Icône | Nom | Description | | ------------------------------------------------ | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Exécuter le formulaire | Permet de tester l’exécution du formulaire. Lorsque vous cliquez sur ce bouton, 4D ouvre une nouvelle fenêtre et affiche le formulaire dans son contexte (liste d’enregistrements pour un formulaire liste et enregistrement courant en page pour un formulaire détaillé). Le formulaire est exécuté dans le process principal. | -| ![](../assets/en/FormEditor/selection.png) | [Outil de sélection](#selecting-objects) | Allows selecting, moving and resizing form objects.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +| ![](../assets/en/FormEditor/selection.png) | [Outil de sélection](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note** : Lorsqu'un objet de type Texte ou Zone de Groupe est sélectionné, appuyez sur la touche **Entrée** pour passer en mode édition. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordre de saisie](#data-entry-order) | Passe en mode “Ordre de saisie”, dans lequel il est possible de visualiser et de modifier l’ordre de saisie courant du formulaire. A noter que vous pouvez également visualiser l’ordre de saisie courant tout en travaillant dans le formulaire. | | ![](../assets/en/FormEditor/moving.png) | [Déplacement](#déplacement-objets) | Passe en mode “Déplacement”, dans lequel il est possible d’atteindre rapidement n’importe quelle partie du formulaire en le faisant directement glisser dans la fenêtre. Le curseur prend la forme d’une main. Ce mode de navigation est particulièrement utile en cas de zoom dans le formulaire. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permet de modifier l’échelle d’affichage du formulaire (100% par défaut). Vous pouvez passer en mode “Zoom” en cliquant sur le bouton loupe ou en cliquant directement sur la barre correspondant à l’échelle désirée. Cette fonction est détaillée dans le paragraphe précédent. | -| ![](../assets/en/FormEditor/alignment.png) | [Alignement](#aligning-objects) | Ce bouton est associé à un menu permettant d’aligner les objets dans le formulaire. It is enabled (or not) depending on the objects selected.
    Disabled if one selected object position is locked by a CSS property | -| ![](../assets/en/FormEditor/distribution.png) | [Distribution](#distributing-objects) | Ce bouton est associé à un menu permettant de répartir les objets dans le formulaire. It is enabled (or not) depending on the objects selected.
    Disabled if one selected object position is locked by a CSS property | +| ![](../assets/en/FormEditor/alignment.png) | [Alignement](#aligning-objects) | Ce bouton est associé à un menu permettant d’aligner les objets dans le formulaire. Il est activé (ou non) en fonction des objets sélectionnés.
    Désactivé si la position d'un objet sélectionné est verrouillée par une propriété CSS | +| ![](../assets/en/FormEditor/distribution.png) | [Distribution](#distributing-objects) | Ce bouton est associé à un menu permettant de répartir les objets dans le formulaire. Il est activé (ou non) en fonction des objets sélectionnés.
    Désactivé si la position d'un objet sélectionné est verrouillée par une propriété CSS | | ![](../assets/en/FormEditor/level.png) | [Plan](#gérer-les-plans-des-objets) | Ce bouton est associé à un menu permettant de répartir les objets dans le formulaire. Il est activé (ou non) en fonction des objets sélectionnés. | | ![](../assets/en/FormEditor/group.png) | [Grouper/Dégrouper](#grouping-objects) | Ce bouton est associé à un menu permettant de grouper et dégrouper la sélection d’objets du formulaire. Il est activé (ou non) en fonction des objets sélectionnés. | | ![](../assets/en/FormEditor/displyAndPage.png) | [Affichage et gestion des pages](forms.html#form-pages) | Cette zone permet de passer d’une page du formulaire à une autre et d’ajouter des pages. Pour naviguer parmi les pages du formulaire, cliquez sur les boutons fléchés ou cliquez sur la zone centrale et choisissez la page à afficher dans le menu qui apparaît. Si vous cliquez sur le bouton fléché de droite alors que vous êtes sur la dernière page du formulaire, 4D vous permet d’ajouter une page. | @@ -146,11 +146,11 @@ Avant de pouvoir réaliser une opération sur un objet (comme le changement de l Pour sélectionner un objet à l’aide de la barre d’outils : -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    Lorsque vous le faites glisser au-dessus du formulaire, le pointeur prend la forme du pointeur standard

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Cliquez sur l’objet que vous souhaitez sélectionner. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Cliquez sur l’objet que vous souhaitez sélectionner. Resizing handles identify the selected object.
    ![](../assets/en/FormEditor/selectResize.png) Pour sélectionner un objet à l’aide de la Liste des propriétés : @@ -241,13 +241,13 @@ Pour grouper les objets : 1. Sélectionnez les objets que vous souhaitez grouper. 2. Sélectionnez **Grouper** dans le menu Objets. OU - Cliquez sur le bouton Grouper dans la barre d'outils de l'éditeur de formulaire:

    ![](../assets/en/FormEditor/group.png)

    + Cliquez sur le bouton Grouper dans la barre d'outils de l'éditeur de formulaire:
    ![](../assets/en/FormEditor/group.png) 4D indique la limite des objets regroupés nouvellement avec des poignées. Les objets du groupe ne sont plus marqués séparément par des poignées. Désormais, lorsque vous modifiez le groupe d’objets, vous modifiez tous les objets qui le composent. Pour dégrouper un groupe d’objets : 1. Sélectionnez le groupe que vous souhaitez dégrouper. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    Si la commande **Dégrouper** est désactivée, cela veut dire que l’objet sélectionné est déjà sous sa forme la plus simple. 4D rematérialise les bordures des objets qui constituaient le groupe avec des poignées. ### Aligner des objets @@ -275,9 +275,9 @@ La boîte de dialogue d’alignement vous permet d’appliquer tout type d’ali Pour afficher cette boîte de dialogue, vous devez sélectionner les objets que vous souhaitez aligner puis choisir la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    La zone d’exemple illustre le principe de l’opération sélectionnée. -- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OU:

    Pour aligner les objets sur un objet spécifique, sélectionnez l'option **Aligner sur** et sélectionnez l'objet sur lequel vous voulez que les autres objets soient alignés dans la liste d'objets. Dans ce cas, la position de l’objet de référence ne variera pas.

    +- Pour effectuer un alignement standard des objets sélectionnés, cliquez sur le bouton **Prévisualisation** ou **Appliquer**. Dans ce cas, 4D utilisera l’objet le plus avancé dans la direction de l’alignement comme “ancre” sur laquelle tous les autres objets vont être alignés. Par exemple, si vous alignez un groupe d’objets à droite, les objets seront alignés sur le côté droit de l’objet situé le plus à droite du groupe. OU:
    Pour aligner les objets sur un objet spécifique, sélectionnez l'option **Aligner sur** et sélectionnez l'objet sur lequel vous voulez que les autres objets soient alignés dans la liste d'objets. Dans ce cas, la position de l’objet de référence ne variera pas. Vous pouvez prévisualiser le résultat réel de vos paramétrages en cliquant sur le bouton **Prévisualisation**. Les objets sont ensuite alignés dans l'éditeur de formulaires, mais comme la boîte de dialogue ne disparaît pas, vous pouvez toujours annuler ou appliquer l'alignement. @@ -314,7 +314,8 @@ Pour répartir directement une sélection d’objets (verticalement ou horizonta 1. Sélectionnez les objets (au moins trois) que vous souhaitez répartir. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribue les objets en conséquence. Les objets sont répartis en fonction de la distance entre leurs centres et la plus grande distance entre deux objets consécutifs est utilisée comme référence. Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et répartition : @@ -322,9 +323,9 @@ Pour répartir des objets à l’aide de la boîte de dialogue d'alignement et r 2. Choisissez la commande **Alignement...** dans le sous-menu **Aligner** du menu **Objets** ou du menu contextuel de l’éditeur. La boîte de dialogue suivante apparaît :![](../assets/en/FormEditor/alignmentAssistant.png) -3. Dans les zones Alignement gauche/droite et/ou haut/bas, cliquez sur l'icône de distribution standard : ![](../assets/en/FormEditor/horizontalDistribution.png)

    (icône standard de distribution horizontale)

    La zone d'exemple affiche les résultats de votre sélection. +3. Dans les zones Alignement gauche/droite et/ou haut/bas, cliquez sur l'icône de distribution standard : ![](../assets/en/FormEditor/horizontalDistribution.png)
    (icône standard de distribution horizontale)
    La zone d'exemple affiche les résultats de votre sélection. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Cette option agit comme un interrupteur. Si la case à cocher Répartir est sélectionnée, les icônes situées en dessous effectuent une fonction différente:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Cette option agit comme un interrupteur. Si la case à cocher Répartir est sélectionnée, les icônes situées en dessous effectuent une fonction différente:
    - Horizontalement, les icônes correspondent aux répartitions suivantes : équidistance des côtés gauches, des centres (hor.) et des côtés droits des objets sélectionnés. - Verticalement, les icônes correspondent aux répartitions suivantes : équidistance des bords supérieurs, des centres (vert.) et des bords inférieurs des objets sélectionnés. @@ -379,11 +380,11 @@ Ce paragraphe décrit la visualisation et la modification de l’ordre de saisie Pour visualiser ou modifier l’ordre de saisie : -1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Sélectionnez **Ordre de saisie** dans le menu **Formulaire** ou cliquez sur le bouton dans la barre d’outils de la fenêtre :
    ![](../assets/en/FormEditor/zOrder.png)
    Le pointeur prend la forme d’un pointeur d’ordre, et 4D dessine une ligne qui permet de visualiser la séquence de l’ordre de saisie courant. Visualiser et modifier l’ordre de saisie sont les seules opérations que vous pouvez réaliser dans ce mode. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Répétez l’étape 2 autant de fois que nécessaire pour obtenir le nouvel ordre de saisie. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md index aa94b2fc1eac72..b4c8d0fc186071 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md @@ -96,72 +96,80 @@ Il n'y a aucune restriction sur le nombre de pages qu'un formulaire peut conteni Un formulaire multi-pages contient à la fois une page d'arrière-plan et plusieurs pages d'affichage. Les objets placés sur la page d'arrière-plan peuvent être visibles sur toutes les pages d'affichage, mais il ne peuvent être sélectionnés et modifiés que sur la page d'arrière-plan. Dans les formulaires multi-pages, vous devez placer votre palette de boutons sur la page d'arrière-plan. Vous devez également inclure un ou plusieurs objets sur la page d'arrière-plan qui fournissent à l'utilisateur des outils de navigation de page. -## Fluent UI rendering (Developer Preview) +## Rendu Fluent UI (Developer Preview) -On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +Sous Windows, 4D prend en charge le rendu de formulaire **Fluent UI**, l'interface utilisateur graphique moderne de Microsoft, basée sur la technologie **WinUI 3**. **WinUI 3** est la base du Windows App SDK et représente les prochaines interfaces graphiques de Windows. + +Le rendu Fluent UI offre des contrôles modernes et agréables, la prise en charge des thèmes système dark/light, un rendu plus fluide optimisé pour les écrans haute résolution et une expérience utilisateur cohérente alignée sur les applications Microsoft récentes. + +| Thème clair | Thème sombre | +| --------------------------------------- | -------------------------------------------- | +| ![](../assets/en/FormEditor/fluent.png) | ![](../assets/en/FormEditor/fluent-dark.png) | :::caution Developer Preview -Fluent UI support is currently in the Developer Preview phase. Il ne doit pas être utilisé en production. +La prise en charge de Fluent UI est actuellement en phase d'aperçu pour les développeurs. Il ne doit pas être utilisé en production. ::: :::info macOS -This feature can only be used on Windows. On macOS, it is ignored. +Cette fonctionnalité ne peut être utilisée que sous Windows. Sous macOS, elle est ignorée. ::: -### Fluent UI rendering availability +:::tip Article(s) de blog sur le sujet -The Fluent UI rendering is available in the following execution environments only: +[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- Application 4D fusionnée [autonome](../Desktop/building.md#build-stand-alone-application) ou [cliente](../Desktop/building.md#build-client-application) -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +::: -:::note +### Conditions requises -If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. +The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms. -::: +Si le Windows App SDK n'est pas correctement installé, 4D utilisera le rendu classique pour vos formulaires sans erreur. -### Enabling the Fluent UI rendering +### Activer le rendu Fluent UI -You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. +Vous pouvez activer le mode de rendu Fluent UI au niveau de l'application ou au niveau du formulaire. Le paramétrage du formulaire a la priorité par rapport aux paramètres de l'application. -#### Application setting +#### Paramètres de l'application -Check the **Use Fluent UI on Windows** option in the "Interface" page of the Settings dialog box. +Cochez l'option **Utiliser Fluent UI sous Windows** dans la page "Interface" de la boîte de dialogue des Propriétés. ![](../assets/en/FormObjects/fluentui-setting.png) -In this case, the Fluent UI rendering mode will be used by default on Windows for all forms. +Dans ce cas, le mode de rendu Fluent UI sera utilisé par défaut sur Windows pour tous les formulaires. -#### Form setting +#### Paramètres du formulaire -Each form can define its own rendering via the **Widget appearance** property. Les options suivantes sont disponibles : +Chaque formulaire peut définir son propre rendu via la propriété **Apparence des contrôles**. Les options suivantes sont disponibles : -- **Inherited**: inherits the global application setting (default), -- **Classic**: uses the classic Windows style, -- **Fluent UI**: enables the modern rendering based on Fluent UI.
    +- **Hérité** : hérite des propriétés globales de l'application (par défaut), +- **Classic** : utilise le style classique de Windows, +- **Fluent UI** : active le rendu moderne basé sur Fluent UI.
    ![](../assets/en/FormObjects/fluentui-form.png) -The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". +La [propriété de formulaire JSON](./properties_JSONref.md) correspondante est `fluentUI` avec la valeur undefined (i.e. hérité, valeur par défaut), "true" ou "false". -### Features and limitations +### Specific behaviors -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. +Lorsque vous utilisez les formulaires 4D avec le rendu Fluent UI, vous devez prêter attention aux points suivants : -When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: +- The new `FORM Windows theme` command returns the actual display theme of the current form. Valeurs possibles : "Classic" ou "FluentUI". S'il n'y a pas de formulaire courant ou si la commande est appelée sous macOS, une chaîne vide est renvoyée. +- Si [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) est appelée dans le contexte d'un formulaire, les informations renvoyées concernent l'apparence courante du formulaire (Classic ou FluentUI). Si la commande est appelée en dehors du contexte d'un formulaire, les informations renvoyées concernent les [propriétés globales du projet](#application-setting). +- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) avec le paramètre *itemStyle* `Underline` n'est pas pris en charge (ignoré) pour les menus pop up. +- L'objet de formulaire [Stepper](../FormObjects/stepper.md) ne prend pas en charge l'événement [double-clic](../Events/onDoubleClicked.md). +- Les [boutons circulaires](../FormObjects/button_overview.md#circle) sont pris en charge (comme sur macOS). +- Les commandes [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) ne sont pas prises en charge dans les zones Web avec moteur de rendu système. +- Un rectangle de focus peut être ajouté aux [zones de saisie](../FormObjects/input_overview.md) image et texte. -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. -- If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). -- [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). -- [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). -- [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). -- The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +:::info Limitations + +This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: ## Formulaires hérités diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/pictures.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/pictures.md index ea0e62531b19ed..cef951e302f09c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/pictures.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/pictures.md @@ -57,10 +57,10 @@ Les images haute résolution avec la convention @nx peuvent être utilisées dan Si 4D donne automatiquement la priorité à la résolution la plus élevée, il existe cependant des différences de comportement en fonction de la résolution de l'écran et de l'image *(\*)* et du format de l'image : -| Opération | Comportement | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Déposer ou Coller | If the picture has:
    • **72dpi or 96dpi** - The picture is "[Center](FormObjects/properties_Picture.md#center--truncated-non-centered)" formatted and the object containing the picture has the same number of pixels.
    • **Other dpi** - The picture is "[Scaled to fit](FormObjects/properties_Picture.md#scaled-to-fit)" formatted and the object containing the picture is equal to (picture's number of pixels \* screen dpi) / (picture's dpi)
    • **No dpi** - The picture is "[Scaled to fit](FormObjects/properties_Picture.md#scaled-to-fit)" formatted.
    | -| [Taille automatique](https://doc.4d.com/4Dv20/4D/20.2/Setting-object-display-properties.300-6750143.en.html#148057) (menu contextuel de l'éditeur de formulaires) | If the picture's display format is:
    • **[Scaled](FormObjects/properties_Picture.md#scaled-to-fit)** - The object containing the picture is resized according to (picture's number of pixels \* screen dpi) / (picture's dpi)
    • **Not scaled** - The object containing the picture has the same number of pixels as the picture.
    | +| Opération | Comportement | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Déposer ou Coller | Si l'image a :
    • **72dpi ou 96dpi** - L'image est formatée en "[Center](FormObjects/properties_Picture.md#center--truncated-non-centered)" et l'objet contenant l'image a le même nombre de pixels.
    • **Autre dpi** - L'image est formatée en "[Scaled to fit](FormObjects/properties_Picture.md#scaled-to-fit)" et l'objet contenant l'image est égal au (nombre de pixels de l'image \* dpi) / (dpi) de l'image
    • **Pas de dpi** - L'image est formatée en "[Scaled to fit](FormObjects/properties_Picture.md#scaled-to-fit)".
    | +| [Taille automatique](https://doc.4d.com/4Dv20/4D/20.2/Setting-object-display-properties.300-6750143.en.html#148057) (menu contextuel de l'éditeur de formulaires) | Si le format d'affichage de l'image est :
    • **[Scaled](FormObjects/properties_Picture.md#scaled-to-fit)** - L'objet contenant l'image est redimensionné en fonction du (nombre de pixels de l'image \* dpi écran) / (dpi image
    • ) **Not scaled** - L'objet contenant l'image a le même nombre de pixels que l'image.
    | *(\*) Généralement, macOS = 72 dpi, Windows = 96 dpi* diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/properties_FormSize.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/properties_FormSize.md index 6ab25ecd64f45e..f7d879c24c7fac 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/properties_FormSize.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/properties_FormSize.md @@ -11,15 +11,15 @@ Les options de taille dépendent de la valeur de l'option **Taille basée sur**. ## Taille basée sur -- **Automatic Size**: The size of the form will be that necessary to display all the objects, to which will be added the margin values (in pixels) entered in the [**Hor Margin**](#hor-margin) and [**Vert Margin**](#vert-margin) fields. +- **Taille automatique** : La taille du formulaire sera celle nécessaire à l'affichage de tous les objets, à laquelle s'ajouteront les valeurs de marge (en pixels) saisies dans les champs [**Marge hor.**](#hor-margin) et [**Marge vert.**](#vert-margin). Vous pouvez choisir cette option lorsque vous souhaitez utiliser des objets actifs placés dans une zone hors écran (c'est-à-dire en dehors du rectangle de délimitation de la fenêtre) avec une fenêtre de taille automatique. Grâce à cette option, la présence de ces objets ne modifiera pas la taille de la fenêtre. -- **Set Size**: The size of the form will be based on what you enter (in pixels) in the [**Width**](#width) and [**Height**](#height) fields. +- **Fixer taille** : La taille du formulaire sera basée sur ce que vous entrez (en pixels) dans les champs [**Largeur**](#width) and [**Hauteur**](#height). -- `\`: The size of the form will be based on the position of the selected form object. Par exemple, si vous choisissez un objet qui est placé dans la partie inférieure droite de la zone à afficher, la taille du formulaire sera constituée d'un rectangle dont le coin supérieur gauche sera l'origine du formulaire et le coin inférieur droit correspondra à celle de l'objet sélectionné, plus les éventuelles valeurs de marge. +- `` : La taille du formulaire sera basée sur la position de l'objet du formulaire sélectionné. Par exemple, si vous choisissez un objet qui est placé dans la partie inférieure droite de la zone à afficher, la taille du formulaire sera constituée d'un rectangle dont le coin supérieur gauche sera l'origine du formulaire et le coin inférieur droit correspondra à celle de l'objet sélectionné, plus les éventuelles valeurs de marge. -> For output forms, only the [**Hor margin**](#hor-margin) or [**Width**](#width) fields are available. +> Pour les formulaires de sortie, seuls les champs [**Marge hor.**](#hor-margin) ou [**Largeur**](#width) sont disponibles. #### Grammaire JSON @@ -43,7 +43,7 @@ Hauteur du formulaire (en pixels) lorsque la [taille du formulaire](#size-based- ## Marge hor. -Valeur à ajouter (en pixels) à la marge droite du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\` +Valeur à ajouter (en pixels) à la marge droite du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\` Cette valeur détermine également les marges droites des formulaires utilisés dans l'éditeur d'étiquettes. @@ -57,7 +57,7 @@ Cette valeur détermine également les marges droites des formulaires utilisés ## Marge hor. -Value to add (in pixels) to the bottom margin of the form when the [form size](#size-based-on) is **Automatic size** or `\`. +Valeur à ajouter (en pixels) à la marge inférieure du formulaire lorsque la [taille du formulaire](#size-based-on) est définie sur **Taille automatique** ou `\`. Cette valeur détermine également les marges supérieures des formulaires utilisés dans l'éditeur d'étiquettes. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/properties_Markers.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/properties_Markers.md index 59ce0d98af04cc..7d0eb15a2dd553 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/properties_Markers.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormEditor/properties_Markers.md @@ -21,9 +21,9 @@ Vous agrandissez ou réduisez la zone de rupture en faisant glisser le taquet ve #### Grammaire JSON -| Nom | Type de données | Valeurs possibles | -| ----------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| markerBreak | integer | integer collection | Break marker position or collection of break marker positions in pixels.
    Valeur minimale : 0 | +| Nom | Type de données | Valeurs possibles | +| ----------- | ----------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| markerBreak | integer | integer collection | Position du taquet de rupture ou collection des positions de taquets de rupture en pixels.
    Valeur minimale : 0 | --- @@ -77,9 +77,9 @@ Zone de rupture Un en-tête de niveau 1 est imprimé juste avant que les enregis #### Grammaire JSON -| Nom | Type de données | Valeurs possibles | -| ------------ | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | -| markerHeader | integer | integer collection | Header marker position or collection of header marker positions in pixels.
    Valeur minimale : 0 | +| Nom | Type de données | Valeurs possibles | +| ------------ | ----------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | +| markerHeader | integer | integer collection | Position du taquet d'en-tête ou collection des positions de taquets d'en-tête en pixels.
    Valeur minimale : 0 | ## Zones supplémentaires diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md index 35f9af9007f7a2..2405612664b108 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md @@ -191,15 +191,15 @@ Dans d'autres cas (list box basées sur des sélections nommées, colonnes assoc ## Action standard -Les actions types effectuées par les objets actifs (par exemple, permettre à l'utilisateur d'accepter, d'annuler ou de supprimer des enregistrements, de passer d'un enregistrement à l'autre ou d'une page à l'autre dans un formulaire à plusieurs pages, etc.) ont été prédéfinies par 4D comme des actions standard. Elles sont décrites en détail dans la section [Actions standard](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) du *manuel de développement*. +Les actions types effectuées par les objets actifs (par exemple, permettre à l'utilisateur d'accepter, d'annuler ou de supprimer des enregistrements, de passer d'un enregistrement à l'autre ou d'une page à l'autre dans un formulaire à plusieurs pages, etc.) ont été prédéfinies par 4D comme des actions standard. Elles sont décrites en détail dans la section [Actions standard](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) du *manuel de développement*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Vous pouvez associer à la fois une action standard et une méthode projet à un objet. Dans ce cas, l'action standard est généralement exécutée après la méthode et 4D utilise cette action pour activer/désactiver l'objet en fonction du contexte courant. Lorsqu’un objet est désactivé, la méthode projet associée ne peut être exécutée. #### Grammaire JSON -| Nom | Type de données | Valeurs possibles | -| ------ | --------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| action | string | Le nom d'une [action standard valide](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nom | Type de données | Valeurs possibles | +| ------ | --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objets pris en charge diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/GettingStarted/Installation.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/GettingStarted/Installation.md index 5f6e601f300fa6..d246dceb901e57 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/GettingStarted/Installation.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/GettingStarted/Installation.md @@ -7,7 +7,7 @@ Bienvenue dans 4D ! Cette page regroupe toutes les informations nécessaires sur ## Configuration requise -La page [Téléchargements](https://us.4d.com/product-download) dut site de 4D fournit des informations sur les pré-requis macOS / Windows nécessaires à la gamme 4D. +La page [Téléchargements](https://us.4d.com/product-download) du site de 4D fournit des informations sur les pré-requis macOS / Windows nécessaires à la gamme 4D. Des détails techniques supplémentaires sont disponibles sur la [page Ressources](https://us.4d.com/resources/feature-release) du site web de 4D. @@ -32,8 +32,8 @@ Apparaît ensuite l'assistant de bienvenue : - Si vous souhaitez découvrir et explorer 4D, cliquez sur le lien **essai gratuit**. Il vous sera demandé de vous connecter ou de créer un compte 4D. - Si vous possédez déjà un compte 4D, cliquez sur le lien **Se connecter** sur le côté supérieur droit de l'assistant d'installation et saisissez les informations relatives à votre compte. - - Any already activated 4D products are automatically updated (or additional expansion packs loaded) on your machine. - - If no product is activated on the machine but there is a development license associated with the 4D account, a dialog box appears, prompting you to install it directly. + - Tous les produits 4D déjà activés sont automatiquement mis à jour (ou des packs d'extension supplémentaires sont chargés) sur votre machine. + - Si aucun produit n'est activé sur la machine mais qu'une licence de développement est associée au compte 4D, une boîte de dialogue apparaît, vous proposant de l'installer directement. Élargissez la zone **Ouvrir ou créer un projet d'application** et sélectionnez l'action que vous souhaitez exécuter : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Menus/creating.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Menus/creating.md index d79f92455ae1b2..8ebe9c62f66df2 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Menus/creating.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Menus/creating.md @@ -33,7 +33,7 @@ Vous pouvez modifier cette barre de menus comme vous le souhaitez ou créer des 1. Sélectionnez l'élément que vous souhaitez créer et cliquez sur le bouton ajouter ![](../assets/en/Menus/PlussNew.png) sous la barre de menu. OU Choisissez la commande **Créer une nouvelle barre de menus** ou **Créer un nouveau menu** dans le menu contextuel de la liste ou dans le menu d’options situé sous la liste. - Si vous avez créé une barre de menus, une nouvelle barre de menus apparaît dans la liste, contenant les menus par défaut (Fichier et Edition). + Si vous avez créé une barre de menu, une nouvelle barre de menus apparaît dans la liste, contenant les menus par défaut (Fichier et Edition). 2. (Facultatif) Effectuez un double-clic sur le nom du menu/de la barre de menus afin de le rendre éditable et saisissez un nom personnalisé. OU Saisissez le nom personnalisé dans la zone “Titre”. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Notes/updates.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Notes/updates.md index efc6f3254a2bd7..41d9e35ed7eddf 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Notes/updates.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Notes/updates.md @@ -9,49 +9,50 @@ Lisez [**Les nouveautés de 4D 21**](https://blog.4d.com/fe-whats-new-in-4d-v21/ #### Points forts -- Support of AI Vector Searches in the [`query()`](../API/DataClassClass.md#query-by-vector-similarity) function and in the [`$filter`](../REST/$filter.md#vector-similarity) REST API. -- Support of TLS encryption for the [4D.TCPConnection](../API/TCPConnectionClass.md#4dtcpconnectionnew) class. -- Serveur Web: - - new [HTTP rules](../WebServer/http-rules.md) to customize HTTP response headers, - - ability to set [HTTP request handlers](../WebServer/http-request-handler.md) using a `handlers` property in the *settings* parameter of the Web server [`start()`](../API/WebServerClass.md#start) function, - - the Web server object contains new [`rules`](../API/WebServerClass.md#rules) and [`handlers`](../API/WebServerClass.md#handlers) properties. -- New [ORDA events on data](../ORDA/orda-events.md): validateSave, saving, afterSave, validateDrop, dropping, afterDrop. -- New option allowing to use certificates from Windows Certificate Store instead of a local certificates folder in [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) and [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew) classes. -- Client/server: - - You can display Qodly pages in Web areas and [share the remote client session](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). - - The [QUIC network layer](../settings/client-server.md#network-layer) has been enhanced to handle network interface changes transparently, for example when you travel with your laptop. See [this blog post](https://blog.4d.com/work-and-move-with-quic-and-network-switching). -- You can now [create components directly from the host project](../Extensions/develop-components.md#creating-components) and [edit their code from a dedicated tab](../Extensions/develop-components.md#editing-all-component-code) in the 4D Explorer without leaving or restarting the project. -- The 4D product activation step has been simplified and automated during [sign-in](../GettingStarted/Installation.md#sign-in). -- 4D AIKit component: new features to [invoke a specific tool automatically](../aikit/Classes/OpenAIChatHelper.md#registertool) and [specify a response format](../aikit/Classes/OpenAIChatCompletionsParameters.md#response-format). -- Langage 4D: - - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). - - [`Num`](../commands/num.md) and [`String`](../commands/string.md) commands have been updated to support conversions in different bases (radix). +- Prise en charge des recherches vectorielles d'IA dans la fonction [`query()`](../API/DataClassClass.md#query-by-vector-similarity) et dans l'API REST [`$filter`](../REST/$filter.md#vector-similarity). +- Prise en charge du cryptage TLS pour la classe [4D.TCPConnection](../API/TCPConnectionClass.md#4dtcpconnectionnew). +- Serveur Web : + - nouvelles [*HTTP rules*](../WebServer/http-rules.md) pour personnaliser les en-têtes de réponse HTTP, + - possibilité de définir des [gestionnaires de requêtes HTTP](../WebServer/http-request-handler.md) en utilisant une propriété `handlers` dans le paramètre *settings* de la fonction [`start()`](../API/WebServerClass.md#start) du serveur Web, + - l'objet serveur Web contient de nouvelles propriétés [`rules`](../API/WebServerClass.md#rules) et [`handlers`](../API/WebServerClass.md#handlers). +- Nouveaux [événements ORDA sur les données](../ORDA/orda-events.md) : validateSave, saving, afterSave, validateDrop, dropping, afterDrop. +- Nouvelle option permettant d'utiliser les certificats du Windows Certificate Store au lieu d'un dossier de certificats locaux dans les classes [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) et [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew). +- Client/serveur : + - Vous pouvez afficher des pages Qodly dans des zones Web et [partager la session du client distant](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). + - La [couche réseau QUIC](../settings/client-server.md#network-layer) a été renforcée pour gérer les changements d'interface réseau de manière transparente, par exemple lorsque vous voyagez avec votre ordinateur portable. Plus d'informations dans [cet article de blog](https://blog.4d.com/work-and-move-with-quic-and-network-switching). +- Vous pouvez désormais [créer des composants directement à partir du projet hôte](../Extensions/develop-components.md#creating-components) et [éditer leur code à partir d'un onglet dédié](../Extensions/develop-components.md#editing-all-component-code) dans l'explorateur 4D sans quitter ou redémarrer le projet. +- L'étape d'activation du produit 4D a été simplifiée et automatisée lors de la [connexion](../GettingStarted/Installation.md#sign-in). +- Composant 4D AIKit : nouvelles fonctionnalités pour [invoquer un outil spécifique automatiquement](../aikit/Classes/OpenAIChatHelper.md#registertool) et [spécifier un format de réponse](../aikit/Classes/OpenAIChatCompletionsParameters.md#response-format). +- Langage 4D : + - Nouvelles commandes "trim" pour supprimer les espaces de début et de fin d'une chaîne : [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), et [`Trim end`](../commands/trim-end.md). + - Les commandes [`Num`](../commands/num.md) et [`String`](../commands/string.md) ont été mises à jour pour prendre en charge des conversions dans différentes bases (radix). +- [**Liste des bugs corrigés**](https://bugs.4d.fr/fixedbugslist?version=21) : liste de tous les bugs qui ont été corrigés dans 4D 21. #### Developer Preview -[**Fluent UI** rendering for 4D forms](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) is proposed in Developer Preview during the beta test program. +Le [rendu **Fluent UI** pour les formulaires 4D](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) est proposé en Developer Preview pendant le programme de bêta-test. #### Changements de comportement -:::caution Index rebuild +:::caution Reconstruction d'index -4D 21 includes an ICU library update ([see below](#library-table)) which will force an automatic rebuild of indexes of type alpha, text, and object. En fonction de la taille du fichier de données, cette opération peut prendre un certain temps et nécessiter une planification. +4D 21 inclut une mise à jour de la bibliothèque ICU ([voir ci-dessous](#library-table)) qui forcera une reconstruction automatique des index de type alpha, texte et objet. En fonction de la taille du fichier de données, cette opération peut prendre un certain temps et nécessiter une planification. ::: -- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. -- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. -- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). -- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. -- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    +- Services web (SOAP) : lorsque les [sessions évolutives](../WebServer/sessions.md#enabling-web-sessions) sont activées, les services web s'exécutent désormais dans des [**process préemptifs**](../Develop/preemptive.md) en mode compilé. Assurez-vous que votre code SOAP est thread-safe. +- Serveur web : la prise en charge des URLs dépréciés `4DSYNC/` et `4DCGI/` est supprimée. Plus aucun traitement spécifique n'est effectué sur ces URLs. +- Les sessions utilisateurs Web sont désormais renvoyées par [`Process activity`](../commands/process-activity.md). +- La commande [`HIGHLIGHT TEXT`](../commands/highlight-text) est maintenant prise en charge dans le contexte des sous-formulaires. +- **Les composants ne sont plus intégrés** : à partir de 4D 21, les composants développés par 4D (4D NetKit, 4D SVG..., voir [cette liste](../Extensions/overview.md#components-developed-by-4d)) ne sont plus intégrés dans l'application 4D. Lors de la mise à jour d'un projet vers 4D 21 ou supérieur, une boîte de dialogue s'affiche :
    ![alt-text](../assets/en/getStart/convert.png)
    - \- **Import**: import automatically 4D components as dependencies to the project
    - \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    - \- **Ask later**: do not import components and display the dialog at the next project opening. + \- **Import**/**Importer** : importer automatiquement les composants 4D comme dépendances du projet
    + \- **Ignore**/**Ignorer** : ne pas importer les composants et vous laisser [gérer les composants manuellement](../Project/components.md)
    + \- **Ask later**/**Redemander** : ne pas importer les composants et afficher la boîte de dialogue lors de la prochaine ouverture du projet. :::note -In binary databases, you need to select the required components in the 4D installer or download them from the [4D Product Download portal](https://product-download.4d.com/?type=components). +Dans les bases de données binaires, vous devez sélectionner les composants requis dans le programme d'installation de 4D ou les télécharger à partir du [portail de téléchargement des produits 4D](https://product-download.4d.com/?type=components). ::: @@ -61,30 +62,30 @@ Lisez [**Les nouveautés de 4D 20 R10**](https://blog.4d.com/fe-whats-new-in-4d- #### Points forts -- Handling of [ORDA events on data](../ORDA/orda-events.md). +- Gestion des [événements ORDA sur les données](../ORDA/orda-events.md). - Nouvelle option `connectionTimeout` dans le paramètre [`options`](../API/TCPConnectionClass.md#options-parameter) de la fonction [`4D.TCPConnection.new()`](../API/TCPConnectionClass.md#4dtcpconnectionnew). -- New [`4D.Vector`](../API/VectorClass.md) class to process and compare vectors, usually calculated by AIs. -- New options to generate UUIDs in **version 7** for [4D automatic fields](../settings/database.md#auto-uuid-version) and [`Generate UUID`](../commands/generate-uuid) command. -- New [`UDPSocket`](../API/UDPSocketClass.md) and [`UDPEvent`](../API/UDPEventClass.md) classes to send data using UDP sockets. Support of detailed logging for UDP events in the [`4DTCPUDPLog.txt`](../Debugging/debugLogFiles.md#4dtcpudplogtxt) log file (renamed from `4DTCPLog.txt`). -- New [`.promote()`](../API/SessionClass.md#promote) and [`.demote()`](../API/SessionClass.md#demote) functions in the [Session class](../API/SessionClass.md) to dynamically add/remove privileges in a web process. -- [Automatic selection of licenses to embed](../Desktop/building.md#application-automatically-embedding-available-licenses) in the Build application dialog box, modified [`Create deployment license`](../commands/create-deployment-license.md) command, new [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html) BuildApplication xml key. -- Enhanced security for formula copy/paste in [4D Write Pro](../WritePro/managing-formulas.md) and [styled text areas](../FormObjects/input_overview.md): formulas copied from outside the current 4D application are now always pasted as values only. -- 4D AIKit component: new [OpenAIEmbeddingsAPI class](../aikit/Classes/OpenAIEmbeddingsAPI.md) to create embeddings using OpenAI's API. -- You can now [associate a class](../Develop/field-properties.md) to an object field in the structure editor. -- Automatic handling of [recursive dependencies](../Project/components.md#automatic-dependency-resolution). -- Langage 4D: +- Nouvelle classe [`4D.Vector`](../API/VectorClass.md) pour traiter et comparer des vecteurs, généralement calculés par des IA. +- Nouvelles options pour générer des UUIDs en **version 7** pour les [champs 4D automatiques](../settings/database.md#auto-uuid-version) et la commande [`Generate UUID`](../commands/generate-uuid). +- Nouvelles classes [`UDPSocket`](../API/UDPSocketClass.md) et [`UDPEvent`](../API/UDPEventClass.md) pour envoyer des données en utilisant des sockets UDP. Prise en charge de la journalisation détaillée des événements UDP dans le fichier journal [`4DTCPUDPLog.txt`](../Debugging/debugLogFiles.md#4dtcpudplogtxt) (anciennement nommé `4DTCPLog.txt`). +- Nouvelles fonctions [`.promote()`](../API/SessionClass.md#promote) et [`.demote()`](../API/SessionClass.md#demote) dans la [classe Session](../API/SessionClass.md) pour ajouter/supprimer dynamiquement des privilèges dans un process web. +- [Sélection automatique des licences à intégrer](../Desktop/building.md#application-automatically-embedding-available-licenses) dans la boîte de dialogue du Générateur d'application, modification de la commande [`Create deployment license`](../commands/create-deployment-license.md), nouvelle clé xml BuildApplication [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html). +- Sécurité renforcée pour le copier/coller de formules dans [4D Write Pro](../WritePro/managing-formulas.md) et les [zones de texte stylées](../FormObjects/input_overview.md) : les formules copiées depuis l'extérieur de l'application 4D en cours sont désormais toujours collées en tant que valeurs uniquement. +- Composant 4D AIKit : nouvelle classe [OpenAIEmbeddingsAPI](../aikit/Classes/OpenAIEmbeddingsAPI.md) pour créer des embeddings à l'aide de l'API OpenAI. +- Vous pouvez [associer une classe](../Develop/field-properties.md) à un champ objet dans l'éditeur de structure. +- Gestion automatique des [dépendances récursives](../Project/components.md#automatic-dependency-resolution). +- Langage 4D : - Pour des raisons de cohérence, les commandes [`Create entity selection`](../commands/create-entity-selection.md) et [`USE ENTITY SELECTION`](../commands/use-entity-selection.md) ont été déplacées du thème ["4D Environnement"](../commands/theme/4D_Environment.md) vers le thème ["Sélections"](../commands/theme/Selection.md). - Nouvelles commandes [`OBJET SET DATA SOURCE FORMULA`](../commands/object-set-data-source-formula.md) et [`OBJECT Get data source formula`](../commands/object-get-data-source-formula.md) pour assigner et lire les objets `Formula` comme sources de données pour les objets de formulaire. - [`LISTBOX SET PROPERTY`](../commands/listbox-set-property.md) et [`LISTBOX Get property`](../commands/listbox-get-property.md) prennent en charge trois nouvelles constantes : `lk current item`, `lk current item position`, et `lk selected items expression`. -- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=20_R10): list of all bugs that have been fixed in 4D 20 R10. +- [**Liste des bugs corrigés**](https://bugs.4d.fr/fixedbugslist?version=20_R10) : liste de tous les bugs qui ont été corrigés dans 4D 20 R10. #### Changements de comportement - Sous Windows, les polices d'imprimante courantes destinées uniquement à l'impression (c'est-à-dire non utilisables à l'écran) ne sont plus chargées par 4D au démarrage. -- The *MeCab* library has been removed. This change only affects the processing of Japanese text. -- When an object variable or parameter is declared with a ["cs" class](../Concepts/classes.md#cs) type, assigning it with an object instance of a different class now generates a syntax error. -- [`.hasPrivilege()`](../API/SessionClass.md#hasprivilege) returns True for promoted privileges in the web process. -- The [`Time`](../commands/time) command now returns a negative time expression when the *timeValue* parameter is negative. For instance, `Time("-01:02:03")` will return **-01:02:03**. In previous releases, the negative sign was ignored. +- La bibliothèque *MeCab* a été supprimée. Cette modification n'affecte que le traitement du texte japonais. +- Lorsqu'une variable objet ou un paramètre objet est déclaré(e) avec un type ["cs" class](../Concepts/classes.md#cs), son affectation à une instance d'objet d'une classe différente génère désormais une erreur de syntaxe. +- [`.hasPrivilege()`](../API/SessionClass.md#hasprivilege) renvoie True pour les privilèges promus dans le process web. +- La commande [`Time`](../commands/time) renvoie désormais une expression temporelle négative lorsque le paramètre *timeValue* est négatif. Par exemple, `Time("-01:02:03")` renverra **-01:02:03**. Dans les versions précédentes, le signe moins était ignoré. ## 4D 20 R9 @@ -95,7 +96,7 @@ Lisez [**Les nouveautés de 4D 20 R9**](https://blog.4d.com/fe-whats-new-in-4d-2 - La bibliothèque [*MeCab*](../settings/database.md#support-of-mecab-japanese-version) est désormais obsolète et sera supprimée dans la prochaine version. - Prise en charge des [tokens de session](../WebServer/sessions.md#session-token-otp) gérés avec les nouvelles fonctions [`Session.createOTP()`](../API/SessionClass.md#createotp) et [`Session.restore()`](../API/SessionClass.md#restore). - L'assistant d'étiquettes utilise maintenant l'éditeur de formules pour ajouter ou éditer des formules dans la [zone de construction du modèle](../Desktop/labels.md#label-preview). -- New [`TCPListener`](../API/TCPListenerClass.md) class to create TCP server connections; new properties in related classes: `address`, `listener` and `port` in [`TCPConnection`](../API/TCPConnectionClass.md) class, `address` and `port` in [`TCPEvent`](../API/TCPEventClass.md) class. +- Nouvelle classe [`TCPListener`](../API/TCPListenerClass.md) pour créer des connexions à un serveur TCP ; nouvelles propriétés dans les classes associées : `address`, `listener` et `port` dans la classe [`TCPConnection`](../API/TCPConnectionClass.md), `address` et `port` dans la classe [`TCPEvent`](../API/TCPEventClass.md). - Les commandes et constantes obsolètes génèrent maintenant des warnings spécifiques dans le [live checker et le compilateur](../code-editor/write-class-method.md#warnings-and-errors). Vous pouvez savoir si une commande est obsolète en utilisant la commande [`Command name`](../commands/command-name.md). - Nouvelles commandes [WA SET CONTEXT](../commands/wa-set-context.md) et [WA Get context](../commands/wa-get-context.md) pour contrôler le contenu de [$4d](../FormObjects/webArea_overview.md#4d-object) dans les zones web. - Nouveau paramètre de base de données [`RDP optimization`](../commands-legacy/set-database-parameter.md#rdp-optimization-133) pour optimiser par exemple le presse-papiers partagé lors de l'utilisation du protocole de bureau distant avec 4D. @@ -127,7 +128,7 @@ Lisez [**Les nouveautés de 4D 20 R8**](https://blog.4d.com/fe-whats-new-in-4d-2 - Les commandes suivantes acceptent maintenant des paramètres tels que des objets ou des collections : [WP SET ATTRIBUTES](../WritePro/commands/wp-set-attributes.md), [WP Get Attributes](../WritePro/commands/wp-get-attributes.md), [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md), [WP Table append row](../WritePro/commands/wp-table-append-row.md), [WP Import document](../WritePro/commands/wp-import-document.md), [WP EXPORT DOCUMENT](../WritePro/commands/wp-export-document.md), [WP Add picture](../WritePro/commands/wp-add-picture.md), et [WP Insert picture] (../WritePro/commands/wp-insert-picture.md). - [WP Insert formula](../WritePro/commands/wp-insert-formula.md), [WP Insert document body](../WritePro/commands/wp-insert-document-body.md), et [WP Insert break](../WritePro/commands/wp-insert-break.md), sont maintenant des fonctions qui retournent des plages. - Nouvelles expressions liées aux attributs de documents : [This.sectionIndex](../WritePro/managing-formulas.md), [This.sectionName](../WritePro/managing-formulas.md) et [This.pageIndex](../WritePro/managing-formulas.md). -- Langage 4D: +- Langage 4D : - Commande modifiée : [`FORM EDIT`](../commands/form-edit.md) - Les fonctions [`.sign()`](../API/CryptoKeyClass.md#sign) et [`.verify()`](../API/CryptoKeyClass.md#verify) de la [classe 4D.CryptoKey](../API/CryptoKeyClass.md) prennent en charge des Blobs dans le paramètre *message*. - [**Liste des bugs corrigés**](https://bugs.4d.fr/fixedbugslist?version=20_R8) : liste de tous les bugs qui ont été corrigés dans 4D 20 R8. @@ -153,10 +154,10 @@ Lisez [**Les nouveautés de 4D 20 R7**](https://blog.4d.com/fe-whats-new-in-4d-2 - Qodly Studio : Vous pouvez maintenant [attacher le débogueur Qodly à 4D Server](../WebServer/qodly-studio.md#using-qodly-debugger-on-4d-server). - Nouvelles clés Build Application pour que les applications 4D distantes valident les [signatures](https://doc.4d.com/4Dv20R7/4D/20-R7/CertificateAuthoritiesCertificates.300-7425900.fe.html) et/ou les [domaines](https://doc.4d.com/4Dv20R7/4D/20-R7/CertificateDomainName.300-7425906.fe.html) des autorités de certification des serveurs. - Possibilité de [construire des applications autonomes sans licences intégrées](../Desktop/building.md#licenses). -- Langage 4D: +- Langage 4D : - Nouvelles commandes : [Process info](../commands/process-info.md), [Session info](../commands/session-info.md), [SET WINDOW DOCUMENT ICON](../commands/set-window-document-icon.md) - Commandes modifiées : [Process activity](../commands/process-activity.md), [Process number](../commands/process-number.md) - - Deprecated commands (replacement): `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) and [#DECLARE/Function](../Concepts/parameters.md#declaring-parameters) declarations). Deprecated commands are prefixed with "\*o\*". + - Commandes obsolètes (remplacement) : `GET LAST ERROR STACK` ([Last errors](../commands/last-errors.md)), `GET SERIAL INFORMATION` ([License info](../commands/license-info.md)), `PROCESS PROPERTIES` ([Process info](../commands/process-info.md)), `SET SCREEN DEPTH`, `C_XXX` commands ([var](../Concepts/variables.md#declaring-variables) et [#DECLARE/déclarations Function](../Concepts/parameters.md#declaring-parameters) ). Les commandes obsolètes sont précédées du préfixe "\*o\*". - 4D Write Pro : - Nouvelle commande : [WP DELETE SECTION](../WritePro/commands/wp-delete-section.md) - Commandes modifiées : [WP DELETE SUBSECTION](../WritePro/commands/wp-delete-subsection.md), [WP RESET ATTRIBUTES](../WritePro/commands/wp-reset-attributes.md) @@ -291,23 +292,23 @@ Voir [**Release Notes pour 4D 20.x LTS**](../../version-20/Notes/updates.md). ## Tableau des bibliothèques -| Bibliothèque | Version courante | Mise à jour dans 4D | Commentaire | -| ------------ | -------------------------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | -| BoringSSL | fa47b1d | **21** | 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** | This upgrade forces an automatic rebuild of alphanumeric, text and object indexes. | -| libldap | 2.6.10 | **21** | | -| libsasl | 2.1.28 | 20 | | -| Liblsquic | 4.2.0 | 20 R10 | Utilisé pour QUIC | -| 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.16.0 | **21** | Utilisé pour 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) | -| PHP | 8.2.4 | 20 | | -| SpreadJS | 17.1.0 | 20 R7 | Voir [ce blog post](https://blog.4d.com/4d-view-pro-whats-new-in-4d-20-r7/) pour un aperçu des nouvelles fonctionnalités. | -| webKit | WKWebView | 19 | | -| Xerces | 3.3.0 | **21** | Used for XML commands | -| Zlib | 1.3.1 | **21** | | +| Bibliothèque | Version courante | Mise à jour dans 4D | Commentaire | +| ------------ | -------------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| BoringSSL | fa47b1d | **21** | 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. | +| libldap | 2.6.10 | **21** | | +| libsasl | 2.1.28 | 20 | | +| Liblsquic | 4.2.0 | 20 R10 | Utilisé pour QUIC | +| 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.16.0 | **21** | 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) | +| PHP | 8.2.4 | 20 | | +| SpreadJS | 17.1.0 | 20 R7 | Voir [ce blog post](https://blog.4d.com/4d-view-pro-whats-new-in-4d-20-r7/) pour un aperçu des nouvelles fonctionnalités. | +| webKit | WKWebView | 19 | | +| Xerces | 3.3.0 | **21** | Utilisé pour les commandes XML | +| Zlib | 1.3.1 | **21** | | diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/client-server-optimization.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/client-server-optimization.md index 5cc95b6062eb55..090b1b0011716a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/client-server-optimization.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/client-server-optimization.md @@ -3,7 +3,7 @@ id: client-server-optimization title: Optimisation client/serveur --- -4D optimise automatiquement les requêtes ORDA qui utilisent des entity selections ou chargent des entités dans l'architecture client/serveur. Ces optimisations accélèrent l'exécution de votre application 4D en réduisant drastiquement le volume d'informations transmises sur le réseau. Elles incluent : +En architecture client/serveur, 4D optimise automatiquement les requêtes ORDA qui utilisent des entity selections ou chargent des entités. Ces optimisations accélèrent l'exécution de votre application 4D en réduisant drastiquement le volume d'informations transmises sur le réseau. Elles incluent : - le **contexte d'optimisation** - le **Cache ORDA** @@ -27,7 +27,7 @@ Le contexte d'optimisation est fondé sur ce qui suit : - [`dataClass.query()`](../API/DataClassClass.md#query) - [`entitySelection.query()`](../API/EntitySelectionClass.md#query) -- Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. L'affichage des lignes suivantes est optimisé. Les fonctions suivantes associent automatiquement le contexte d'optimisation de l'entity selection d'origine à l'entity selection retournée : +- Les requêtes ultérieures envoyées au serveur sur la même entity selection réutilisent automatiquement le contexte d'optimisation et lisent uniquement les attributs nécessaires depuis le serveur, ce qui accélère le traitement. Par exemple, dans une [list box de type entity selection](#entity-selection-based-list-box), la phase d'apprentissage a lieu pendant l'affichage de la première ligne. L'affichage des lignes suivantes est optimisé. Les fonctions suivantes associent automatiquement le contexte d'optimisation de l'entity selection d'origine à l'entity selection retournée : - [`entitySelection.and()`](../API/EntitySelectionClass.md#and) - [`entitySelection.minus()`](../API/EntitySelectionClass.md#minus) - [`entitySelection.or()`](../API/EntitySelectionClass.md#or) @@ -35,7 +35,7 @@ Le contexte d'optimisation est fondé sur ce qui suit : - [`entitySelection.slice()`](../API/EntitySelectionClass.md#slice) - [`entitySelection.drop()`](../API/EntitySelectionClass.md#drop) -- An existing optimization context can be passed as a property to another entity selection of the same dataclass, thus bypassing the learning phase and accelerating the application (see [Reusing the context property](#reusing-the-context-property) below). +- Un contexte d'optimisation existant peut être passé en tant que propriété à une autre entity selection de la même dataclass, ce qui permet d'économiser la phase d'apprentissage et d'accélérer l'application (voir [Réutilisation de la propriété context](#reusing-the-context-property) ci-dessous). - Vous pouvez créer des contextes d'optimisation manuellement à l'aide de la fonction [`dataStore.setRemoteContextInfo()`](../API/DataStoreClass.md#setremotecontextinfo) (voir [Préconfiguration des contextes](#preconfiguring-contexts)). @@ -66,7 +66,7 @@ Vous pouvez augmenter les avantages de l'optimisation en utilisant la propriét > Vous pouvez également créer des contextes en utilisant la fonction [`.setRemoteContextInfo()`](../API/DataStoreClass.md#setremotecontextinfo). -Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Il est toutefois important de garder à l'esprit qu'un contexte est automatiquement mis à jour lorsque de nouveaux attributs sont utilisés dans d'autres parties du code. Si le même contexte est réutilisé dans différents codes, il risque d'être surchargé et de perdre en efficacité. +Une même propriété de contexte d'optimisation peut être passée à un nombre illimité d"entity selections de la même dataclass. Toutes les fonctions ORDA qui gèrent les entity selections prennent en charge la propriété **context** (par exemple [`dataClass.query()`](../API/DataClassClass.md#query) ou [`dataClass.all()`](../API/DataClassClass.md#all)). Il est toutefois important de garder à l'esprit qu'un contexte est automatiquement mis à jour lorsque de nouveaux attributs sont utilisés dans d'autres parties du code. Si le même contexte est réutilisé dans différents codes, il risque d'être surchargé et de perdre en efficacité. > Un mécanisme similaire est implémenté pour les entités qui sont chargées, de sorte que seuls les attributs utilisés sont demandés (voir la fonction [`dataClass.get()`](../API/DataClassClass.md#get)). @@ -77,22 +77,22 @@ Une même propriété de contexte d'optimisation peut être passée à un nombre var $data : Collection $querysettings:=New object("context";"shortList") $querysettings2:=New object("context";"longList") - + $sel1:=ds.Employee.query("lastname = S@";$querysettings) - $data:=extractData($sel1) // In extractData method an optimization is triggered - // and associated to context "shortList" - + $data:=extractData($sel1) // dans la méthode extractData un contexte d'optimisation + // est généré et associé au contexte "shortList" + $sel2:=ds.Employee.query("lastname = Sm@";$querysettings) - $data:=extractData($sel2) // In extractData method the optimization associated - // to context "shortList" is applied - + $data:=extractData($sel2) // dans la méthode extractData le contexte d'optimisation + // associé au contexte "shortList" est appliqué + $sel3:=ds.Employee.query("lastname = Smith";$querysettings2) - $data:=extractDetailedData($sel3) // In extractDetailedData method an optimization - // is triggered and associated to context "longList" - + $data:=extractDetailedData($sel3) // dans la méthode extractDetailedData un contexte d'optimisation + // est généré et associé au contexte "longList" + $sel4:=ds.Employee.query("lastname = Brown";$querysettings2) - $data:=extractDetailedData($sel4) // In extractDetailedData method the optimization - // associated to context "longList" is applied + $data:=extractDetailedData($sel4) // dans extractDetailedData le contexte d'optimisation + // associé au contexte "longList" est appliqué ``` ### List box de type entity selection @@ -133,7 +133,7 @@ Pour des raisons d'optimisation, les données demandées au serveur via ORDA son Les données contenues dans le cache sont considérées comme expirées lorsque le délai d'attente est atteint. Tout accès à des données périmées provoquera l'envoi d'une requête au serveur. Les données périmées restent dans le cache jusqu'à ce que l'on ait besoin d'espace. -You can force entity selection data in the ORDA cache to expire at any moment by using the [`refresh()`](../API/EntitySelectionClass.md#refresh) function. +Vous pouvez forcer les données de sélection d'entité dans le cache ORDA à expirer à tout moment en utilisant la fonction [`refresh()`](../API/EntitySelectionClass.md#refresh). Par défaut, le cache ORDA est géré de manière transparente par 4D. Cependant, vous pouvez contrôler son contenu en utilisant les fonctions ORDA suivantes : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/dsMapping.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/dsMapping.md index 15c307c47cc3e3..e5dbe4896d20e7 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/dsMapping.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/dsMapping.md @@ -3,15 +3,15 @@ id: dsmapping title: Objets du modèle de données --- -The ORDA technology is based upon an automatic mapping of an underlying [database structure](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html). Elle permet également d'accéder aux données via des objets sélection d'entités (entity selection) et entité (entity). Par conséquent, ORDA expose la base de données entière comme un ensemble d'objets de modèle de données. +La technologie ORDA est basée sur une correspondance automatique d'une [structure de base de données](https://doc.4d.com/4Dv20/4D/20.2/Creating-a-database-structure.200-6750097.en.html) sous-jacente. Elle permet également d'accéder aux données via des objets sélection d'entités (entity selection) et entité (entity). Par conséquent, ORDA expose la base de données entière comme un ensemble d'objets de modèle de données. ## Correspondance de la structure Lorsque vous appelez un datastore à l'aide de la commande [`ds`](commands/ds.md) ou [`Open datastore`](commands/open-datastore.md), 4D référence automatiquement les tables et les champs de la structure 4D correspondante en tant que propriétés de l'objet [datastore](#datastore) renvoyé : -- Tables are mapped to [dataclasses](#dataclass). -- Fields are mapped to [storage attributes](#storage-and-relation-attributes). -- Relations are mapped to [relation attributes](#storage-and-relation-attributes) - relation names, defined in the [Structure editor](https://doc.4d.com/4Dv20/4D/20.2/Creating-and-modifying-relations.300-6750296.en.html), are used as relation attribute names. +- Les tables correspondent à des [dataclasses](#dataclass). +- Les champs correspondent à des [attributs de stockage](#storage-and-relation-attributes). +- Les liens correspondent à des [attributs relationnels](#storage-and-relation-attributes) - les noms des liens, définis dans l'[éditeur de structure](https://doc.4d.com/4Dv20/4D/20.2/Creating-and-modifying-relations.300-6750296.en.html), sont utilisés comme noms d'attributs de relation. ![](../assets/en/ORDA/datastoreMapping.png) @@ -19,7 +19,7 @@ Lorsque vous appelez un datastore à l'aide de la commande [`ds`](commands/ds.md Les règles suivantes s'appliquent à toutes les conversions : -- Les noms de table, de champ et de relation correspondent à des noms de propriété d'objet. Assurez-vous que ces noms sont conformes aux règles générales de dénomination des objets, comme expliqué dans la section [Conventions de dénomination des objets](Concepts/identifiers.md). +- Les noms de table, de champ et de relation correspondent à des noms de propriété d'objet. Assurez-vous que ces noms sont conformes aux règles générales de dénomination des objets, comme expliqué dans la section [consacrée aux identifiants](Concepts/identifiers.md). - Un datastore ne référence que les tables avec une seule clé primaire. Les tables suivantes ne sont pas référencées : - Tables sans clé primaire - Tables avec clés primaires composites. @@ -28,12 +28,12 @@ Les règles suivantes s'appliquent à toutes les conversions : > La correspondance ORDA ne prend pas en compte : > > - l'option "Invisible" pour les tables ou les champs, -> - the virtual structure defined through [`SET TABLE TITLES`](../commands-legacy/set-table-titles.md) or [`SET FIELD TITLES`](../commands-legacy/set-field-titles.md), +> - la structure virtuelle définie par [`SET TABLE TITLES`](../commands-legacy/set-table-titles.md) et [`SET FIELD TITLES`](../commands-legacy/set-field-titles.md), > - la propriété "manuelle" ou "automatique" des relations. ### Règles de contrôle d'accès à distance -Lorsque vous accédez à un datastore distant via la commande `Ouvrir datastore` ou des [requêtes REST](REST/gettingStarted.md), seules les tables et les champs avec la propriété de ressource **Expose as REST resource** sont disponibles à distance. +Lorsque vous accédez à un datastore distant via la commande `Open datastore` ou des [requêtes REST](REST/gettingStarted.md), seuls les tables et les champs avec la propriété **Exposer avec le service REST** sont disponibles à distance. Cette option doit être choisie au niveau de la structure 4D pour chaque table et chaque champ que vous souhaitez voir apparaître comme dataclass et attribut dans le datastore : @@ -47,12 +47,12 @@ Toute modification apportée à la structure de la base invalide la couche coura - le renommage d'une table, d'un champ ou d'une relation - la modification d'une propriété principale d'un champ (type, unique, index, autoincrement, valeur null) -Lorsque la couche courante de données ORDA est invalidée, elle est automatiquement rechargée et mise à jour dans les prochains appels du datastore local `ds` vers 4D et 4D Server. A noter que les références existantes vers des objets ORDA tels que des entités ou des sélections d'entités continueront d'utiliser les données à partir desquelles elles ont été créées, et ce jusqu'à ce qu'elles soient regénérées. +Lorsque le modèle ORDA courant est invalidé, il est automatiquement rechargé et mis à jour dans les appels ultérieurs du datastore local `ds` sur 4D et 4D Server. A noter que les références existantes vers des objets ORDA tels que des entités ou des sélections d'entités continueront d'utiliser les données à partir desquelles elles ont été créées, et ce jusqu'à ce qu'elles soient regénérées. Toutefois, la couche de données ORDA mise à jour n'est pas automatiquement disponible dans les contextes suivants : - une application 4D distante connectée à 4D Server -- l'application distante doit être reconnectée au serveur. -- un datastore distant ouvert à l'aide de `Ouvrir datastore` ou des [appels REST](REST/gettingStarted.md) -- une nouvelle session doit être ouverte. +- un datastore distant ouvert à l'aide de `Open datastore` ou des [appels REST](REST/gettingStarted.md) -- une nouvelle session doit être ouverte. ## Définitions des objets @@ -63,14 +63,14 @@ Un datastore est l'objet d'interface d'une base de données. Il crée une repré - Le modèle contient et décrit toutes les dataclasses qui composent le datastore. Il est indépendant de la base de données sous-jacente. - Les données se réfèrent à l'information qui va être utilisée et stockée dans ce modèle. Par exemple, les noms, adresses et dates de naissance des employés sont des éléments de données que vous pouvez utiliser dans un datastore. -A datastore object is handled through functions and properties of the [**DataStore**](../API/DataStoreClass.md) class. +Un objet datastore est géré par les fonctions et les propriétés de la classe [**DataStore**](../API/DataStoreClass.md). Lorsqu'il est géré via le code, le datastore est un objet dont les propriétés sont toutes les [dataclasses](#dataclass) ayant été spécifiquement exposées. -4d vous permet de gérer les datastores suivants : +4D vous permet de gérer les datastores suivants : - le datastore local, fondé sur la base 4D courante, retourné par la commande `ds` (le datastore principal). -- un ou plusieurs datastores distants, exposés en tant que ressources RESET dans des bases 4D distantes, retournés par la commande `Ouvrir datastore`. +- un ou plusieurs datastores distants, exposés en tant que ressources RESET dans des bases 4D distantes, retournés par la commande `Open datastore`. Un datastore ne référence qu'une seule base de données locale ou distante. @@ -88,21 +88,21 @@ Les propriétés du datastore sont toutefois énumérables : //$prop contient les noms de toutes les dataclasses ``` -Le datastore principal (par défaut) est toujours disponible via la commande `ds`, mais la commande `Ouvrir datastore` permet de référencer n'importe quel datastore distant. +Le datastore principal (par défaut) est toujours disponible via la commande `ds`, mais la commande `Open datastore` permet de référencer n'importe quel datastore distant. ### Dataclass Une dataclasse est l'équivalent d'une table. Elle est utilisée comme modèle d'objet et référence tous les champs comme attributs, y compris les attributs relationnels (attributs construits à partir des relations entre les dataclasses). Les attributs relationnels peuvent être utilisés dans les requêtes comme tout autre attribut. -A dataclass object is handled through functions and properties of the [**DataClass**](../API/DataClassClass.md) class. +Un objet dataclass est géré par les fonctions et les propriétés de la classe [**DataClass**](../API/DataClassClass.md). -Toutes les dataclasses d'un projet 4D sont disponibles en tant que propriété du datastore `ds`. Pour les datastores distants accédés via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer comme ressource REST** doit être sélectionnée au niveau de la structure 4D pour chaque table que vous souhaitez exposer en tant que dataclass du datastore. +Toutes les dataclasses d'un projet 4D sont disponibles en tant que propriété du datastore `ds`. Pour les datastores distants accédés via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer avec le service REST** doit être sélectionnée au niveau de la structure 4D pour chaque table que vous souhaitez exposer en tant que dataclass du datastore. Par exemple, considérons cette table dans la structure suivante : ![](../assets/en/ORDA/companyTable.png) -La table `Company` est automatiquement disponible en tant que dataclasse dans la banque de données `ds`. Vous pouvez écrire : +La table `Company` est automatiquement disponible en tant que dataclass dans le datastore `ds`. Vous pouvez écrire : ```4d var $compClass : cs.Company //déclare une variable objet $compClass de la classe Company @@ -139,10 +139,10 @@ Les propriétés de dataclass sont des objets attribut décrivant les champs ou $revenuesAttribute:=ds.Company["revenues"] //méthode alternative ``` -Ce code attribue à `$nameAttribute` et `$revenuesAttribute` des références aux attributs name et revenues de la classe `Company`. This syntax does NOT return values held inside of the attribute, but instead returns references to the attributes themselves [with their **attribute properties**](../API/DataClassClass.md#attributename). +Ce code attribue à `$nameAttribute` et `$revenuesAttribute` des références aux attributs name et revenues de la classe `Company`. Cette syntaxe ne renvoie PAS les valeurs contenues dans l'attribut, mais des références aux attributs eux-mêmes [avec leurs **propriétés d'attribut**](../API/DataClassClass.md#attributename). Pour gérer les valeurs, vous devez passer par les [Entités](#entite). -Tous les fichiers éligibles d'une table sont disponibles en tant qu'attributs de leur [dataclass](#dataclass) parente. Pour les datastores distants accessibles via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer comme ressource REST** doit être sélectionnée au niveau de la structure 4D pour chaque champ que vous souhaitez exposer en tant qu'attribut de dataclass. +Tous les champs éligibles d'une table sont disponibles en tant qu'attributs de leur [dataclass](#dataclass) parente. Pour les datastores distants accessibles via `Open datastore` ou les [requêtes REST](REST/gettingStarted.md), l'option **Exposer avec le service REST** doit être sélectionnée au niveau de la structure 4D pour chaque champ que vous souhaitez exposer en tant qu'attribut de dataclass. #### Attributs de stockage et relationnels @@ -155,12 +155,12 @@ Prenons l'exemple de la structure de base de données partielle suivante et les ![](../assets/en/ORDA/relationProperties.png) -Tous les attributs relationnels seront disponibles automatiquement : +Tous les attributs de stockage seront disponibles automatiquement : - dans la dataclass Project : "ID", "name", et "companyID" - dans la dataclass Company : "ID", "name", et "discount" -En outre, les attributs relationnels suivant seront également disponibles automatiquement : +En outre, les attributs relationnels suivants seront également disponibles automatiquement : - dans la dataclass Project : l'attribut **theClient**, du type "relatedEntity" ; il y a au plus une compagnie pour chaque projet (le client) - dans la dataclass Company : l'attribut **companyProjects**, du type "relatedEntities" ; pour chaque compagnie, il existe un certain nombre de projets reliés. @@ -175,7 +175,7 @@ Gardez à l'esprit que ces objets décrivent des attributs, mais ne donnent pas #### Attributs calculés et Alias -Les [attributs calculés](ordaClasses.md#computed-attributes) et les[attributs alias](ordaClasses.md#alias-attributes) sont des attributs "virtuels". Leur valeur n'est pas stockée mais évaluée à chaque fois qu'on y accède. Ils n'appartiennent pas à la structure sous-jacente de la base, mais ils se basent sur elle et peuvent être utilisés comme n'importe quel champ du modèle de données. +Les [attributs calculés](ordaClasses.md#computed-attributes) et les [attributs alias](ordaClasses.md#alias-attributes) sont des attributs "virtuels". Leur valeur n'est pas stockée mais évaluée à chaque fois qu'on y accède. Ils n'appartiennent pas à la structure sous-jacente de la base, mais ils se basent sur elle et peuvent être utilisés comme n'importe quel champ du modèle de données. ### Entity @@ -183,7 +183,7 @@ Une entité est l'équivalent d'un enregistrement. Il s'agit d'un objet qui fait Le but de l'entité est de gérer les données (créer, mettre à jour, supprimer). Lorsqu'une référence d'entité est obtenue au moyen d'une sélection d'entité, elle conserve également des informations sur la sélection d'entité qui permet une itération à travers la sélection. -An entity object is handled through functions and properties of the [**Entity**](../API/EntityClass.md) class. +Un objet entité est géré par les fonctions et les propriétés de la classe [**Entity**](../API/EntityClass.md). L'objet entité lui-même ne peut pas être copié en tant qu'objet : @@ -203,7 +203,7 @@ Les propriétés de l'entité sont toutefois énumérables : Une entity selection est un objet contenant une ou plusieurs référence(s) à des entités appartenant à la même dataclasse. Elle est généralement créée à la suite d'une requête ou retournée à partir d'un attribut relationnel. Une entity selection peut contenir 0, 1 ou X entités de la dataclass - où X peut représenter le nombre total d'entités contenues dans la dataclass. -An entity selection object is handled through functions and properties of the [**EntitySelection**](../API/EntitySelectionClass.md) class. +Un objet Entity selection est géré par les fonctions et les propriétés de la classe [**EntitySelection**](../API/EntitySelectionClass.md). Voici un exemple : @@ -233,18 +233,18 @@ Les propriétés des entity selections sont toutefois énumérables : #### Entity selections triées vs Entity selections non-triées -Pour des raisons d'optimisation, par défaut, 4D ORDA crée généralement des sélections d'entités non-ordonnées, sauf lorsque vous utilisez la méthode `orderBy( )` ou si vous utilisez les options appropriées. Dans cette documentation, sauf indication contraire, "entity selection" fait généralement référence à une "entity selection non-triée". +Pour des raisons d'optimisation, par défaut, 4D ORDA crée généralement des entity selections non-ordonnées, sauf lorsque vous utilisez la méthode `orderBy()` ou si vous utilisez les options appropriées. Dans cette documentation, sauf indication contraire, "entity selection" fait généralement référence à une "entity selection non-triée". Les entity selections triées sont créées uniquement lorsque cela est nécessaire ou lorsqu'elles sont spécifiquement demandées à l'aide d'options, c'est-à-dire dans les cas suivants : -- résultat d'un `orderBy( )` sur une sélection (de n'importe quel type) ou un `orderBy( )` sur une dataclass, -- résultat de la méthode `newSelection( )` avec l'option `dk keep ordered` +- résultat d'un `orderBy()` sur une sélection (de n'importe quel type) ou un `orderBy()` sur une dataclass, +- résultat de la méthode `newSelection()` avec l'option `dk keep ordered` -Les sélections d'entités non-triées sont créées dans les cas suivants : +Les entity selections non-triées sont créées dans les cas suivants : - résultat d'un `query()` standard sur une sélection (de n'importe quel type) ou un `query()` sur une dataclass, - résultat de la méthode `newSelection()` sans option, -- résultat de l'une des méthodes de comparaison, quel que soit le type de sélection saisi : `or()`, `and()`, `minus()`. +- résultat de l'une des méthodes de comparaison, quel que soit le type de sélection d'origine : `or()`, `and()`, `minus()`. > Les entity selections suivantes sont toujours **triées** : > diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/entities.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/entities.md index 0be4eacb122866..460a8d4b10f780 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/entities.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/entities.md @@ -120,7 +120,7 @@ $entity.save() //sauvegarder les modifications :::note Notes -- Database Object fields can be [associated with classes](../Develop/field-properties.md), in which case only objects of the defined class can be assigned to the entity attribute. +- Les champs objet de la base de données peuvent être [associés à des classes](../Develop/field-properties.md), auquel cas seuls les objets de la classe définie peuvent être affectés à l'attribut de l'entité. - Les champs Blob des bases de données ([blobs scalaires](Concepts/dt_blob.md)) sont automatiquement convertis en attributs d'objets blob ([`4D.Blob`](Concepts/dt_blob.md)) lorsqu'ils sont traités par ORDA. Lorsque vous sauvegardez un attribut d'objet blob, gardez à l'esprit que, contrairement à la taille de l'objet blob qui n'est limitée que par la mémoire disponible, la taille du champ Blob est limitée à 2 Go. ::: @@ -288,7 +288,7 @@ La nature **partageable** ou **modifiable** d'une entity selection est définie Une nouvelle entity selection est **partageable** dans les cas suivants : -- la nouvelle entity selection résulte d'une fonction de classe ORDA appliquée à une dataClass : [dataClass.all()](API/DataClassClass.md#all), [dataClass.fromCollection()](API/DataClassClass.md#fromcollection), [dataClass.query()](API/DataClassClass.md#quer +- la nouvelle entity selection résulte d'une fonction de classe ORDA appliquée à une dataClass : [dataClass.all()](API/DataClassClass.md#all), [dataClass.fromCollection()](API/DataClassClass.md#fromcollection), [dataClass.query()](API/DataClassClass.md#query), - la nouvelle entity selection est basée sur une relation [entity.*attributeName*](API/EntityClass.md#attributename) (par exemple, "company.employees") lorsque *attributeName* est un attribut lié 1-vers-N mais que l'entité n'appartient pas à une entity selection. - la nouvelle entity selection est explicitement copiée comme partageable avec [entitySelection.copy()](API/EntitySelectionClass.md#copy) ou `OB Copy` (c'est-à-dire avec l'option `ck shared`). @@ -449,7 +449,7 @@ Les filtres s'appliquent aux **entités**. Si vous souhaitez restreindre l'accè ### Comment définir un filtre de restriction -You create a filter for a dataclass by defining an `event restrict` function in the [**dataclass class**](dsMapping.md#dataclass) of the dataclass. Le filtre est alors automatiquement activé. +Vous créez un filtre pour une dataclass en définissant une fonction `event restrict` dans la [**classe**](dsMapping.md#dataclass) de la dataclasse. Le filtre est alors automatiquement activé. ### `Function event restrict` @@ -462,11 +462,11 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Cette fonction est appelée chaque fois qu'une entity selection ou une entité de la dataclass est demandée. Le filtre est exécuté une seule fois, lors de la création de l'entity selection. -Le filtre doit retourner une entity selection de la dataclass. Il peut s'agir d'une entity selection basée sur une recherche, stockée dans le [`Storage`], etc. +Le filtre doit retourner une entity selection de la dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note -Pour des raisons de performances, nous recommandons d'utiliser les **attributs indexés** dans la définition du filtre. +Pour des raisons de performances, nous recommandons d'utiliser des **attributs indexés** dans la définition du filtre. ::: @@ -566,9 +566,9 @@ Le diagramme suivant illustre le verrouillage optimiste : 1. Deux process chargent la même entité.

    ![](../assets/en/ORDA/optimisticLock1.png) -2. Le premier process modifie l'entité et valide le changement. La méthode `entity.save()` est appelée. Le moteur 4D compare automatiquement la valeur du marqueur interne de l'entité modifiée avec celle de l'entité stockée dans les données. Étant donné qu'ils correspondent, l'entité est enregistrée et sa valeur de marqueur est incrémentée.

    ![](../assets/en/ORDA/optimisticLock2.png) +2. Le premier process modifie l'entité et valide le changement. La méthode `entity.save()` est appelée. Le moteur 4D compare automatiquement la valeur du marqueur interne de l'entité modifiée avec celle de l'entité stockée dans les données. Puisqu'elles correspondent, l'entité est enregistrée et la valeur de son marqueur est incrémentée.

    ![](../assets/en/ORDA/optimisticLock2.png) -3. Le deuxième process modifie également l'entité chargée et valide ses modifications. La méthode `entity.save()` est appelée. Comme la valeur du marqueur de l'entité modifiée ne correspond pas à celle de l'entité stockée dans les données, la sauvegarde n'est pas effectuée et une erreur est renvoyée.

    ![](../assets/en/ORDA/optimisticLock3.png) +3. Le deuxième process modifie également l'entité chargée et valide ses modifications. La méthode `entity.save()` est appelée. Puisque la valeur du marqueur de l'entité modifiée ne correspond pas à celle de l'entité stockée dans les données, la sauvegarde n'est pas effectuée et une erreur est retournée.

    ![](../assets/en/ORDA/optimisticLock3.png) Cela peut également être illustré par le code suivant : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/glossary.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/glossary.md index 29ecb988e206b8..0802de867e16c6 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/glossary.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/glossary.md @@ -9,7 +9,7 @@ title: Glossaire ## Action -Chaque action qui peut être effectuée sur une [ressource](#resource). Available actions are: create, read, update, drop, execute, and promote. +Chaque action qui peut être effectuée sur une [ressource](#resource). Les actions disponibles sont : create, read, update, drop, execute, and promote. ## Attribut @@ -18,11 +18,11 @@ Un attribut est la plus petite cellule de stockage dans une base de données rel - Dans un objet dataclass, chaque propriété est un attribut de dataclass qui correspond à un champ dans la table correspondante (même nom et même type). - Dans un objet entity, les attributs d'entités sont des propriétés qui contiennent les valeurs pour les attributs du datastore correspondants. -> \> Attributes and properties are similar concepts. "Attribut" est utilisé pour désigner les propriétés de la dataclass qui stockent les données, tandis que "propriété" est plus générique et définit une donnée stockée dans un objet. +> Les *attributs* et les *propriétés* sont des concepts similaires. "Attribut" est utilisé pour désigner les propriétés de la dataclass qui stockent les données, tandis que "propriété" est plus générique et définit une donnée stockée dans un objet. ## AttributePath -Un attributePath est le chemin d'un attribut à l'intérieur d'une dataclass ou d'une entité donnée. See also [PropertyPath](#propertypath). +Un attributePath est le chemin d'un attribut à l'intérieur d'une dataclass ou d'une entité donnée. Voir aussi [PropertyPath](#propertypath). ## Class code @@ -89,7 +89,7 @@ Une entité est un objet qui correspond à un modèle de dataclass. Une entité Une entité peut être vue comme une instance de la dataclass, comme un enregistrement de la table correspondante à la dataclass dans son datastore associé. Cependant, une entité contient également des données connexes. Le but de l'entité est de gérer les données (créer, mettre à jour, supprimer). -For more information, see [entities](entities.md). +Pour plus d'informations, voir [entities](entities.md). ## Entity selection diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md index 6be733d4b7838d..ee558cb7612b7b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md @@ -1,122 +1,122 @@ --- id: orda-events -title: Events +title: Évènements d'entité ---
    Historique -| Release | Modifications | -| ------- | ----------------------------------------------------------------------------------------------------- | -| 21 | Added events: validateSave / saving / afterSave / validateDrop / dropping / afterDrop | -| 20 R10 | touched event added | +| Release | Modifications | +| ------- | ------------------------------------------------------------------------------------------------------------ | +| 21 | Événements ajoutés : validateSave / saving / afterSave / validateDrop / dropping / afterDrop | +| 20 R10 | ajout événement touched |
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Les événements d'entité sont des fonctions qui sont automatiquement invoquées par ORDA chaque fois que des entités et des attributs d'entité sont touchés (ajoutés, supprimés ou modifiés). Vous pouvez écrire des événements très simples, puis les rendre plus sophistiqués. -You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. +Vous ne pouvez pas déclencher directement l'exécution d'une fonction d'événement. Les événements sont appelés automatiquement par ORDA en fonction des actions de l'utilisateur ou des opérations effectuées par le code sur les entités et leurs attributs. -:::tip Related blog post +:::tip Article(s) de blog sur le sujet -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA - Gérer une logique événementielle lors des actions de persistance des données](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: -:::info Compatibility note +:::info Note de compatibilité -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +Les événements d'entité ORDA dans le magasin de données sont équivalents aux triggers dans la base de données 4D. Cependant, les actions déclenchées au niveau de la base de données 4D à l'aide des commandes du langage classique 4D ou des actions standard ne déclenchent pas les événements ORDA. ::: ## Vue d’ensemble -### Event level +### Niveau de l'événement -A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). +Une fonction d'événement d'entité est toujours définie dans la [classe Entity](../ORDA/ordaClasses.md#entity-class). -It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute. +Un événement peut être défini au niveau de l'**entité** et/ou de l'**attribut** (y compris les [**attributs calculés**](../ORDA/ordaClasses.md#computed-attributes)). Dans le premier cas, il sera déclenché pour tous les attributs de l'entité ; dans l'autre cas, il ne sera déclenché que pour l'attribut ciblé. -For the same event, you can define different functions for different attributes. +Pour un même événement, vous pouvez définir différentes fonctions pour différents attributs. -You can also define the same event at both attribute and entity levels. The attribute event is called first and then the entity event. +Vous pouvez également définir le même événement au niveau de l'attribut et de l'entité. L'événement attribut est appelé en premier, puis l'événement entité. -### Execution in remote configurations +### Exécution en configuration distante -Usually, ORDA events are executed on the server. +En général, les événements ORDA sont exécutés sur le serveur. -In client/server configuration however, the `touched()` event function can be executed on the **server or the client**, depending on the use of [`local`](./ordaClasses.md#local-functions) keyword. A specific implementation on the client side allows the triggering of the event on the client. +Cependant, dans une configuration client/serveur, la fonction d'événement `touched()` peut être exécutée sur **le serveur ou le client**, en fonction de l'utilisation du mot-clé [`local`](./ordaClasses.md#local-functions). Une implémentation spécifique côté client permet de déclencher l'événement sur le client. :::note -ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always executed on the client. +Les fonctions ORDA [`constructor()`](./ordaClasses.md#class-constructor) sont toujours exécutées sur le client. ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. Cela signifie que vous devez vous assurer que le serveur peut "voir" qu'un attribut a été touché pour déclencher l'événement (voir ci-dessous). -### Summary table +### Tableau de synthèse -The following table lists ORDA events along with their rules. +Le tableau suivant liste les événements d'entité ORDA ainsi que leurs règles. -| Evénement | Niveau | Function name | (C/S) Executed on | Can stop action by returning an error | -| :------------------------ | :------- | :------------------------------------------------------ | :------------------------------------------------------------------: | ------------------------------------- | -| Entity instantiation | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | non | -| Attribute touched | Attribut | `event touched ()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | non | -| | Entity | `event touched()` | Depends on [`local`](../ORDA/ordaClasses.md#local-functions) keyword | non | -| Before saving an entity | Attribut | `validateSave ()` | server | oui | -| | Entity | `validateSave()` | server | oui | -| When saving an entity | Attribut | `saving ()` | server | oui | -| | Entity | `saving()` | server | oui | -| After saving an entity | Entity | `afterSave()` | server | non | -| Before dropping an entity | Attribut | `validateDrop ()` | server | oui | -| | Entity | `validateDrop()` | server | oui | -| When dropping an entity | Attribut | `dropping ()` | server | oui | -| | Entity | `dropping()` | server | oui | -| After dropping an entity | Entity | `afterDrop()` | server | non | +| Evénement | Niveau | Nom de la fonction | (C/S) Exécuté sur | Peut arrêter l'action en renvoyant une erreur | +| :------------------------------------ | :------- | :------------------------------------------------------ | :-----------------------------------------------------------------: | --------------------------------------------- | +| Instanciation d'entité | Entity | [`constructor()`](./ordaClasses.md#class-constructor-1) | client | non | +| Attribut touched | Attribut | `event touched ()` | Dépend du mot-clé [`local`](../ORDA/ordaClasses.md#local-functions) | non | +| | Entity | `event touched()` | Dépend du mot-clé [`local`](../ORDA/ordaClasses.md#local-functions) | non | +| Avant l'enregistrement d'une entité | Attribut | `validateSave ()` | server | oui | +| | Entity | `validateSave()` | server | oui | +| Pendant l'enregistrement d'une entité | Attribut | `saving ()` | server | oui | +| | Entity | `saving()` | server | oui | +| Après l'enregistrement d'une entité | Entity | `afterSave()` | server | non | +| Avant la suppression d'une entité | Attribut | `validateDrop ()` | server | oui | +| | Entity | `validateDrop()` | server | oui | +| Pendant la suppression d'une entité | Attribut | `dropping ()` | server | oui | +| | Entity | `dropping()` | server | oui | +| Après la suppression d'une entité | Entity | `afterDrop()` | server | non | :::note -The [`constructor()`](./ordaClasses.md#class-constructor-1) function is not actually an event function but is always called when a new entity is instantiated. +La fonction [`constructor()`](./ordaClasses.md#class-constructor-1) n'est pas en soi une fonction d'événement, mais elle est toujours appelée lorsqu'une nouvelle entité est instanciée. ::: -## *event* parameter +## Paramètre *event* -Event functions accept a single *event* object as parameter. When the function is called, the parameter is filled with several properties: +Les fonctions d'événement acceptent un seul objet *event* comme paramètre. Lorsque la fonction est appelée, le paramètre est rempli avec diverses propriétés : -| Nom de propriété | Disponibilité | Type | Description | | -| :------------------ | :----------------------------------------------------------------------------------------------------------------------- | :------------------- | :-------------------------------------------------------------------------------------------------------------------- | - | -| "kind" | Toujours | String | Event name: "touched", "validateSave", "saving", "afterSave", "validateDrop", "dropping", "afterDrop" | | -| *attributeName* | Only for events implemented at attribute level ("validateSave", "saving", "validateDrop", "dropping") | String | Nom de l'attribut (*ex.* "firstname") | | -| *dataClassName* | Toujours | String | Nom du verre de données (*ex.* "Company") | | -| "savedAttributes" | Only in [`afterSave()`](#function-event-aftersave) | Collection of String | Names of attributes properly saved | | -| "droppedAttributes" | Only in [`afterDrop()`](#function-event-afterdrop) | Collection of String | Names of attributes properly dropped | | -| "saveStatus" | Only in [`afterSave()`](#function-event-aftersave) | String | "success" if the save was successful, "failed" otherwise | | -| "dropStatus" | Only in [`afterDrop()`](#function-event-afterdrop) | String | "success" if the drop was successful, "failed" otherwise | | +| Nom de propriété | Disponibilité | Type | Description | | +| :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------- | :-------------------- | :----------------------------------------------------------------------------------------------------------------------------- | - | +| "kind" | Toujours | String | Nom de l'événement : "touched", "validateSave", "saving", "afterSave", "validateDrop", "dropping", "afterDrop" | | +| *attributeName* | Uniquement pour les événements définis au niveau des attributs ("validateSave", "saving", "validateDrop", "dropping") | String | Nom de l'attribut (*ex.* "firstname") | | +| *dataClassName* | Toujours | String | Nom du verre de données (*ex.* "Company") | | +| "savedAttributes" | Uniquement dans [`afterSave()`](#function-event-aftersave) | Collection de chaînes | Noms des attributs correctement enregistrés | | +| "droppedAttributes" | Uniquement dans [`afterDrop()`](#function-event-afterdrop) | Collection de chaînes | Noms des attributs correctement supprimés | | +| "saveStatus" | Uniquement dans [`afterSave()`](#function-event-aftersave) | String | "success" si l'enregistrement a réussi, "failed" sinon | | +| "dropStatus" | Uniquement dans [`afterDrop()`](#function-event-afterdrop) | String | "success" si la suppression a réussi, "failed" sinon | | -## Error object +## Objet error -[Some event functions](#summary-table) can return an **error object** to raise an error and stop the running action. +[Certaines fonctions d'événement](#summary-table) peuvent renvoyer un **objet error** pour déclencher une erreur et arrêter l'action en cours. -When an error occurs in an event, the other events are stopped at the first raised error and the action (save or drop) is also stopped. This error is sent before other potential errors like [stamp has changed, entity locked](../API/EntityClass.md#save), etc. +Lorsqu'une erreur survient dans un événement, les autres événements sont stoppés à la première erreur signalée et l'action (enregistrement pu suppression) est également arrêtée. Cette erreur est envoyée avant d'autres erreurs potentielles telles que [stamp has changed, entity locked](../API/EntityClass.md#save), etc. -### Error object properties +### Propriétés de l'objet error -| Propriété | Type | Description | Set by the developer | -| ------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Oui | -| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Oui | -| extraDescription | Object | Free information to set up | Oui | -| seriousError | Boolean | Used only with validate events (see below). Will insert a specific `status` value in the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) function:
  • If true: `dk status serious validation error`
  • If false: `dk status validation failed`
  • | Yes (default is false) | -| componentSignature | Text | Always "DBEV" | Non | +| Propriété | Type | Description | Fixé par le développeur | +| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | +| errCode | Integer | Identique à la commande [`Last errors`](../commands/last-errors.md) | Oui | +| message | Text | Identique à la commande [`Last errors`](../commands/last-errors.md) | Oui | +| extraDescription | Object | Informations libres à définir | Oui | +| seriousError | Boolean | Utilisé uniquement avec les événements de validation (voir ci-dessous).
  • `True` : crée une [erreur critique (imprévisible)](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) et déclenche une exception. Ajoute le statut `dk status serious validation error`
  • `False` : crée seulement une [erreur silencieuse (prévisible)](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Ajoute le statut `dk status validation failed`.
  • | Oui (par défaut : False) | +| componentSignature | Text | Toujours "DBEV" | Non | -- The errors are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. -- In case of an error triggered by a **validate** event, the `fatalError` property allows you to insert a specific `status` and its associated `statusText` in the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions: - - If **false**: `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". Such errors do not require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. - - If **true**: `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". Such errors require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. They are raised at the end of the event and reach the client requesting the save/drop action (REST client for example). -- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error (`dk status serious error`) whatever the `seriousError` property value. +- Les [erreurs critiques](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) sont empilées dans la collection de la propriété `errors` de l'objet **Result** renvoyé par les fonctions [`save()`](../API/EntityClass.md#save) ou [`drop()`](../API/EntityClass.md#drop). +- Dans le cas d'une erreur déclenchée par un événement **validate**, la propriété `seriousError` permet de choisir le niveau d'erreur à générer : + - Si **true** : une erreur critique est déclenchée et doit être traitée par le [code de traitement des erreurs](../Concepts/error-handling.md#predictable-vs-unpredictable-errors), tel qu'un ["try catch"](../Concepts/error-handling.md#trycatchend-try). Dans l'objet résultat de la fonction appelante, `status` vaut `dk status serious validation error` et `statusText` vaut "Serious Validation Error". L'erreur est levée à la fin de l'événement et parvient au client qui demande l'action d'enregistrement/suppression (client REST par exemple). + - Si **false** (défaut) : une [erreur silencieuse (prévisible) est générée](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Elle ne déclenche aucune exception et n'est pas empilée dans les erreurs retournées par la commande [`Last errors`](../commands/last-errors.md). Dans l'objet résultat de la fonction appelante, `status` vaut `dk status validation failed` et `statusText` vaut "Mild Validation Error". +- Dans le cas d'une erreur déclenchée par un événement **saving/dropping**, lorsqu'un objet d'erreur est renvoyé, l'erreur est toujours définie comme critique, quelle que soit la valeur de la propriété `seriousError`. -## Event function description +## Description des fonctions ### `Function event touched` @@ -128,30 +128,30 @@ When an error occurs in an event, the other events are stopped at the first rais // code ``` -This event is triggered each time a value is modified in the entity. +Cet événement est déclenché chaque fois qu'une valeur est modifiée dans l'entité. -- If you defined the function at the entity level (first syntax), it is triggered for modifications on any attribute of the entity. -- If you defined the function at the attribute level (second syntax), it is triggered only for modifications on this attribute. +- Si vous avez défini la fonction au niveau de l'entité (première syntaxe), elle est déclenchée pour des modifications sur n'importe quel attribut de l'entité. +- Si vous avez défini la fonction au niveau de l'attribut (deuxième syntaxe), elle n'est déclenchée que pour les modifications sur cet attribut. -This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: +Cet événement est déclenché dès que le moteur de 4D Server / 4D détecte une modification de la valeur de l'attribut qui peut être due aux actions suivantes : -- in **client/server with the [`local` keyword](../ORDA/ordaClasses.md#local-functions)** or in **4D single-user**: - - the user sets a value on a 4D form, - - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). -- in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. -- with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) +- en **client/serveur avec le [mot-clé `local`](../ORDA/ordaClasses.md#local-functions)** ou en **4D mono-utilisateur** : + - l'utilisateur saisit une valeur dans un formulaire 4D, + - le code 4D effectue une assignation avec l'opérateur `:=`. L'événement est également déclenché en cas d'auto-assignation (`$entity.attribute:=$entity.attribute`). +- en **client/serveur sans le mot-clé `local`** : du code 4D effectue une assignation avec l'opérateur `:=` est [exécuté sur le serveur](../commands-legacy/execute-on-server.md). +- en **client/serveur sans le mot-clé `local`**, une **[application Qodly](https://developer.4d.com/qodly)** ou **[datastore distant](../commands/open-datastore.md)** : l'entité est reçue sur le serveur 4D lors de l'appel d'une fonction ORDA (sur l'entité ou avec l'entité en tant que paramètre). Cela signifie que vous devrez peut-être mettre en place une fonction *refresh* ou *preview* sur l'application distante qui envoie une requête ORDA au serveur et déclenche l'événement. +- avec le serveur REST : la valeur est reçue sur le serveur REST avec une [requête REST](../REST/$method.md#methodupdate) (`$method=update`) -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. -If this function [throws](../commands/throw) an error, it will not stop the undergoing action. +Si cette fonction [génère](../commands/throw) une erreur, elle n'arrêtera pas l'action en cours. :::note -This event is also triggered: +Cet événement est également déclenché : -- when attributes are assigned by the [`constructor()`](./ordaClasses.md#class-constructor-1) event, -- when attributes are edited through the [Data Explorer](../Admin/dataExplorer.md). +- lorsque les attributs sont assignés par l'événement [`constructor()`](./ordaClasses.md#class-constructor-1), +- lorsque les attributs sont modifiés via l'[Explorateur de données](../Admin/dataExplorer.md). ::: @@ -329,7 +329,7 @@ This event is triggered each time an entity is about to be saved. - if you defined the function at the entity level (first syntax), it is called for any attribute of the entity. - if you defined the function at the attribute level (second syntax), it is called only for this attribute. This function is **not** executed if the attribute has not been touched in the entity. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. This event is triggered by the following functions: @@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`). #### Exemple -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -387,7 +382,7 @@ This event is triggered each time an entity is being saved. - If you defined the function at the entity level (first syntax), it is called for any attribute of the entity. The function is executed even if no attribute has been touched in the entity (e.g. in case of sending data to an external app each time a save is done). - If you defined the function at the attribute level (second syntax), it is called only for this attribute. The function is **not** executed if the attribute has not been touched in the entity. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. This event is triggered by the following functions: @@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro #### Exemple -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` ### `Function event afterSave` @@ -449,34 +447,30 @@ This event is triggered just after an entity is saved in the data file, when at This event is useful after saving data to propagate the save action outside the application or to execute administration tasks. For example, it can be used to send a confirmation email after data have been saved. Or, in case of error while saving data, it can make a rollback to restore a consistent state of data. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. - To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. - Throwing an [error object](#error-object) is **not supported** by this function. -#### Exemple 1 +#### Exemple -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` ### `Function event validateDrop` @@ -494,7 +488,7 @@ This event is triggered each time an entity is about to be dropped. - If you defined the function at the entity level (first syntax), it is called for any attribute of the entity. - If you defined the function at the attribute level (second syntax), it is called only for this attribute. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. This event is triggered by the following features: @@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### Exemple 1 +#### Exemple -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### Exemple 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` ### `Function event dropping` @@ -561,7 +535,7 @@ This event is triggered each time an entity is being dropped. - If you defined the function at the entity level (first syntax), it is called for any attribute of the entity. - If you defined the function at the attribute level (second syntax), it is called only for this attribute. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. This event is triggered by the following features: @@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### Exemple 1 +#### Exemple -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### Exemple 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -642,7 +593,7 @@ This event is triggered just after an entity is dropped. This event is useful after dropping data to propagate the drop action outside the application or to execute administration tasks. For example, it can be used to send a cancellation email after data have been dropped. Or, in case of error while dropping data, it can log an information for the administrator to check data consistency. -The function receives an [*event* object](#event-parameter) as parameter. +La fonction reçoit un objet [*event*](#event-parameter) en paramètre. - To avoid infinite loops, calling a [`drop()`](../API/EntityClass.md#drop) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. - Throwing an [error object](#error-object) is **not supported** by this function. @@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### Exemple 1 +#### Exemple -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### Exemple 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/ordaClasses.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/ordaClasses.md index 84479ca7fefcae..d4738c0141b15f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/ordaClasses.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ORDA/ordaClasses.md @@ -306,52 +306,52 @@ Class constructor() :::note -Il n'y a pas de mot-clé de fin pour le code d'une fonction class constructor. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. +Il n'y a pas de mot-clé de fin pour le code d'une fonction de constructeur de classe. Le langage 4D détecte automatiquement la fin du code d'une fonction par le mot clé `Function` suivant ou la fin du fichier de classe. ::: -An ORDA class constructor function is triggered just after a new entity is created in memory, [whatever the way it is created](#commands-that-trigger-the-class-constructor-functions). It is useful to set initial values for entity instantiation, for example a custom ID. +Une fonction de construction de classe ORDA est déclenchée juste après la création d'une nouvelle entité en mémoire, [quelle que soit la manière dont elle est créée](#commands-that-trigger-the-class-constructor-functions). Elle est utile pour définir des valeurs d'initialisation lors de l'instanciation de l'entité, par exemple un identifiant personnalisé. -This function can only be set at the [entity level](#entity-class). There can only be one constructor function in an entity class (otherwise an error is returned). +Cette fonction ne peut être définie qu'au [niveau de l'entité](#entity-class). Il ne peut y avoir qu'une seule fonction constructor dans une classe d'entité (sinon une erreur est renvoyée). -This ORDA class constructor function does not receive or return parameters. However, you can use it to initialize attribute values using [`This`](../commands/this.md). Note that values initialized by the constructor are overriden if corresponding attributes are filled by the code. +La fonction du constructeur de la classe ORDA ne reçoit ni ne renvoie de paramètres. Cependant, vous pouvez l'utiliser pour initialiser les valeurs des attributs en utilisant [`This`](../commands/this.md). Notez que les valeurs initialisées par le constructeur sont remplacées si les attributs correspondants sont remplis par le code. :::note -An ORDA class constructor function is similar to a [user class constructor function](../Concepts/classes.md#class-constructor), with the following differences: +Une fonction de construction de classe ORDA est similaire à une [fonction de construction de classe utilisateur](../Concepts/classes.md#class-constructor), avec les différences suivantes : -- you cannot pass parameters to the constructor, -- you cannot use `shared`, `session`, or `singleton` keywords, -- you cannot call the [`Super`](../Concepts/classes.md#super) keyword within the function, -- the class constructor cannot be called using the `new()` function on an entity (entities can only be created by specific functions, see below). +- vous ne pouvez pas passer de paramètres au constructeur, +- vous ne pouvez pas utiliser les mots-clés `shared`, `session`, ou `singleton`, +- vous ne pouvez pas appeler le mot-clé [`Super`](../Concepts/classes.md#super) à l'intérieur de la fonction, +- le constructeur de la classe ne peut pas être appelé en utilisant la fonction `new()` sur une entité (les entités ne peuvent être créées que par des fonctions spécifiques, voir ci-dessous). ::: -#### Commands that trigger the Class constructor functions +#### Commandes qui déclenchent les fonctions du constructeur de classe -The `Class constructor` function is triggered by the following commands and features: +La fonction `Class constructor` est déclenchée par les commandes et fonctionnalités suivantes : - [`dataClass.new()`](../API/DataClassClass.md#new) - [`dataClass.fromCollection()`](../API/DataClassClass#fromcollection) -- [REST API $method=update](../REST/$method.md#methodupdate) in a POST without the `__KEY` and `__STAMP` parameters -- the [Data Explorer](../Admin/dataExplorer.md#editing-data). +- [API REST $method=update](../REST/$method.md#methodupdate) dans un POST sans les paramètres `__KEY` et `__STAMP`. +- l'[Explorateur de données](../Admin/dataExplorer.md#editing-data). :::note Notes -- The [`entity.clone()`](../API/EntityClass.md#clone) function does not trigger the entity Class constructor. -- Records created at the 4D database level using 4D classic language commands or standard actions do not trigger the entity Class constructor. +- La fonction [`entity.clone()`](../API/EntityClass.md#clone) ne déclenche pas le constructeur de la classe de l'entité. +- Les enregistrements créés au niveau de la base de données 4D à l'aide de commandes du langage classique 4D ou d'actions standard ne déclenchent pas le constructeur de la classe de l'entité. ::: -#### Remote configurations +#### Configurations distantes -When using a remote configurations, you need to pay attention to the following principles: +Lorsque vous utilisez une configuration à distance, il convient de respecter les principes suivants : -- In **client/server** the function can be called on the client or on the server, depending on the location of the calling code. When it is called on the client, it is not triggered again when the client attempts to save the new entity and sends an update request to the server to create in memory on the server. +- En **client/serveur**, la fonction peut être appelée sur le client ou sur le serveur, en fonction de l'emplacement du code d'appel. Lorsqu'elle est appelée sur le client, elle n'est pas déclenchée à nouveau lorsque le client tente d'enregistrer la nouvelle entité et envoie une demande de mise à jour au serveur pour la créer en mémoire sur le serveur. :::warning -Since functions such as [`dataClass.fromCollection()`](../API/DataClassClass.md#fromcollection) can create a large number of entities and thus trigger the entity Class constructor consequently, you need to make sure the constructor code does not execute excessive time-consuming processings, for performance reasons. In remote configurations (see below), the code should not trigger multiple requests to the server. +Des fonctions telles que [`dataClass.fromCollection()`](../API/DataClassClass.md#fromcollection) pouvant créer un grand nombre d'entités et donc déclencher le constructeur de la classe d'entités en conséquence, vous devez vous assurer que le code du constructeur n'exécute pas de traitements qui prennent du temps, pour des raisons de performance. Dans les configurations distantes (voir ci-dessous), le code ne doit pas déclencher de requêtes multiples au serveur. ::: @@ -367,7 +367,7 @@ Class constructor() ``` -#### Example 2 (diagram): Client/server +#### Exemple 2 (diagramme) : Client/serveur ```mermaid @@ -386,7 +386,7 @@ Server-->>-Client: Success ``` -#### Example 3 (diagram): Qodly - Standard action +#### Exemple 3 (diagramme): Qodly - Action standard ```mermaid @@ -404,7 +404,7 @@ sequenceDiagram ``` -#### Example 4 (diagram): Qodly - Standard action and update value on the newly created entity +#### Exemple 4 (diagramme): Qodly - Action standard et mise à jour de valeur sur la nouvelle entité créée ```mermaid @@ -426,7 +426,7 @@ Note over Qodly page: product.creationDate is "06/17/25"
    and product.commen ``` -#### Example 5 (diagram): Qodly - Entity instanciated in a function +#### Exemple 5 (diagramme) : Qodly - Entité instanciée dans une fonction ```mermaid @@ -896,23 +896,23 @@ Exposed Alias studentName student.name //scalar value Vous pouvez alors exécuter les recherches suivantes : ```4d -// Find course named "Archaeology" +// Trouver le cours nommé "Archaeology" ds.Course.query("courseName = :1";"Archaeology") -// Find courses given by the professor Smith +// Trouver les cours du professeur Smith ds.Course.query("teacherName = :1";"Smith") -// Find courses where Student "Martin" assists +// Trouver les cours auxquels assiste l'étudiant "Martin" ds.Course.query("studentName = :1";"Martin") -// Find students who have M. Smith as teacher +// Trouver les étudiants qui ont le professeur Smith ds.Student.query("teachers.name = :1";"Smith") -// Find teachers who have M. Martin as Student +// Trouver les professeurs qui ont M. Martin comme étudiant ds.Teacher.query("students.name = :1";"Martin") -// Note that this very simple query string processes a complex -// query including a double join, as you can see in the queryPlan: -// "Join on Table : Course : Teacher.ID = Course.teacherID, +// Notez que cette chaîne très simple traite une requête complexe +// incluant une double jointure, comme vous pouvez le voir dans le queryPlan : +// "Join on Table : Course : Teacher.ID = Course.teacherID, // subquery:[ Join on Table : Student : Course.studentID = Student.ID, // subquery:[ Student.name === Martin]]" ``` @@ -986,59 +986,59 @@ $status:=$remoteDS.Schools.registerNewStudent($student) // OK $id:=$remoteDS.Schools.computeIDNumber() // Erreur "Unknown member method" ``` -## onHTTPGet keyword +## onHTTPGet -Use the `onHTTPGet` keyword to declare functions that can be called through HTTP requests using the `GET` verb. Such functions can return any web contents, for example using the [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) class. +Utilisez le mot-clé `onHTTPGet` pour déclarer des fonctions qui peuvent être appelées par des requêtes HTTP utilisant le verbe `GET`. Ces fonctions peuvent renvoyer n'importe quel contenu web, par exemple en utilisant la classe [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md). -The `onHTTPGet` keyword is available with: +Le mot-clé `onHTTPGet` est disponible avec : -- ORDA Data model class functions -- [Singletons class functions](../Concepts/classes.md#singleton-classes) +- les fonctions de classe du modèle de données ORDA +- les [fonctions de classe de singletons](../Concepts/classes.md#singleton-classes) La syntaxe formelle est la suivante : ```4d -// declare an onHTTPGet function +// déclarer une fonction onHTTPGet exposed onHTTPGet Function (params) : result ``` :::info -The `exposed` keyword must also be added in this case, otherwise an error will be generated. +Le mot-clé `exposed` doit également être ajouté dans ce cas, sinon une erreur sera générée. ::: :::caution -As this type of call is an easy offered action, the developer must ensure no sensitive action is done in such functions. +Comme ce type d'appel est une action facile d'accès, le développeur doit s'assurer qu'aucune action sensible n'est effectuée dans ces fonctions. ::: ### params -A function with `onHTTPGet` keyword accepts [parameters](../Concepts/parameters.md). +Une fonction avec le mot-clé `onHTTPGet` accepte des [paramètres](../Concepts/parameters.md). -In the HTTP GET request, parameters must be passed directly in the URL and declared using the `$params` keyword (they must be enclosed in a collection). +Dans la requête HTTP GET, les paramètres doivent être passés directement dans l'URL et déclarés à l'aide du mot-clé `$params` (ils doivent être inclus dans une collection). ``` IP:port/rest//functionName?$params='[]' ``` -See the [Parameters](../REST/classFunctions#parameters) section in the REST server documentation. +Voir la section [Paramètres](../REST/classFunctions#parameters) dans la documentation du serveur REST. ### Résultat -A function with `onHTTPGet` keyword can return any value of a supported type (same as for REST [parameters](../REST/classFunctions#parameters)). +Une fonction avec le mot-clé `onHTTPGet` peut renvoyer n'importe quelle valeur d'un type supporté (comme pour les [paramètres REST](../REST/classFunctions#parameters)). :::info -You can return a value of the [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) class type to benefit from properties and functions to set the header, the body, and the status of the answer. +Vous pouvez renvoyer une valeur de type [`4D.OutgoingMessage`](../API/OutgoingMessageClass.md) pour bénéficier des propriétés et des fonctions permettant de définir l'en-tête, le corps et le statut de la réponse. ::: ### Exemple -You have defined the following function: +Vous avez défini la fonction suivante : ```4d Class extends DataClass @@ -1056,10 +1056,10 @@ exposed onHTTPGet Function getThumbnail($name : Text; $width : Integer; $height return $response ``` -It can be called by the following HTTP GET request: +Elle peut être appelée par la requête HTTP GET suivante : ``` -IP:port/rest/Products/getThumbnail?$params='["Yellow Pack",200,200]' +IP:port/rest/Products/getThumbnail ?$params='["Yellow Pack",200,200]' ``` ## Fonctions locales diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Project/components.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Project/components.md index f2548492d1ada3..e2e93c1843a937 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Project/components.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Project/components.md @@ -1,13 +1,13 @@ --- id: components -title: Dependencies +title: Dépendances --- -[L'architecture des projets](../Project/architecture.md) 4D est modulaire. Vous pouvez ajouter des fonctionnalités supplémentaires dans vos projets 4D en installant des [**composants**](Concepts/components.md) et des [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md). +[L'architecture des projets](../Project/architecture.md) 4D est modulaire. Vous pouvez ajouter des fonctionnalités supplémentaires dans vos projets 4D en installant des [**composants**](Concepts/components.md) et des [**plug-ins**](../Concepts/plug-ins.md). Les composants sont constitués de code 4D, tandis que les plug-ins peuvent être [construits à l'aide de n'importe quel langage](../Extensions/develop-plug-ins.md). -Vous pouvez [développer](../Extensions/develop-components.md) et [construire](../Desktop/building.md) vos propres composants 4D, ou télécharger des composants publics partagés par la communauté 4D qui se trouvent sur GitHub. +Vous pouvez [développer](../Extensions/develop-components.md) et [construire](../Desktop/building.md) vos propres composants 4D, ou télécharger des composants publics partagés par la communauté 4D [sur GitHub](https://github.com/topics/4d-component). -Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties. +Une fois installées dans votre environnement 4D, les extensions sont traitées comme des **dépendances** avec des propriétés spécifiques. ## Composants interprétés et compilés @@ -33,7 +33,7 @@ L'architecture de dossier "Contents" est recommandée pour les composants si vou ::: -## Component Locations +## Emplacements des composants :::note @@ -317,20 +317,20 @@ Les composants GitHub référencés sont téléchargés dans un dossier de cache ...où `` peut être "4D", "4D Server" ou "tool4D". -### Automatic dependency resolution +### Résolution automatique des dépendances -When you add or update a component (whether [local](#local-components) or [from GitHub](#components-stored-on-github)), 4D automatically resolves and installs all dependencies required by that component. Cela inclut : +Lorsque vous ajoutez ou mettez à jour un composant (qu'il soit [local](#local-components) ou [obtenu depuis GitHub](#components-stored-on-github)), 4D résout et installe automatiquement toutes les dépendances requises par ce composant. Cela inclut : -- **Primary dependencies**: Components you explicitly declare in your `dependencies.json` file -- **Secondary dependencies**: Components required by primary dependencies or other secondary dependencies, which are automatically resolved and installed +- les **dépendances primaires** : Composants que vous déclarez explicitement dans votre fichier `dependencies.json`. +- les **dépendances secondaires** : Composants requis par des dépendances primaires ou d'autres dépendances secondaires, qui sont automatiquement résolues et installées. -The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. +Le gestionnaire de dépendances lit le fichier `dependencies.json` de chaque composant et installe récursivement toutes les dépendances nécessaires, en respectant les spécifications de version dans la mesure du possible. Il n'est donc pas nécessaire d'identifier et d'ajouter manuellement les dépendances imbriquées, une par une. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **les résolutions de conflits** : Lorsque plusieurs dépendances nécessitent [différentes versions](#defining-a-github-dependency-version-range) du même composant, le gestionnaire de dépendances tente automatiquement de résoudre les conflits en trouvant une version qui satisfait toutes les plages de versions qui se chevauchent. Si une dépendance primaire entre en conflit avec des dépendances secondaires, la dépendance primaire est prioritaire. :::note -`dependencies.json` files are ignored in components loaded from the [**Components** folder](architecture.md#components). +Les fichiers `dependencies.json` sont ignorés dans les composants chargés depuis le dossier [**Components**](architecture.md#components). ::: @@ -350,7 +350,7 @@ Pour afficher la fenêtre Dépendances : ![dependency-menu](../assets/en/Project/dependency-menu.png) - avec 4D Server, sélectionnez la ligne de menu **Fenêtre/Dépendances du projet**.
    - ![menu-dépendances-serveur](../assets/en/Project/dependency-menu-server.png) + ![dependency-menu-server](../assets/en/Project/dependency-menu-server.png) La fenêtre Dépendances s'affiche alors. Les dépendances sont classées par nom par ordre alphabétique : @@ -364,19 +364,19 @@ Par défaut, toutes les dépendances identifiées par le Gestionnaire de dépend ![dependency-tabs](../assets/en/Project/dependency-tabs.png) -- **All**: All dependencies including both primary (declared) and secondary (automatically resolved) dependencies in a flat list view. -- **Declared**: Primary dependencies that are explicitly declared in the `dependencies.json` file. This tab helps you distinguish between dependencies you've directly added and those that were [automatically resolved](#automatic-dependency-resolution). -- **Actifs** : Dépendances chargées et utilisables dans le projet. Il comprend des dépendances *overloading*, qui sont effectivement chargées. Les dépendances *overloaded* sont listées dans l'onglet **Conflits**, ainsi que toutes les dépendances conflictuelles. -- **Inactifs** : Dépendances qui ne sont pas chargées dans le projet et qui ne sont pas disponibles. Diverses raisons peuvent expliquer ce statut : fichiers manquants, incompatibilité de version... -- **Conflicts**: Dependencies that are loaded but that overloads at least one other dependency at a lower [priority level](#priority). Les dépendances surchargées sont également affichées afin que vous puissiez vérifier l'origine du conflit et prendre les mesures appropriées. +- **Toutes** : Toutes les dépendances, y compris les dépendances primaires (déclarées) et secondaires (résolues automatiquement), sous forme de liste. +- **Déclarées** : Les dépendances primaires qui sont explicitement déclarées dans le fichier `dependencies.json`. Cet onglet vous aide à distinguer les dépendances que vous avez directement ajoutées de celles qui ont été [automatiquement résolues](#automatic-dependency-resolution). +- **Actives** : Dépendances chargées et utilisables dans le projet. Il comprend des dépendances *overloading*, qui sont effectivement chargées. Les dépendances *overloaded* sont listées dans l'onglet **Conflits**, ainsi que toutes les dépendances conflictuelles. +- **Inactives** : Dépendances qui ne sont pas chargées dans le projet et qui ne sont pas disponibles. Diverses raisons peuvent expliquer ce statut : fichiers manquants, incompatibilité de version... +- **Conflits** : Les dépendances qui sont chargées mais qui surchargent au moins une autre dépendance à un [niveau de priorité](#priority) inférieur. Les dépendances surchargées sont également affichées afin que vous puissiez vérifier l'origine du conflit et prendre les mesures appropriées. -### Secondary dependencies +### Dépendances secondaires -The Dependencies panel displays [**secondary dependencies**](#automatic-dependency-resolution) with the `Component dependency` [origin](#dependency-origin): +Le panneau Dépendances indique les [**dépendances secondaires**](#automatic-dependency-resolution) en affichant comme [origin](#dependency-origin) `Dépendance de composant` : ![recursive-dependency](../assets/en/Project/recursive.png) -When you hover over a secondary dependency, a tooltip displays the parent dependency that requires it. A secondary dependency cannot be [removed](#removing-a-dependency) directly, you must remove or edit the primary dependency that requires it. +Lorsque vous survolez une dépendance secondaire, une infobulle affiche la dépendance parente qui la requiert. Une dépendance secondaire ne peut pas être [supprimée](#removing-a-dependency) directement, vous devez supprimer ou modifier la dépendance primaire qui la requiert. ### Statut des dépendances @@ -403,19 +403,19 @@ Une infobulle s'affiche lorsque vous survolez la ligne de dépendance, fournissa ### Origine de la dépendance -Le panneau Dépendances liste toutes les dépendances du projet, quelle que soit leur origine, c'est-à-dire d'où qu'elles viennent. L'origine de la dépendance est fournie par l'étiquette sous son nom : +Le panneau Dépendances liste toutes les dépendances du projet, quelle que soit leur origine. L'origine de la dépendance est fournie par l'étiquette sous son nom : ![dependency-origin](../assets/en/Project/dependency-origin.png) Les options suivantes sont disponibles : -| Étiquette d'origine | Description | -| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -| Built in 4D | Composant 4D intégré, stocké dans le dossier `Components` de l'application 4D | -| Declared in project | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) | -| Declared in environment | Component declared in the [`dependencies.json`](#dependenciesjson) file and overriden in the [`environment4d.json`](#environment4djson) file | -| Dossier Components | Composant situé dans le dossier [`Components`](architecture.md#components) | -| Component dependency | Secondary component ([required by a another component](#automatic-dependency-resolution)) | +| Étiquette | Description | +| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| Intégré à 4D | Composant 4D intégré, stocké dans le dossier `Components` de l'application 4D | +| Déclaré dans le projet | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) | +| Déclaré dans l'environnement | Composant déclaré dans le fichier [`dependencies.json`](#dependenciesjson) et surchargé dans le fichier [`environment4d.json`](#environment4djson) | +| Dossier Components | Composant situé dans le dossier [`Components`](architecture.md#components) | +| Dépendance de composant | Composant secondaire ([requis par un autre composant](#automatic-dependency-resolution)) | **Cliquez avec le bouton droit de la souris** dans une ligne de dépendance et sélectionnez **Afficher sur le disque** pour révéler l'emplacement d'une dépendance : @@ -469,11 +469,11 @@ Pour ajouter une [dépendance GitHub](#components-stored-on-github), cliquez sur :::note -By default, [components developed by 4D](../Extensions/overview.md#components-developed-by-4d) are listed in the combo box, so that you can easily select and install these features in your environment: +Par défaut, les [composants développés par 4D](../Extensions/overview.md#components-developed-by-4d) sont répertoriés dans la liste, ce qui vous permet de sélectionner et d'installer facilement ces fonctionnalités dans votre environnement : ![dependency-default-git](../assets/en/Project/dependency-default.png) -Components already installed are not listed. +Les composants déjà installés ne sont pas dans la liste. ::: @@ -493,7 +493,7 @@ Définissez la [plage de versions des dépendances](#tags-and-versions) à utili Cliquez sur le bouton **Ajouter** pour ajouter la dépendance au projet. -The GitHub dependency is declared in the [**dependencies.json**](#dependenciesjson) file and added to the [inactive dependency list](#dependency-status) with the **Available at restart** status. Elle sera chargée une fois que l'application aura redémarré. +La dépendance GitHub est déclarée dans le fichier [**dependencies.json**](#dependenciesjson) et ajoutée à la [liste des dépendances inactives](#dependency-status) avec le statut **Disponible après redémarrage**. Elle sera chargée une fois que l'application aura redémarré. #### Définir une plage de versions pour une dépendance GitHub @@ -505,7 +505,7 @@ Vous pouvez définir l'option [règle de dépendance](#tags-and-versions) pour u - **Jusqu'à la version majeure suivante** : Définit une [plage sémantique de versions](#tags-and-versions) pour limiter les mises à jour à la version majeure suivante. - **Jusqu'à la prochaine version mineure** : De même, limite les mises à jour à la version mineure suivante. - **Version exacte (balise)** : Sélectionnez ou saisissez manuellement un [tag spécifique](#tags-and-versions) dans la liste disponible. -- **Suivre la version 4D** : Téléchargez la dernière version du composant compatible avec la version 4D courante. Vous ne pouvez utiliser cette règle de dépendance que si les tags de release des composants respectent la [convention de nommage](#naming-conventions-for-4d-version-tags) appropriée. This option is recommended for the [components developed by 4D](../Extensions/overview.md#components-developed-by-4d). +- **Suivre la version 4D** : Téléchargez la dernière version du composant compatible avec la version 4D courante. Vous ne pouvez utiliser cette règle de dépendance que si les tags de release des composants respectent la [convention de nommage](#naming-conventions-for-4d-version-tags) appropriée. Cette option est recommandée pour les [composants développés par 4D](../Extensions/overview.md#components-developed-by-4d). La version courante de la dépendance GitHub est affichée sur le côté droit de l'élément de la dépendance : @@ -513,7 +513,7 @@ La version courante de la dépendance GitHub est affichée sur le côté droit d #### Modifier la plage de versions des dépendances GitHub -You can modify the [version setting](#defining-a-github-dependency-version-range) for a listed GitHub dependency: select the dependency to modify and select **Edit the dependency...** from the contextual menu. In the "Edit the dependency" dialog box, edit the Dependency Rule menu and click **Apply**. +Vous pouvez modifier le [paramètre de version](#defining-a-github-dependency-version-range) pour une dépendance GitHub listée : sélectionnez la dépendance à modifier et sélectionnez **Editer la dépendance...** dans le menu contextuel. Dans la boîte de dialogue "Editer la dépendance", modifiez le menu Règle de dépendance et cliquez sur **Appliquer**. La modification de la plage de versions est utile par exemple si vous utilisez la fonction de mise à jour automatique et que vous souhaitez verrouiller une dépendance à un numéro de version spécifique. @@ -611,7 +611,7 @@ Pour supprimer une dépendance de la fenêtre Dépendances, sélectionnez la dé :::note -Only primary dependencies declared in the [**dependencies.json**](#dependenciesjson) file can be removed using the Dependencies panel. Secondary dependencies cannot be removed directly - to remove a secondary dependency, you must remove the primary dependency that requires it. Si une dépendance sélectionnée ne peut pas être supprimée, le bouton **-** est désactivé et l'élément de menu **Supprimer la dépendance** est masqué. +Seules les dépendances primaires déclarées dans le fichier [**dependencies.json**](#dependenciesjson) peuvent être supprimées dans la fenêtre Dépendances. Les dépendances secondaires ne peuvent pas être supprimées directement - pour supprimer une dépendance secondaire, vous devez supprimer la dépendance primaire qui la requiert. Si une dépendance sélectionnée ne peut pas être supprimée, le bouton **-** est désactivé et l'élément de menu **Supprimer la dépendance** est masqué. ::: @@ -621,7 +621,7 @@ Une boîte de dialogue de confirmation s'affiche. Si la dépendance a été déc Si vous confirmez la boîte de dialogue, le [statut](#dependency-status) de la dépendance supprimée est automatiquement modifié en "Déchargé après redémarrage". Elle sera chargée une fois que l'application aura redémarré. -#### Dependency usage warnings +#### Avertissements relatifs à l'utilisation des dépendances -When you attempt to remove a primary dependency that is required by other dependencies in your project, you will be warned that the dependency is still in use. The system will display which other dependencies require it and prompt you to confirm the removal, as removing it may cause those dependent components to stop working properly. +Lorsque vous tentez de supprimer une dépendance primaire qui est requise par d'autres dépendances dans votre projet, vous serez averti que la dépendance est toujours en cours d'utilisation. Le système affichera les autres dépendances qui la requièrent et vous demandera de confirmer la suppression, car celle-ci peut entraîner l'arrêt du fonctionnement de ces composants dépendants. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Project/date-time-formats.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Project/date-time-formats.md index 13aa1b691806b2..86aa3e539a0877 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Project/date-time-formats.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Project/date-time-formats.md @@ -51,18 +51,18 @@ Le tableau suivant répertorie tous les motifs pris en charge pour les formats d | D | jour de l'année | D | 189 | | E | jour de la semaine | E, EE, ou EEE | Tue | | | | EEEE | Tuesday | -| | | EEEEE | M | +| | | EEEEE | T | | | | EEEEEE | ma | | e | jour local de la semaine | e | 2 | | | | ee | 02 | -| | | eee | mar. | -| | | eeee | Mardi | +| | | eee | Tue | +| | | eeee | Tuesday | | | | eeeee | T | | | | eeeeee | ma | | c | jour local de la semaine seul | c ou cc | 2 | -| | | ccc | mar. | -| | | cccc | mardi | -| | | ccccc | M | +| | | ccc | Tue | +| | | cccc | Tuesday | +| | | ccccc | T | | | | cccccc | ma | | a | AM ou PM | a, aa, ou aaa | PM [abbrev] | | | | aaaa | PM [complet] | @@ -98,8 +98,8 @@ Le tableau suivant répertorie tous les motifs pris en charge pour les formats d | O | Time Zone: short localized UTC | O | UTC-8 | | | Time Zone: long localized UTC (=ZZZZ) | OOOO | UTC-08:00 | | z | Time Zone: specific non-location | z, zz, ou zzz | UTC+1 | -| | | zzzz | heure normale d'Europe centrale | -| | | zzzzz | heure normale d'Europe centrale | +| | | zzzz | UTC-08:00 | +| | | zzzzz | -08:00, -07:52:58, Z | | | | | | | ' | échappement pour le texte | ' | ' | | ' ' | deux guillemets simples en produisent un | ' ' | ' ' | diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/REST/$filter.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/REST/$filter.md index 225bb92db1df45..e17f1cb10ba4d0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/REST/$filter.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/REST/$filter.md @@ -90,11 +90,11 @@ Use the `params` property to provide the filter with the vector comparison param The *vectorComparison* parameter is a collection of the following elements: -| Propriété | Type | Description | | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [].vector | Collection d'objets) | Obligatoire. A collection that represents the vector to compare | | -| [].metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | | -| | [].threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. | +| Propriété | Type | Description | +| -------------------------------------------------------------------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [].vector | Collection of numbers | Obligatoire. A collection that represents the vector to compare | +| [].metric | Text | Optionnel. [Calcul vectoriel](../API/VectorClass.md#understanding-the-different-vector-computations) à utiliser pour la recherche. Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot" : calcule la similarité de points des vecteurs.
  • "euclidean" : calcule la distance euclidienne entre les vecteurs. | +| [].threshold | Real | Facultatif (valeur par défaut : 0,5). Valeur seuil utilisée pour filtrer les comparaisons de vecteurs sur la base de leur score de similarité cosinus, point ou euclidienne selon la "métrique" sélectionnée. Il est fortement recommandé de choisir une similitude qui corresponde le mieux à votre cas d'utilisation spécifique pour des résultats optimaux. | Only a subset of **comparator** symbols are supported with vector comparisons. Notez qu'ils comparent les résultats à la valeur de seuil (threshold) : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/REST/ClassFunctions.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/REST/ClassFunctions.md index 5740fc0d6c2ff1..76d5a6bbd7b1f0 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/REST/ClassFunctions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/REST/ClassFunctions.md @@ -120,7 +120,7 @@ Par exemple, avec une fonction de la dataclass `getCities()` recevant des param `/rest/City/getCities?$params='["Aguada","Paris"]'` -### Paramètres des entités +### Paramètre d'entité Les entités passées en paramètres sont référencées sur le serveur via leur clé (c'est-à-dire la propriété __KEY). Si le paramètre clé est omis dans une requête, une nouvelle entité est chargée en mémoire sur le serveur. Vous pouvez également transmettre des valeurs pour tous les attributs de l'entité. Ces valeurs seront automatiquement utilisées pour l'entité traitée sur le serveur. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/Tags/transformation-tags.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/Tags/transformation-tags.md index 1c69170a4f0670..8bea0677e610e2 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/Tags/transformation-tags.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/Tags/transformation-tags.md @@ -160,7 +160,7 @@ Voici les caractéristiques de la balise 4DCODE : - La commande `TRACE` est prise en charge et active le débogueur 4D, vous permettant ainsi de déboguer votre code de template. - Toute erreur affichera le dialogue d'erreur standard qui permet à l'utilisateur d'arrêter l'exécution du code ou d'entrer en mode débogage. - Le texte compris entre `` est divisé en lignes acceptant n'importe quelle convention de fin de ligne (cr, lf, ou crlf). -- Le texte est tokenisé dans le contexte de la base de données qui a appelé `PROCESS 4D TAGS`. C'est important pour la reconnaissance des méthodes projet par exemple. La propriété de méthode [Disponible via les balises et les URL 4D (4DACTION...)](WebServer/allowProject.md) n'est pas prise en compte. +- Le texte est tokenisé dans le contexte de la base de données qui a appelé `PROCESS 4D TAGS`. Ceci est important pour la reconnaissance des méthodes de projet par exemple. La propriété de méthode [Disponible via les balises et les URL 4D (4DACTION...)](WebServer/allowProject.md) n'est pas prise en compte. - Même si le texte utilise toujours l'anglais-US, il est recommandé d'utiliser la syntaxe token (:Cxxx) pour les noms de commandes et de constantes afin de se prémunir contre d'éventuels problèmes dus à des commandes ou des constantes renommées d'une version de 4D à une autre. > Le fait que les balises 4DCODE puissent appeler n'importe quelle commande du langage 4D ou méthode du projet pourrait être considéré comme un problème de sécurité, en particulier lorsque la base de données est disponible via HTTP. Toutefois, étant donné qu'elle exécute du code côté serveur appelé à partir de vos propres fichiers de modèle, la balise elle-même ne représente pas un problème de sécurité. Dans ce contexte, comme pour tout serveur Web, la sécurité est principalement gérée au niveau des accès distants aux fichiers du serveur. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md index 28a83e40f5d3ef..01d52a237e1f4e 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md @@ -31,10 +31,10 @@ Dans *rangeObj*, passez la plage de cellules contenant les valeurs, formatages e Vous pouvez passer un paramètre facultatif *options* contenant les propriétés suivantes : -| Propriété | Type | Description | -| ----------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Boolean | *Vrai* (par défaut) pour conserver les valeurs copiées, le formatage et les formules après l'exécution de la commande. *Faux* pour les supprimer. | -| copyOptions | Integer | Spécifie ce qui est copié ou déplacé. Valeurs possibles :

    ValeurDescription
    `vk clipboard options all` (par défaut)Copie tous les objets de données, y compris les valeurs, le formatage et les formules.
    `vk clipboard options formatting`Copie uniquement le formatage.
    `vk clipboard options formulas`Copie uniquement les formules.
    `vk clipboard options formulas and formatting`Copie les formules et le formatage.
    `vk clipboard options values`Copie uniquement les valeurs.
    `vk clipboard options value and formatting`Copie les valeurs et le formatage.

    | +| Propriété | Type | Description | +| ----------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| copy | Boolean | *Vrai* (par défaut) pour conserver les valeurs copiées, le formatage et les formules après l'exécution de la commande. *Faux* pour les supprimer. | +| copyOptions | Integer | Spécifie ce qui est copié ou déplacé. Valeurs possibles :

    ValeurDescription
    `vk clipboard options all` (par défaut)Copie tous les objets de données, y compris les valeurs, la mise en forme et les formules.
    `vk clipboard options formatting` (options du presse-papier)Copie uniquement la mise en forme.
    `vk clipboard options formulas`Copie uniquement les formules.
    `vk clipboard options formulas and formatting`Copie les formules et la mise en forme.
    `vk clipboard options values`Copie uniquement les valeurs.
    `vk clipboard options value and formatting` Copie les valeurs et la mise en forme.

    | Les options de collage définies dans [workbook options](vp-set-workbook-options.md) sont prises en compte. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md index af326cb69945f7..1ea98812df74fb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md @@ -16,7 +16,7 @@ title: VP EXPORT TO BLOB ## Description -La commande `VP EXPORT TO BLOB` exporte le document 4D View Pro *vpAreaName* dans un 4D.Blob en fonction des options *paramObj*. Le blob exporté est disponible par le callback export. L'exportation et l'importation des zones 4D View Pro sous forme de blobs est rapide et économe en mémoire. +La commande `VP EXPORT TO BLOB` exporte le document 4D View Pro *vpAreaName* dans un 4D.Blob selon les options *paramObj*. Le blob exporté est disponible via la méthode de rappel de l'export. L'exportation et l'importation des zones 4D View Pro sous forme de blobs est rapide et économe en mémoire. Dans *paramObj*, vous pouvez passer plusieurs propriétés : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md index 072da0f1050400..f7acf77abdbe77 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md @@ -27,14 +27,14 @@ Le paramètre *searchValue* vous permet de passer le texte à rechercher dans *r Vous pouvez passer le paramètre optionnel *searchCondition* pour préciser la manière dont la recherche est effectuée. Les propriétés suivantes sont prises en charge : -| Propriété | Type | Description | -| ----------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| afterColumn | Integer | Le numéro de la colonne située juste avant la colonne de départ de la recherche. If the *rangeObj* is a combined range, the column number given must be from the first range. Default value: -1 (beginning of the *rangeObj*) | -| afterRow | Integer | Le numéro de la colonne située juste avant la colonne de départ de la recherche. Le numéro de la colonne située juste avant la colonne de départ de la recherche. Default value: -1 (beginning of the *rangeObj*) | -| all | Boolean |
  • True - All cells in *rangeObj* corresponding to *searchValue* are returned
  • False - (default value) Only the first cell in *rangeObj* corresponding to *searchValue* is returned
  • | -| flags | Integer |
    `vk find flag exact match`The entire content of the cell must completely match the search value
    `vk find flag ignore case`Capital and lower-case letters are considered the same. Ex: "a" is the same as "A".
    `vk find flag none`no search flags are considered (default)
    `vk find flag use wild cards`Wildcard characters (\*,?) can be used in the search string. Wildcard characters can be used in any string comparison to match any number of characters:
  • \* for zero or multiple characters (for example, searching for "bl*" can find "bl", "black", or "blob")
  • ? for a single character (for example, searching for "h?t" can find "hot", or "hit"
  • These flags can be combined. For example: $search.flags:=vk find flag use wild cards+vk find flag ignore case | -| order | Integer |
    `vk find order by columns`The search is performed by columns. Each row of a column is searched before the search continues to the next column.
    `vk find order by rows`The search is performed by rows. Each column of a row is searched before the search continues to the next row (default)
    | -| target | Integer |
    `vk find target formula`The search is performed in the cell formula
    `vk find target tag`The search is performed in the cell tag
    `vk find target text`The search is performed in the cell text (default)

    These flags can be combined. For example:$search.target:=vk find target formula+vk find target text

    | +| Propriété | Type | Description | +| ----------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| afterColumn | Integer | Le numéro de la colonne située juste avant la colonne de départ de la recherche. If the *rangeObj* is a combined range, the column number given must be from the first range. Default value: -1 (beginning of the *rangeObj*) | +| afterRow | Integer | Le numéro de la colonne située juste avant la colonne de départ de la recherche. Le numéro de la colonne située juste avant la colonne de départ de la recherche. Default value: -1 (beginning of the *rangeObj*) | +| all | Boolean |
  • True - All cells in *rangeObj* corresponding to *searchValue* are returned
  • False - (default value) Only the first cell in *rangeObj* corresponding to *searchValue* is returned
  • | +| flags | Integer |
    `vk find flag exact match`The entire content of the cell must completely match the search value
    `vk find flag ignore case`Capital and lower-case letters are considered the same. Ex : "a" est la même chose que "A".
    `vk find flag none`aucun drapeau de recherche n'est pris en compte (par défaut)
    `vk find flag use wild cards`Caractères génériques (\*, ?) can be used in the search string. Wildcard characters can be used in any string comparison to match any number of characters:
  • \* for zero or multiple characters (for example, searching for "bl*" can find "bl", "black", or "blob")
  • ? for a single character (for example, searching for "h?t" can find "hot", or "hit"
  • These flags can be combined. For example: $search.flags:=vk find flag use wild cards+vk find flag ignore case | +| order | Integer |
    `vk find order by columns`The search is performed by columns. Chaque ligne d'une colonne est recherchée avant que la recherche ne passe à la colonne suivante.
    `vk find order by rows`La recherche est effectuée par lignes. Each column of a row is searched before the search continues to the next row (default)
    | +| target | Integer |
    `vk find target formula`The search is performed in the cell formula
    `vk find target tag`The search is performed in the cell tag
    `vk find target text`The search is performed in the cell text (default)

    These flags can be combined. For example:$search.target:=vk find target formula+vk find target text

    | Dans le paramètre optionnel *replaceValue*, vous pouvez passer du texte pour remplacer toute instance du texte dans la *searchValue* trouvée dans *rangeObj*. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md index 9a7e1a0cf81fdb..9e4d78895e35dc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md @@ -43,33 +43,33 @@ Une erreur est retournée si le paramètre `filePath` est invalide, ou si le fic Le paramètre optionnel *paramObj* vous permet de définir les propriétés du document importé: -| Paramètres | | Type | Description | -| ------------ | ------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| formula | | 4D.Function | Une méthode callback à lancer lorsque l'import est terminé. Vous devez utiliser une formule retournée par la commande [`Formula`](../../commands/formula.md). See [Passing a callback method (formula)](vp-export-document.md#passing-a-callback-method-formula). | -| password | | text | Microsoft Excel uniquement (optionnel) - Mot de passe utilisé pour protéger un document Microsoft Excel. | -| csvOptions | | object | options d'import csv | -| | range | object | Plage de cellules contenant la première cellule dans laquelle les données seront saisies. Si la plage spécifiée n'est pas une plage de cellules, seule la première cellule de la plage est utilisée. | -| | rowDelimiter | text | Délimiteur de ligne. S'il n'est pas défini, le délimiteur est automatiquement déterminé par 4D. | -| | columnDelimiter | text | Délimiteur de colonne. Par défaut : "," | -| sjsOptions | | object | options d'import sjs | -| | calcOnDemand | boolean | Indique si les formules doivent être calculées uniquement lorsqu'elles sont demandées, la valeur par défaut est faux. | -| | dynamicReferences | boolean | Indique si les fonctions doivent être calculées avec des références dynamiques, la valeur par défaut est vrai. | -| | fullRecalc | boolean | Indique si le calcul doit être effectué après le chargement des données json, la valeur par défaut est faux. | -| | includeFormulas | boolean | Whether to include the formulas when loading, default is true. | -| | includeStyles | boolean | Whether to include the styles when loading, default is true. | -| | includeUnusedStyles | boolean | Whether to include the unused name styles when converting excel xml to the json, default is true. | -| | openMode | integer |
  • 0 (normal): normal open mode, without lazy and incremental. When opening file, UI and UI event could be refreshed and responsive at specific time points.
  • 1 (lazy): lazy open mode. When opening file, only the active sheet will be loaded directly. Other sheets will be loaded only when they are be used.
  • 2 (incremental): incremental open mode. When opening file, UI and UI event could be refreshed and responsive directly.
  • | -| excelOptions | | object | Excel only (optional) - Options for Excel export | -| | includeStyles | boolean | Whether to include the style when importing, default true. | -| | includeFormulas | boolean | Whether to include the formula when importing, default true. | -| | frozenColumnsAsRowHeaders | boolean | Whether to treat the frozen columns as row headers when importing, default false. | -| | frozenRowsAsColumnHeaders | boolean | Whether to treat the frozen rows as column headers when importing, default false. | -| | fullRecalc | boolean | Indique si le calcul doit être effectué après le chargement des données json, la valeur par défaut est faux. | -| | dynamicReferences | boolean | Whether to calculate functions with dynamic reference, default true. | -| | calcOnDemand | boolean | Whether to calculate formulas only when they are demanded, default false. | -| | includeUnusedStyles | boolean | Whether to include the unused name style when converting excel xml to the json, default true. | -| | password | text | The password to open the workbook. | -| | openMode | text | The open mode of normal, lazy and incremental. By default is normal. | +| Paramètres | | Type | Description | +| ------------ | ------------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| formula | | 4D.Function | Une méthode callback à lancer lorsque l'import est terminé. Vous devez utiliser une formule retournée par la commande [`Formula`](../../commands/formula.md). See [Passing a callback method (formula)](vp-export-document.md#passing-a-callback-method-formula). | +| password | | text | Microsoft Excel uniquement (optionnel) - Mot de passe utilisé pour protéger un document Microsoft Excel. | +| csvOptions | | object | options d'import csv | +| | range | object | Plage de cellules contenant la première cellule dans laquelle les données seront saisies. Si la plage spécifiée n'est pas une plage de cellules, seule la première cellule de la plage est utilisée. | +| | rowDelimiter | text | Délimiteur de ligne. S'il n'est pas défini, le délimiteur est automatiquement déterminé par 4D. | +| | columnDelimiter | text | Délimiteur de colonne. Par défaut : "," | +| sjsOptions | | object | options d'import sjs | +| | calcOnDemand | boolean | Indique si les formules doivent être calculées uniquement lorsqu'elles sont demandées, la valeur par défaut est faux. | +| | dynamicReferences | boolean | Indique si les fonctions doivent être calculées avec des références dynamiques, la valeur par défaut est vrai. | +| | fullRecalc | boolean | Indique si le calcul doit être effectué après le chargement des données json, la valeur par défaut est faux. | +| | includeFormulas | boolean | Whether to include the formulas when loading, default is true. | +| | includeStyles | boolean | Whether to include the styles when loading, default is true. | +| | includeUnusedStyles | boolean | Whether to include the unused name styles when converting excel xml to the json, default is true. | +| | openMode | integer |
  • 0 (normal): normal open mode, without lazy and incremental. Lors de l'ouverture d'un fichier, l'interface utilisateur et l'événement d'interface utilisateur peuvent être actualisés et réactifs à des moments précis.
  • 1 (lazy) : mode d'ouverture lazy. When opening file, only the active sheet will be loaded directly. Les autres feuilles ne seront chargées que lorsqu'elles seront utilisées.
  • 2 (incrémental): mode d'ouverture incrémental. When opening file, UI and UI event could be refreshed and responsive directly.
  • | +| excelOptions | | object | Excel only (optional) - Options for Excel export | +| | includeStyles | boolean | Whether to include the style when importing, default true. | +| | includeFormulas | boolean | Whether to include the formula when importing, default true. | +| | frozenColumnsAsRowHeaders | boolean | Whether to treat the frozen columns as row headers when importing, default false. | +| | frozenRowsAsColumnHeaders | boolean | Whether to treat the frozen rows as column headers when importing, default false. | +| | fullRecalc | boolean | Indique si le calcul doit être effectué après le chargement des données json, la valeur par défaut est faux. | +| | dynamicReferences | boolean | Whether to calculate functions with dynamic reference, default true. | +| | calcOnDemand | boolean | Whether to calculate formulas only when they are demanded, default false. | +| | includeUnusedStyles | boolean | Whether to include the unused name style when converting excel xml to the json, default true. | +| | password | text | The password to open the workbook. | +| | openMode | text | The open mode of normal, lazy and incremental. By default is normal. | :::note Notes diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md index 06c23b842ecbd4..825e1a99be63eb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md @@ -35,10 +35,10 @@ Dans *targetRange*, passez la plage de cellules où les valeurs, le style et les Le paramètre *options* a plusieurs propriétés : -| Propriété | Type | Description | -| ------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Boolean | Détermine si les valeurs, la mise en forme et les formules des cellules de *originRange* sont supprimés après l'exécution de la commande :
    • *False* (par défaut) pour les supprimer
    • *True* pour les conserver
    | -| pasteOptions | Integer | Spécifie ce qui est collé. Valeurs possibles :

    ValeurDescription
    `vk clipboard options all` (default)Colle tous les objets de données, y compris les valeurs, la mise en forme et les formules.
    `vk clipboard options formatting`Colle uniquement la mise en forme.
    `vk clipboard options formulas`Colle uniquement les formules.
    `vk clipboard options formulas and formatting`Colle les formules et la mise en forme.
    `vk clipboard options values`Colle uniquement les valeurs.
    `vk clipboard options value and formatting`Colle les valeurs et la mise en forme

    | +| Propriété | Type | Description | +| ------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| copy | Boolean | Détermine si les valeurs, la mise en forme et les formules des cellules de *originRange* sont supprimés après l'exécution de la commande :
    • *False* (par défaut) pour les supprimer
    • *True* pour les conserver
    | +| pasteOptions | Integer | Spécifie ce qui est collé. Valeurs possibles :

    ValeurDescription
    `vk clipboard options all` (par défaut)Colle tous les objets de données, y compris les valeurs, la mise en forme et les formules.
    `vk clipboard options formatting`Ne colle que la mise en forme..
    `vk clipboard options formulas`Ne colle que les formules.
    `vk clipboard options formulas and formatting`Colle les formules et la mise en forme.
    `vk clipboard options values`Ne colle que les valeurs.
    `vk clipboard options value and formatting`Colle les valeurs et la mise en forme.

    | Les options de collage définies dans [workbook options](vp-set-workbook-options.md) sont prises en compte. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-row.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-row.md index 2213cd4df3bfb5..b7b51cdbcc4c1a 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-row.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-row.md @@ -33,7 +33,7 @@ Dans le paramètre optionnel *sheet*, vous pouvez désigner une feuille spécifi ## Exemple -Vous souhaitez définir une plage pour la ligne ci-dessous (dans la feuille de calcul courante) : +Vous souhaitez définir une plage pour la ligne ci-dessous (dans la feuille courante) : ![](../../assets/en/ViewPro/cmd_vpRow.PNG) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md index 2999513fe85d7c..621644af08ae2f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md @@ -29,66 +29,66 @@ Les options modifiées du classeur sont enregistrées avec le document. Le tableau suivant répertorie les options de classeur disponibles : -| Propriété | Type | Description | -| ------------------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| allowUserDragMerge | boolean | L'opération de fusion par glisser est autorisée (sélection des cellules et glisser de la sélection pour fusionner les cellules) | -| allowAutoCreateHyperlink | boolean | Permet la création automatique d'hyperliens dans la feuille de calcul. | -| allowContextMenu | boolean | Le menu contextuel intégré peut être ouvert. | -| allowCopyPasteExcelStyle | boolean | Les styles d'une feuille de calcul peuvent être copiés et collés dans Excel, et vice-versa. | -| allowDynamicArray | boolean | Active les tableaux dynamiques dans les feuilles de travail | -| allowExtendPasteRange | boolean | Étend la plage collée si la plage collée n'est pas suffisante pour les données collées | -| allowSheetReorder | boolean | La réorganisation de la feuille est autorisée | -| allowUndo | boolean | L'annulation des modifications est autorisée. | -| allowUserDeselect | boolean | La désélection de cellules spécifiques d'une sélection est autorisée. | -| allowUserDragDrop | boolean | Glisser-déposer des données de plage est autorisé | -| allowUserDragFill | boolean | Le remplissage par glisser est autorisé | -| allowUserEditFormula | boolean | Des formules peuvent être saisies dans les cellules | -| allowUserResize | boolean | Les colonnes et les lignes peuvent être redimensionnées | -| allowUserZoom | boolean | Le zoom (ctrl + molette de la souris) est autorisé | -| autoFitType | number | Le contenu est formaté pour tenir dans les cellules, les cellules et les en-têtes. Valeurs disponibles :
    ConstanteValeurDescription
    vk auto fit type cell 0 Le contenu ajuste automatiquement les cellules
    vk auto fit type cell with header 1 Le contenu ajuste automatiquement les cellules et les en-têtes
    | -| backColor | string | Chaîne de couleur utilisée pour représenter la couleur de fond de la zone, comme "rouge", "#FFFF00", "rgb(255,0,0)", "Accent 5". La couleur de fond initiale est masquée lorsqu'une image de fond est définie. | -| backgroundImage | string / picture / file | Image de fond de la zone. | -| backgroundImageLayout | number | Comment l'image de fond s'affiche. Valeurs disponibles :
    ConstanteValeurDescription
    vk image layout center 1 Au centre de la zone.
    vk image layout none 3 Dans le coin supérieur gauche de la zone avec sa taille originale.
    vk image layout stretch 0 Remplit la zone.
    vk image layout zoom 2 S'affiche avec son ratio d'aspect d'origine.
    | -| calcOnDemand | boolean | Les formules ne sont calculées que lorsqu'elles sont demandées. | -| columnResizeMode | number | Mode redimensionnement pour les colonnes. Valeurs disponibles :
    ConstanteValeurDescription
    vk resize mode normal 0 Utilise le mode de redimensionnement normal (c'est-à-dire que les colonnes restantes sont affectées)
    vk resize mode split 1 Utiliser le mode fractionné (les colonnes restantes ne sont pas affectées)
    | -| copyPasteHeaderOptions | number | En-têtes à inclure lorsque les données sont copiées ou collées. Valeurs disponibles :
    ConstanteValeurDescription
    vk copy paste header options all headers3 Inclut les en-têtes sélectionnés lorsque les données sont copiées ; écrase les en-têtes sélectionnés lorsque les données sont collées.
    vk copy paste header options column headers 2 Inclut les en-têtes de colonnes sélectionnées lorsque les données sont copiées ; écrase les en-têtes de colonnes sélectionnées lorsque les données sont collées.
    vk copy paste header options no headers0 Les en-têtes de colonne et de ligne ne sont pas inclus lorsque les données sont copiées ; les en-têtes de colonne ou de ligne sélectionnés ne sont pas écrasés lorsque les données sont collées.
    vk copy paste header options row headers1 Inclut les en-têtes de ligne sélectionnés lorsque les données sont copiées ; écrase les en-têtes de ligne sélectionnés lorsque les données sont collées.
    | -| customList | collection | Liste pour que les utilisateurs personnalisent le remplissage par glisser-déposer, en priorisant la correspondance de cette liste dans chaque remplissage. Chaque élément de collection est une collection de strings. Voir sur [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/cells/AutoFillData/AutoFillLists). | -| cutCopyIndicatorBorderColor | string | Couleur de bordure de l'indicateur affiché lorsque l'utilisateur coupe ou copie la sélection. | -| cutCopyIndicatorVisible | boolean | Afficher un indicateur lors du copier ou du coller de l'élément sélectionné. | -| defaultDragFillType | number | Le type de remplissage par défaut du glisser-déposer. Valeurs disponibles :
    ConstanteValeurDescription
    vk auto fill type auto 5 Remplit automatiquement les cellules.
    vk auto fill type clear values 4 Efface les valeurs des cellules.
    vk auto fill type copycells 0 Remplit les cellules avec tous les objets de données, y compris les valeurs, la mise en forme et les formules.
    vk auto fill type fill formatting only 2 Remplit les cellules uniquement avec la mise en forme.
    vk auto fill type fill series 1 Remplit les cellules avec des séries.
    vk auto fill type fill without formatting 3 Remplit les cellules avec des valeurs sans les formater.
    | -| enableAccessibility | boolean | La prise en charge de l'accessibilité est activée dans la feuille de calcul. | -| enableFormulaTextbox | boolean | La zone de texte de la formule est activée. | -| grayAreaBackColor | string | Une chaîne de couleur utilisée pour représenter la couleur de fond de la zone grise, comme "red", "#FFFF00", "rgb(255,0,0)", "Accent 5", etc. | -| highlightInvalidData | boolean | Les données non valides sont surlignées. | -| iterativeCalculation | boolean | Active le calcul itératif. Voir sur [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/formulareference/formulaoverview/calculating-iterative). | -| iterativeCalculationMaximumChange | numérique | Montant maximum de changement entre deux valeurs de calcul. | -| iterativeCalculationMaximumIterations | numérique | Nombre de fois maximum que la formule doit recalculer. | -| newTabVisible | boolean | Afficher un onglet spécial pour permettre aux utilisateurs d'insérer de nouvelles feuilles. | -| numbersFitMode | number | Modifie le mode d'affichage lorsque la largeur des données date/nombre est plus longue que la largeur des colonnes. Valeurs disponibles : vk
    ConstanteValeurDescription
    vk numbers fit mode mask0 Remplace le contenu des données par "###" et affiche l'astuce
    numbers fit mode overflow 1 Affiche le contenu des données sous forme de chaîne de caractères. Si la cellule suivante est vide, le contenu est débordé.
    | -| pasteSkipInvisibleRange | boolean | Coller ou ne pas coller les données dans les plages invisibles :
    • False (par défaut) : coller les données
    • True : Ne pas coller les données dans les plages invisibles
    Voir [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) pour plus d'informations sur les plages invisibles. | -| referenceStyle | number | Style pour les références de cellules et de plages dans les formules de cellules. Valeurs disponibles :
    ConstanteValeur Description
    vk reference style A1 0 Utiliser le style A1.
    vk reference style R1C1 1 Utiliser le style R1C1
    | -| resizeZeroIndicator | number | Règle de dessin lorsque la ligne ou la colonne est redimensionnée à zéro. Valeurs disponibles :
    ConstanteValeurDescription
    vk resize zero indicator default 0 Utilise la politique de dessin actuelle lorsque la ligne ou la colonne est redimensionnée à zéro.
    vk resize zero indicator enhanced 1 Dessine deux lignes courtes lorsque la ligne ou la colonne est redimensionnée à zéro.
    | -| rowResizeMode | number | La façon dont les lignes sont redimensionnées. Les valeurs disponibles sont les mêmes que columnResizeMode | -| scrollbarAppearance | number | Apparence de la barre de défilement. Valeurs disponibles :
    ConstanteValeurDescription
    vk scrollbar appearance mobile1 Apparence de la barre de défilement mobile.
    vk scrollbar appearance skin (par défaut)0 Apparence de la barre de défilement classique de type Excel.
    | -| scrollbarMaxAlign | boolean | La barre de défilement s'aligne sur la dernière ligne et la dernière colonne de la feuille courante. | -| scrollbarShowMax | boolean | Les barres de défilement affichées sont basées sur le nombre total de colonnes et de lignes dans la feuille. | -| scrollByPixel | boolean | Activer le défilement de précision par pixel. | -| scrollIgnoreHidden | boolean | La barre de défilement ignore les lignes ou colonnes cachées. | -| scrollPixel | integer | Définit le défilement par ce nombre de pixels lorsque scrollByPixel est true. Définit le défilement par ce nombre de pixels lorsque scrollByPixel est true. Par exemple : le delta de défilement est de 3, scrollPixel est de 5, le défilement final de pixels est de 15. | -| showDragDropTip | boolean | Afficher l'info bulle de glisser-déposer. | -| showDragFillSmartTag | boolean | Afficher la boîte de dialogue de remplissage par glisser-déplacer. | -| showDragFillTip | boolean | Afficher l'info bulle de glisser-remplir. | -| showHorizontalScrollbar | boolean | Afficher la barre de défilement horizontale. | -| showResizeTip | number | Comment afficher l'info-bulle de redimensionnement. Valeurs disponibles :
    ConstanteValeurDescription
    vk show resize tip both 3 Des astuces de redimensionnement horizontaux et verticaux sont affichés.
    vk show resize tip column 1 Seule l'astuce de redimensionnement horizontal est affiché.
    vk show resize tip none 0 Aucune astuce de redimensionnement n'est affiché.
    vk show resize tip row 2 Seule l'astuce de redimensionnement vertical est affiché.
    | -| showScrollTip | number | Comment afficher les info-bulles de défilement. Valeurs disponibles :
    ConstanteValeurDescription
    vk show scroll tip both 3 Des astuces de défilement horizontales et verticales sont affichées.
    vk show scroll tip horizontal 1 Seule l'astuce de défilement horizontale est affichée.
    vk show scroll tip none Aucune astuce de défilement n'est affichée.
    vk show scroll tip vertical 2 Seule l'astuce de défilement verticale est affichée.
    | -| showVerticalScrollbar | boolean | Afficher la barre de défilement verticale. | -| tabEditable | boolean | La barre d'onglets de la feuille peut être modifiée. | -| tabNavigationVisible | boolean | Afficher l'onglet de navigation de la feuille. | -| tabStripPosition | number | Position de la barre d'onglets. Valeurs disponibles :
    ConstanteValeurDescription
    vk tab strip position bottom 0 La position de la barre de tabulation est relative au bas du classeur.
    vk tab strip position left 2 La position de la barre de tabulation est relative à la gauche du classeur.
    vk tab strip position right 3 La position de la barre de tabulation est relative à la droite du classeur.
    vk tab strip position top 1 La position de la barre de tabulation est relative au haut du classeur.
    | -| tabStripRatio | number | Valeur de pourcentage (0.x) qui spécifie combien d'espace horizontal sera alloué à la barre d'onglets. Le reste de la zone horizontale (1 - 0.x) sera alloué à la barre de défilement horizontale. | -| tabStripVisible | boolean | Afficher la barre d'onglets de la feuille. | -| tabStripWidth | number | Largeur de la barre d'onglets lorsque la position est à gauche ou à droite. Par défaut et minimum 80. | -| useTouchLayout | boolean | Utiliser ou non le format tactile pour présenter le composant Spread. | +| Propriété | Type | Description | +| ------------------------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| allowUserDragMerge | boolean | L'opération de fusion par glisser est autorisée (sélection des cellules et glisser de la sélection pour fusionner les cellules) | +| allowAutoCreateHyperlink | boolean | Permet la création automatique d'hyperliens dans la feuille de calcul. | +| allowContextMenu | boolean | Le menu contextuel intégré peut être ouvert. | +| allowCopyPasteExcelStyle | boolean | Les styles d'une feuille de calcul peuvent être copiés et collés dans Excel, et vice-versa. | +| allowDynamicArray | boolean | Active les tableaux dynamiques dans les feuilles de travail | +| allowExtendPasteRange | boolean | Étend la plage collée si la plage collée n'est pas suffisante pour les données collées | +| allowSheetReorder | boolean | La réorganisation de la feuille est autorisée | +| allowUndo | boolean | L'annulation des modifications est autorisée. | +| allowUserDeselect | boolean | La désélection de cellules spécifiques d'une sélection est autorisée. | +| allowUserDragDrop | boolean | Glisser-déposer des données de plage est autorisé | +| allowUserDragFill | boolean | Le remplissage par glisser est autorisé | +| allowUserEditFormula | boolean | Des formules peuvent être saisies dans les cellules | +| allowUserResize | boolean | Les colonnes et les lignes peuvent être redimensionnées | +| allowUserZoom | boolean | Le zoom (ctrl + molette de la souris) est autorisé | +| autoFitType | number | Le contenu est formaté pour tenir dans les cellules, les cellules et les en-têtes. Valeurs disponibles :
    ConstanteValeurDescription
    vk auto fit type cell 0 Le contenu ajuste automatiquement les cellules
    vk auto fit type cell with header 1 Le contenu ajuste automatiquement les cellules et les en-têtes
    | +| backColor | string | Chaîne de couleur utilisée pour représenter la couleur de fond de la zone, comme "rouge", "#FFFF00", "rgb(255,0,0)", "Accent 5". La couleur de fond initiale est masquée lorsqu'une image de fond est définie. | +| backgroundImage | string / picture / file | Image de fond de la zone. | +| backgroundImageLayout | number | Comment l'image de fond s'affiche. Valeurs disponibles :
    ConstanteValeurDescription
    vk image layout center 1 Au centre de la zone.
    vk mise en page d'image aucun 3 Dans le coin supérieur gauche de la zone à sa taille originale.
    vk image layout stretch 0 Remplit la zone.
    vk image layout zoom 2 Affiché avec son rapport d'aspect d'origine.
    | +| calcOnDemand | boolean | Les formules ne sont calculées que lorsqu'elles sont demandées. | +| columnResizeMode | number | Mode redimensionnement pour les colonnes. Valeurs disponibles :
    ConstanteValeurDescription
    vk resize mode normal 0 Utilise le mode de redimensionnement normal (c'est-à-dire que les colonnes restantes sont affectées)
    vk resize mode split 1 Utiliser le mode fractionné (les colonnes restantes ne sont pas affectées)
    | +| copyPasteHeaderOptions | number | En-têtes à inclure lorsque les données sont copiées ou collées. Available values:
    ConstantValueDescription
    vk copy paste header options all headers3 Includes selected headers when data is copied; overwrites selected headers when data is pasted.
    vk copy paste header options column headers 2 Includes selected column headers when data is copied; overwrites selected column headers when data is pasted.
    vk copy paste header options no headers0 Column and row headers are not included when data is copied; does not overwrite selected column or row headers when data is pasted.
    vk copy paste header options row headers1 Inclut les en-têtes de ligne sélectionnés lors de la copie des données ; surcharge les en-têtes de ligne sélectionnés lors du collage des données.
    | +| customList | collection | Liste pour que les utilisateurs personnalisent le remplissage par glisser-déposer, en priorisant la correspondance de cette liste dans chaque remplissage. Chaque élément de collection est une collection de strings. Voir sur [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/cells/AutoFillData/AutoFillLists). | +| cutCopyIndicatorBorderColor | string | Couleur de bordure de l'indicateur affiché lorsque l'utilisateur coupe ou copie la sélection. | +| cutCopyIndicatorVisible | boolean | Afficher un indicateur lors du copier ou du coller de l'élément sélectionné. | +| defaultDragFillType | number | Le type de remplissage par défaut du glisser-déposer. Valeurs disponibles :
    ConstanteValeurDescription
    vk auto fill type auto 5 Remplit automatiquement les cellules.
    vk auto fill type clear values 4 Efface les valeurs des cellules.
    vk auto fill type copycells 0 Remplit les cellules avec tous les objets de données, y compris les valeurs, la mise en forme et les formules.
    vk auto fill type fill formatting only 2 Remplit les cellules uniquement avec la mise en forme.
    vk auto fill type fill series 1 Remplit les cellules avec des séries.
    vk auto fill type fill without formatting 3 Remplit les cellules avec des valeurs sans les formater.
    | +| enableAccessibility | boolean | La prise en charge de l'accessibilité est activée dans la feuille de calcul. | +| enableFormulaTextbox | boolean | La zone de texte de la formule est activée. | +| grayAreaBackColor | string | Une chaîne de couleur utilisée pour représenter la couleur de fond de la zone grise, comme "red", "#FFFF00", "rgb(255,0,0)", "Accent 5", etc. | +| highlightInvalidData | boolean | Les données non valides sont surlignées. | +| iterativeCalculation | boolean | Active le calcul itératif. Voir sur [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/formulareference/formulaoverview/calculating-iterative). | +| iterativeCalculationMaximumChange | numérique | Montant maximum de changement entre deux valeurs de calcul. | +| iterativeCalculationMaximumIterations | numérique | Nombre de fois maximum que la formule doit recalculer. | +| newTabVisible | boolean | Afficher un onglet spécial pour permettre aux utilisateurs d'insérer de nouvelles feuilles. | +| numbersFitMode | number | Modifie le mode d'affichage lorsque la largeur des données date/nombre est plus longue que la largeur des colonnes. Valeurs disponibles : vk
    ConstanteValeurDescription
    vk numbers fit mode mask0 Remplace le contenu des données par "###" et affiche l'astuce
    numbers fit mode overflow 1 Affiche le contenu des données sous forme de chaîne de caractères. Si la cellule suivante est vide, le contenu est débordé.
    | +| pasteSkipInvisibleRange | boolean | Coller ou ne pas coller les données dans les plages invisibles :
    • False (par défaut) : coller les données
    • True : Ne pas coller les données dans les plages invisibles
    Voir [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) pour plus d'informations sur les plages invisibles. | +| referenceStyle | number | Style pour les références de cellules et de plages dans les formules de cellules. Valeurs disponibles :
    ConstanteValeurDescription
    vk reference style A10 Utilise le style A1.
    vk reference style R1C1 1 Utiliser le style R1C1
    | +| resizeZeroIndicator | number | Règle de dessin lorsque la ligne ou la colonne est redimensionnée à zéro. Available values:
    ConstantValueDescription
    vk resize zero indicator default 0 Uses the current drawing policy when the row or column is resized to zero.
    vk resize zero indicator enhanced 1 Dessine deux lignes courtes lorsque la ligne ou la colonne est redimensionnée à zéro.
    | +| rowResizeMode | number | La façon dont les lignes sont redimensionnées. Les valeurs disponibles sont les mêmes que columnResizeMode | +| scrollbarAppearance | number | Apparence de la barre de défilement. Valeurs disponibles :
    ConstanteValeurDescription
    vk scrollbar appearance mobile1 Apparence de la barre de défilement mobile
    vk scrollbar appearance skin (default)0 Apparence classique de la barre de défilement, similaire à celle d'Excel.
    | +| scrollbarMaxAlign | boolean | La barre de défilement s'aligne sur la dernière ligne et la dernière colonne de la feuille courante. | +| scrollbarShowMax | boolean | Les barres de défilement affichées sont basées sur le nombre total de colonnes et de lignes dans la feuille. | +| scrollByPixel | boolean | Activer le défilement de précision par pixel. | +| scrollIgnoreHidden | boolean | La barre de défilement ignore les lignes ou colonnes cachées. | +| scrollPixel | integer | Définit le défilement par ce nombre de pixels lorsque scrollByPixel est true. Définit le défilement par ce nombre de pixels lorsque scrollByPixel est true. Par exemple : le delta de défilement est de 3, scrollPixel est de 5, le défilement final de pixels est de 15. | +| showDragDropTip | boolean | Afficher l'info bulle de glisser-déposer. | +| showDragFillSmartTag | boolean | Afficher la boîte de dialogue de remplissage par glisser-déplacer. | +| showDragFillTip | boolean | Afficher l'info bulle de glisser-remplir. | +| showHorizontalScrollbar | boolean | Afficher la barre de défilement horizontale. | +| showResizeTip | number | Comment afficher l'info-bulle de redimensionnement. Available values:
    ConstantValueDescription
    vk show resize tip both 3 Horizontal and vertical resize tips are displayed.
    vk show resize tip column 1 Only the horizontal resize tip is displayed.
    vk show resize tip none 0 No resize tip is displayed.
    vk show resize tip row 2 Only the vertical resize tip is displayed.
    | +| showScrollTip | number | Comment afficher les info-bulles de défilement. Available values:
    ConstantValueDescription
    vk show scroll tip both 3 Horizontal and vertical scroll tips are displayed.
    vk show scroll tip horizontal 1 Only the horizontal scroll tip is displayed.
    vk show scroll tip none No scroll tip is displayed.
    vk show scroll tip vertical 2 Only the vertical scroll tip is displayed.
    | +| showVerticalScrollbar | boolean | Afficher la barre de défilement verticale. | +| tabEditable | boolean | La barre d'onglets de la feuille peut être modifiée. | +| tabNavigationVisible | boolean | Afficher l'onglet de navigation de la feuille. | +| tabStripPosition | number | Position de la barre d'onglets. Valeurs disponibles :
    ConstanteValeurDescription
    vk tab strip position bottom 0La position de la barre de tabulation est relative au bas du classeur.
    vk tab strip position left 2 La position de la barre de tabulation est relative à la gauche du classeur.
    vk tab strip position right 3 La position de la barre de tabulation est relative à la droite du classeur.
    vk tab strip position top 1 La position de la barre de tabulation est relative au haut du classeur.
    | +| tabStripRatio | number | Valeur de pourcentage (0.x) qui spécifie combien d'espace horizontal sera alloué à la barre d'onglets. Le reste de la zone horizontale (1 - 0.x) sera alloué à la barre de défilement horizontale. | +| tabStripVisible | boolean | Afficher la barre d'onglets de la feuille. | +| tabStripWidth | number | Largeur de la barre d'onglets lorsque la position est à gauche ou à droite. Par défaut et minimum 80. | +| useTouchLayout | boolean | Utiliser ou non le format tactile pour présenter le composant Spread. | ## Exemple diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/configuring.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/configuring.md index 6da02526026bd4..6648693d558630 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/configuring.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/ViewPro/configuring.md @@ -340,8 +340,8 @@ Les attributs de page sont utilisés pour spécifier les paramètres généraux | pageOrder | entier long | L'ordre d'impression des pages. Valeurs disponibles : `vk print page order auto` (par défaut), `vk print page order down then over`, `vk print page order over then down`. | | pageRange | text | La plage de pages pour l'impression | | qualityFactor | entier long | Le facteur de qualité pour l'impression (1 - 8). Plus le facteur de qualité est élevé, meilleure est la qualité d'impression, cependant les performances d'impression peuvent être affectées.

    Valeur par défaut = 2

    | -| useMax | boolean | Seules les colonnes et les lignes avec des données sont imprimées.

    Valeur par défaut = true

    | -| zoomFactor | réel | Le montant de l'agrandissement ou de la réduction de la page imprimée.

    Valeur par défaut = 1

    | +| useMax | boolean | Seules les colonnes et les lignes contenant des données sont imprimées.

    Valeur par défaut = true

    | +| zoomFactor | réel | Le montant pour agrandir ou réduire la page imprimée.

    Valeur par défaut = 1

    | ### Taille du papier diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/http-request-handler.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/http-request-handler.md index a9e16ab1adf8ea..cc9ddee4b5c362 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/http-request-handler.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/http-request-handler.md @@ -17,35 +17,35 @@ Les gestionnaires de requêtes HTTP personnalisés répondent à divers besoins, ## Conditions requises -Custom HTTP Request handlers are supported in the following context: +Les gestionnaires de requêtes HTTP personnalisés sont pris en charge dans le contexte suivant : -- [scalable sessions](./sessions.md#enabling-web-sessions) or [no sessions](../settings/web.md#no-sessions) are enabled, -- a web server run locally by 4D or 4D Server, including those [run by components](./webServerObject.md). +- les [sessions extensibles](./sessions.md#enabling-web-sessions) ou [pas de sessions](../settings/web.md#no-sessions) sont activées, +- un serveur web exécuté localement par 4D ou 4D Server, y compris ceux [exécutés par des composants](./webServerObject.md). :::warning -For security reasons, external access to the datastore can be disallowed in 4D. Vous devez configurer les [privilèges ORDA](../ORDA/privileges.md) pour autoriser les requêtes HTTP. +Pour des raisons de sécurité, l'accès externe au datastore peut être interdit dans 4D. Vous devez configurer les [privilèges ORDA](../ORDA/privileges.md) pour autoriser les requêtes HTTP. ::: -## How to set handlers +## Comment définir les gestionnaires -You can declare HTTP Request handlers: +Vous pouvez déclarer des gestionnaires de requêtes HTTP : -- in a configuration file named **HTTPHandlers.json** stored in the [`Project/Sources`](../Project/architecture.md#sources) folder of the project. HTTP Request handlers are loaded and applied in the main Web server once it is started. -- using a [`.handlers`](../API/WebServerClass.md#handlers) property set in the *settings* parameter of the [start()](../API/WebServerClass.md#start) function, for any web server object: +- dans un fichier de configuration nommé **HTTPHandlers.json** stocké dans le dossier [`Project/Sources`](../Project/architecture.md#sources) du projet. Les gestionnaires de requêtes HTTP sont chargés et appliqués dans le serveur Web principal une fois qu'il est démarré. +- en utilisant une propriété [`.handlers`](../API/WebServerClass.md#handlers) dans le paramètre *settings* de la fonction [start()](../API/WebServerClass.md#start), pour n'importe quel objet serveur web : ```4d -WEB Server.start($settings.handlers) //set rules at web server startup +WEB Server.start($settings.handlers) //prise en compte au démarrage du server web ``` -If both a **HTTPHandlers.json** file and a call to the [`WEB Server`](../commands/web-server.md) command with a valid `$settings.handlers` are used, the `WEB Server` command has priority. +Si à la fois un fichier **HTTPHandlers.json** et un appel à la commande [`WEB Server`](../commands/web-server.md) avec un `$settings.handlers` valide sont utilisés, la commande `WEB Server` est prioritaire. -The json file (or the object in the *settings* parameter) contains all listened URL patterns, the handled verbs, and the code to be called. +Le fichier json (ou l'objet dans le paramètre *settings*) contient tous les modèles d'URL listés, les verbes traités et le code à appeler. -Handlers are provided as a collection. +Les *handlers* sont fournis sous la forme d'une collection. -Au moment de l'exécution, le premier motif correspondant à l'URL est exécuté, les autres sont ignorés. +Au moment de l'exécution, le premier motif (*pattern*) correspondant à l'URL est exécuté, les autres sont ignorés. Voici un exemple du contenu d'un fichier *HTTPHandlers.json* : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md index c5d53afb1f666c..ebc926199d567c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md @@ -11,8 +11,8 @@ To define HTTP rules, you just need to write some RegEx to declare the URL patte HTTP rules are supported in the following contexts: -- [scalable sessions](./sessions.md#enabling-web-sessions) or [no sessions](../settings/web.md#no-sessions) are enabled, -- a web server run locally by 4D or 4D Server, including those [run by components](./webServerObject.md). +- les [sessions extensibles](./sessions.md#enabling-web-sessions) ou [pas de sessions](../settings/web.md#no-sessions) sont activées, +- un serveur web exécuté localement par 4D ou 4D Server, y compris ceux [exécutés par des composants](./webServerObject.md). ## How to set rules @@ -64,12 +64,17 @@ The following action keywords are supported: ### Non-modifiable headers -The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions: +Some headers could not be added, modified or removed: -- "Date", -- "Content-Length" +| Header | Ajouter | Set | Remove | +| ---------------- | ------- | ---------- | ------ | +| Date | Non | Non | Non | +| Content-Length | Non | Non | Non | +| Content-Encoding | Non | Non | Non | +| Vary | Oui | Non | Non | +| Set-Cookie | Oui | Add cookie | Non | -Modifying these headers do not generate errors, however modifications will be ignored. +Unauthorized changes on these headers do not generate errors, however modifications will be ignored. ### Current rules @@ -215,7 +220,7 @@ $return:=WEB Server.start($settings) ``` -:::tip Related blog post +:::tip Article(s) de blog sur le sujet [New Way to Control Your HTTP Responses](https://blog.4d.com/new-way-to-control-your-http-responses/) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/preemptiveWeb.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/preemptiveWeb.md index a61af9ff781cc8..7395ed0a06637b 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/preemptiveWeb.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/preemptiveWeb.md @@ -44,7 +44,7 @@ Tout le code 4D exécuté par le serveur Web doit être thread-safe si vous souh - La méthode projet `compiler_web` (indépendamment de sa propriété "Mode d'exécution") ; -- Basically any code processed by the [`PROCESS 4D TAGS`](../commands-legacy/process-4d-tags.md) command in the web context, for example through .shtml pages +- En principe, tout code traité par la commande [`PROCESS 4D TAGS`](../commands-legacy/process-4d-tags.md) dans le contexte du web, par exemple par le biais de pages .shtml - Toute méthode projet comportant l'attribut "Available through 4D tags and URLS (`4DACTION`, etc.)" diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md index daf11db9f41587..a2d1f2e0c7862c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md @@ -138,7 +138,8 @@ Il n'y a pas de compatibilité directe entre les applications implémentées ave | Débogueur | 4D IDE debugger
    *4D Server only*: Qodly Studio debugger (see [this paragraph](#using-qodly-debugger-on-4d-server)) | Débogueur Qodly Studio | | Rôles et privilèges REST/Web | Edition directe roles.json / Éditeur de rôles et privilèges de Qodly Studio | Éditeur de rôles et privilèges de Qodly Studio | -Notez que dans 4D monoposte, si vous ouvrez du code 4D avec l'éditeur de code de Qodly Studio, la coloration syntaxique n'est pas disponible et un avertissement "Lsp not loaded" est affiché. Notez que dans 4D monoposte, si vous ouvrez du code 4D avec l'éditeur de code de Qodly Studio, la coloration syntaxique n'est pas disponible et un avertissement "Lsp not loaded" est affiché. +(1) L'élément **Modèle** est désactivé dans Qodly Studio.
    +(2) Dans 4D Server, l'ouverture du code 4D avec l'éditeur de code Qodly Studio est prise en charge **à des fins de test et de débogage** (voir [ce paragraphe](#development-and-deployment)). Notez que dans 4D monoposte, si vous ouvrez du code 4D avec l'éditeur de code de Qodly Studio, la coloration syntaxique n'est pas disponible et un avertissement "Lsp not loaded" est affiché. ### Langage @@ -234,7 +235,7 @@ The project must be running in interpreted mode so that **Qodly Studio** menu it ::: -2. In the Qodly Studio toolbar, click on the **Debug** button.
    +2. Dans la barre d'outils de Qodly Studio, cliquez sur le bouton **Debug**.
    ![qodly-debug](../assets/en/WebServer/qodly-debug.png) If the debug session starts successfully, a green bullet appears on the button label ![qodly-debug](../assets/en/WebServer/debug2.png) and you can use the Qodly Studio debugger. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md index 3524feb00429dd..20caa69023fa0f 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md @@ -12,7 +12,7 @@ Les sessions Web permettent de : - stocker et partager des données entre les process d'un client web en utilisant le [.storage](../API/SessionClass.md#storage) de la session, - associer des privilèges à l'utilisateur qui exécute la session. -:::tip Related blog post +:::tip Article(s) de blog sur le sujet [Sessions évolutives pour applications web avancées](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) @@ -22,7 +22,7 @@ Les sessions Web permettent de : Les sessions Web sont utilisées par : -- [Web applications](gettingStarted.md) sending http requests (including [SOAP Web services](../commands/theme/Web_Services_Server.md) and [/4DACTION](../WebServer/httpRequests.md#4daction) requests), +- les [applications Web](gettingStarted.md) envoyant des requêtes http (y compris les [Web services SOAP](../commands/theme/Web_Services_Server.md) et les requêtes [/4DACTION](../WebServer/httpRequests.md#4daction)), - les appels à l'[API REST](../REST/authUsers.md), qui sont effectués par les [datastores distants](../ORDA/remoteDatastores.md) et les [pages Qodly](qodly-studio.md). ## Activation des sessions web @@ -36,7 +36,7 @@ Cette option est sélectionnée par défaut dans les nouveaux projets. Elle peut - En utilisant la propriété [`.scalableSession`](API/WebServerClass.md#scalablession) de l'objet Web Server (à passer dans le paramètre *settings* de la fonction [`.start()`](API/WebServerClass.md#start) ). Dans ce cas, ce paramètre remplace l'option définie dans la boîte de dialogue Propriétés pour l'objet Web Server (il n'est pas stocké sur disque). -> The [`WEB SET OPTION`](../commands-legacy/web-set-option.md) command can also set the session mode for the main Web server. +> La commande [`WEB SET OPTION`](../commands-legacy/web-set-option.md) peut également définir le mode de session du serveur Web principal. Dans tous les cas, ce paramètre est local à la machine ; il peut donc être différent sur le serveur Web 4D Server et les serveurs Web des machines 4D distantes. @@ -44,7 +44,7 @@ Dans tous les cas, ce paramètre est local à la machine ; il peut donc être di ## Implémentation des sessions -When [sessions are enabled](#enabling-web-sessions), automatic mechanisms are implemented, based upon a private cookie set by 4D itself: "4DSID__AppName_", where *AppName* is the name of the application project. Ce cookie référence la session web courante pour l'application. +Lorsque [les sessions sont activées](#enabling-web-sessions), des mécanismes automatiques sont mis en œuvre, sur la base d'un cookie privé défini par 4D lui-même : "4DSID_*AppName*", où *AppName* est le nom du projet d'application. Ce cookie référence la session web courante pour l'application. :::info @@ -73,7 +73,7 @@ L'objet `Session` de la session en cours peut ensuite être manipulé via la com :::info -Les process Web ne se terminent généralement pas, ils sont recyclés dans un pool pour des raisons d'optimisation. Lorsqu'un process termine l'exécution d'une requête, il est replacé dans le pool et rendu disponible pour la requête suivante. Since a web process can be reused by any session, [process variables](Concepts/variables.md#process-variables) must be cleared by your code at the end of its execution (using [`CLEAR VARIABLE`](../commands-legacy/clear-variable.md) for example). Ce nettoyage est nécessaire pour toute information liée au process, comme une référence à un fichier ouvert. C'est la raison pour laquelle **il est recommandé** d'utiliser l'objet [Session](API/SessionClass.md) lorsque vous souhaitez conserver les informations relatives à la session. +Les process Web ne se terminent généralement pas, ils sont recyclés dans un pool pour des raisons d'optimisation. Lorsqu'un process termine l'exécution d'une requête, il est replacé dans le pool et rendu disponible pour la requête suivante. Comme un process web peut être réutilisé par n'importe quelle session, les [variables process](Concepts/variables.md#process-variables) doivent être effacées par votre code à la fin de son exécution (en utilisant [`CLEAR VARIABLE`](../commands-legacy/clear-variable.md) par exemple). Ce nettoyage est nécessaire pour toute information liée au process, comme une référence à un fichier ouvert. C'est la raison pour laquelle **il est recommandé** d'utiliser l'objet [Session](API/SessionClass.md) lorsque vous souhaitez conserver les informations relatives à la session. ::: @@ -90,7 +90,7 @@ Une session web évolutive est fermée lorsque: La durée de vie d'un cookie inactif est de 60 minutes par défaut, ce qui signifie que le serveur Web fermera automatiquement les sessions inactives après 60 minutes. -This timeout can be set using the [`.idleTimeout`](API/SessionClass.md#idletimeout) property of the `Session` object (the timeout cannot be less than 60 minutes) or the *connectionInfo* parameter of the [`Open datastore`](../commands/open-datastore.md) command. +Ce délai peut être défini en utilisant la propriété [`.idleTimeout`](API/SessionClass.md#idletimeout) de l'objet `Session` (le délai ne peut être inférieur à 60 minutes) ou le paramètre *connectionInfo* de la commande [`Open datastore`](../commands/open-datastore.md). Lorsqu'une session web est fermée, si la commande [`Session`](commands/session.md) est appelée par la suite : @@ -159,7 +159,7 @@ http://localhost:8044/authenticate.shtml ![alt-text](../assets/en/WebServer/authenticate.png) -3. La méthode de projet d'authentification recherche la personne *userID* et valide le mot de passe par rapport à la valeur hachée déjà stockée dans la table *SalesPersons* : +3. La méthode projet d'authentification recherche la personne *userID* et valide le mot de passe par rapport à la valeur hachée déjà stockée dans la table *SalesPersons* : ```4d var $indexUserId; $indexPassword; $userId : Integer @@ -201,82 +201,82 @@ Else End if ``` -:::note +:::tips Articles de blog sur le sujet -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Sessions évolutives pour applications web avancées](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: -## Session Token (OTP) +## Token de session (OTP) -The 4D web server allows you to generate, share, and use OTP (One-Time Passcode) session tokens. OTP session tokens are used to secure communications with third-party applications or websites. For information on OTP, please refer to the [One-time password page](https://en.wikipedia.org/wiki/One-time_password) on Wikipedia. +Le serveur web 4D vous permet de générer, de partager et d'utiliser des tokens de session OTP (One-Time Passcode). Les tokens (ou *jetons*) de session OTP sont utilisés pour sécuriser les communications avec des applications ou des sites web tiers. Pour plus d'informations sur OTP, veuillez vous référer à la page [Mot de passe à usage unique](https://en.wikipedia.org/wiki/One-time_password) sur Wikipedia. -In 4D, OTP session tokens are useful when calling external URLs and being called back in another browser or device (mobile/computer). Typically, a third-party application sends a confirmation email containing a callback link on which the user has to click. The callback link includes the OTP token, so that the session which triggered the callback is loaded along with its data and privileges. This principle allows you to share the same session on multiple devices. Thanks to this architecture, the [session cookie](#session-implementation) is not exposed on the network, which eliminates the risk of man-in-the-middle attack. +Dans 4D, les tokens de session OTP sont utiles pour appeler des URL externes et être rappelé dans un autre navigateur ou appareil (mobile/ordinateur). Généralement, une application tierce envoie un courriel de confirmation contenant un lien de rappel sur lequel l'utilisateur doit cliquer. Le lien de rappel inclut le token OTP, de sorte que la session qui a déclenché le rappel est chargée avec ses données et ses privilèges. Ce principe vous permet de partager la même session sur plusieurs appareils. Grâce à cette architecture, le [cookie de session] (#session-implementation) n'est pas exposé sur le réseau, ce qui élimine le risque d'une attaque de type "man-in-the-middle". :::tips Articles de blog sur le sujet -[Connect Your Web Apps to Third-Party Systems](https://blog.4d.com/connect-your-web-apps-to-third-party-systems/) +[Connectez vos applications Web à des systèmes tiers](https://blog.4d.com/connect-your-web-apps-to-third-party-systems/) ::: ### Vue d’ensemble -The basic sequence of an OTP session token use in a 4D web application is the following: +La séquence de base de l'utilisaton d'un token de session OTP dans une application web 4D est la suivante : -1. The web user initiates an action that requires a secured third-party connection, for example a validation, from within a specific session. -2. In your 4D code, you create a new OTP for the session using the [`Session.createOTP()`](../API/SessionClass.md#createotp) function. -3. You send a request to the third-party application with the session token included in the callback Uri. Note that the way to provide the callback Uri to a third-party application depends on its API (see below). -4. The third-party application sends back a request to 4D with the pattern you provided in the callback Uri. -5. The request callback is processed in your application. +1. L'utilisateur web initie une action qui nécessite une connexion tierce sécurisée, par exemple une validation, à partir d'une session spécifique. +2. Dans votre code 4D, vous créez un nouvel OTP pour la session à l'aide de la fonction [`Session.createOTP()`](../API/SessionClass.md#createotp). +3. Vous envoyez une requête à l'application tierce avec le token de session inclus dans l'Uri de callback (rappel). Notez que la manière de fournir l'Uri de rappel à une application tierce dépend de son API (voir ci-dessous). +4. L'application tierce renvoie une requête à 4D avec le modèle que vous avez fourni dans l'Uri de rappel. +5. Le rappel de la requête est traité dans votre application. -By definition, an OTP token can only be used once. In this scenario, if a web request is received with a session token as parameter that has already been used, the initial session is not restored. +Par définition, un token OTP ne peut être utilisé qu'une seule fois. Dans ce scénario, si une requête web est reçue avec un token de session comme paramètre qui a déjà été utilisé, la session initiale n'est pas restaurée. -### Processing the OTP in the callback +### Traitement de l'OTP dans le callback -Callbacks from third-party applications that include the OTP token can be processed in different ways in your 4D application, depending on your development and the third-party API. Basically, you have two possibilities to handle the token: through the **`$4DSID`** parameter for an automatic processing, or through a custom parameter that you need to process. +Les callbacks d'applications tierces qui incluent le token OTP peuvent être traités de différentes manières dans votre application 4D, en fonction de votre développement et de l'API tierce. En principe, vous avez deux possibilités pour gérer le token : via le paramètre **`$4DSID`** pour un traitement automatique, ou via un paramètre personnalisé que vous devez traiter. -#### Using `$4DSID` in the URL +#### Utilisation de `$4DSID` dans l'URL -Using the `$4DSID` parameter is the most simple way to process a callback from the third-party application: +L'utilisation du paramètre `$4DSID` est la façon la plus simple de traiter un callback de l'application tierce : -- The OTP token is provided as a parameter directly in the callback url using the standard `?$4DSID=XXXX123` syntax. -- In 4D, you implement a dedicated [HTTP Request handler](http-request-handler.md) in your 4D application using [`IncomingMessage`](../API/IncomingMessageClass.md) and [`OutgoingMessage`](../API/OutgoingMessageClass.md) classes. -- If the `$4DSID` token is valid, the related web user session is **automatically restored** in any web process with its storage and privileges. +- Le token OTP est fourni en tant que paramètre directement dans l'url de callback en utilisant la syntaxe standard `?$4DSID=XXXX123`. +- Dans votre application 4D, vous implémentez un [HTTP Request handler](http-request-handler.md) dédié en utilisant les classes [`IncomingMessage`](../API/IncomingMessageClass.md) et [`OutgoingMessage`](../API/OutgoingMessageClass.md). +- Si le token `$4DSID` est valide, la session de l'utilisateur web concerné est **automatiquement restaurée** dans n'importe quel process web avec son *storage* et ses privilèges. :::note -A [`4DACTION`](./httpRequests.md#4daction) url can also be used on the 4D side. +Une url [`4DACTION`](./httpRequests.md#4daction) peut également être utilisée du côté 4D. ::: -#### Using a custom parameter +#### Utilisation d'un paramètre personnalisé -The OTP token can also be provided as a custom parameter that you need to process specifically to restore the session. You must use this solution if: +Le token OTP peut également être fourni en tant que paramètre personnalisé que vous devez traiter spécifiquement pour restaurer la session. Vous devez utiliser cette solution si : -- the third-party application does not allow to insert parameters such as a `$4DSID` directly in the redirect Uri, and provides a dedicated API (the implementation depends on the third-party application), -- or, you want to call an ORDA function through REST to process the callback, in which case you need to pass the OTP with the [REST parameter syntax](../REST/ClassFunctions.md#parameters) (e.g. `?$params='["XXX123"]'`). +- l'application tierce ne permet pas d'insérer des paramètres tels que `$4DSID` directement dans l'Uri de redirection, et fournit une API dédiée (l'implémentation dépend de l'application tierce), +- ou bien vous souhaitez appeler une fonction ORDA via REST pour traiter le callback, auquel cas vous devez transmettre l'OTP avec la [syntaxe des paramètres REST](../REST/ClassFunctions.md#parameters) (par exemple `?$params='["XXX123"]'`). -In both cases, you need to extract the token from the custom parameter and to call the [`Session.restore()`](../API/SessionClass.md#restore) function with the token as parameter. +Dans les deux cas, vous devez extraire le token du paramètre personnalisé et appeler la fonction [`Session.restore()`](../API/SessionClass.md#restore) avec le token en paramètre. -#### Processing a invalid OTP +#### Traitement d'un OTP non valide -The OTP token is considered invalid if: +Le token OTP est considéré comme invalide si : - le token de session a déjà été utilisé, - le token de session a expiré, - le token de session n'existe pas, - la session d'origine elle-même a expiré. -In this case, no web user session is restored and the current session (if any) is left unchanged. Usually, you can decide to display a login page or to open a guest session. +Dans ce cas, aucune session d'utilisateur Web n'est restaurée et la session courante (s'il y en a une) reste inchangée. En général, vous pouvez décider d'afficher une page de connexion ou d'ouvrir une session guest. -Verifying if the received OTP token is valid depends on how it was handled: +La vérification de la validité du token OTP reçu dépend de la manière dont il a été géré : -- If you used a `$4DSID`, you can store a custom status property in the [session storage](../API/SessionClass.md#storage) at the moment of the token creation, and check this status once the OTP token was received to see if it is the same value (see example). -- If you used the [`Session.restore()`](../API/SessionClass.md#restore) function, it returns true if the session correctly restored. +- Si vous avez utilisé un `$4DSID`, vous pouvez stocker une propriété d'état personnalisée dans le [storage de la session](../API/SessionClass.md#storage) au moment de la création du token, et vérifier cet état une fois que le token OTP a été reçu pour voir s'il s'agit de la même valeur (voir l'exemple). +- Si vous avez utilisé la fonction [`Session.restore()`](../API/SessionClass.md#restore), elle renvoie true si la session a été correctement restaurée. -### Scenario with $4DSID +### Scénario avec $4DSID -The scenario using the `$4DSID` key is illustrated in the following diagram: +Le scénario utilisant la clé `$4DSID` est illustré dans le diagramme suivant : ```mermaid sequenceDiagram @@ -289,25 +289,25 @@ sequenceDiagram FrontEnd ->>+ 4DServer: ValidateOperation() - 4DServer ->> 4DServer: Generate OTP with session.createOTP() -Note over 4DServer: e.g. OTP is 2E5D0D5xxx + 4DServer ->> 4DServer: Créer OTP avec session.createOTP() +Note over 4DServer: e.g. OTP vaut 2E5D0D5xxx - 4DServer ->>+ ExternalPlatform: Call the external platform, give a callback URL containing a $4DSID parameter (depends on the platform API) + 4DServer ->>+ ExternalPlatform: Appel de la plate-forme tirece, envoi d'un URL de rappel contenant un paramètre $4DSID (dépend de l'API de la plate-forme) Note right of 4DServer: e.g. callback URL: "https://acme.com/my4DApp/completeOperation?$4DSID=2E5D0D5xxx" - ExternalPlatform ->>+ ExternalPlatform: Process request -ExternalPlatform ->>+ 4DServer: External platform calls back 4D Server if validation OK + ExternalPlatform ->>+ ExternalPlatform: Traitement de la requête +ExternalPlatform ->>+ 4DServer: Rappel de 4D Server si validation OK Note right of 4DServer: e.g. https://acme.com/my4DApp/completeOperation?$4DSID=2E5D0D57751D471DB29FD110D2DCE253 - 4DServer ->> 4DServer: An HTTP request handler processes the URL pattern "/my4DApp/completeOperation"
    (e.g. handleOperation() function of the OperationsHandler singleton, see code below) + 4DServer ->> 4DServer: Un HTTP request handler traite le motif d'URL "/my4DApp/completeOperation"
    (e.g. fonction handleOperation() du singleton OperationsHandler, voir code ci-dessous) - Note over 4DServer: The original session is retrieved thanks to the OTP given in the $4DSID parameter. - Note over 4DServer: Session object refers to the session which generated the OTP - 4DServer ->>+ FrontEnd: Restore session + Note over 4DServer: La session d'origine session est restaurée grâce à l'OTP fourni dans le paramètre $4DSID. + Note over 4DServer: L'objet Session référence la session qui a généré l'OTP + 4DServer ->>+ FrontEnd: Restauration de la session ``` -The 4D HTTP request handler definition: +La définition du gestionnaire de requêtes HTTP 4D : ```json [ @@ -320,7 +320,7 @@ The 4D HTTP request handler definition: ] ``` -The singleton class: +La classe du singleton : ```4d //Class OperationsHandler @@ -329,9 +329,9 @@ shared singleton Class constructor() $session:=Session ``` -### Scenario with `restore` function +### Scénario avec la fonction `restore` -The scenario using a custom parameter is illustrated in the following diagram: +Le scénario utilisant un paramètre personnalisé est illustré dans le diagramme suivant : ```mermaid sequenceDiagram @@ -344,29 +344,29 @@ sequenceDiagram FrontEnd ->>+ 4DServer: Validate() - 4DServer ->> 4DServer: Generate OTP with session.createOTP() + 4DServer ->> 4DServer: Créer OTP avec session.createOTP() Note over 4DServer: e.g. OTP is 2E5D0D5xxx - 4DServer ->> ExternalPlatform: Call the external platform giving the OTP, for example as a state parameter (depends on the platform) + 4DServer ->> ExternalPlatform: Appel de la plate-forme externe en donnant l'OTP, par exemple sous forme de paramètre state (dépend de la plate-forme) Note right of 4DServer: e.g. https://thirdPartSystem.com/validate?state=2E5D0D5xxx&redirect_uri=https://acme.com/my4DApp/completeOperation - Note right of 4DServer: The callback URL will be like: https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx - ExternalPlatform ->> ExternalPlatform: Process request - ExternalPlatform ->> 4DServer: The state parameter is sent back by the third party system in the callback + Note right of 4DServer: L'URLde rappel sera du type : https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx + ExternalPlatform ->> ExternalPlatform: Traitement de la requête + ExternalPlatform ->> 4DServer: Le paramètre state est renvoyé par le système tiers dans la callback Note right of 4DServer: e.g. https://acme.com/my4DApp/completeOperation?state=2E5D0D5xxx - 4DServer ->> 4DServer: An HTTP request handler processes the URL pattern "/my4DApp/completeOperation"
    (e.g. handleOperation() function of the OperationHandler singleton, see code below) + 4DServer ->> 4DServer: Un HTTP request handler traite le motif d'URL "/my4DApp/completeOperation"
    (e.g. fonction handleOperation() du singleton OperationHandler, voir code ci-dessous) 4DServer ->> 4DServer: Session.restore() - Note over 4DServer:The state parameter is got from the received request ($req.urlQuery.state) - Note over 4DServer:The original session is retrieved by calling the restore() function - Note over 4DServer:Session object refers to the session which generated the OTP - 4DServer ->>+ FrontEnd: Restore session + Note over 4DServer:Le paramètre state est extrait de la requête reçue ($req.urlQuery.state) + Note over 4DServer:La session originale est restaurée par l'appel à la fonction restore() + Note over 4DServer: L'objet Session référence la session qui a généré l'OTP + 4DServer ->>+ FrontEnd: Restauration de la session ``` -The 4D HTTP request handler definition: +La définition du gestionnaire de requêtes HTTP 4D : ```json [ @@ -379,7 +379,7 @@ The 4D HTTP request handler definition: ] ``` -The singleton class: +La classe du singleton : ```4d //Class OperationsHandler @@ -388,9 +388,9 @@ shared singleton Class constructor() Session.restore($req.urlQuery.state) ``` -### Example of email validation with $4DSID +### Exemple de validation d'email avec $4DSID -1. A user account is created in a *Users* dataclass. A *$info* object is received with the email and password. An OTP corresponding to the current session is generated. An URL is then returned with this OTP given in the $4DSID parameter. +1. Un compte d'utilisateur est créé dans une dataclass *Users*. Un objet *$info* est reçu avec l'email et le mot de passe. Un OTP correspondant à la session courante est généré. Une URL est alors renvoyée avec l'OTP indiqué dans le paramètre $4DSID. ```4d //cs.Users class @@ -401,26 +401,26 @@ var $user : cs.UsersEntity var $status : Object var $token : Text -$user:=This.new() //create a new user +$user:=This.new() //créatoin d'un user $user.fromObject($info) $status:=$user.save() -//Store information in the session -//including user creation status +//Stockage d'information dans la session +//y compris le statut de création de l'utilisateur Use (Session.storage) Session.storage.status:=New shared object("step"; "Waiting for validation email"; / "email"; $user.email; "ID"; $user.ID) End use -//Generate an OTP corresponding to the session +//Génération d'un OTP correspondant à la session $token:=Session.createOTP() -// Return an URL with a $4DSID parameter +// Renvoi d'un URL avec un paramètre $4DSID return "https://my.server.com/tools/validateEmail?$4DSID="+$token` ``` -2. The user is sent this URL as a link in an email. The URL prefix `/validateEmail` is handled by a [custom HTTP request handler](./http-request-handler.md): +2. L'utilisateur reçoit cette URL sous la forme d'un lien dans un courrier électronique. Le préfixe d'URL `/validateEmail` est traité par un [gestionnaire de requête HTTP personnalisé](./http-request-handler.md) : ```json [ @@ -433,7 +433,7 @@ return "https://my.server.com/tools/validateEmail?$4DSID="+$token` ] ``` -The *validateEmail()* function of the RequestHandler singleton: +La fonction *validateEmail()* du singleton RequestHandler : ```4d //validateEmail class @@ -443,12 +443,12 @@ shared singleton Class constructor() Function validateEmail() : 4D.OutgoingMessage var $result:=4D.OutgoingMessage.new() - //The session which generated the OTP is retrieved - //thanks to the $4DSID parameter given in the URL + //La session qui a généré l'OTP est restaurée + //grâce au paramètre $4DSID fourni dans l'URL If (Session.storage.status.step="Waiting for validation email") $user:=ds.Users.get(Session.storage.status.ID) - $user.emailValidated() //set to true + $user.emailValidated() //fixé à vrai $result.setBody("Congratulations
    "\ +"Your email "+Session.storage.status.email+" has been validated") @@ -466,21 +466,21 @@ Function validateEmail() : 4D.OutgoingMessage ``` -Since the `$4DSID` parameter contains a valid OTP corresponding to the original session, the `Session` object refers to the session that created the OTP. +Comme le paramètre `$4DSID` contient un OTP valide correspondant à la session d'origine, l'objet `Session` référence la session qui a créé l'OTP. -A new user is created, and some information is stored in the session, especially the current step of the user account creation process (Waiting for validation email) and the user ID. +Un nouvel utilisateur est créé et des informations sont stockées dans la session, en particulier l'étape courante du processus de création du compte utilisateur (attente du courriel de validation) et l'identifiant de l'utilisateur. -### Supported contexts +### Contextes pris en charge -- Both HTTP and HTTPS schemas are supported. -- Only [scalable sessions](#enabling-web-sessions) can be reused with tokens. -- Only sessions of the host database can be reused (sessions created in component web servers cannot be restored). -- Tokens are not supported with client/server sessions or single-user sessions. +- Les schémas HTTP et HTTPS sont tous deux pris en charge. +- Seules des [sessions évolutives](#enabling-web-sessions) peuvent être réutilisées avec des tokens. +- Seules les sessions de la base de données hôte peuvent être réutilisées (les sessions créées dans les serveurs web des composants ne peuvent pas être restaurées). +- Les tokens ne sont pas pris en charge dans les sessions client/serveur ou les sessions mono-utilisateur. -### Lifespan +### Durée de vie -A session token has a lifespan, and the session itself has a lifespan. The session token lifespan can be set [at the token creation](../API/SessionClass.md#createotp). By default, the token lifespan is the same value as the [`.idleTimeout`](../API/SessionClass.md#idletimeout) value. +Un token de session a une durée de vie, et la session elle-même a une durée de vie. La durée de vie du token de session peut être définie [lors de sa création](../API/SessionClass.md#createotp). Par défaut, la durée de vie du token est la même que la valeur [`.idleTimeout`](../API/SessionClass.md#idletimeout). -A session is only restored by a token if both the session token lifespan and the session lifespan have not expired. In other cases (the session token has expired and/or the session itself has expired), a guest session is created when a web request with a session token is received. +Une session n'est restaurée par un token que si ni la durée de vie du token de session ni celle de la session n'ont expiré. Dans les autres cas (le token de session a expiré et/ou la session elle-même a expiré), une session *guest* est créée lorsqu'une requête web avec un token de session est reçue. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md index 6cddcc5504bfd3..5d9e19398db534 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md @@ -626,9 +626,9 @@ Dans certains cas, d'autres fonctions internes optimisées peuvent être appelé Deux options permettent de définir le mode de fonctionnement des connexions persistantes : -- **Nombre de requêtes par connexion** : Permet de définir le nombre maximal de requêtes et de réponses capables d'être transmises lors d'une connexion persistante. Limiter le nombre de demandes par connexion permet d'éviter le server flooding, provoqué par un trop grand nombre de requêtes entrantes (technique utilisée par les pirates informatiques).

    - La valeur par défaut (100) peut être augmentée ou diminuée en fonction des ressources de la machine hébergeant le Serveur Web 4D.

    +- **Nombre de requêtes par connexion** : Permet de définir le nombre maximal de requêtes et de réponses capables d'être transmises lors d'une connexion persistante. Limiter le nombre de requêtes par connexion permet d'éviter la saturation du serveur, provoquée par un trop grand nombre de requêtes entrantes (technique utilisée par les pirates informatiques).

    + La valeur par défaut (100) peut être augmentée ou diminuée en fonction des ressources de la machine hébergeant le serveur Web 4D.

    -- **Délai avant déconnexion** : Cette valeur définit l'attente maximale (en secondes) pour le maintien d'une connexion TCP sans réception d'une requête de la part du navigateur web. Une fois cette période terminée, le serveur ferme la connexion.

    +- **Délai avant déconnexion** : Cette valeur définit l'attente maximale (en secondes) pour le maintien d'une connexion TCP sans réception d'une requête de la part du navigateur web. Une fois ce délai écoulé, le serveur ferme la connexion.

    Si le navigateur Web envoie une requête après la fermeture de la connexion, une nouvelle connexion TCP est automatiquement créée. Cette opération est invisible pour l'utilisateur.

    diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md index 60400e7ab9ec95..747b9690292e4c 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md @@ -20,7 +20,7 @@ displayed_sidebar: docs ## Description -La commande **WP Add picture** ancre l'image passée en paramètre à un emplacement fixe dans le *wpDoc* spécifié et retourne sa référence. La référence retournée peut alors être passée à la commande [WP SET ATTRIBUTES](wp-set-attributes.md) pour déplacer l'image à n'importe quel emplacement dans le *wpDoc* (page, section, en-tête, pied de page, etc.) avec une couche définie, taille, etc. +La commande **WP Add picture** ancre l'image passée en paramètre à un emplacement fixe dans le *wpDoc* spécifié et renvoie sa référence. La référence renvoyée peut ensuite être transmise à la commande [WP SET ATTRIBUTES](wp-set-attributes.md) pour placer l'image à n'importe quel endroit du *wpDoc* (page, section, en-tête, pied de page, etc.) avec une couche définie, taille, etc. Dans *wpDoc*, passez le nom d'un objet document 4D Write Pro. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md index 64310fd825d0f8..69d289c7bf10eb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md @@ -52,25 +52,25 @@ Vous pouvez omettre le paramètre *format*, auquel cas vous devez spécifier l'e Pass an [object](# "Data structured as a native 4D object") in *option* containing the values to define the properties of the exported document. Les propriétés suivantes sont disponibles : -| Constante | Valeur | Commentaire | -| ------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponible uniquement lorsque le format `wk mime html` est utilisé. | -| wk embedded pictures | embeddedPictures | For SVG Export only. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted | -| wk factur x | facturX | For PDF export only. Value: object configuring a "Factur-X (ZUGFeRD)" PDF export (see [wk factur x object](#wk-factur-x-object)). | -| wk files | Historique | For PDF export only. Value: collection of objects, each of them describing a file to be embedded in the final document (see [wk files collection](#wk-files-collection)). For PDF export only. In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. | -| wk google fonts tag | googleFontsTag | For SVG export only. Sets the import rule for google fonts in the exported SVG. Possible values:
  • false (default): No google fonts import rule is added.
  • true: Adds the @import rule to the exported file. Useful if you want to use fonts that are not available by default on Windows or macOS.
  • **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. | -| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. | -| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 | -| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values:
  • `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 300 (Windows only). If a picture contains more than one format, the best format for printing is used (*e.g.*, .tiff instead or .jpg)
  • `wk screen` (default value for `wk web page complete` and `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 192 (Windows only). If a picture contains more than one format, the format for screen rendering is used.
  • **Note:** Documents exported in `wk docx` format are always optimized for wk print (wk optimized for option is ignored). | -| wk page index | pageIndex | For SVG export only. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Note:** Page index is independent from page numbering. | -| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Aussi, `wk pdfa3` signifie "exporte vers *au moins* PDF/A-3". Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. | -| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valeurs possibles :
  • true - Valeur par défaut. Toutes les formules sont recalculées
  • false - Ne pas recalculer les formules
  • | -| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Possible values: True/False | -| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: 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 footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Possible values: True/False | -| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Possible values: True/False | -| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Possible values: True/False | -| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` and `wk web page complete` export formats. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Valeurs possibles : "normal", "nowrap", "pre", "pre-wrap" (par défaut), "pre-line", "break-spaces". | +| Constante | Valeur | Commentaire | +| ------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponible uniquement lorsque le format `wk mime html` est utilisé. | +| wk embedded pictures | embeddedPictures | For SVG Export only. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. Les images ne sont pas intégrées, mais sont référencées dans le fichier .svg.
  • Note : Si le dossier existe déjà, il est vidé avant l'exportation du fichier. If there is no image on the exported page, the folder is deleted | +| wk factur x | facturX | For PDF export only. Value: object configuring a "Factur-X (ZUGFeRD)" PDF export (see [wk factur x object](#wk-factur-x-object)). | +| wk files | Historique | For PDF export only. Value: collection of objects, each of them describing a file to be embedded in the final document (see [wk files collection](#wk-files-collection)). For PDF export only. In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. | +| wk google fonts tag | googleFontsTag | For SVG export only. Sets the import rule for google fonts in the exported SVG. Valeurs possibles :
  • false (par défaut) : Aucune règle d'importation des polices de Google n'est ajoutée.
  • true : Ajoute la règle @import au fichier exporté. Utile si vous voulez utiliser des polices qui ne sont pas disponibles par défaut sur Windows ou macOS.
  • **Note:** Cette propriété est définie sur false par défaut car, lorsqu'elle est activée, les polices Google ont la priorité sur les polices natives, et ces dernières sont généralement mieux rendues dans le navigateur. | +| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. | +| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 | +| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values:
  • `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 300 (Windows only). If a picture contains more than one format, the best format for printing is used (*e.g.*, .tiff instead or .jpg)
  • `wk screen` (default value for `wk web page complete` and `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 192 (Windows only). Si une image contient plus d'un format, le format de rendu d'écran est utilisé.
  • **Note:** Les documents exportés au format `wk docx` sont toujours optimisés pour wk print (l'option wk optimized for est ignorée). | +| wk page index | pageIndex | For SVG export only. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Note:** Page index is independent from page numbering. | +| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Aussi, `wk pdfa3` signifie "exporte vers *au moins* PDF/A-3". Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. | +| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valeurs possibles :
  • true - Valeur par défaut. Toutes les formules sont recalculées
  • false - Ne pas recalculer les formules
  • | +| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Possible values: True/False | +| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: 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 footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Possible values: True/False | +| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Possible values: True/False | +| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Possible values: True/False | +| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` and `wk web page complete` export formats. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Valeurs possibles : "normal", "nowrap", "pre", "pre-wrap" (par défaut), "pre-line", "break-spaces". | Le tableau suivant indique l'*option* disponible par *format* d'export : @@ -89,7 +89,7 @@ Le tableau suivant indique l'*option* disponible par *format* d'export : | wk recompute formulas | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | | wk visible background and anchored elements | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | toujours true | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | | wk visible empty images | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | -| wk visible footers | \- | toujours true | toujours false | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (default: true) | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | +| wk visible footers | \- | toujours true | toujours false | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | | wk visible headers | \- | toujours true | toujours false | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : true) | | wk visible references | \- | \- | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : false) | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : false) | | wk whitespace | \- | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : "pre-wrap") | \- | ![](../../assets/en/WritePro/commands/pict5058606.en.png) (par défaut : "pre-wrap") | \- | 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 8ab471cf8de5d3..4aa00fc3ebab01 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 @@ -20,7 +20,7 @@ displayed_sidebar: docs ## Description -The **WP EXPORT VARIABLE** command exports the *wpDoc* 4D Write Pro object to the 4D *destination* variable in the specified *format*. +La commande **WP EXPORT VARIABLE** exporte l'objet *wpDoc* 4D Write Pro vers la variable 4D *destination* dans le *format* spécifié. Dans *wpDoc*, passez l'objet 4D Write Pro que vous souhaitez exporter. @@ -52,25 +52,25 @@ Dans le paramètre *format*, passez une constante du thème *4D Write Pro Consta Pass an [object](# "Data structured as a native 4D object") in *option* containing the values to define the properties of the exported document. Les propriétés suivantes sont disponibles : -| Constante | Valeur | Commentaire | -| ------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponible uniquement lorsque le format `wk mime html` est utilisé. | -| wk embedded pictures | embeddedPictures | For SVG Export only. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted | -| wk factur x | facturX | For PDF export only. Value: object configuring a "Factur-X (ZUGFeRD)" PDF export (see [wk factur x object](./wp-export-document.md#wk-factur-x-object)). | -| wk files | Historique | For PDF export only. Value: collection of objects, each of them describing a file to be embedded in the final document (see [wk files collection](./wp-export-document.md#wk-files-collection)). For PDF export only. In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. | -| wk google fonts tag | googleFontsTag | For SVG export only. Sets the import rule for google fonts in the exported SVG. Possible values:
  • false (default): No google fonts import rule is added.
  • true: Adds the @import rule to the exported file. Useful if you want to use fonts that are not available by default on Windows or macOS.
  • **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. | -| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. | -| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 | -| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values:
  • `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 300 (Windows only). If a picture contains more than one format, the best format for printing is used (*e.g.*, .tiff instead or .jpg)
  • `wk screen` (default value for `wk web page complete` and `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 192 (Windows only). If a picture contains more than one format, the format for screen rendering is used.
  • **Note:** Documents exported in `wk docx` format are always optimized for wk print (wk optimized for option is ignored). | -| wk page index | pageIndex | For SVG export only. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Note:** Page index is independent from page numbering. | -| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Aussi, `wk pdfa3` signifie "exporte vers *au moins* PDF/A-3". Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. | -| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valeurs possibles :
  • true - Valeur par défaut. Toutes les formules sont recalculées
  • false - Ne pas recalculer les formules
  • | -| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Possible values: True/False | -| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: 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 footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Possible values: True/False | -| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Possible values: True/False | -| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Possible values: True/False | -| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` export format. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Valeurs possibles : "normal", "nowrap", "pre", "pre-wrap" (par défaut), "pre-line", "break-spaces". | +| Constante | Valeur | Commentaire | +| ------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponible uniquement lorsque le format `wk mime html` est utilisé. | +| wk embedded pictures | embeddedPictures | For SVG Export only. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. Les images ne sont pas intégrées, mais sont référencées dans le fichier .svg.
  • Note : Si le dossier existe déjà, il est vidé avant l'exportation du fichier. If there is no image on the exported page, the folder is deleted | +| wk factur x | facturX | For PDF export only. Value: object configuring a "Factur-X (ZUGFeRD)" PDF export (see [wk factur x object](./wp-export-document.md#wk-factur-x-object)). | +| wk files | Historique | For PDF export only. Value: collection of objects, each of them describing a file to be embedded in the final document (see [wk files collection](./wp-export-document.md#wk-files-collection)). For PDF export only. In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. | +| wk google fonts tag | googleFontsTag | For SVG export only. Sets the import rule for google fonts in the exported SVG. Valeurs possibles :
  • false (par défaut) : Aucune règle d'importation des polices de Google n'est ajoutée.
  • true : Ajoute la règle @import au fichier exporté. Utile si vous voulez utiliser des polices qui ne sont pas disponibles par défaut sur Windows ou macOS.
  • **Note:** Cette propriété est définie sur false par défaut car, lorsqu'elle est activée, les polices Google ont la priorité sur les polices natives, et ces dernières sont généralement mieux rendues dans le navigateur. | +| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. | +| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 | +| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values:
  • `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 300 (Windows only). If a picture contains more than one format, the best format for printing is used (*e.g.*, .tiff instead or .jpg)
  • `wk screen` (default value for `wk web page complete` and `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 192 (Windows only). Si une image contient plus d'un format, le format de rendu d'écran est utilisé.
  • **Note:** Les documents exportés au format `wk docx` sont toujours optimisés pour wk print (l'option wk optimized for est ignorée). | +| wk page index | pageIndex | For SVG export only. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Note:** Page index is independent from page numbering. | +| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Aussi, `wk pdfa3` signifie "exporte vers *au moins* PDF/A-3". Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. | +| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valeurs possibles :
  • true - Valeur par défaut. Toutes les formules sont recalculées
  • false - Ne pas recalculer les formules
  • | +| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Possible values: True/False | +| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: 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 footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Possible values: True/False | +| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Possible values: True/False | +| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Possible values: True/False | +| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` export format. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Valeurs possibles : "normal", "nowrap", "pre", "pre-wrap" (par défaut), "pre-line", "break-spaces". | Le tableau suivant indique l'*option* disponible par *format* d'export : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md index 3541af254aa8e2..6dc3b884b3c359 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md @@ -20,7 +20,7 @@ displayed_sidebar: docs ## Description -The **WP Get attributes** command returns the value of any attribute in a 4D Write Pro range, header, body, footer, table, or document. This command gives you access to any kind of 4D Write Pro internal attributes: character, paragraph, document, table, or image. +La commande **WP Get attributes** renvoie la valeur de n'importe quel attribut de plage, en-tête, corps, pied de page, tableau ou document de 4D Write Pro. Cette commande vous donne accès à tout type d'attribut interne 4D Write Pro : caractère, paragraphe, document, tableau ou image. In *targetObj*, you can pass: diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md index 9ee8c596329611..2452c695e5db35 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md @@ -26,7 +26,7 @@ Dans le paramètre *targetObj*, vous pouvez passer : - une plage, ou - un élément (tableau / ligne / cellule(s) / paragraphe / corps / en-tête / pied de page / section / / sous-section / image en ligne), ou -- un document 4D Write Pro. +- a 4D Write Pro document. Dans le paramètre *formule*, passez la formule 4D à évaluer. Vous pouvez passer : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md index d0d90de82a5262..55a80c8ca85900 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md @@ -21,7 +21,7 @@ displayed_sidebar: docs ## Description -La commande **WP Insert picture** insère *picture* ou *pictureFileObj* dans le *targetObj* spécifié en fonction des paramètres *mode* d'insertion et *rangeUpdate*, et retourne une référence à l'élément picture. L'image sera insérée comme un caractère dans le *targetObj*. +La commande **WP Insert picture** insère *picture* ou *pictureFileObj* dans le *targetObj* spécifié en fonction des paramètres *mode* d'insertion et *rangeUpdate*, et renvoie une référence à l'élément image. L'image sera insérée en tant que caractère dans *targetObj*. In *targetObj*, you can pass: diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md index 22f732e3cd6d70..0edc96ed790d78 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md @@ -19,7 +19,7 @@ displayed_sidebar: docs ## Description -La commande **WP RESET ATTRIBUTES** permet de réinitialiser la valeur d'un ou plusieurs attributs dans la plage, l'élément ou le document passé en paramètre. Cette commande permet de supprimer tout type d'attribut interne à 4D Write Pro : caractère, paragraphe, document, tableau ou image. Vous pouvez passer le nom de l'attribut à réinitialiser dans *attribName* ou vous pouvez passer une collection d'attributs dans *attribColl* pour réinitialiser plusieurs attributs à la fois. +La commande **WP RESET ATTRIBUTES** permet de réinitialiser la valeur d'un ou plusieurs attributs dans la plage, l'élément ou le document passé en paramètre. Cette commande permet de supprimer tout type d'attribut interne de 4D Write Pro : caractère, paragraphe, document, tableau ou image. Vous pouvez passer le nom de l'attribut à réinitialiser dans *attribName* ou vous pouvez passer une collection d'attributs dans *attribColl* pour réinitialiser plusieurs attributs à la fois. > Dans le cas d'une section ou d'une sous-section, l'objet *sectionOrSubsection* peut être transmis seul et tous les attributs sont réinitialisés en une seule fois. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md index 43b92d746dfcbe..8c4efbe25e2be8 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md @@ -19,7 +19,7 @@ displayed_sidebar: docs ## Description -La commande **WP SET ATTRIBUTES** permet de définir la valeur de n'importe quel attribut d'une plage, d'un élément, d'un document. Cette commande permet d'accéder à n'importe quel type d'attribut interne à 4D Write Pro : caractère, paragraphe, document, tableau ou image. +La commande **WP SET ATTRIBUTES** vous permet de définir la valeur d'un attribut de plage, élément ou document. Cette commande vous donne accès à tout type d'attribut interne 4D Write Pro : caractère, paragraphe, document, tableau ou image. Dans *targetObj*, vous pouvez passer : diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md index b86e2a3322962d..a92367ea1b8081 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md @@ -54,22 +54,22 @@ Vous souhaitez remplacer la sélection d'une zone de 4D Write Pro par le contenu You can insert special expressions related to document attributes in any document area (body, header, footer) using the [WP Insert formula](commands/wp-insert-formula.md) command. Within a formula, a formula context object is automatically exposed. You can use the properties of this object through [**This**](../commands/this.md): -| Propriétés | Type | Description | -| ------------------------------------------------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [This](../commands/this.md).title | Text | Titre défini dans l'attribut wk title | -| [This](../commands/this.md).author | Text | Auteur défini dans l'attribut wk author | -| [This](../commands/this.md).subject | Text | Subject defined in wk subject attribute | -| [This](../commands/this.md).company | Text | Company defined in wk company attribute | -| [This](../commands/this.md).notes | Text | Notes defined in wk notes attribute | -| [This](../commands/this.md).dateCreation | Date | Date creation defined in wk date creation attribute | -| [This](../commands/this.md).dateModified | Date | Date modified defined in wk date modified attribute | -| [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 | Page count: total count of pages.
    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).document | Object | Document 4D Write Pro | -| [This](../commands/this.md).data | Object | Data context of the 4D Write Pro document set by [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) | -| [This](../commands/this.md).sectionIndex | Number | The Index of the section in the 4D Write Pro document starting from 1 | -| [This](../commands/this.md).pageIndex | Number | The actual page number in the 4D Write Pro document starting from 1 (regardless of the section page numbers) | -| [This](../commands/this.md).sectionName | String | The name that the user gives to the section | +| Propriétés | Type | Description | +| ------------------------------------------------------------------------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [This](../commands/this.md).title | Text | Titre défini dans l'attribut wk title | +| [This](../commands/this.md).author | Text | Auteur défini dans l'attribut wk author | +| [This](../commands/this.md).subject | Text | Subject defined in wk subject attribute | +| [This](../commands/this.md).company | Text | Company defined in wk company attribute | +| [This](../commands/this.md).notes | Text | Notes defined in wk notes attribute | +| [This](../commands/this.md).dateCreation | Date | Date creation defined in wk date creation attribute | +| [This](../commands/this.md).dateModified | Date | Date modified defined in wk date modified attribute | +| [This](../commands/this.md).pageNumber (\*) | Number | Numéro de page tel qu'il est défini
  • : - à partir du début du document (par défaut) ou
  • - à partir du début de la page de la section s'il est défini par début de page de section.
  • Cette formule est toujours dynamique ; elle n'est pas affectée par la commande [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md). | +| [This](../commands/this.md).pageCount (\*) | Number | Nombre de pages : nombre total de pages.
    Cette formule est toujours dynamique ; elle n'est pas affectée par la commande [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md). | +| [This](../commands/this.md).document | Object | Document 4D Write Pro | +| [This](../commands/this.md).data | Object | Data context of the 4D Write Pro document set by [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) | +| [This](../commands/this.md).sectionIndex | Number | The Index of the section in the 4D Write Pro document starting from 1 | +| [This](../commands/this.md).pageIndex | Number | The actual page number in the 4D Write Pro document starting from 1 (regardless of the section page numbers) | +| [This](../commands/this.md).sectionName | String | The name that the user gives to the section | :::note @@ -95,17 +95,17 @@ Par exemple, pour insérer le numéro de page dans la zone de pied de page : When used in a formula within the table, the **This** keyword gives access to different data according to the context: -| **Context** | **Expression** | **Type** | **Returns** | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Anywhere | [This](../commands/this.md).table | Object | Current table | -| | [This](../commands/this.md).row | Object | Current table row element | -| | [This](../commands/this.md).rowIndex | Number | Index of the current row, starting from 1 | -| When a datasource has been defined for the table | [This](../commands/this.md).table.dataSource | Objet (formula) | Datasource as a formula | -| | [This](../commands/this.md).tableData | Collection or Entity selection (usually) | Evaluated table.dataSource | -| In each data row when a table datasource returns a collection or an entity selection | [This](../commands/this.md).item.xxx | Tous | Mapped to each item of the table datasource collection or entity selection, for example **This.item.firstName** if the associated entity has the *firstName* attribute | -| | [This](../commands/this.md).itemIndex | Number | Index of the current item in the collection or entity selection, starting from 0 | -| In any row (except header rows) when a table datasource returns a collection or an entity selection | [This](../commands/this.md).previousItems | Collection or 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.
    This expression returns the same type of value as the **This.tableData** expression. | -| In a break row | [This](../commands/this.md).breakItems | Collection or 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.
    • the current break and the next break row of the same level (or the end of the table) if the break row(s) are displayed before the data row.
    | +| **Context** | **Expression** | **Type** | **Returns** | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Anywhere | [This](../commands/this.md).table | Object | Current table | +| | [This](../commands/this.md).row | Object | Current table row element | +| | [This](../commands/this.md).rowIndex | Number | Index of the current row, starting from 1 | +| When a datasource has been defined for the table | [This](../commands/this.md).table.dataSource | Objet (formula) | Datasource as a formula | +| | [This](../commands/this.md).tableData | Collection or Entity selection (usually) | Evaluated table.dataSource | +| In each data row when a table datasource returns a collection or an entity selection | [This](../commands/this.md).item.xxx | Tous | Mapped to each item of the table datasource collection or entity selection, for example **This.item.firstName** if the associated entity has the *firstName* attribute | +| | [This](../commands/this.md).itemIndex | Number | Index of the current item in the collection or entity selection, starting from 0 | +| In any row (except header rows) when a table datasource returns a collection or an entity selection | [This](../commands/this.md).previousItems | Collection or 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.
    This expression returns the same type of value as the **This.tableData** expression. | +| In a break row | [This](../commands/this.md).breakItems | Collection or Entity selection | Éléments de la collection ou de l'entity selection affichés dans les lignes entre :
    • la ligne de rupture actuelle et la ligne de rupture précédente du même niveau (ou le début du tableau) si la ou les ligne(s) de rupture sont affichées après la ligne de données.
    • la ligne de rupture courante et la suivante du même niveau (ou la fin du tableau) si la ou les ligne(s) de rupture sont affichées avant la ligne de données.
    | In any other contexts, these expressions will return *undefined*. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md index 2d275428873a7d..99425a010d3b25 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md @@ -9,29 +9,29 @@ La classe OpenAI fournit un client permettant d'accéder à diverses ressources ## Propriétés de configuration -| Nom de propriété | Type | Description | Optionnel | -| ---------------- | ---- | ------------------------------------------------------------------------------ | --------------- | -| `apiKey` | Text | Votre [clé API OpenAI ](https://platform.openai.com/api-keys). | Non pour OpenAI | -| `baseURL` | Text | URL de base pour les requêtes de l'API OpenAI. | Oui | -| `organisation` | Text | Votre identifiant d'organisation OpenAI. | Oui | -| `project` | Text | Votre identifiant de projet OpenAI. | Oui | +| Nom de propriété | Type | Description | Optionnel | +| ---------------- | ---- | ------------------------------------------------------------------------------ | ----------------------------------------------------------------- | +| `apiKey` | Text | Votre [clé API OpenAI ](https://platform.openai.com/api-keys). | Peut être requis par le fournisseur | +| `baseURL` | Text | URL de base pour les requêtes de l'API OpenAI. | Oui (si omis = utiliser le fournisseur OpenAI) | +| `organisation` | Text | Votre identifiant d'organisation OpenAI. | Oui | +| `project` | Text | Votre identifiant de projet OpenAI. | Oui | ### Propriétés HTTP supplémentaires -| Nom de propriété | Type | Description | -| ---------------- | -------------------------------------------------------------------------------- | -------------------------------------------------------------------- | -| `timeout` | Real | Time in seconds before timeout occurs. | -| `maxRetries` | Real | Maximum number of retry attempts in case of failure. | -| `httpAgent` | [4D.HTTPAgent](https://developer.4d.com/docs/API/HTTPAgentClass) | HTTP agent used for making requests. | -| `customHeaders` | Real | Custom headers to be included in the HTTP requests. | +| Nom de propriété | Type | Description | +| ---------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | +| `timeout` | Real | Délai en secondes avant l'expiration du délai. | +| `maxRetries` | Real | Nombre maximum de tentatives en cas d'échec. | +| `httpAgent` | [4D.HTTPAgent](https://developer.4d.com/docs/API/HTTPAgentClass) | Agent HTTP utilisé pour effectuer des requêtes. | +| `customHeaders` | Real | En-têtes personnalisés à inclure dans les requêtes HTTP. | ### Class constructor Créer une instance de la classe client OpenAI. -| Nom de l'argument | Type | Description | -| ------------------------- | ------------ | ------------------------------------------------------- | -| `apiKey or configuration` | Text, Object | apiKey if Text or configuration Object. | +| Nom de l'argument | Type | Description | +| ------------------------- | ------------ | ----------------------------------------------------------- | +| `apiKey` ou configuration | Text, Object | apiKey si Texte, ou objet de configuration. | #### Clé API @@ -58,15 +58,15 @@ $client.baseURL:="https://server.ai" ## Ressources API -L'API donne accès à de multiples ressources qui permettent une interaction transparente avec les services de l'OpenAI. Each resource is encapsulated within a dedicated API class, offering a structured and intuitive way to interact with different functionalities. +L'API donne accès à de multiples ressources qui permettent une interaction transparente avec les services de l'OpenAI. Chaque ressource est encapsulée dans une classe d'API dédiée, offrant un moyen structuré et intuitif d'interagir avec les différentes fonctionnalités. -| Nom de propriété | Type | Description | -| ---------------- | ----------------------------------------------- | ---------------------------------------------- | -| `models` | [OpenAIModelsAPI](OpenAIModelsAPI.md) | Accès à l'API des modèles. | -| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | Accès à l'API de Chat. | -| `images` | [OpenAIImagesAPI](OpenAIImagesAPI.md) | Accès à l'API Images. | -| `moderations` | [OpenAIModerationsAPI](OpenAIModerationsAPI.md) | Accès à l'API des modérations. | -| `embeddings` | [OpenAIEmbeddingsAPI](OpenAIEmbeddingsAPI.md) | Access to the Embeddings API. | +| Nom de propriété | Type | Description | +| ---------------- | ----------------------------------------------- | ---------------------------------------------------------------------------- | +| `models` | [OpenAIModelsAPI](OpenAIModelsAPI.md) | Accès à l'API des modèles. | +| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | Accès à l'API de discussion (Chat). | +| `images` | [OpenAIImagesAPI](OpenAIImagesAPI.md) | Accès à l'API Images. | +| `moderations` | [OpenAIModerationsAPI](OpenAIModerationsAPI.md) | Accès à l'API des modérations. | +| `embeddings` | [OpenAIEmbeddingsAPI](OpenAIEmbeddingsAPI.md) | Accès à l'API Embeddings (vectorisation). | ### Exemple d'utilisation diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatAPI.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatAPI.md index 936135592b6429..85b9cc589d5ccc 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatAPI.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatAPI.md @@ -5,14 +5,14 @@ title: OpenAIChatAPI # OpenAIChatAPI -La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la fonctionnalité de chat de l'OpenAI, en tirant parti des capacités de complétion et de vision. +La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la fonctionnalité de discussion (*chat*) de l'OpenAI, en tirant parti des capacités de complétion et de vision. ## Propriétés -| Propriété | Type | Description | -| ------------- | ------------------------------------------------------- | ----------------------------------------------------------------------- | -| `completions` | [OpenAIChatCompletionsAPI](OpenAIChatCompletionsAPI.md) | An instance that handles chat completions requests. | -| `vision` | [OpenAIVision](OpenAIVision.md) | A helper instance that handles vision-related requests. | +| Propriété | Type | Description | +| ------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------------- | +| `completions` | [OpenAIChatCompletionsAPI](OpenAIChatCompletionsAPI.md) | Une instance qui gère les requêtes de complétion de la discussion. | +| `vision` | [OpenAIVision](OpenAIVision.md) | A helper instance that handles vision-related requests. | ## Function @@ -20,10 +20,10 @@ La classe `OpenAIChatAPI` fournit une interface permettant d'interagir avec la f **create**(*systemPrompt* : Text) : OpenAIChatHelper -| Paramètres | Type | Description | -| -------------- | --------------------------------------- | ----------------------------------------------------------------- | -| *systemPrompt* | Text | The system prompt to initialize the chat. | -| Résultat | [OpenAIChatHelper](OpenAIChatHelper.md) | A helper instance for managing chat interactions. | +| Paramètres | Type | Description | +| -------------- | --------------------------------------- | -------------------------------------------------------------------------------------- | +| *systemPrompt* | Text | L'invite du système pour initialiser la discussion. | +| Résultat | [OpenAIChatHelper](OpenAIChatHelper.md) | Une instance du helper pour gérer les interactions dans la discussion. | #### Exemple d'utilisation diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsParameters.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsParameters.md index d3a3e3cf405c79..c662fa21029b46 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsParameters.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatCompletionsParameters.md @@ -30,9 +30,9 @@ The `OpenAIChatCompletionParameters` class is designed to handle the parameters ### Asynchronous Callback Properties -| Propriété | Type | Description | -| ------------------------------------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `onData` (or `formula`) | 4D.Function | A function to be called asynchronously when receiving data chunk. Ensure that the current process does not terminate. | +| Propriété | Type | Description | +| ------------------------------------------ | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `onData` (or `formula`) | 4D.Function | A function to be called asynchronously when receiving data chunk. Assurez-vous que le process courant ne se termine pas. | `onData` will receive as argument an [OpenAIChatCompletionsStreamResult](./OpenAIChatCompletionsStreamResult.md). diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md index 918611abe323f1..25400a67a22838 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md @@ -12,16 +12,16 @@ La classe `OpenAIMessage` représente un message structuré contenant un rôle, | Propriété | Type | Description | | -------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | | `rôle` | Text | The role of the message (e.g., "user", "assistant", "system", "tool"). | -| `contenu` | Variant | The content of the message, which can be a text or a collection of objects. | -| `user` | Text | An optional property representing the user associated with the message. | +| `contenu` | Variant | Le contenu du message, qui peut être un texte ou une collection d'objets. | +| `user` | Text | Une propriété facultative représentant l'utilisateur associé au message. | | `tool_calls` | Collection | A collection of tool calls requested by the assistant. Each tool call contains an `id`, `type`, and a `function` object. | | `tool_call_id` | Text | The ID of the tool call that this message is responding to (used when `role` is "tool"). | ## Propriétés calculées -| Propriété | Type | Description | -| --------- | ---- | --------------------------------------------------------- | -| `text` | Text | A property representing the text message. | +| Propriété | Type | Description | +| --------- | ---- | -------------------------------------------------------------- | +| `text` | Text | Une propriété représentant le message textuel. | ## Fonctions @@ -29,23 +29,23 @@ La classe `OpenAIMessage` représente un message structuré contenant un rôle, **addImageURL**(*imageURL* : Text; *detail* : Text) -| Paramètres | Type | Description | -| ---------- | ---- | ----------------------------------------------------------- | -| *imageURL* | Text | The URL of the image to add to the message. | -| *detail* | Text | Additional details about the image. | +| Paramètres | Type | Description | +| ---------- | ---- | ------------------------------------------------------ | +| *imageURL* | Text | L'URL de l'image à ajouter au message. | +| *detail* | Text | Détails supplémentaires sur l'image. | -Adds an image URL to the content of the message. +Ajoute une URL d'image au contenu du message. ## Exemple d'utilisation ### Create a simple message and attach an image ```4d -// Create an instance of OpenAIMessage -var $message:=cs.AIKit.OpenAIMessage({role: "user"; content: "Hello!"}) +// Créer une instance d'OpenAIMessage +var $message:=cs.AIKit.OpenAIMessage({role : "user" ; content : "Hello !"}) -// Add an image URL with details -$message.addImageURL("http://example.com/image.jpg"; "high") +// Ajouter une image URL avec des détails +$message.addImageURL("http://example.com/image.jpg" ; "high") ``` ### Respond to a tool call message diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIParameters.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIParameters.md index ab0f9184839a4f..3e875d09183335 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIParameters.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIParameters.md @@ -5,7 +5,7 @@ title: OpenAIParameters # OpenAIParameters -The `OpenAIParameters` class is designed to handle execution and request parameters for interacting with the OpenAI API. +La classe `OpenAIParameters` est conçue pour gérer les paramètres d'exécution et de requête pour interagir avec l'API OpenAI. ## Propriétés @@ -13,16 +13,16 @@ The `OpenAIParameters` class is designed to handle execution and request paramet Use this callback property to receive the result regardless of success or error: -| Propriété | Type | Description | -| -------------------------------------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | -| `onTerminate`
    (or `formula`) | 4D.Function | A function to be called asynchronously when finished. Ensure that the current process does not terminate. | +| Propriété | Type | Description | +| -------------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `onTerminate`
    (or `formula`) | 4D.Function | Une fonction à appeler de manière asynchrone lorsqu'elle est terminée. Assurez-vous que le process courant ne se termine pas. | Use these callback properties for more granular control over success and error handling: -| Propriété | Type | Description | -| ------------ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `onResponse` | 4D.Function | A function to be called asynchronously when the request finishes **successfully**. Ensure that the current process does not terminate. | -| `onError` | 4D.Function | A function to be called asynchronously when the request finishes **with errors**. Ensure that the current process does not terminate. | +| Propriété | Type | Description | +| ------------ | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `onResponse` | 4D.Function | A function to be called asynchronously when the request finishes **successfully**. Assurez-vous que le process courant ne se termine pas. | +| `onError` | 4D.Function | A function to be called asynchronously when the request finishes **with errors**. Assurez-vous que le process courant ne se termine pas. | > The callback function will receive the same result object type (one of [OpenAIResult](./OpenAIResult.md) child classes) that would be returned by the function in synchronous code. @@ -30,28 +30,28 @@ See [documentation about asynchronous code for examples](../asynchronous-call.md ### Network Properties -| Propriété | Type | Description | -| -------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `timeout` | Real | Overrides the client-level default timeout for the request, in seconds. Default is 0. | -| `httpAgent` | HTTPAgent | Overrides the client-level default HTTP agent for the request. | -| `maxRetries` | Integer | The maximum number of retries for the request. (Only if code not asynchrone ie. no function provided) | -| `extraHeaders` | Object | Extra headers to send with the request. | +| Propriété | Type | Description | +| -------------- | --------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `timeout` | Real | Remplace le délai d'attente par défaut au niveau du client pour la requête, en secondes. Par défaut, 0. | +| `httpAgent` | HTTPAgent | Remplace l'agent HTTP par défaut au niveau du client pour la requête. | +| `maxRetries` | Integer | Nombre maximal de tentatives pour la requêtes. (Seulement si le code n'est pas asynchrone, c'est-à-dire s'il n'y a pas de fonction fournie) | +| `extraHeaders` | Object | En-têtes supplémentaires à envoyer avec la requête. | ### OpenAPI Properties -| Propriété | Type | Description | -| --------- | ---- | ----------------------------------------------------------------------------------------------------------- | -| `user` | Text | A unique identifier representing the end-user, which helps OpenAI monitor and detect abuse. | +| Propriété | Type | Description | +| --------- | ---- | ------------------------------------------------------------------------------------------------------------------------------- | +| `user` | Text | Un identifiant unique représentant l'utilisateur final, ce qui aide OpenAI à surveiller et à détecter les abus. | ### Others -| Propriété | Type | Description | -| --------- | ------- | ------------------------------------------------------------------------------------------------------------ | -| `throw` | Boolean | If true, throws an error if one occurs. Only if no formula callback defined. | +| Propriété | Type | Description | +| --------- | ------- | -------------------------------------------------------------------------------------------------------------------------------- | +| `throw` | Boolean | Si true, faire un throw en cas d'erreur. Uniquement si aucune formule de callback n'est définie. | ## Classes héritées -Several classes inherit from `OpenAIParameters` to extend its functionality for specific use cases. Below are some of the classes that extend `OpenAIParameters`: +Plusieurs classes héritent de `OpenAIParameters` pour étendre ses fonctionnalités à des cas d'utilisation spécifiques. Voici quelques-unes des classes qui étendent `OpenAIParameters` : - [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - [OpenAIChatCompletionsMessagesParameters](OpenAIChatCompletionsMessagesParameters.md) diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/asynchronous-call.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/asynchronous-call.md index c0c0c453eb7436..aa37bc3c85f2bb 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/asynchronous-call.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/asynchronous-call.md @@ -5,27 +5,27 @@ title: Appel asynchrone # Appel asynchrone -If you do not want to wait for the OpenAPI response when making a request to its API, you need to use asynchronous code. +Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. -To make asynchronous calls, you must provide a callback `4D.Function`(`Formula`) in the [OpenAIParameters](Classes/OpenAIParameters.md) object parameter to receive the result. +Pour effectuer des appels asynchrones, vous devez fournir une `4D.Function`(`Formula`) de rappel (*callback*) dans le paramètre objet [OpenAIParameters](Classes/OpenAIParameters.md) pour recevoir le résultat. -The callback function will receive the same result object type (one of [OpenAIResult](Classes/OpenAIResult.md) child classes) that would be returned by the function in synchronous code. Voir les exemples ci-dessous. +La fonction de callback recevra le même type d'objet de résultat (l'une des classes enfant de [OpenAIResult](Classes/OpenAIResult.md)) que celui qui serait renvoyé par la fonction dans un code synchrone. Voir les exemples ci-dessous. -## Process Considerations +## A propos des process -The asynchronous method is based on [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), so the response will be received within the current process. +La méthode asynchrone est basée sur [4D.HTTPRequest](https://developer.4d.com/docs/API/HTTPRequestClass), ainsi la réponse sera reçue dans le process courant. -> ⚠️ If your process ends at the conclusion of the current method (e.g., using New process, or playing in the method editor), the callback formula might not be called asynchronously. In such cases, consider using `CALL WORKER` or `CALL FORM`. +> ⚠️ Si votre process se termine à la fin de la méthode courante (par exemple, si vous utilisez New process ou l'éditeur de méthode), la formule de callback peut ne pas être appelée de manière asynchrone. Dans ce cas, il est nécessaire d'utiliser `CALL WORKER` ou `CALL FORM`. ## Exemples d’utilisation -### liste de modèles +### Liste de modèles ```4d $client.models.list({formula: Formula(MyReceiveMethod($1))}) ``` -`$1` sera une instance de [OpenAIModelListResult] (Classes/OpenAIModelListResult.md), donc la méthode `MyReceiveMethod` pourrait être : +`$1` sera une instance de [OpenAIModelListResult](Classes/OpenAIModelListResult.md), donc la méthode `MyReceiveMethod` pourrait être : ```4d #DECLARE($result: cs.AIKit.OpenAIModelListResult) @@ -41,7 +41,7 @@ Else End if ``` -### complétions de chat +### Complétions de chat ```4d var $messages:=[{role: "system"; content: "You are a helpful assistant."}] diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md index a27cd014683587..6f376ddde06727 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md @@ -7,17 +7,17 @@ title: Fournisseurs (Providers) De nombreux fournisseurs d'IA proposent une API de type OpenAI, vous pouvez donc utiliser ce projet pour vous y connecter. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +Pour ce faire, il suffit de passer l'adresse du fournisseur dans `baseURL` et d'utiliser sa clé d'api si nécessaire. ```4d $client.baseURL:="https://api.mistral.ai/v1" ``` -Some of them +Quelques-uns : -## Distant +## A distance -| Fournisseur | Url de base | +| Fournisseur | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Some of them ## Local -| Fournisseur | Url de base par défaut | Doc | +| Fournisseur | baseURL par défaut | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/overview.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/overview.md index 790109ee1305cf..27f37b8f05b508 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/overview.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/aikit/overview.md @@ -11,7 +11,7 @@ title: 4D-AIKit ## OpenAI -La classe [`OpenAI`](Classes/OpenAI.md) vous permet de faire des demandes à l'[API OpenAI](https://platform.openai.com/docs/api-reference/). +La classe [`OpenAI`](Classes/OpenAI.md) vous permet d'envoyer des requêtes à l'[API OpenAI](https://platform.openai.com/docs/api-reference/). ### Configuration @@ -21,7 +21,7 @@ Tout d'abord, initialisez le client OpenAI en utilisant votre clé API var $client:=cs.AIKit.OpenAI.new("your api key") ``` -Pour une API [ compatible provider ](compatible-openai.md), vous pouvez configurer l'URL du serveur en définissant le paramètre `baseURL`. +Pour l'API d'un [founisseur compatible](compatible-openai.md), vous devez configurer l'URL du serveur en définissant le paramètre `baseURL`. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -33,7 +33,7 @@ ou $client.baseURL:="https://your.server.ai" ``` -### Formuler des demandes +### Formuler des requêtes `OpenAI` fournit différents points de terminaison appelés ressources, chacun offrant diverses fonctions. @@ -41,7 +41,7 @@ $client.baseURL:="https://your.server.ai" var $result:=$client..() ``` -Le `$result` contient le `HTTPRequest`, un statut `success`, une collection de `errors` et plus encore. Voir [OpenAIResult](Classes/OpenAIResult.md) +Le résultat `$result` contient la requête `HTTPRequest`, un statut `success`, une collection de `errors` et plus encore. Voir [OpenAIResult](Classes/OpenAIResult.md) Voir quelques exemples ci-dessous. @@ -60,9 +60,9 @@ var $result:=$client.chat.completions.create($messages; {model: "gpt-4o-mini"}) // résultat dans $result.choice ``` -##### Assistant de chat +##### Helper de discussion (chat) -Cet assistant vous permet de maintenir une liste de messages d'utilisateurs et de réponses d'assistants. +Cet assistant vous permet de maintenir une liste de messages d'utilisateurs et de réponses de l'assistant. ```4d var $helper:=$client.chat.create("You are a helpful assistant.") @@ -71,9 +71,9 @@ $result:=$helper.prompt("and could you decompose this number") // conversation dans $helper.messages ``` -##### Assistant de vision +##### Helper de vision -Cet assistant permet l'analyse des images à travers le chat. +Cet assistant permet l'analyse des images à travers la discussion. ```4d var $result:=$client.chat.vision.create($imageUrl).prompt("give me a description of the image") @@ -113,13 +113,13 @@ var $moderation:=$client.moderations.create("This text contains inappropriate la #### Code asynchrone -Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. L'objet résultat sera reçu dans une fonction de rappel. +Si vous ne souhaitez pas attendre la réponse de l'OpenAPI lorsque vous envoyez une requête à son API, vous devez utiliser un code asynchrone. L'objet résultat sera reçu dans une fonction de callback. Voir [documentation détaillée pour les exemples](asynchronous-call.md) ## Droits d'auteur -- This library is not affiliated with, endorsed by, or officially connected to OpenAI in any way. -- "OpenAI" and any related marks are trademarks or registered trademarks of OpenAI, LLC. All rights related to OpenAI's services, APIs, and technologies remain the property of OpenAI. -- This project simply provides an interface to OpenAI’s services and does not claim any ownership over their technology, branding, or intellectual property. +- Cette bibliothèque n'est pas affiliée à OpenAI, ni approuvée par elle, ni officiellement liée à elle de quelque manière que ce soit. +- "OpenAI" et toutes les marques associées sont des marques commerciales ou des marques déposées d'OpenAI, LLC. Tous les droits liés aux services, API et technologies de l'OpenAI restent la propriété de OpenAI. +- Ce projet fournit simplement une interface aux services d'OpenAI et ne revendique aucune propriété sur leur technologie, leur marque ou leur propriété intellectuelle. diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png b/i18n/fr/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png b/i18n/fr/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/i18n/fr/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png differ diff --git a/i18n/fr/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md b/i18n/fr/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md index b3427c13e9a4fe..09dd557d1de1c5 100644 --- a/i18n/fr/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/fr/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md @@ -128,7 +128,11 @@ L’exemple suivant interdit toute nouvelle connexion entre 2 et 4 heures du mat   // Méthode base Sur ouverture connexion serveur  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time このコマンドは、元のコレクションを変更します。 引数もなしに呼び出された場合、`.sort()` はスカラー値 (数値、テキスト、日付、ブール) のみを並べ替えます。 デフォルトでは、要素はそれぞれの型に応じて昇順で並べ替えられます。 -You can also pass one of the following constants in the *ascOrDesc* parameter: +*ascOrDesc* 引数には、以下の定数のいずれか一つを渡すことができます: ``` -|Constant| Type|Value|Comment| +|定数| 型|値|詳細| |---|---|---|---| -|ck ascending|Integer|0|Elements are ordered in ascending order (default)| -|ck descending|Integer|1|Elements are ordered in descending order| +|ck ascending|Integer|0|要素は昇順に並んでいます(デフォルト)| +|ck descending|Integer|1|要素は降順に並んでいます| -This syntax orders scalar values in the collection only (other element types such as objects or collections are returned unordered). +このシンタックスはコレクション内のスカラー値のみを並び替えます(オブジェクトやコレクションなどの他の型の要素は並べ替えされません)。 ``` コレクションが異なる型の要素を格納している場合、それらはまず型ごとにグループ分けされ、そのあとで並べ替えられます。 型は以下の順番で返されます: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/DataClassClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/DataClassClass.md index 81cf2b2f04aa40..8212f0fcefa73a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/DataClassClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/DataClassClass.md @@ -1187,11 +1187,11 @@ $es:=ds.Movie.query("roles.actor.lastName = :1 AND roles.actor{2}.lastName = :2" この場合、*value* 引数は、以下のプロパティを格納した**比較ベクトルオブジェクト** である必要があります: -| プロパティ | 型 | 説明 | -| --------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| vector | [4D.Vector](../API/VectorClass.md) | 必須設定です。 比較するベクトル | -| metric | Text | 任意。 クエリに使用する[ベクトル計算](../API/VectorClass.md#ことなるベクトル計算を理解する)。 以下の(テキストの)定数のいずれか一つを使用することができます:
  • `mk cosine` (省略時にデフォルト): ベクトル間のコサイン距離を計算します。
  • `mk dot`: ベクトル間のドット類似度を計算します。
  • `mk euclidean`: ベクトル間のユークリッド距離を計算します。 | -| threshold | Real | 任意(デフォルト: 0.5)。 選択された"metric"に従って、コサイン、ドット、またはユークリッド類似度に基づいたベクトル比較をフィルタリングするために使用されるしきい値。 最適な結果を得るためには、特定の用途に最適な類似度のしきい値をきちんと選択することが強く推奨されます。 | +| プロパティ | 型 | 説明 | +| --------- | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| vector | [4D.Vector](../API/VectorClass.md) | 必須設定です。 比較するベクトル | +| metric | Text | 任意。 クエリに使用する[ベクトル計算](../API/VectorClass.md#ことなるベクトル計算を理解する)。 以下の(テキストの)定数のいずれか一つを使用することができます:
  • `mk cosine` (省略時にデフォルト): ベクトル間のコサイン類似度を計算します。
  • `mk dot`: ベクトル間のドット類似度を計算します。
  • `mk euclidean`: ベクトル間のユークリッド距離を計算します。 | +| threshold | Real | 任意(デフォルト: 0.5)。 選択された"metric"に従って、コサイン、ドット、またはユークリッド類似度に基づいたベクトル比較をフィルタリングするために使用されるしきい値。 最適な結果を得るためには、特定の用途に最適な類似度のしきい値をきちんと選択することが強く推奨されます。 | **comparator** 記号の、一部のみがサポートされます。 これらの比較記号は、結果としきい値を比較するのに使用されるという点に注意してください: @@ -1588,7 +1588,7 @@ var $employees:=ds.Employee.query("embedding > :1"; {vector: $vector; metric: mk // 明示的にコサイン計量を指定し、カスタムのしきい値を用いた検索 var $employees:=ds.Employee.query("embedding > :1"; {vector: $vector; metric: mk cosine; threshold: 0.9}) // フォーミュラを使用した検索 -var $employees:=ds.Employee.query(Formula(This.embdedding.cosineSimilarity($vector)>0.9)) +var $employees:=ds.Employee.query(Formula(This.embedding.cosineSimilarity($vector)>0.9)) ``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/EntityClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/EntityClass.md index 805fe2f6a0adad..cf75b0474d0159 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/EntityClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/EntityClass.md @@ -338,10 +338,10 @@ vCompareResult1 (すべての差異が返されています):
    履歴 -| リリース | 内容 | -| ---- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | 追加 | +| リリース | 内容 | +| ---- | ----------- | +| 21 | ステータス7と8を追加 | +| 17 | 追加 |
    @@ -368,7 +368,7 @@ vCompareResult1 (すべての差異が返されています): **戻り値** -The object returned by `.drop()` contains the following properties: +`.drop()` によって返されるオブジェクトには以下のプロパティが格納されます: | プロパティ | | 型 | 説明 | | --------------------------------- | ----------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------- | @@ -393,15 +393,15 @@ The object returned by `.drop()` contains the following properties: (\*) エラー時には *Result* オブジェクトの *status* あるいは *statusText* プロパティに以下のいずれかの値が返されます: -| 定数 | 値 | 説明 | -| ----------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 When using entity.drop(), this error can be returned when dk force drop if stamp changed option is used. When using entity.lock(), this error can be returned when dk reload if stamp changed option is used.
  • **Associated statusText**: "Entity does not exist anymore" | -| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。
    **割り当てられた statusText**: "Already locked" (既にロックされています) | -| `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    **割り当てられた statusText**: "Other error" (その他のエラー) | -| `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | -| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used
  • **Associated statusText**: "Stamp has changed"
  • | -| `dk status wrong permission` | 1 | 現在の権限では、エンティティを削除することはできません。 現在の権限では、エンティティを保存することはできません。 **割り当てられた statusText**: "Permission Error" (権限エラー) | +| 定数 | 値 | 説明 | +| ----------------------------------------- | - | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 entity.drop() を使用するとき、このエラーは dk force drop if stamp changed オプションを使用した場合に返されることがあります。 `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。
  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | +| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。
    **割り当てられた statusText**: "Already locked" (既にロックされています) | +| `dk status validation failed` | 7 | [検証イベント](../ORDA/orda-events.md) 用にデベロッパーから送信された、致命的ではないエラー。 **割り当てられた statusText**: "Mild Validation Error" (緩やかな検証エラー) | +| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    **割り当てられた statusText**: "Other error" (その他のエラー) | +| `dk status serious validation error` | 8 | [検証イベント](../ORDA/orda-events.md) 用にデベロッパーから送信された、致命的なエラー。 **割り当てられたstatusText**: "Serious Validation Error" (深刻な検証エラー) | +| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • `entity.save()` の場合: `dk auto merge` オプションが使用されていない場合に限りエラー
  • `entity.drop()` の場合: `dk force drop if stamp changed` オプションが使用されていない場合に限りエラー
  • `entity.lock()` の場合: `dk reload if stamp changed` オプションが使用されていない場合に限りエラー
  • **割り当てられた statusText**: "Stamp has changed"
  • | +| `dk status wrong permission` | 1 | 現在の権限では、エンティティを削除することはできません。 現在の権限では、エンティティを保存することはできません。 **割り当てられた statusText**: "Permission Error" (権限エラー) | #### 例題 1 @@ -1016,13 +1016,12 @@ $info:=$address.getRemoteContextAttributes() (\*) エラー時には *Result* オブジェクトの *status* あるいは *statusText* プロパティに以下のいずれかの値が返されます: -| 定数 | 値 | 説明 | -| ----------------------------------------- | - | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | -| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。
    **割り当てられた statusText**: "既にロックされています" | -| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require | -| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    **割り当てられた statusText**: "Other error" (その他のエラー) | -| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | +| 定数 | 値 | 説明 | +| ----------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 `.drop()` を使用するとき、このエラーは dk force drop if stamp changed オプションを使用した場合に返されることがあります。 `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | +| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。
    **割り当てられた statusText**: "既にロックされています" | +| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    **割り当てられた statusText**: "Other error" (その他のエラー) | +| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • `.save()` の場合: `dk auto merge` オプションが使用されていない場合に限りエラー
  • `.drop()` の場合: `dk force drop if stamp changed` オプションが使用されていない場合に限りエラー
  • `.lock()` の場合: `dk reload if stamp changed` オプションが使用されていない場合に限りエラー

  • **割り当てられた statusText**: "Stamp has changed" | #### 例題 1 @@ -1183,10 +1182,10 @@ $info:=$address.getRemoteContextAttributes() (\*) エラー時には *Result* オブジェクトの *status* あるいは *statusText* プロパティに以下のいずれかの値が返されます: -| 定数 | 値 | 説明 | -| ----------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 When using `.drop()`, this error can be returned when `dk force drop if stamp changed` option is used. `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | -| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    ***割り当てられた statusText***: "その他のエラー" | +| 定数 | 値 | 説明 | +| ----------------------------------------- | - | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 `.drop()` を使用するとき、このエラーは dk force drop if stamp changed オプションを使用した場合に返されることがあります。 `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | +| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    ***割り当てられた statusText***: "その他のエラー" | #### 例題 @@ -1215,10 +1214,10 @@ $info:=$address.getRemoteContextAttributes()
    履歴 -| リリース | 内容 | -| ---- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | 追加 | +| リリース | 内容 | +| ---- | ----------- | +| 21 | ステータス7と8を追加 | +| 17 | 追加 |
    @@ -1278,16 +1277,16 @@ $info:=$address.getRemoteContextAttributes() エラー時には Result オブジェクトの `status` あるいは `statusText` プロパティに以下のいずれかの値が返されます: -| 定数 | 値 | 説明 | -| ----------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status automerge failed` | 6 | (Only if the `dk auto merge` option is used) The automatic merge option failed when saving the entity. **Associated statusText**: "Auto merge failed" | -| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 When using `.drop()`, this error can be returned when `dk force drop if stamp changed` option is used. `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | -| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。 **割り当てられた statusText**: "Already locked" | -| `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc. **Associated statusText**: "Other error" | -| `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | -| `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | -| `dk status wrong permission` | 1 | 現在の権限では、エンティティを保存することはできません。 現在の権限では、エンティティを保存することはできません。 **割り当てられた statusText**: "Permission Error" (権限エラー) | +| 定数 | 値 | 説明 | +| ----------------------------------------- | - | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status automerge failed` | 6 | (`dk auto merge` オプションが使用されたときのみ) エンティティを保存するときに自動マージオプションが失敗しました。 **割り当てられた statusText**: "自動マージ失敗" | +| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 `.drop()` を使用するとき、このエラーは dk force drop if stamp changed オプションを使用した場合に返されることがあります。 `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | +| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。 **割り当てられた statusText**: "Already locked" | +| `dk status validation failed` | 7 | [検証イベント](../ORDA/orda-events.md) 用にデベロッパーから送信された、致命的ではないエラー。 **割り当てられた statusText**: "Mild Validation Error" (緩やかな検証エラー) | +| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。 **割り当てられた statusText**: "その他のエラー" | +| `dk status serious validation error` | 8 | [検証イベント](../ORDA/orda-events.md) 用にデベロッパーから送信された、致命的なエラー。 **割り当てられたstatusText**: "Serious Validation Error" (深刻な検証エラー) | +| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • `.save()` の場合: `dk auto merge` オプションが使用されていない場合に限りエラー
  • `.drop()` の場合: `dk force drop if stamp changed` オプションが使用されていない場合に限りエラー
  • `.lock()` の場合: `dk reload if stamp changed` オプションが使用されていない場合に限りエラー

  • **割り当てられた statusText**: "Stamp has changed" | +| `dk status wrong permission` | 1 | 現在の権限では、エンティティを保存することはできません。 現在の権限では、エンティティを保存することはできません。 **割り当てられた statusText**: "Permission Error" (権限エラー) | #### 例題 1 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/SessionClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/SessionClass.md index dbdb9acd8d6eef..740722a59c202f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/SessionClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/SessionClass.md @@ -54,10 +54,10 @@ Session オブジェクトは [`Session`](../commands/session.md) コマンド
    履歴 -| リリース | 内容 | -| ----- | -------------------------- | -| 21 | Support of remote sessions | -| 18 R6 | 追加 | +| リリース | 内容 | +| ----- | -------------- | +| 21 | リモートセッションのサポート | +| 18 R6 | 追加 |
    @@ -75,7 +75,7 @@ Session オブジェクトは [`Session`](../commands/session.md) コマンド :::note -This function does nothing and always returns **True** with stored procedure sessions and standalone sessions. +この関数は、すトアドプロシージャーセッションおよびスタンドアロンセッションでは何もせず、常に **True** を返します。 ::: @@ -89,7 +89,7 @@ This function does nothing and always returns **True** with stored procedure ses ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +リモートクライアントセッションにおいては、この関数は[Web エリアを通して送信されたWeb リクエスト](../Desktop/clientServer.md#webエリア内のqodlyページ内でセッションを共有する) のコンテキストで実行されたコンテキストのみに関係します。 #### 例題 @@ -110,10 +110,10 @@ $isGuest:=Session.isGuest() // $isGuest は true
    履歴 -| リリース | 内容 | -| ----- | -------------------------- | -| 21 | Support of remote sessions | -| 20 R9 | 追加 | +| リリース | 内容 | +| ----- | -------------- | +| 21 | リモートセッションのサポート | +| 20 R9 | 追加 |
    @@ -124,7 +124,7 @@ $isGuest:=Session.isGuest() // $isGuest は true | 引数 | 型 | | 説明 | | -------- | ------- | :-------------------------: | ------------------------------------ | | lifespan | Integer | -> | セッショントークンの有効期限(秒) | -| 戻り値 | Text | <- | UUID of the token | +| 戻り値 | Text | <- | トークンの UUID | @@ -132,7 +132,7 @@ $isGuest:=Session.isGuest() // $isGuest は true :::note -This function is available with web user sessions and remote sessions. It returns an empty string in stored procedure and standalone sessions. +この関数はWeb ユーザーセッションとリモートセッションにおいて利用可能です。 ストアドプロシージャーとスタンドアロンセッションでは空の文字列を返します。 ::: @@ -140,14 +140,14 @@ This function is available with web user sessions and remote sessions. It return OTP トークンについてのより詳細な情報については、[こちらの章](../WebServer/sessions.md#セッショントークンotp)を参照して下さい。 -*lifespan* に秒単位の値を渡すことで、カスタムのタイムアウト時間を設定することができます。 If an expired token is used to restore a session, it is ignored. By default, if the *lifespan* parameter is omitted: +*lifespan* に秒単位の値を渡すことで、カスタムのタイムアウト時間を設定することができます。 セッションを復元するために失効したトークンを使用した場合、それは無視されます。 *lifespan* 引数が省略された場合はデフォルトで: -- with web user sessions, the token is created with the same lifespan as the [`.idleTimeOut`](#idletimeout) of the session. -- with remote sessions, the token is created with a 10 seconds lifespan. +- Web ユーザーセッションの場合、トークンはセッションの[`.idleTimeOut`](#idletimeout) と同じ有効期限を持って作成されます。 +- リモートセッションの場合、トークンは10秒の有効期限を持って作成されます。 -For **web user sessions**, the returned token can be used in exchanges with third-party applications or websites to securely identify the session. 例えば、セッションOTP トークンは支払いアプリケーションなどにおいて使用することができます。 +**Web ユーザーセッション** の場合、返されたトークンは、サードパーティアプリケーションや他のWebサイトとのやり取りで使用することでセッションを安全に特定することができます。 例えば、セッションOTP トークンは支払いアプリケーションなどにおいて使用することができます。 -For **remote sessions**, the returned token can be used on 4D Server to identitfy requests coming from a [remote 4D running Qodly forms in a Web area](../Desktop/clientServer.md#remote-user-sessions). +**リモートセッション** の場合、返されたトークンを4D Server 上で使用することで[Web エリアでQodly フォームを実行しているリモート 4D](../Desktop/clientServer.md#リモートユーザーセッション) からのリクエストを識別することができます。 #### 例題 @@ -262,10 +262,10 @@ $expiration:=Session.expirationDate // 例: "2021-11-05T17:10:42Z"
    履歴 -| リリース | 内容 | -| ----- | --------------------------------- | -| 21 | Support of remote client sessions | -| 20 R6 | 追加 | +| リリース | 内容 | +| ----- | -------------------- | +| 21 | リモートクライアントセッションのサポート | +| 20 R6 | 追加 |
    @@ -289,9 +289,9 @@ $expiration:=Session.expirationDate // 例: "2021-11-05T17:10:42Z" ::: -With remote client sessions, the privileges only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). +リモートクライアントセッションでは、権限は[Web エリアを通して送信されたWeb リクエスト](../Desktop/clientServer.md#webエリア内のqodlyページ内でセッションを共有する) のコンテキストで実行されたコンテキストのみに関係します。 -With stored procedure sessions and standalone sessions, this function returns a collection only containing "WebAdmin". +ストアドプロシージャーセッションとスタンドアロンセッションでは、この関数は"WebAdmin" のみを格納したコレクションを返します。 #### 例題 @@ -360,10 +360,10 @@ $privileges := Session.getPrivileges()
    履歴 -| リリース | 内容 | -| ----- | ----------------------------------------------------------------------- | -| 21 | Returns True for promoted privileges, Support of remote client sessions | -| 18 R6 | 追加 | +| リリース | 内容 | +| ----- | ------------------------------------- | +| 21 | 昇格した権限ならTrue を返す、リモートクライアントセッションのサポート | +| 18 R6 | 追加 |
    @@ -388,9 +388,9 @@ $privileges := Session.getPrivileges() ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +リモートクライアントセッションにおいては、この関数は[Web エリアを通して送信されたWeb リクエスト](../Desktop/clientServer.md#webエリア内のqodlyページ内でセッションを共有する) のコンテキストで実行されたコンテキストのみに関係します。 -With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. +ストアドプロシージャーセッションとスタンドアロンセッションの場合、この関数は*privilege* に関わらず必ずTrue を返します。 #### 例題 @@ -728,11 +728,11 @@ Function callback($request : 4D.IncomingMessage) : 4D.OutgoingMessage
    履歴 -| リリース | 内容 | -| ----- | --------------------------------- | -| 21 | Support of remote client sessions | -| 19 R8 | roles プロパティをサポート | -| 18 R6 | 追加 | +| リリース | 内容 | +| ----- | -------------------- | +| 21 | リモートクライアントセッションのサポート | +| 19 R8 | roles プロパティをサポート | +| 18 R6 | 追加 |
    @@ -753,7 +753,7 @@ Function callback($request : 4D.IncomingMessage) : 4D.OutgoingMessage :::note -This function does nothing and always returns **False** with stored procedure sessions and standalone sessions. +この関数は、ストアドプロシージャーセッションおよびスタンドアロンセッションでは何もせず、常に**False** を返します。 ::: @@ -763,11 +763,11 @@ This function does nothing and always returns **False** with stored procedure se - *privileges* には、アクセス権の名称を文字列のコレクションとして渡します。 - *settings* には、以下のプロパティを持つオブジェクトを渡します: -| プロパティ | 型 | 説明 | -| ---------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| privileges | Text または Collection |
  • アクセス権名の文字列
  • アクセス権名のコレクション
  • | -| roles | Text または Collection |
  • ロールの文字列
  • ロールの文字列のコレクション
  • | -| userName | Text | User name to associate to the session (optional, web sessions only). Not available in remote client sessions (ignored). | +| プロパティ | 型 | 説明 | +| ---------- | ------------------- | --------------------------------------------------------------------------------------------------------- | +| privileges | Text または Collection |
  • アクセス権名の文字列
  • アクセス権名のコレクション
  • | +| roles | Text または Collection |
  • ロールの文字列
  • ロールの文字列のコレクション
  • | +| userName | Text | セッションに関連づけるユーザー名(任意、Web セッションのみ)。 リモートクライアントセッションでは利用できません(無視されます)。 | :::note @@ -781,7 +781,7 @@ This function does nothing and always returns **False** with stored procedure se [`userName`](#username) プロパティは Session オブジェクトレベルで利用可能です (読み取り専用)。 -Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). +リモートクライアントセッションにおいては、この関数は[Web エリアを通して送信されたWeb リクエスト](../Desktop/clientServer.md#webエリア内のqodlyページ内でセッションを共有する) のコンテキストで実行されたコンテキストのみに関係します。 #### 例題 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/API/WebServerClass.md b/i18n/ja/docusaurus-plugin-content-docs/current/API/WebServerClass.md index e6c5e7c17d1183..c9d3286c25e7fa 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/API/WebServerClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/API/WebServerClass.md @@ -185,9 +185,9 @@ The HTTPリクエストログファ **.handlers** : Collection -*内容* +*読み取り専用プロパティ* -A collection of custom HTTP handler objects. An HTTP handler object contains a listened URL pattern, a handled verb, and the code to be called. HTTP handlers can be defined through a HTTPHandlers.json file or the *settings* parameter of the [`.start()`](#start) function. For more information, please refer to the [HTTP Request handler](../WebServer/http-request-handler.md) page. +カスタムHTTP ハンドラオブジェクトのコレクション。 HTTP ハンドラオブジェクトには聞いているURL パターン、管理される動詞(メソッド)、そして呼び出されるべきコードが格納されています。 HTTP ハンドラはHTTPHandlers.json ファイルまたは[`.start()`](#start) 関数の*settings* 引数で定義することができます。 詳細については[HTTP リクエストハンドラ](../WebServer/http-request-handler.md) のページを参照してください。 @@ -340,7 +340,7 @@ A collection of custom HTTP handler **.isRunning** : Boolean -*内容* +*読み取り専用プロパティ* Webサーバーで旧式セッションが有効されている場合に true、それ以外は false。 @@ -439,7 +439,7 @@ A collection of custom HTTP handler **.name** : Text -*内容* +*読み取り専用プロパティ* Webサーバーアプリケーションの名称。 @@ -451,7 +451,7 @@ A collection of custom HTTP handler **.openSSLVersion** : Text -*内容* +*読み取り専用プロパティ* 使用されている OpenSSLライブラリのバージョン。 @@ -463,7 +463,7 @@ A collection of custom HTTP handler **.perfectForwardSecrecy** : Boolean -*内容* +*読み取り専用プロパティ* サーバーの PFS利用可否状況。 @@ -493,9 +493,9 @@ A collection of custom HTTP handler **.rules** : Collection -*内容* +*読み取り専用プロパティ* -A collection of rule objects currently handled to customize HTTP headers. A rule object contains a "regexPattern" property, as well as an action name with a value. HTTP rules can be defined through a HTTPRules.json file or the *settings* parameter of the [`.start()`](#start) function. For more information, please refer to the [HTTP Rules](../WebServer/http-rules.md) page. +HTTP ヘッダーをカスタマイズするために現在管理されているルールオブジェクトのコレクション。 ルールオブジェクトには"regexPattern" プロパティに加え、アクション名と値が格納されています。 HTTP ルールはHTTPRules.json ファイルまたは[`.start()`](#start) 関数の*settings* 引数で定義することができます。 詳細については[HTTP ルール](../WebServer/http-rules.md) のページを参照してください。 @@ -531,7 +531,7 @@ A collection of rule objects currently セッションID の保存に使用されるセッションcookie の名称。 -*内容* +*読み取り専用プロパティ* diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/components.md b/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/components.md index 024694520c74aa..22368f829aff95 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/components.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/components.md @@ -9,7 +9,7 @@ title: コンポーネント 4D プロジェクト内へのコンポーネントのインストールとロードは、[4D 依存関係マネージャー](../Project/components.md) を通して管理されます。 -いくつかのコンポーネントが[4D によって開発](../Extensions/overview.md#components-developed-by-4d)されていますが、それ以外にも4D コミュニティによるたくさんの4D コンポーネントが[GitHub 上で公開されています](https://github.com/search?q=4d-component&type=Repositories)。 また、[独自の 4Dコンポーネントを開発](../Extensions/develop-components.md) することもできます。 +いくつかのコンポーネントが[4D によって開発](../Extensions/overview.md#components-developed-by-4d)されていますが、それ以外にも4D コミュニティによるたくさんの4D コンポーネントが[GitHub 上で公開されています](https://github.com/topics/4d-component)。 また、[独自の 4Dコンポーネントを開発](../Extensions/develop-components.md) することもできます。 ## コンポーネントの使い方 diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/parameters.md b/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/parameters.md index a9acfddec12d2b..7d8c30b7a7a56f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/parameters.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Concepts/parameters.md @@ -295,12 +295,6 @@ $total3:=SumNumbers(1; 2; "hello"; 4; 5) // エラー ::: -## トリガーと On Drag Over - -コンテキストによっては、"Compiler_" メソッドでの宣言をサポートしていないため、別途処理されます: - -- トリガー - トリガーの結果である $0 パラメーター (倍長整数) は、明確に定義されていなければコンパイラーによって型指定されます。 定義する場合は、トリガーの中でおこなう必要があります。 - ## 引数の型間違い 間違った型の引数、または(オブジェクト型引数に対して)間違ったクラスの引数を呼び出すことは、正しい実行を妨げる [エラー](error-handling.md) となります。 たとえば、次のようなメソッドを書いたとします: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md b/i18n/ja/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md index 33293b4f3746fd..5d1a6166262a90 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md b/i18n/ja/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md new file mode 100644 index 00000000000000..893d11956e2bc0 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md @@ -0,0 +1,309 @@ +--- +id: triggers +title: トリガ +slug: /Develop/triggers +displayed_sidebar: docs +--- + + +トリガーはテーブルに付属するメソッドであり、テーブルのプロパティです。トリガーを呼び出す必要はありません。テーブルレコードを操作 (追加、削除、修正) するたびに4Dのデータベースエンジンが自動的に呼び出します。まず簡単なトリガーを記述し、後からより洗練されたものにすることができます。 + +トリガーを使用すれば、データベースのレコードに対して "不正な" 操作が行われるのを防ぐことができます。偶発的なデータの紛失や改ざんを防ぎ、テーブル上での操作を制限することのできる非常に強力なツールです。例えば請求書システムにおいては、請求書の送付先である顧客を指定せずに誰かが請求書を追加するのを防止することができます。 + + + + + + +## トリガーのアクティブ化と作成 + +デザインモードでテーブルを作成したときには、デフォルトでテーブルにトリガーがありません。 + +テーブルのトリガーを使用するには、以下を実行する必要があります。 + +- トリガーをアクティブにし、4Dに対してトリガーをいつ起動すべきか知らせる。 +- トリガー用のコードを記述する。 + +まだメソッドとして記述されていないトリガーをアクティブにする、あるいはトリガーをアクティブにしないでメソッドに記述しても、テーブルに対して実行される操作に影響を与えることはありません。 + +1. トリガをアクティブにする +テーブルのトリガーをアクティブにするには、ストラクチャーの**インスペクタ**ーウィンドウでテーブルのトリガー オプション (データベースイベント) を選択しなければなりません。 + +![](../assets/en/Develop/triggers-set.png) + +2. トリガを作成する +テーブルのトリガーを作成するには、**エクスプローラー**を使用するか、ストラクチャーエディターのインスペクターウィンドウにある**編集...** ボタンをクリックするか、Alt (Windowsの場合) または Option (Mac OSの場合) キーを押して、ストラクチャーエディターのテーブルタイトルをダブルクリックしてください。 + + + + +## トリガーの説明 + +### 既存レコード保存時 + +このオプションを選択すると、テーブルのレコードが修正されるたびに、トリガーが起動します。 +以下の場合にトリガーが起動します。 + +- データ入力時にレコードを修正する (デザインモード、 [`MODIFY RECORD`](../commands/modify-record)コマンド またはUPDATEコマンド等を使用) 。 +- [`SAVE RECORD`](../commands/save-record)を使用して既存レコードを保存する。 +- 既存レコードを保存するコマンドを使用する [`ARRAY TO SELECTION`](../commands/array-to-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection)など) 。 +- [`SAVE RECORD`](../commands/save-record) コマンドを呼び出すプラグインを使用する。 + +注: 最適化のため、ユーザーがレコードを保存したり[`SAVE RECORD`](../commands/save-record)コマンドでレコードが保存されたりする際、レコードのフィールドが全く変更されていなければ、トリガーは呼び出されません。トリガーを強制的に呼び出したいときは、フィールドに同じ値を代入します: + +```4d +[thetable]thefield:=[thetable]thefield +``` + +::: + +### レコード削除時 + +このオプションを選択すると、テーブルのレコードが削除されるたびに、トリガーが起動します。 +以下の場合にトリガが起動します。 + +- レコードを削除する (デザインモード、[`DELETE RECORD`](../commands/delete-record)コマンド、[`DELETE SELECTION`](../commands/delete-selection)コマンドまたはSQLのDELETEコマンドを使用する) 。 +- リレートの削除制御オプションによって、リレート先レコードの削除を引き起こす何らかの操作を実行する。 +- DELETE RECORDコマンドを呼び出すプラグインを使用する。 + +:::note + +[`TRUNCATE TABLE`](../commands/trucate-table) コマンドはトリガーを呼び出しません。 + +::: + +### 新規レコード保存時 + +このオプションを選択すると、レコードがテーブルに追加されるたびに、トリガーが起動します。 + +以下の場合にトリガーが起動します。 + +- データ入力時にレコードを追加する(デザインモード、[`ADD RECORD`](../commands/add-record)コマンド または SQLのINSERTコマンド等を使用) 。 +- [`CREATE RECORD`](../commands/create-record) や [`SAVE RECORD`](../commands/save-record)を使用してレコードを作成し、保存する。トリガーは[`SAVE RECORD`](../commands/save-record)を呼び出したときに起動します。レコードを作成したときではありません。 +- レコードを読み込む (デザインモード、または読み込みコマンドを使用して) 。 +- 新規レコードを作成または保存するコマンドを使用する ([`ARRAY TO SELECTION`](../commands/array-to-selection), [`SAVE RELATED ONE`](../commands/save-related-one)など) 。 +- [`CREATE RECORD`](../commands/create-record) や [`SAVE RECORD`](../commands/save-record)コマンドを呼び出すプラグインを使用する。 + + +## データベースイベント + +トリガーは、前述の3つのデータベースイベントのいずれかに対して起動することができます。トリガー内で[`Trigger event`](../commands/trigger-event) 関数を呼び出すことによって、どのイベントが発生しているかを検出します。この関数はデータベースイベントを示す数値を返します。 + +一般的には、[`Trigger event`](../commands/trigger-event) から返される結果に関して、 [Case of](../Concepts/flow-control.md#case-ofelseend-case) ストラクチャーを用いて、トリガーを記述します。Trigger Events テーマの定数を使用できます。 + +```4d + //トリガー用の[anyTable] テーブル +#DECLARE -> $result : Integer +var $event_l : Integer +$result:=0 // データベースリクエストが許可されると仮定する +$event_l:=Trigger event // データベースイベントを取得 + Case of + :($event_l=On Saving New Record Event) + // 新規に作成されたレコードの保存のために適切な動作 (アクション) を実行する + :($event_l=On Saving Existing Record Event) + // 既存のレコードの保存のために適切な動作を実行する + :($event_l=On Deleting Record Event) + // レコードの削除のために適切な動作を実行する + End case + ``` + + +## トリガと関数 + +トリガーには、2つの目的があります。 + +レコードが保存、削除される前に、レコードに対して動作 (アクション) を実行する。 +データベース操作を許可または拒絶する。 +. + + +### 動作を実行する + +[Documents] テーブルにレコードが保存 (追加または修正) されるたびに、作成時を示すタイムスタンプと最新の修正時を示すタイムスタンプでレコードを "マーク" したいとします。この場合、以下のようなトリガーを記述できます。 + + +```4d + //トリガー用の [Documents] テーブル +var $event_l : Integer + $event_l:=Trigger event + Case of + :($event_l=On Saving New Record Event) + [Documents]Creation Stamp:=Time stamp + [Documents]Modification Stamp:=Time stamp + :($event_l=On Saving Existing Record Event) + [Documents]Modification Stamp:=Time stamp + End case +``` + +:::note + +この例題で使用している Time stamp 関数は、固定日付が任意に選択された時点から経過数秒を返す小さなプロジェクトメソッドです + +::: + +いったんこのトリガーを記述してアクティブにすると、ユーザーがどのような方法で [Documents] テーブルにレコードを追加または修正しても (データ入力、読み込み、プロジェクトメソッド、4Dプラグイン) 、レコードが最終的にディスクに書き込まれる前に、トリガーによって、[Documents]Creation Stamp フィールドと [Documents]Modification Stamp フィールドに自動的に日付が割り当てられます。 + + +### データベース操作を許可または拒絶する + +データベース操作を許可または拒絶するために、トリガーは、戻り値 $result にトリガーエラーコードを返さなければなりません。 + + +#### 例題 + +[Employees] テーブルの場合を取り上げてみましょう。データ入力時に、[Employees]Social Security number フィールドで規則を強制します。確認ボタンをクリックする際に、ボタンのオブジェクトメソッドを使用してそのフィールドをチェックします。 + +```4d + // bAcceptボタンのオブジェクトメソッド + If(Good SS number([Employees]SS number)) + ACCEPT + Else + BEEP + ALERT("Enter a Social Security number then click OK again.") + End if + +``` +フィールド値が有効な場合、データ入力を受け入れます。フィールド値が無効な場合、警告を表示して、データ入力の状態になります。 + +[Employees] レコードをプログラムで作成した場合、以下のコードはプログラムとしては正当ですが、前述のオブジェクトメソッドで強制した規則に違反します。 + +```4d + //プロジェクトメソッドから抽出する + // ... + CREATE RECORD([Employees]) + [Employees]Name:="DOE" + SAVE RECORD([Employees]) ` <-- DB規則の違反! 保険証番号は保存されない! + // ... +``` + +[Employees] テーブルのトリガーを使用して、データベースのすべてのレベルで[Employees]SS number の規則を強制することができます。トリガーは以下のようになります。 + +```4d + // Trigger for [Employees] + #DECLARE -> $result : Integer + var $result : Integer + $result:=0 + $dbEvent:=Trigger event + Case of + :(($dbEvent=On Saving New Record Event)|($dbEvent=On Saving Existing Record Event)) + If(Not(Good SS number([Employees]SS number))) + $0:=-15050 + Else + // ... + End if + // ... + End case +``` + +いったんこのトリガーを記述しアクティブにすると、SAVE RECORD([Employees]) 行はデータベースエンジンエラー-15050を生成し、そのレコードは保存されません。 + +同様に4Dプラグインが無効な保険証番号で[Employees] レコードを保存しようとしても、トリガーは同じエラーを生成しレコードは保存されません。 + +トリガーを使用すれば、誰も (ユーザー、データベース設計者、プラグイン) 保険証番号の規則を故意にまたは偶発的に違反できないことが保証されます。 + +テーブルのトリガーが無くても、レコードを保存または削除しようとしているときに、データベースエンジンエラーが生じる場合があるので注意してくださ い。例えば、重複不可属性を持つインデックスフィールドで重複する値を持つレコードを保存しようとすると、エラー-9998が返されます。 + +したがって、エラーを返すトリガーは、新しいデータベースエンジンエラーをアプリケーションへ追加します。 + +4Dは "通常" エラー、すなわち重複不可のインデックス、リレーショナルデータのコントロールなどを管理します。 +トリガーを使用して、開発者はアプリケーションに固有のカスタムエラーを管理できます。 +**重要**: エラーコード値は任意のものを返すことができます。ただし、4Dデータベースエンジンによって既に確保されているエラーコードは使用できません。 -32000 から -15000 の間のエラーコードを使用することを強く勧めます。 -15000を超えるエラーコードは、データベースエンジン用に予約されています。 + +プロセスレベルでは、データベースエンジンエラーと同じ方法で、トリガーエラーを処理します。 + +4Dに標準のエラーダイアログボックスを表示させ、その後メソッドが停止します。 +ON ERR CALLでインストールしたエラー処理メソッドを使用して、適切な方法でエラーから回復します。 + +:::note 注 + +- データ入力時に、レコードを受け入れまたは削除しようとしているときにトリガーエラーが返されると、エラーは重複不可なインデックスエラーのように処理されます。エラーダイアログが表示され、データ入力状態になります。デザインモード (アプリケーションモードでなく) でデータベースを使用する場合でも、トリガーを使用することのメリットが得られます。 +- レコードのセレクションで動作しているコマンドのフレームワーク内のトリガーによってエラーが生成されると ([`DELETE SELECTION`](../commands/delete-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), [`ARRAY TO SELECTION`](../commands/array-to-selection)など)レコードは処理されず、自動的にLockedSet に登録されます(セット 参照)。コマンドは終わりまで実行が続けられ、このときエラーはキャッチされません。つまりエラーハンドリングメソッドは(あったとしても)呼び出されません。このコンテキストにおいて、エラーが生成されたかどうかを確認するためには、コマンドの呼び出しの直後にLockedSet をテストする必要があります。また、トリガでは、エラーをあとで適切に管理するためには、エラーコードを例えばコレクションなどに保存する必要があります。 + +::: + + +トリガーがエラーを返さないからといって ($result=0) 、データベース操作が成功したという意味ではありません。重複不可なインデックス違反が生じる場合があります。操作がレコードの更新である場合、レコードがロックされたり I/O エラーが生じたりすることがあります。トリガーの実行後にチェックが終了します。ただしプロセスを実行する高レベルにおいては、データベースエンジンまたはトリガーによって返されるエラーは同じものです。トリガーエラーはデータベースエンジンエラーです。 + + +## トリガーと4Dアーキテクチャ + +トリガーはデータベースエンジンレベルで実行されます。以下の図にその様子をまとめています。 + +![](../assets/en/Develop/triggers-architecture.png) + +データベースエンジンが実際に配置されているマシンでトリガーは実行されます。これはシングルユーザー版の4Dでは明白です。4D Serverではクライアントマシンではなく、サーバーマシン (トリガーを起動させるプロセスの "対の" プロセスで) 上で動作しているプロセス内でトリガーは実行されます。 + +トリガーが起動される場合、トリガーはデータベース操作を実行しようとするプロセスのコンテキスト内で実行されます。トリガーの実行を引き起こすこのプロセスは**起動プロセス**と呼ばれます。 +コンテキストに含まれるエレメントは、データベースが4Dのローカルモードで実行されたか、または4D Serverで実行されたかにより異なります。 + +4Dのローカルモードでは、トリガーは起動プロセスのカレントセレクション、カレントレコードテーブルの読み/書き状態、およびレコードロック操作を用いて動作します。 +4D Serverでは、起動クライアントプロセスのデータベースのコンテキストのみが保持されます (ロックされたレコードやトランザクションの状態など) 。また4D Serverはトリガーのテーブルのカレントレコードが正確に配置されていることのみを保証します。コンテキストの他の要素 (例えばカレントセレクション) はトリガープロセスのものです。 +4D環境の他のデータベースオブジェクトや言語オブジェクトは注意して使用してください。これは、トリガーが起動プロセスのマシンとは別のマシン上で実行される可能性があるためです。4D Serverがこれに当てはまります。 + +- **プロセス変数**: 各トリガーは独自のプロセス変数テーブルを持っています。トリガーは、トリガーを起動する元となったプロセスのプロセス変数にアクセスすることはできません。 +- **ローカル変数**: トリガー内でローカル変数を使用できます。その有効範囲はトリガーの実行中です。ローカル変数はトリガーの実行のたびに作成され、削除されます。 +- **セマフォー**: トリガー、(トリガーが実行されるマシン上の) ローカルセマフォーだけでなく、グローバルセマフォーもテスト、または設定できます。ただしトリガーは即座に実行されなければならないため、トリガー内か らセマフォーをテストまたは設定する場合には、十分な注意が必要です。 +- **セットと命名セレクション**: トリガー内からセットまたは命名セレクションを使用する場合、トリガーが実行されるマシン上で作業することになります。クライアント/サーバーモードでは、クライアントマシン上で作成されるプロセスセットとプロセス命名セレクションは、トリガー内で可視です。 +- **ユーザーインターフェース**: トリガー内でユーザーインターフェースエレメントを使用してないでください (警告、メッセージ、ダイアログボックスを使用しない) 。したがって、トリガーのトレースはデバッグウィンドウに限定する必要があります。クライアント/サーバーでは、トリガーは4D Server上で実行されることを覚えておいてください。サーバーマシン上で警告メッセージを表示しても、クライアント上のユーザーの助けにはなりません。起動プロセスにユーザインターフェースの処理も行わせるようにしてください。 + + +4Dパスワードシステムを使用した場合、トリガー内で[`Current user`](../commands/current-user) コマンドを使用できることに注意して下さい。これを使用すると、例えばジャーナルを取っているテーブルのトリガー呼び出し元にユーザー名を保存することができます(クライアント・サーバーモードにおいても可能です)。 + + + +## トリガとトランザクション + +トランザクションは起動プロセスレベルで処理されなければなりません。トリガーレベルでトランザクションを管理してはいけません。一つのトリガーを実行してい る間に、複数のレコード (下記の例を参照) を追加、修正、削除する必要がある場合、最初にトリガー内から[`In transaction`](../commands/in-transaction)コマンド を使用して、起動プロセスが現在トランザクション内にあるかどうかテストしなければなりません。そうでない場合には、トリガーがロックされたレコードに出く わす可能性があります。そのため、起動プロセスがトランザクション内に無い場合は、レコードに対する操作を開始しないでください。起動プロセスに、実行し ようとしているデータベース操作はトランザクション内で実行されなければならないことを知らせるためにエラーを$0 に返すだけにしてください。そうしないとロックされたレコードに出くわした場合、起動プロセスにはトリガーの動作をロールバックする方法がなくなります。 + +注: + + + +:::note + +トリガーとトランザクションを統合した操作を最適化するため、4Dでは[`VALIDATE TRANSACTION`](../commands/validate-transaction)を実行した後、トリガーは呼び出されません。これにより、トリガーの実行を2度繰り返すことを防ぎます。 + +::: + +## トリガのカスケード + +以下の例のようなストラクチャーがあるとします。 + +![](../assets/en/Develop/triggers-cascade.png) + + +注: 上記のテーブルは簡略化されています。実際には、テーブルにはここに示したよりも多くのフィールドがあります。 + +データベースがある請求書の削除を "許可" するとしましょう。そのような操作がトリガーレベルでどのように処理されるか検討してみます (プロセスレベルで削除を実行することも可能です) 。 + +リレートに関するデータの整合性を維持するには、請求書の削除において、[Invoices] のトリガー内で実行される以下の動作が必要となります。 + +[Customer] レコードにおいて、送り状の金額分だけ総売上フィールドの額を減らす。 +- 送り状に関連したすべての [Line Items] レコードを削除する。 +- これはまた、 [Line Items] トリガーが、削除された明細品目に関連した [Products] レコードの売り上げ数量フィールドの数量を減らすことを意味する。 +- 削除された送り状に関連するすべての [Payments] レコードを削除する。 + +最初に、 [Invoices] のトリガーは、起動プロセスがトランザクション内にある場合に限り、これらの動作を実行しなければなりません。そのため、ロックされたレコードに出くわした場合にロールバックが可能になります。 + +次に、 [Line Items] のトリガーは、 [Invoices] のトリガーと**カスケー**ドしています。明細品目の削除は [Invoices] のトリガー内から`DELETE SELECTION`を呼び出した結果であるため、 [Line Items] のトリガーは [Invoices] のトリガーの実行の "範囲内で" 実行されます。 + +この例題にあるすべてのテーブルは、すべてのデータベースイベント対してアクティブなトリガーを持っているとします。トリガーのカスケードは以下のようになります。 + +- 起動プロセスが請求書を削除するため [Invoices] トリガーが起動される。 + - [Invoices] トリガーが総売上フィールドを更新するため、 [Customers] トリガーが起動される。 + - [Invoices] トリガーが明細品目を削除するため (繰り返し) 、[Line Items] トリガーが起動される。 + - [Line Items] トリガーが売上数量フィールドを更新するため、[Products] トリガーが起動される。 + - [Invoices] トリガーが支払を削除するため (繰り返し) 、[Payments] トリガーが起動される。 + +こ のカスケードの関係においては、[Invoices] のトリガーはレベル1で、 [Customers]、 [Line Items]、 と [Payments] のトリガーはレベル2で、そして [Products] のトリガーはレベル3で実行されていると言えます。 + +トリガー内から[`Trigger level`](../commands/trigger-level)コマンドを使用して、トリガーが実行されるレベルを検出します。更に[`TRIGGER PROPERTIES`](../commands/trigger-properties)コマンドを使用して、他のレベルに関する情報を入手することができます。 + +例えば、 [Products] レコードがプロセスレベルで削除されている場合、 [Products] のトリガーは、レベル3ではなく、レベル1で実行されます。 + +[`Trigger level`](../commands/trigger-level)と[`TRIGGER PROPERTIES`](../commands/trigger-properties)を使用すれば、動作の原因を検出できます。前述の例では、請求書がプロセスレベルで削除されています。[Customers] レコードをプロセスレベルで削除すると、 [Customers] のトリガーは、その顧客に関連するすべての請求書を削除しようとします。これにより、前述の例と同じように、 [Invoices] のトリガーが起動されることになりますが、起動される理由は異なります。[Invoices] トリガー内から、そのトリガーがレベル1で実行されたか、レベル2で実行されたかを、検出することができます。トリガーがレベル2で実行された場合には、次に、 それが [Customers] レコードが削除されたためであるかどうかをチェックできます。そうであれば、総売上フィールドの更新にわずらわされる必要はありません。 + + + + + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Develop/field-properties.md b/i18n/ja/docusaurus-plugin-content-docs/current/Develop/field-properties.md index 668003a8ccf9e7..a3dee0bff39419 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Develop/field-properties.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: フィールドプロパティ --- -他のフィールドプロパティについては、[doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.ja.html#5523008) を参照してください。 +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Develop/triggers-new.md b/i18n/ja/docusaurus-plugin-content-docs/current/Develop/triggers-new.md new file mode 100644 index 00000000000000..bc38806a21ae11 --- /dev/null +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Develop/triggers-new.md @@ -0,0 +1,21 @@ +--- +id: triggers-new +title: トリガ +--- + +to import + + + +## トリガとORDAエンティティイベントの比較 + +**トリガ** (別名データベースイベント) と[**ORDA エンティティイベント**](../ORDA/orda-events.md) には類似した目的があります。どちらもデータに対する基礎的な操作(作成、編集、削除)を管理するためのルールを設定するということです。 しかしながら、両者は同じレベルでは動作しません: + +- トリガはデータベースレベルで管理されます。これはもっとも低いレベルに当たります。 +- ORDA エンティティイベントは[データストア](../ORDA/dsMapping.md#datastore) レベルで管理されます。これはあなたのビジネスロジックに関連しています。 + +[`.save()`](../API/EntityClass.md#save) や [`.drop`](../API/EntityClass.md#drop)などの、データストアを通して実行されたデータに対するアクションは、設定されていればトリガを呼び出します。 + +その一方で、[`SAVE RECORD`](../commands/save-record) あるいは [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html#4682827) などの4D のクラシック言語を使用した4D データベースレベルでトリガーされたアクションは、ORDA エンティティイベントは**呼び出しません**。 + + diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Extensions/develop-components.md b/i18n/ja/docusaurus-plugin-content-docs/current/Extensions/develop-components.md index fe8feb36c11799..767a504dacbaae 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Extensions/develop-components.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Extensions/develop-components.md @@ -316,6 +316,8 @@ component_method($input_t) しかしながら、[ホストアプリケーションにコンポーネントエラーハンドラーを実装する](../Concepts/error-handling.md#scope-and-components) ことで、コンポーネントでキャッチされなかったエラーを管理することができます。 +しかしながら、[ホストアプリケーションにコンポーネントエラーハンドラーを実装する](../Concepts/error-handling.md#scope-and-components) ことで、コンポーネントでキャッチされなかったエラーを管理することができます。 + ## ホストプロジェクトのテーブルへのアクセス コンポーネントでテーブルを使用することはできませんが、ホストプロジェクトとコンポーネントはポインターを使用して通信をおこなうことができます。 たとえば、以下はコンポーネントで実行可能なメソッドです: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md index f8099807706dd3..9e5626f17ab4c2 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md @@ -56,7 +56,7 @@ title: フォームエディター | アイコン | 名称 | 説明 | | ------------------------------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | フォーム実行 | フォームの実行をテストするために使用します。 このボタンをクリックすると、4D は新しいウィンドウを開き、そのコンテキストでフォームを表示します (リストフォームの場合レコードリスト、詳細フォームの場合カレントレコード)。 フォームはメインプロセスで実行されます。 | -| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#オブジェクトの選択) | フォームオブジェクトの選択・移動・リサイズをおこないます。

    **注**: テキストやグループボックスタイプのオブジェクトが選択されている場合、**Enter**キーで編集モードになります。

    | +| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#オブジェクトの選択) | フォームオブジェクトの選択・移動・リサイズをおこないます。
    **注**: テキストやグループボックスタイプのオブジェクトが選択されている場合、**Enter**キーで編集モードになります。 | | ![](../assets/en/FormEditor/zOrder.png) | [入力順](#データの入力順) | "入力順" モードに切り替わり、フォームの現在の入力順を表示・変更できます。 入力順は、バッジを使用して確認することもできます。 | | ![](../assets/en/FormEditor/moving.png) | [移動](#オブジェクトの移動) | "移動" モードに移行し、ウィンドウ中をドラッグ&ドロップすることで素早くフォームの表示部分を移動することができます。 このモードでカーソルは手の形になります。 このモードは、フォームを拡大表示している時に特に便利です。 | | ![](../assets/en/FormEditor/zoom.png) | [拡大](#拡大) | フォーム表示の拡大/縮小率を変更できます (デフォルトで100%)。 "拡大/縮小" モードにするには虫眼鏡をクリックするか、拡大/縮小率バーをクリックします。 この機能は前節で説明しています。 | @@ -146,11 +146,11 @@ title: フォームエディター ツールバーを使用してオブジェクトを選択するには: -1. ツールバーの矢印ツールをクリックします。

    ![](../assets/en/FormEditor/selection.png)

    +1. ツールバーの矢印ツールをクリックします。
    ![](../assets/en/FormEditor/selection.png) -

    マウスカーソルをフォームエリアに移動すると、カーソルは標準の矢印の形をしたポインターに変わります

    。 +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表わします。

    ![](../assets/en/FormEditor/selectResize.png)

    +2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表わします。
    ![](../assets/en/FormEditor/selectResize.png) プロパティリストを使用してオブジェクトを選択するには: @@ -158,7 +158,7 @@ title: フォームエディター オブジェクトの選択を解除するには、オブジェクト境界の外側をクリックするか、またはオブジェクト上で **Shift+クリック** します。 > "デザインモードを検索" の結果ウィンドウでオブジェクトをダブルクリックして選択することもできます。 -> "デザインモードを検索" の結果ウィンドウでオブジェクトをダブルクリックして選択することもできます。 +> It is also possible to select objects by double-clicking them in the result window of "Find in design" operation. ### 複数オブジェクトの選択 @@ -242,13 +242,13 @@ title: フォームエディター 1. グループ化したいオブジェクトを選択します。 2. オブジェクトメニューから **グループ化** を選択します。 または - フォームエディターのツールバーでグループ化ボタンをクリックします。

    ![](../assets/en/FormEditor/group.png)

    + フォームエディターのツールバーでグループ化ボタンをクリックします。
    ![](../assets/en/FormEditor/group.png) 4D は、新たにグループ化されたオブジェクトの境界をハンドルで表わします。 グループ内の各オブジェクトの境界にはハンドルが表示されません。 これ以降、グループ化されたオブジェクトを編集すると、グループを構成する全オブジェクトが変更されます。 オブジェクトのグループ化を解除するには: 1. グループ化を解除したいグループオブジェクトを選択します。 -2. **オブジェクト** メニューから **グループ化解除** を選択します。
    または
    フォームエディターのツールバーで **グループ化解除** ボタン (**グループ化** ボタンのサブ項目) をクリックします。

    **グループ化解除** が選択不可の場合、選択したオブジェクトはグループに属していないことを意味します。

    4D は個々のオブジェクトの境界をハンドルで表わします。 +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D は個々のオブジェクトの境界をハンドルで表わします。 ### オブジェクトの整列 @@ -276,9 +276,9 @@ title: フォームエディター このダイアログボックスを表示するには、揃えたいオブジェクトを選択し、**オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 -- "左/右整列" や "上/下整列" エリアで、実行しようとする整列に対応する整列アイコンをクリックします。

    見本エリアには、選択結果が表示されます。

    +- "左/右整列" や "上/下整列" エリアで、実行しようとする整列に対応する整列アイコンをクリックします。
    見本エリアには、選択結果が表示されます。 -- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 または:

    特定のオブジェクトを基準にオブジェクトを揃えるには、**整列** オプションを選択し、整列基準としたいオブジェクトを一覧から選択します。 この場合、基準オブジェクトの位置は変わりません。

    +- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 または:
    特定のオブジェクトを基準にオブジェクトを揃えるには、**整列** オプションを選択し、整列基準としたいオブジェクトを一覧から選択します。 この場合、基準オブジェクトの位置は変わりません。 **プレビュー** ボタンをクリックすると、整列の結果をプレビューすることができます。 するとフォームエディター上のオブジェクトは見かけ上整列しますが、ダイアログボックスが表示されたままなので、この整列のキャンセルや適用をおこなうことができます。 @@ -315,7 +315,8 @@ title: フォームエディター 1. 3つ以上のオブジェクトを選択し、希望する均等配置ツールをクリックします。 -2. 適用したい均等配置に対応する整列ツールをツールバー上で選択します。

    ![](../assets/en/FormEditor/distributionTool.png)

    または

    **オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから均等揃えメニューコマンドを選択します。

    4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 "整列と均等配置" ダイアログボックスを用いてオブジェクトを均等に配置するには: @@ -323,9 +324,9 @@ title: フォームエディター 2. **オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 次のダイアログボックスが表示されます: [](../assets/en/FormEditor/alignmentAssistant.png) -3. "左/右整列" や "上/下整列" エリアで、標準の均等配置アイコンをクリックします: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (標準の横均等揃えアイコン)

    見本エリアには、選択結果が表示されます。 +3. "左/右整列" や "上/下整列" エリアで、標準の均等配置アイコンをクリックします: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (標準の横均等揃えアイコン)
    見本エリアには、選択結果が表示されます。 -4. 標準の均等配置を実行するには、**プレビュー** または *適用* をクリックします。

    この場合、4D は標準の均等配置を実行し、オブジェクトは等間隔で配置されます。

    または:

    特定の均等配置を実行するには、**均等配置** オプションを選択します (たとえば各オブジェクトの右辺までの距離をもとにしてオブジェクトを均等に配置したい場合)。 このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:

    +4. 標準の均等配置を実行するには、**プレビュー** または *適用* をクリックします。
    この場合、4D は標準の均等配置を実行し、オブジェクトは等間隔で配置されます。
    または:
    特定の均等配置を実行するには、**均等配置** オプションを選択します (たとえば各オブジェクトの右辺までの距離をもとにしてオブジェクトを均等に配置したい場合)。 このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:
    - 左/右整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの左辺、中央 (横)、 右辺で均等に揃えます。 - 上/下整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの上辺、中央 (縦)、 下辺で均等に揃えます。 @@ -380,11 +381,11 @@ JSONフォームの入力順序の設定は、[`entryOrder`](properties_JSONref. 入力順モードに切り替え、入力順を変更するには: -1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:
    ![](../assets/en/FormEditor/zOrder.png)
    ポインターが入力順ポインターに変わり、4D はフォーム上に線を引いて、データ入力時にオブジェクトが選択される順序を示します。 ツールパレット上の他のツールをクリックするまでは、入力順序の表示と変更操作しかおこなえません。 -2. データ入力順を変更するには、フォームオブジェクト上にポインターを置き、マウスボタンを押したまま、次の入力順に設定したいオブジェクトまでポインターをドラッグします。

    ![](../assets/en/FormEditor/entryOrder3.png)

    これに応じて、4D はデータ入力順を調整します。 +2. データ入力順を変更するには、フォームオブジェクト上にポインターを置き、マウスボタンを押したまま、次の入力順に設定したいオブジェクトまでポインターをドラッグします。
    ![](../assets/en/FormEditor/entryOrder3.png)
    これに応じて、4D はデータ入力順を調整します。 3. 入力順を設定したいだけ、ステップ2 を繰り返します。 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 a421e9046f83c1..d460a48eb79567 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/forms.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormEditor/forms.md @@ -100,6 +100,12 @@ title: Forms On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. + +| ライトテーマ | ダークテーマ | +| --------------------------------------- | -------------------------------------------- | +| ![](../assets/en/FormEditor/fluent.png) | ![](../assets/en/FormEditor/fluent-dark.png) | + :::caution デベロッパー・プレビュー Fluent UI support is currently in the Developer Preview phase. 本番環境で使用すべきではありません。 @@ -112,20 +118,18 @@ This feature can only be used on Windows. On macOS, it is ignored. ::: -### Fluent UI rendering availability +:::tip Related blog post + +[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -The Fluent UI rendering is available in the following execution environments only: +::: -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- 組み込みの [スタンドアロン](../Desktop/building#スタンドアロンアプリケーションをビルド) または [クライアント](../Desktop/building#クライアントアプリケーションをビルド) 4Dアプリケーション -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +### 要件 -:::note +The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms. If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. -::: - ### Enabling the Fluent UI rendering You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. @@ -149,19 +153,23 @@ Each form can define its own rendering via the **Widget appearance** property. The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". -### Features and limitations - -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. +### Specific behaviors When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. +- The new `FORM Windows theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. - If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). - [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). - [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). - [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). - The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). + +:::info Limitations + +This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: ## 継承フォーム diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md index aad5530955644b..1a9b9c4c22932b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md @@ -13,10 +13,10 @@ title: 動作 - **カスタム**: このモードでは、オブジェクトに対しておこなわれたドラッグ操作は、当該オブジェクトのコンテキストにおいて `On Begin Drag` フォームイベントを発生させます。 これを利用して、開発者はメソッドを用いてドラッグアクションを管理しなければなりません。 つまり、カスタムモードにおいては、ドラッグ&ドロップ操作のすべてが開発者により管理されます。 このモードでは、ドラッグ&ドロップに基づいたあらゆるインターフェースを実装することができます。 これにはデータの転送を必ずしも伴わないものも含まれ、ファイルを開くや計算をトリガーするなどの任意のアクションを実行することができます。 このモードは専用のプロパティ、イベント、`ペーストボード` テーマのコマンド等の組み合わせに基づいています。 -- **自動**: このモードでは、ドラッグ元のフォームオブジェクトからテキストやピクチャーが 4D によって **コピー** されます。 このコピーは、同じ 4Dエリア内、2つの 4Dエリア間、4D と他のアプリケーション間で使用できます。 たとえば、自動ドラッグ (&ドロップ) を使用して、プログラムを使用せず、2つのフィールド間で値をコピーできます: +- **自動**: このモードでは、ドラッグ元のフォームオブジェクトからテキストやピクチャーが 4D によって **コピー** されます。 このコピーは、同じ 4Dエリア内、2つの 4Dエリア間、4D と他のアプリケーション間で使用できます。 For example, automatic drag (and drop) lets you copy a value between two fields without using programming: ![](../assets/en/FormObjects/property_automaticDragDrop.png) - ![](../assets/en/FormObjects/property_automaticDragDrop2.png) - このモードでは、`On Begin Drag` フォームイベントは生成されません。 自動ドラッグが有効のときに標準のドラッグを "強制" したい場合、アクションの間 **Alt** (Windows) または **Option** (macOS) キーを押しながら操作します。 このオプションはピクチャーでは利用できません。 + ![](../assets/en/FormObjects/property_automaticDragDrop2.png)
    + In this mode, the `On Begin Drag` form event is NOT generated. 自動ドラッグが有効のときに標準のドラッグを "強制" したい場合、アクションの間 **Alt** (Windows) または **Option** (macOS) キーを押しながら操作します。 このオプションはピクチャーでは利用できません。 詳細については *4Dランゲージリファレンス* マニュアルの [ドラッグ&ドロップ](https://doc.4d.com/4Dv20/4D/20.6/Drag-and-Drop.300-7487471.ja.html) を参照してください。 @@ -212,15 +212,15 @@ title: 動作 ## 標準アクション -アクティブオブジェクトにより実行される典型的な処理 (例: レコードの入力・取り消し・削除、レコード間の移動、マルチページフォームでのページ間の移動、など) は、4D より標準アクションとして提供されています。 詳細な情報に関しては、*デザインリファレンス* の [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) の章を参照ください。 +アクティブオブジェクトにより実行される典型的な処理 (例: レコードの入力・取り消し・削除、レコード間の移動、マルチページフォームでのページ間の移動、など) は、4D より標準アクションとして提供されています。 詳細な情報に関しては、*デザインリファレンス* の [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) の章を参照ください。 There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). フォームオブジェクトには、標準アクションとメソッドの両方を割り当てることができます。 この場合、標準アクションは通常、メソッドの後に実行されます。また、4D はこのアクションを使用して、カレントコンテキストに応じてオブジェクトを有効化/無効化します。 フォームオブジェクトが無効化されていた場合、関連づけられたメソッドは実行されません。 #### JSON 文法 -| 名称 | データタイプ | とりうる値 | -| ------ | ------ | ------------------------------------------------------------------------------------ | -| action | string | 有効な [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) | +| 名称 | データタイプ | とりうる値 | +| ------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### 対象オブジェクト 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 a8b26ae4ace5df..e67cd47f8a1496 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -44,7 +44,7 @@ title: リリースノート - Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. - Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). - The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. -- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    +- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview.md#components-developed-by-4d)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    ![alt-text](../assets/en/getStart/convert.png)
    \- **Import**: import automatically 4D components as dependencies to the project
    \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    @@ -101,6 +101,35 @@ In binary databases, you need to select the required components in the 4D instal - Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. - Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. - Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). +- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. + +#### デベロッパー・プレビュー + +[**Fluent UI** rendering for 4D forms](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) is proposed in Developer Preview during the beta test program. + +#### 動作の変更 + +:::caution Index rebuild + +4D 21 includes an ICU library update ([see below](#library-table)) which will force an automatic rebuild of indexes of type alpha, text, and object. データファイルのサイズに応じて、この処理には時間がかかることがあるため、計画的なアップグレードが推奨されます。 + +::: + +- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. +- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. +- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). +- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. +- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    + ![alt-text](../assets/en/getStart/convert.png)
    + \- **Import**: import automatically 4D components as dependencies to the project
    + \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    + \- **Ask later**: do not import components and display the dialog at the next project opening. + +:::note + +In binary databases, you need to select the required components in the 4D installer or download them from the [4D Product Download portal](https://product-download.4d.com/?type=components). + +::: #### デベロッパー・プレビュー diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/entities.md b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/entities.md index 29e1132a0df443..eb60ae72c2ff5e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/entities.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/ORDA/entities.md @@ -469,7 +469,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection この関数は、データクラスのエンティティセレクションまたはエンティティが要求されるたびに呼び出されます。 フィルターは、エンティティセレクションが作成されたときに一度だけ実行されます。 -フィルターは、データクラスのエンティティセレクションを返さなければなりません。 戻り値のエンティティセレクションには、クエリの結果や、[`Storage`] に格納されているものなどが使えます。 +フィルターは、データクラスのエンティティセレクションを返さなければなりません。 It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note 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 33bc7539dc0b38..55806fa7ab68bf 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 @@ -1,6 +1,6 @@ --- id: orda-events -title: Events +title: Entity Events ---
    履歴 @@ -12,19 +12,19 @@ title: Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::tip Related blog post -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: :::info note Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -52,7 +52,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). ### Summary table @@ -102,13 +102,13 @@ When an error occurs in an event, the other events are stopped at the first rais ### Error object properties -| プロパティ | 型 | 説明 | Set by the developer | -| ------------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | ◯ | -| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | ◯ | -| extraDescription | Object | Free information to set up | ◯ | -| seriousError | Boolean | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • | Yes (default is false) | -| componentSignature | Text | Always "DBEV" | × | +| プロパティ | 型 | 説明 | Set by the developer | +| ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | ◯ | +| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | ◯ | +| extraDescription | Object | Free information to set up | ◯ | +| seriousError | Boolean | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • `False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • | Yes (default is false) | +| componentSignature | Text | Always "DBEV" | × | - [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. - In case of an error triggered by a **validate** event, the `seriousError` property allows you to choose the level of the error to generate: @@ -139,7 +139,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi - the user sets a value on a 4D form, - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. +- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) The function receives an [*event* object](#event-parameter) as parameter. @@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`). #### 例題 -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro #### 例題 -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` ### `Function event afterSave` @@ -454,29 +452,25 @@ The function receives an [*event* object](#event-parameter) as parameter. - To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. - Throwing an [error object](#error-object) is **not supported** by this function. -#### 例題 1 +#### 例題 -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` ### `Function event validateDrop` @@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### 例題 1 +#### 例題 -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### 例題 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` ### `Function event dropping` @@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### 例題 1 +#### 例題 -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### 例題 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### 例題 1 +#### 例題 -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### 例題 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/Project/components.md b/i18n/ja/docusaurus-plugin-content-docs/current/Project/components.md index 5979f2a6997c4c..a7bd810462640c 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/Project/components.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/Project/components.md @@ -5,7 +5,7 @@ title: 依存関係 4D [プロジェクトアーキテクチャー](../Project/architecture.md) はモジュール式です。 [**コンポーネント**](../Concepts/components.md) や [**プラグイン**](../Concepts/plug-ins.md) をインストールすることで、4Dプロジェクトに追加機能を持たせることができます。 コンポーネントは4D コードで書かれていますが、プラグインは[あらゆる言語を使用してビルドすることができます](../Extensions/develop-plug-ins.md)。 -独自の 4Dコンポーネントを [開発](../Extensions/develop-components.md) し、[ビルド](../Desktop/building.md) することもできますし、4Dコミュニティによって共有されているパブリックコンポーネントを [GitHubで見つけて](https://github.com/search?q=4d-component\\\\\\&type=Repositories) ダウンロードすることもできます。 +独自の 4Dコンポーネントを [開発](../Extensions/develop-components.md) し、[ビルド](../Desktop/building.md) することもできますし、4Dコミュニティによって共有されているパブリックコンポーネントを [GitHubで見つけて](https://github.com/topics/4d-component) ダウンロードすることもできます。 4D 環境にインストールされると、拡張機能は特別なプロパティを持つ**依存関係** として扱われます。 @@ -326,7 +326,7 @@ GitHubでリリースが作成されると、そこに**タグ**と**バージ 依存関係マネージャは、それぞれのコンポーネントが持つ `dependencies.json` ファイルを読み込み、可能な限り指定されたバージョンを遵守しつつ全ての必要な依存関係を回帰的にインストールします。 これによって、ネストされた依存関係を手動で特定し、一つずつ追加しなくても済むようになります。 -- **コンフリクトの解決**: 複数の依存関係が同じコンポーネントの[異なるバージョン](#) を必要とする場合、依存関係マネージャは全ての重なったバージョン範囲を満たすバージョンを探し出すことでコンフリクトを自動的に解決しようとします。 一次依存関係が二次依存関係とコンフリクトを起こした場合には、一次依存関係が優先されます。 +- **コンフリクトの解決**: 複数の依存関係が同じコンポーネントの[異なるバージョン](#defining-a-github-dependency-version-range) を必要とする場合、依存関係マネージャは全ての重なったバージョン範囲を満たすバージョンを探し出すことでコンフリクトを自動的に解決しようとします。 一次依存関係が二次依存関係とコンフリクトを起こした場合には、一次依存関係が優先されます。 :::note diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/REST/$filter.md b/i18n/ja/docusaurus-plugin-content-docs/current/REST/$filter.md index 28f0596b8c40dc..e7d79b10f1bfdd 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/REST/$filter.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/REST/$filter.md @@ -89,11 +89,11 @@ Use the `params` property to provide the filter with the vector comparison param The *vectorComparison* parameter is a collection of the following elements: -| プロパティ | 型 | 説明 | | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [].vector | Object の Collection) | 必須設定です。 A collection that represents the vector to compare | | -| [].metric | Text | 任意。 クエリに使用する[ベクトル計算](../API/VectorClass.md#ことなるベクトル計算を理解する)。 Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | | -| | [].threshold | Real | 任意(デフォルト: 0.5)。 選択された"metric"に従って、コサイン、ドット、またはユークリッド類似度に基づいたベクトル比較をフィルタリングするために使用されるしきい値。 最適な結果を得るためには、特定の用途に最適な類似度のしきい値をきちんと選択することが強く推奨されます。 | +| プロパティ | 型 | 説明 | +| -------------------------------------------------------------------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [].vector | Collection of numbers | 必須設定です。 A collection that represents the vector to compare | +| [].metric | Text | 任意。 クエリに使用する[ベクトル計算](../API/VectorClass.md#ことなるベクトル計算を理解する)。 Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | +| [].threshold | Real | 任意(デフォルト: 0.5)。 選択された"metric"に従って、コサイン、ドット、またはユークリッド類似度に基づいたベクトル比較をフィルタリングするために使用されるしきい値。 最適な結果を得るためには、特定の用途に最適な類似度のしきい値をきちんと選択することが強く推奨されます。 | Only a subset of **comparator** symbols are supported with vector comparisons. これらの比較記号は、結果としきい値を比較するのに使用されるという点に注意してください: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/http-rules.md b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/http-rules.md index d857bb23d70623..6f6e8aacb4e491 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/http-rules.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/http-rules.md @@ -64,12 +64,17 @@ The following action keywords are supported: ### Non-modifiable headers -The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions: +Some headers could not be added, modified or removed: -- "日付", -- "Content-Length" +| Header | 追加 | Set | Reduce | +| ---------------- | -- | ---------- | ------ | +| Date | × | × | × | +| Content-Length | × | × | × | +| Content-Encoding | × | × | × | +| Vary | ◯ | × | × | +| Set-Cookie | ◯ | Add cookie | × | -Modifying these headers do not generate errors, however modifications will be ignored. +Unauthorized changes on these headers do not generate errors, however modifications will be ignored. ### Current rules diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/sessions.md index aef3a4ae864205..aec14fa9fb346b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/sessions.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/WebServer/sessions.md @@ -201,7 +201,7 @@ Else End if ``` -:::note +:::tips 関連したblog 記事 [高度な Webアプリケーションに対応したスケーラブルセッション](https://blog.4d.com/ja/scalable-sessions-for-advanced-web-applications/) diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/WritePro/writeprointerface.md b/i18n/ja/docusaurus-plugin-content-docs/current/WritePro/writeprointerface.md index fc2acfdb8020c0..c73338891c9f16 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/WritePro/writeprointerface.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/WritePro/writeprointerface.md @@ -10,10 +10,10 @@ slug: /WritePro/write-pro-interface インターフェースのマニュアルについては、*4D デザインリファレンス* の [4D Write Pro エリアのドキュメント](https://doc.4d.com/4Dv20/4D/20/Entry-areas.300-6263967.ja.html) を参照ください。 -You will find below: +ここには以下のような情報があります: -- the Table Wizard configuration documentation, -- the integrated A.I. ドキュメント. +- 表ウィザード設定ドキュメンテーション +- 統合されたAIについての ドキュメント. ## 表ウィザード @@ -303,36 +303,36 @@ JSONファイルで設定する各属性に対して、以下の WP属性を定 [4D Write Pro - 表ウィザード (チュートリアル動画)](https://www.youtube.com/watch?v=2ChlTju-mtM) -## Integrated AI +## 統合されたAI -You can use an integrated AI in the 4D Write Pro interface so that you can easily translate or enhance your documents without having to use an external AI application. +4D Write Pro インターフェース内に統合されたAI を使用して、外部AI アプリケーションを使用することなくドキュメントを簡単に要約したり改善したりすることができます。 -Once you have enabled the AI feature, you can display a chat box over your 4D Write Pro document and interact with *chatGPT* to modify the text of the selection or of the document itself. +AI 機能を有効化すると、4D Write Pro ドキュメント上にチャットボックスが表示され、そこから*chatGPT* とやりとりをすることで選択したテキストやドキュメント自身を変更することができます。 :::note -The 4D Write Pro interface uses OpenAI, for which you need to provide your own key (see below). +4D Write Pro インターフェースはOpenAI を使用し、これを使用するためにはご自身のキーを提供する必要があります(以下参照)。 ::: -### Limitations (Developer Preview) +### 制約(デベロッパープレビュー) -In the current implementation, the feature has the following limitations: +現在の実装では、この機能では以下のような制約があります: -- use of a predefined AI provider and necessity to pass your OpenAI key -- basic chatting features -- no image handling -- non-configurable predefined action commands -- predefined translations English/French and French/English only +- 使用するAI プロバイダーが決められていることと、OpenAI キーを渡す必要があること +- 基本的なチャット機能 +- 画像処理なし +- 設定不可な定義済みアクションコマンド +- 定義済みの翻訳は英語→フランス語とフランス語→英語のみ -### Enabling the AI feature +### AI機能の有効化 -The AI dialog box is available by clicking on a button in the 4D Write Pro interface. This button is **hidden by default**, you need to enable it explicitely. +AI ダイアログボックスは4D Write Pro インターフェース内のボタンをクリックすることで利用可能になります。 このボタンは**デフォルトでは非表示** なので、明示的に有効化する必要があります。 -To display the AI dialog box button, you need to: +AI ダイアログボックスボタンを表示するためには、以下の操作が必要です: -1. Get an API key from the [OpenAI website](https://openai.com/api/). -2. Execute the following 4D code: +1. [OpenAI website](https://openai.com/api/) からAPI キーを取得する。 +2. 以下の4D コードを実行する: ```4d @@ -342,44 +342,44 @@ WP SetAIKey ("") // :::note -No checking is done on the OpenAI key validity. If it is invalid, the *chatGPT* box will stay empty. +OpenAi キーの有効性に関するチェックは行われません。 キーが無効だった場合には、*chatGPT* ボックスは空のままになります。 ::: -The **A.I.** button is then displayed: +その後**A.I.** ボタンは、以下の場所に表示されます: ![ai button](../assets/en/WritePro/ai-button.png) -- in the 4D Write Pro Toolbar, in the **Import Export** tab, -- in the 4D Write Pro Widget, in the **Font Style** tab. +- **読み込み書き出し** タブ内の4D Write Pro ツールバー内 +- **フォントスタイル** タブ内の4D Write Pro ウィジェット内。 -Click on the button to display the AI dialog box. +AI ダイアログボックスを表示するには、ボタンをクリックしてください。 -### AI dialog box +### AI ダイアログボックス -The 4D Write Pro AI dialog box allows a straightforward interaction between the chat area and the 4D Write Pro document. +4D Write Pro AI ダイアログボックスを使用するとチャットエリアと4D Write Pro ドキュメントとの簡単なやりとりを可能にします。 -#### Prompt area +#### プロンプトエリア -At the bottom of the window, the **prompt area** allows you to enter any question to send to the AI. +ウィンドウの下部には、**プロンプトエリア** があり、ここにAI に送信したい質問を入力することができます。 -To send your question to the AI, click on the Send button: +AI に質問を送信するためには、送信ボタンをクリックします: ![ai send](../assets/en/WritePro/ai-send.png) -The button icon changes when the same request is sent again: +同じリクエストが再度送信されると、ボタンのアイコンが変わります: ![ai resend](../assets/en/WritePro/ai-resend.png) -On the left side of this area, a pop up menu provides examples of common actions that can be usually delegated to the AI. +このエリアの左側にあるポップアップメニューには、通常AI にたずねるような一般的なアクションの一例が提供されています。 -Selecting an action writes a corresponding question to the prompt. If necessary, you can modify the question and then to click on the Send button to actually send it: +アクションを選択すると、それに対応した質問がプロンプトに入力さます。 必要であれば、質問を書き換えてから送信ボタンを押して送信することもできます: ![ai menu](../assets/en/WritePro/ai-menu.png) :::note -Default translation actions are based upon the current 4D default configuration and depend on available languages. +デフォルトの翻訳アクションはカレントの4D のデフォルト設定に基づき、利用可能な言語に依存します。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md index 24fd10a739da75..6c40ad19f207fd 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ title: OpenAI ## 設定プロパティ -| プロパティ名 | 型 | 説明 | 任意 | -| --------- | ---- | ---------------------------------------------------------- | ----------- | -| `apiKey` | Text | あなたの [OpenAI API キー](https://platform.openai.com/api-keys) | OpenAI では必須 | -| `baseURL` | Text | OpenAI API リクエストのためのベースURL。 | ◯ | -| `組織` | Text | あなたの OpenAI 組織 ID。 | ◯ | -| `project` | Text | あなたの OpenAI プロジェクト ID。 | ◯ | +| プロパティ名 | 型 | 説明 | 任意 | +| --------- | ---- | ---------------------------------------------------------- | ------------------------------------------------ | +| `apiKey` | Text | あなたの [OpenAI API キー](https://platform.openai.com/api-keys) | プロバイダーによっては必須 | +| `baseURL` | Text | OpenAI API リクエストのためのベースURL。 | 任意 (省略時 = OpenAI プラットフォームを使用) | +| `組織` | Text | あなたの OpenAI 組織 ID。 | ◯ | +| `project` | Text | あなたの OpenAI プロジェクト ID。 | ◯ | ### 追加のHTTPプロパティ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatHelper.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatHelper.md index 57c10348740857..567211cdf9f8ba 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatHelper.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIChatHelper.md @@ -9,26 +9,26 @@ title: OpenAIChatHelper ## プロパティ -| プロパティ名 | 型 | デフォルト値 | 説明 | -| --------------------- | --------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | -| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | - | Open AI との通信で使用されるチャットAPI インスタンス。 | -| `systemPrompt` | [OpenAIMessage](OpenAIMessage.md) | - | チャットアシスタントのレスポンスをガイドするためのシステムプロンプトメッセージ。 | -| `numberOfMessages` | Integer | 15 | チャット履歴に保持するメッセージの最大数。 | -| `引数` | [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) | - | OpenAI チャット補完リクエスト用のパラメーター。 | -| `messages` | [OpenAIMessage](OpenAIMessage.md) のコレクション | [] | そのチャットセッション内でやりとりされたメッセージのコレクション。 | -| `ツール` | Collection of [OpenAITool](OpenAITool.md) | [] | List of registered OpenAI tools for function calling. | -| `autoHandleToolCalls` | Boolean | true | Boolean indicating whether tool calls are handled automatically using registered tools. | -| `lastErrors` | Collection | - | Collection containing the last errors encountered during chat operations. | +| プロパティ名 | 型 | デフォルト値 | 説明 | +| --------------------- | --------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------- | +| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | - | Open AI との通信で使用されるチャットAPI インスタンス。 | +| `systemPrompt` | [OpenAIMessage](OpenAIMessage.md) | - | チャットアシスタントのレスポンスをガイドするためのシステムプロンプトメッセージ。 | +| `numberOfMessages` | Integer | 15 | チャット履歴に保持するメッセージの最大数。 | +| `parameters` | [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) | - | OpenAI チャット補完リクエスト用のパラメーター。 | +| `messages` | [OpenAIMessage](OpenAIMessage.md) のコレクション | [] | そのチャットセッション内でやりとりされたメッセージのコレクション。 | +| `tools` | [OpenAITool](OpenAITool.md) のコレクション | [] | 関数呼び出し用に登録されたOpenAI ツールの一覧。 | +| `autoHandleToolCalls` | Boolean | true | 登録されたツールを使用してツール呼び出しを自動的に管理するかどうかをあらわすブール値。 | +| `lastErrors` | Collection | - | チャット操作中に発生した最後のエラーを格納したコレクション。 | -## Constructor +## コンストラクター -To create a new `OpenAIChatHelper` instance, it's best to use the `create()` method from the [OpenAI client's chat API](OpenAIChatAPI.md): +新しい `OpenAIChatHelper` インスタンスを作成するためには、[OpenAI クライアントのチャットAPI](OpenAIChatAPI.md)の `create()` メソッドを使用するのが最適です: ```4D var $chatHelper:=$client.chat.create("You are a helpful assistant.") ``` -This method creates a new chat helper with the specified system prompt and initializes it with default parameters. The system prompt defines the assistant's role and behavior throughout the conversation. +このメソッドは指定されたシステムプロンプトで新しいチャットヘルパーを作成し、デフォルトの引数で初期化します。 このシステムプロンプトが会話の間全体の、アシスタントの役割と振る舞いを定義します。 ## 関数 @@ -54,52 +54,52 @@ $result:=$chatHelper.prompt("Why 42?") **reset**() -Resets the chat context by clearing all messages and unregistering all tools. This effectively starts a fresh conversation while keeping the system prompt and parameters intact. +全てのメッセージを消去し、全てのツールの登録を解除することで、チャットコンテキストをリセットします。 これにより、システムのプロンプトとパラメータをそのままにしながら、効果的に新しい会話を始めることができます。 -#### Reset Example +#### リセットの例 ```4D $chatHelper.prompt("Hello!") -$chatHelper.reset() // Clear all previous messages and tools +$chatHelper.reset() // 以前のメッセージとツールを全て消去 ``` ### registerTool() **registerTool**(*tool* : Object; *handler* : Object) -| 引数 | 型 | 説明 | -| --------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| *tool* | Object | The tool definition object (or [OpenAITool](OpenAITool.md) instance) | -| *handler* | Object | The function to handle tool calls ([4D.Function](../../API/FunctionClass.md) or Object), optional if defined inside *tool* as *handler* property | +| 引数 | 型 | 説明 | +| --------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| *tool* | Object | ツール定義オブジェクト(あるいは[OpenAITool](OpenAITool.md) インスタンス) | +| *handler* | Object | ツール呼び出しを管理する関数([4D.Function](../../API/FunctionClass.md) またはオブジェクト)、*tool* 内の *handler* プロパティで定義されている場合にはオプション。 | -Registers a tool with its handler function for automatic tool call handling. +自動ツール呼び出し関数のために、ツールとそのハンドラ関数を登録します。 -The *handler* parameter can be: +*handler* 引数には以下のものを渡すことができます: -- A **4D.Function**: Direct handler function -- An **Object**: An object containing a `formula` property matching the tool function name +- **4D.Function**: 直接ハンドラ関数 +- **オブジェクト**: ツール関数名と一致する `formula` プロパティを格納しているオブジェクト -The handler function receives an object containing the parameters passed from the OpenAI tool call. This object contains key-value pairs where the keys match the parameter names defined in the tool's schema, and the values are the actual arguments provided by the AI model. +ハンドラー関数はOpenAI ツール呼び出しから渡された引数を格納しているオブジェクトを受け取ります。 オブジェクトは、ツールのスキーマで定義されたパラメーター名とキーが一致するキーと、AI モデルから提供された実際の引数である値との、キーと値のペアを格納しています。 -#### Register Tool Example +#### ツールを登録する例題 ```4D -// Example 1: Simple registration with direct handler +// Example 1: 直接ハンドラを使用したシンプルな登録 var $tool:={type: "function"; function: {name: "get_weather"; description: "Get current weather"; parameters: {type: "object"; properties: {location: {type: "string"; description: "City name"}}}}} var $handler:=Formula(return "Sunny, 25°C in "+$1.location) $chatHelper.registerTool($tool; $handler) -// Example 2: Tool with handler property (no second parameter needed) +// Example 2: プロパティを持つtool オブジェクトを使用(この場合第2に引数は不要です) var $tool:={name: "calculate"; description: "Perform calculations"; handler: Formula(return String(Num($1.expression)))} $chatHelper.registerTool($tool) -// Example 3: Using object notation +// Example 3: オブジェクト記法を使用する $chatHelper.registerTool({tool: $tool; handler: $handler}) -// Example 4: Handler as object with formula matching tool name +// Example 4: ツール名と合致するフォーミュラを持ったオブジェクトとしてのハンドラ var $tool:={name: "getTime"; description: "Get current time"} -var $handlerObj:=cs.MyTimeTool.new() // class with a getTime function +var $handlerObj:=cs.MyTimeTool.new() // getTime 関数を持つクラス $chatHelper.registerTool($tool; $handlerObj) ``` @@ -107,19 +107,19 @@ $chatHelper.registerTool($tool; $handlerObj) **registerTools**(*toolsWithHandlers* : Variant) -| 引数 | 型 | 説明 | -| ------------------- | ------- | -------------------------------------------------------- | -| *toolsWithHandlers* | Variant | Object or Collection containing tools and their handlers | +| 引数 | 型 | 説明 | +| ------------------- | ------- | ------------------------------- | +| *toolsWithHandlers* | Variant | ツールとのそのハンドラを格納したオブジェクトまたはコレクション | -Registers multiple tools at once. The parameter can be: +複数のツールを一度に登録します。 引数には以下のものを渡すことができます: -- **Collection**: Array of tool objects (with handlers embedded or separate) -- **Object**: Object with function names as keys mapping to tool definitions -- **Object with `tools` attribute**: Object containing a `tools` collection and formula properties matching tool names +- **コレクション**: (ハンドラが埋め込んである、あるいは分離してある)ツールオブジェクトのコレクション +- **オブジェクト**: 関数名がツール定義にマッピングされているキーとするオブジェクト +- **`tools` 属性を持つオブジェクト**: `tools` コレクションと、ツール名に合致するフォーミュラプロパティを格納しているオブジェクト -#### Register Multiple Tools Example +#### 複数のツールを登録する例題 -##### Example 1: Collection format with handlers in tools +##### 例 1: ツール内のハンドルを使用したコレクションフォーマット ```4D var $weatherTool:={name: "getWeather"; description: "Get current weather"; handler: Formula(return "Sunny, 25°C in "+$1.location)} @@ -128,7 +128,7 @@ var $calculatorTool:={name: "calculate"; description: "Perform calculations"; ha $chatHelper.registerTools([$weatherTool; $calculatorTool]) ``` -##### Example 2: Object format with separate tool and handler +##### 例 2: 別個のツールとハンドラを使用したオブジェクトフォーマット ```4D var $toolsWithSeparateHandlers:={} @@ -138,15 +138,15 @@ $toolsWithSeparateHandlers.calculate:={tool: $calculatorToolDefinition; handler: $chatHelper.registerTools($toolsWithSeparateHandlers) ``` -##### Example 3: Object with tools collection attribute and formula properties +##### 例 3: tools コレクション属性とformula プロパティを持ったオブジェクト -MyTools class: +MyTools クラス: ```4D Class constructor this.tools:=[{name: "getWeather"; description: "Get current weather"}; \ - {name: "getTime"; description: "Get current time"}] // Collection of tool definitions + {name: "getTime"; description: "Get current time"}] // ツール定義のコレクション Function getWeather($parameters: Object) return "Sunny, 25°C" @@ -159,12 +159,12 @@ Function getTime($parameters: Object) $chatHelper.registerTools(cs.MyTools.new()) ``` -##### Example 4: Simple object format with tools as properties +##### 例 4: ツールをプロパティにもつシンプルなオブジェクトフォーマット ```4D var $tools:={} -$tools.getWeather:=$weatherTool // Tool with handler property -$tools.calculate:=$calculatorTool // Tool with handler property +$tools.getWeather:=$weatherTool // handler プロパティを持つTool +$tools.calculate:=$calculatorTool // handler プロパティを持つTool $chatHelper.registerTools($tools) ``` @@ -173,28 +173,28 @@ $chatHelper.registerTools($tools) **unregisterTool**(*functionName* : Text) -| 引数 | 型 | 説明 | -| -------------- | ---- | ------------------------------------------- | -| *functionName* | Text | The name of the function tool to unregister | +| 引数 | 型 | 説明 | +| -------------- | ---- | --------------- | +| *functionName* | Text | 登録を解除したいツールの関数名 | -Unregisters a specific tool by its function name. This removes the tool from the registered tools collection, clears its handler, and removes it from the parameters. +特定のツールをその関数名で指定して登録解除します。 これによってツールは登録されたツールのコレクションから削除され、ハンドラも消去され、引数からも削除されます。 -#### Unregister Tool Example +#### ツールを登録解除する例 ```4D $chatHelper.registerTool($weatherTool; $weatherHandler) -$chatHelper.unregisterTool("get_weather") // Remove the weather tool +$chatHelper.unregisterTool("get_weather") // weather ツールを削除 ``` ### unregisterTools() **unregisterTools**() -Unregisters all tools at once. This clears all tool handlers, empties the tools collection, and removes all tools from the parameters. +全てのツールを一度に登録解除します。 これはすべてのツールハンドラを消去し、tools コレクションをからにし、そして引数からも全てのツールを削除します。 -#### Unregister All Tools Example +#### 全てのツールを登録解除する例 ```4D $chatHelper.registerTools($multipleTools) -$chatHelper.unregisterTools() // Remove all tools +$chatHelper.unregisterTools() // 全てのツールを削除 ``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md index 8c840ac2ac5c0a..71ac6fa0763f7e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIMessage.md @@ -9,13 +9,13 @@ title: OpenAIMessage ## プロパティ -| プロパティ | 型 | 説明 | -| -------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `role` | Text | The role of the message (e.g., "user", "assistant", "system", "tool"). | -| `内容` | Variant | メッセージのコンテンツ。テキスト、またはオブジェクトのコレクションのいずれかです。 | -| `user` | Text | メッセージに割り当てられたユーザーを表すオプションのプロパティ。 | -| `tool_calls` | Collection | A collection of tool calls requested by the assistant. Each tool call contains an `id`, `type`, and a `function` object. | -| `tool_call_id` | Text | The ID of the tool call that this message is responding to (used when `role` is "tool"). | +| プロパティ | 型 | 説明 | +| -------------- | ---------- | ----------------------------------------------------------------------------------- | +| `role` | Text | メッセージの役割(例: "user"、"assistant"、"system"、"tool")。 | +| `内容` | Variant | メッセージのコンテンツ。テキスト、またはオブジェクトのコレクションのいずれかです。 | +| `user` | Text | メッセージに割り当てられたユーザーを表すオプションのプロパティ。 | +| `tool_calls` | Collection | アシスタントからリクエストされたツール呼び出しのコレクション。 各ツール呼び出しには `id`、`type`、`function` オブジェクトが含まれます。 | +| `tool_call_id` | Text | このメッセージが返答しているツール呼び出しのID (`role` が "tool"の場合に使用されます)。 | ## 計算プロパティ @@ -38,7 +38,7 @@ title: OpenAIMessage ## 使用例 -### Create a simple message and attach an image +### シンプルなメッセージを作成し画像を添付する ```4d // OpenAIMessage のインスタンスを作成 @@ -48,11 +48,11 @@ var $message:=cs.AIKit.OpenAIMessage({role: "user"; content: "Hello!"}) $message.addImageURL("http://example.com/image.jpg"; "high") ``` -### Respond to a tool call message +### ツール呼び出しメッセージに応答する -When an assistant needs to use external functions, it generates a message with `tool_calls` to request function execution. +アシスタントが外部関数を使用する必要がある場合、関数の実行をリクエストするための、`tool_calls` を持ったメッセージを生成します。 -**Assistant message requesting tool calls:** +**ツール呼び出しをリクエストするアシスタントメッセージ:** ```json { @@ -70,41 +70,41 @@ When an assistant needs to use external functions, it generates a message with ` } ``` -**Handling the tool call:** +**ツール呼び出しを管理する:** -When you receive a tool call message, you need to: +ツール呼び出しメッセージを受信した場合、以下のことを行う必要があります: -1. **Extract the function information:** - - `function.name`: The name of the function to call (must match a function defined in your [OpenAITool](OpenAITool.md) - you can select code to execute according to this name) - - `function.arguments`: A JSON string containing the function parameters that must be parsed with `JSON Parse` - - `id`: The unique identifier for this specific tool call +1. **関数の情報を抽出する:** + - `function.name`: 呼び出す関数の名前([OpenAITool](OpenAITool.md) 内で定義されている関数と合致する必要があります- この名前に応じて実行するコードを選択することができます) + - `function.arguments`: `JSON Parse` でパースされる必要のある、関数の引数を格納したJSON 文字列 + - `id`: この特定のツール呼び出しのための固有の識別子 -2. **Execute the function:** - Parse the arguments (which is a JSON string) and call the corresponding function that you defined in your OpenAITool configuration. +2. **関数を実行する:** + (JSON 文字列になっている)引数をパースし、OpenAITool 設定内で定義された対応する関数を呼び出します。 -3. **Respond with the tool result:** - Create a response message using the exact `tool_call_id` from the original request. +3. **ツールの結果で応答する:** + オリジナルのリクエストの`tool_call_id` を使用してレスポンスメッセージを作成します。 -**Example tool response:** +**ツールのレスポンスの一例:** ```4d -// Parse the function arguments (if any) +// 関数の引数をパースする(あれば) var $arguments : Object := JSON Parse($toolCall.function.arguments) -// Execute your code corresponding to "get_database_tables" +// "get_database_tables" に対応するコードを実行する var $tableNames: Text := OB Keys(ds).join(", ") -// Create the tool response message with the required tool_call_id +// 必要な tool_call_id を持ったツールレスポンスメッセージを作成する var $toolResponse:=cs.AIKit.OpenAIMessage.new({ \ role: "tool"; \ tool_call_id: "call_12345"; \ content: $tableNames \ }) -// Add it to the conversation and continue +// 会話にそれを追加して続行する ``` -**Important:** The `tool_call_id` in your response must exactly match the `id` from the original tool call. This allows the AI model to correctly associate your response with the specific function call that was made. +**重要:** レスポンス内の`tool_call_id` は、元のツール呼び出しの`id` と完全に一致している必要があります。 これによってAI モデルはあなたのレスポンスと、呼び出しを行った特定の関数を正確に結びつけることができます。 ## 参照 -- [OpenAITool](OpenAITool.md) - For tool definition \ No newline at end of file +- [OpenAITool](OpenAITool.md) - ツール定義に必要 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md index e66df1f19d5d80..afe16eb8ff9177 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAIParameters.md @@ -61,6 +61,17 @@ title: OpenAIParameters 詳細な情報については [非同期コードに関するドキュメンテーション](../asynchronous-call.md) を参照してください。 +成功とエラー処理をより細やかに管理するためにはこれらのコールバックプロパティを使用します: + +| プロパティ | 型 | 説明 | +| ------------ | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| `onResponse` | 4D.Function | A function to be called asynchronously when the request finishes **successfully**. カレントプロセスが終了しないように注意してください。 | +| `onError` | 4D.Function | リクエストが**エラーで**終了した場合に非同期で呼び出される関数。 カレントプロセスが終了しないように注意してください。 | + +> これらのコールバック関数は、同期コード内での関数によって返される結果のオブジェクト型([OpenAIResult](./OpenAIResult.md) 子クラスのうちのいずれか)と同じものを受け取ります。 + +詳細な情報については [非同期コードに関するドキュメンテーション](../asynchronous-call.md) を参照してください。 + ### ネットワークプロパティ | プロパティ | 型 | 説明 | diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAITool.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAITool.md index bc638180ea1b72..a34a35bd12d990 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAITool.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAITool.md @@ -5,50 +5,50 @@ title: OpenAITool # OpenAITool -The `OpenAITool` class represents a tool that can be called by the OpenAI model during a conversation. Tools allow the AI to perform specific functions and interact with external systems or retrieve information. +`OpenAITool` クラスは会話の途中でOpenAI モデルによって呼び出されうるツールを表します。 ツールを使用するとAI に特定の機能を実行させたり、外部システムとやりとりしたり、情報を取得したりといったことが可能になります。 -See [OpenAIMessage](OpenAIMessage.md) to see how to responds to a tool call. +ツール呼び出しに応答する方法については、[OpenAIMessage](OpenAIMessage.md) を参照して下さい。 -> **Note:** The tool calls are handled automatically when using [OpenAIChatHelper](OpenAIChatHelper.md) with `autoHandleToolCalls` enabled. +> **注意:** [OpenAIChatHelper](OpenAIChatHelper.md) を`autoHandleToolCalls` を有効化して使用した場合には、ツール呼び出しは自動的に管理されます。 ## プロパティ -### Root Properties +### ルートプロパティ -| プロパティ | 型 | デフォルト | 説明 | -| -------- | ------- | ------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `type` | Text | `"function"` | The type of tool. Currently supports `"function"`, `"custom"`, and other built-in types. | -| `strict` | Boolean | `false` | Whether to enforce strict schema validation for function parameters. | +| プロパティ | 型 | デフォルト | 説明 | +| -------- | ------- | ------------ | ---------------------------------------------------------------- | +| `type` | Text | `"function"` | ツールのタイプ。 現在サポートされているのは`"function"`、`"custom"`、そしてその他のビルトインタイプです。 | +| `strict` | Boolean | `false` | 関数の引数に対して厳格なスキーマ検証を強制するかどうかを指定します。 | -### Common Properties +### 共通プロパティ -| プロパティ | 型 | 説明 | -| ------------- | ---- | ------------------------------------------------------------------------------ | -| `名称` | Text | The name of the tool, which works as an identifier. | -| `description` | Text | Description of the tool to help the LLM decide when to use it. | +| プロパティ | 型 | 説明 | +| ------------- | ---- | --------------------------------- | +| `名称` | Text | ツール名。識別子として機能します。 | +| `description` | Text | LLM がツールをいつ使うかを決定する手助けとなる、ツールの説明。 | -### Function-specific Properties +### 関数特有のプロパティ -| プロパティ | 型 | 説明 | -| ----- | ------ | -------------------------------------------------------------------------------- | -| `引数` | Object | Parameters definition for the function using JSON schema format. | +| プロパティ | 型 | 説明 | +| ------------ | ------ | ---------------------------- | +| `parameters` | Object | JSON スキーマフォーマットを使用した関数の引数宣言。 | -## Constructor +## コンストラクター ### new() **new**(*object* : Object) : OpenAITool -| 引数 | 型 | 説明 | -| --------- | ---------- | --------------------------------- | -| *options* | Object | Configuration object for the tool | -| 戻り値 | OpenAITool | New instance of OpenAITool | +| 引数 | 型 | 説明 | +| --------- | ---------- | -------------------- | +| *options* | Object | ツールの設定オブジェクト | +| 戻り値 | OpenAITool | OpenAITool の新規インスタンス | -Creates a new OpenAITool instance. The constructor accepts both simplified format and OpenAI API format. +新しい OpenAITool インスタンスを作成します。 このコンストラクターは簡易フォーマットとOpenAI API フォーマットの両方を受け入れます。 -#### Supported formats +#### サポートされるフォーマット -**Simplified format:** +**簡易フォーマット:** ```4d var $tool := cs.OpenAITool.new({ \ @@ -64,7 +64,7 @@ var $tool := cs.OpenAITool.new({ \ }) ``` -**OpenAI API format:** +**OpenAI API フォーマット:** ```4d var $tool := cs.OpenAITool.new({ \ @@ -84,9 +84,9 @@ var $tool := cs.OpenAITool.new({ \ }) ``` -## Integration with Chat Completions +## チャット補完との統合 -Tools are typically used with the `OpenAIChatCompletionsParameters.tools` property: +ツールは通常`OpenAIChatCompletionsParameters.tools` プロパティで使用されます: ```4d var $parameters := cs.AIKit.OpenAIChatCompletionsParameters.new({ \ @@ -95,10 +95,10 @@ var $parameters := cs.AIKit.OpenAIChatCompletionsParameters.new({ \ }) ``` -> **Note:** You can pass plain objects directly - they will be automatically converted to `OpenAITool` instances. There's no need to explicitly create `OpenAITool` objects. +> **注意:** プレーンなオブジェクトを直接渡すこともできます - 渡したオブジェクトは自動的に`OpenAITool` インスタンスに変換されます。 明示的に `OpenAITool` オブジェクトを作成する必要はありません。 ## 参照 -- [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - For tool configuration -- [OpenAIChatHelper](OpenAIChatHelper.md) - For automatic tool call handling -- [OpenAIMessage](OpenAIMessage.md) - For tool call responses \ No newline at end of file +- [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - ツール設定用 +- [OpenAIChatHelper](OpenAIChatHelper.md) - 自動ツール呼び出し管理用 +- [OpenAIMessage](OpenAIMessage.md) - ツール呼び出しレスポンス用 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md index 2afc35ae0f24b3..c7f6e6cc20e6a8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: プロバイダ 多くのAI プロバイダがOpenAI に似たAPI を提供しているので、このプロジェクトを使用してそれらに接続することができます。 -そのためには元の `baseURL` をプロバイダーのものに変更し、必要であればそのサービスのAPI キーを使用するだけです。 +そのためには元の `baseURL` をプロバイダーのものに設定し、必要であればそのサービスのAPI キーを使用するだけです。 ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ $client.baseURL:="https://api.mistral.ai/v1" ## リモート -| プロバイダ | ベースURL | +| プロバイダ | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ja/ | https://api.mistral.ai/v1/ja | | https://www.deepseek.com/ja/ | https://api.deepseek.com/ja | @@ -31,7 +31,7 @@ $client.baseURL:="https://api.mistral.ai/v1" ## ローカル -| プロバイダ | デフォルトのベースURL | ドキュメント | +| プロバイダ | デフォルトの baseURL | ドキュメント | | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ja/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ja/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png new file mode 100644 index 00000000000000..7c9d523d0372f1 Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png new file mode 100644 index 00000000000000..8a4a075fd1f5d3 Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png new file mode 100644 index 00000000000000..b339a988df6172 Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md b/i18n/ja/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md index c7e4e997250902..2a46d487876dc1 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/ja/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md @@ -128,7 +128,11 @@ displayed_sidebar: docs   // On Server Open Connection データベースメソッド  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current timeコレクションの要素を並べ替えます 。戻り値は並べ替えられた元のコレクションです。 > このコマンドは、元のコレクションを変更します。 -引数もなしに呼び出された場合、`.sort()` はスカラー値 (数値、テキスト、日付、ブール) のみを並べ替えます。 デフォルトでは、要素はそれぞれの型に応じて昇順で並べ替えられます。 You can also pass one of the following constants in the *ascOrDesc* parameter: +引数もなしに呼び出された場合、`.sort()` はスカラー値 (数値、テキスト、日付、ブール) のみを並べ替えます。 デフォルトでは、要素はそれぞれの型に応じて昇順で並べ替えられます。 *ascOrDesc* 引数には、以下の定数のいずれか一つを渡すことができます: - |Constant| Type|Value|Comment| + |定数| 型|値|詳細| |---|---|---|---| - |ck ascending|Integer|0|Elements are ordered in ascending order (default)| - |ck descending|Integer|1|Elements are ordered in descending order| + |ck ascending|Integer|0|要素は昇順に並んでいます(デフォルト)| + |ck descending|Integer|1|要素は降順に並んでいます| - This syntax orders scalar values in the collection only (other element types such as objects or collections are returned unordered). + このシンタックスはコレクション内のスカラー値のみを並び替えます(オブジェクトやコレクションなどの他の型の要素は並べ替えされません)。 コレクションが異なる型の要素を格納している場合、それらはまず型ごとにグループ分けされ、そのあとで並べ替えられます。 型は以下の順番で返されます: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/API/DataClassClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/API/DataClassClass.md index e0de537fc09768..8184f6054f8368 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/API/DataClassClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/API/DataClassClass.md @@ -945,7 +945,7 @@ ds.People.query("places.locations[a].kind= :1 and places.locations[a].city= :2"; * フォーミュラは処理されるエンティティごとに評価され、true または false を返さなくてはなりません。 クエリの実行中、フォーミュラの結果がブール値でなかった場合、それは false であるとみなされます。 * 処理中のエンティティはフォーミュラ内において `This` で参照されます。 -* if the `Formula` object is **null**, the errror 1626 ("Expecting a text or formula") is generated, that you can intercept using a method installed with `ON ERR CALL`. +* `Formula` オブジェクトが **null** の場合、エラー1626 ("テキストまたはフォーミュラが必要です") が生成されます。このエラーは `ON ERR CALL` で実装したメソッドで割り込み可能です。 > セキュリティのため、`query()` 関数内のフォーミュラ使用を禁止することができます。 *querySettings* パラメーターの説明を参照ください。 **フォーミュラに引数を渡す** diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseEnter.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseEnter.md index 90eb5ad9f3f021..580d2b235722bc 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseEnter.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseEnter.md @@ -14,7 +14,7 @@ title: On Mouse Enter `On Mouse Enter` イベントは、*MouseX* および *MouseY* システム変数を更新します。 -Objects that are made invisible using the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command or the [Visibility](FormObjects/properties_Display.md#visibility) property do not generate this event. +[`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドの使用や、[表示状態](FormObjects/properties_Display.md#表示状態) プロパティの設定によって非表示にされたオブジェクトでは、このイベントは生成されません。 ### コールスタック diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseLeave.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseLeave.md index d3d0d2a1281f6a..0d22dd1ad1efdc 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseLeave.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseLeave.md @@ -14,7 +14,7 @@ title: On Mouse Leave `On Mouse Leave` イベントは、*MouseX* および *MouseY* システム変数を更新します。 -Objects that are made invisible using the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command or the [Visibility](FormObjects/properties_Display.md#visibility) property do not generate this event. +[`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドの使用や、[表示状態](FormObjects/properties_Display.md#表示状態) プロパティの設定によって非表示にされたオブジェクトでは、このイベントは生成されません。 ### コールスタック diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseMove.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseMove.md index 8f0701bc752a18..94b131b1243593 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseMove.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onMouseMove.md @@ -19,7 +19,7 @@ title: On Mouse Move `On Mouse Move` イベントは、*MouseX* および *MouseY* システム変数を更新します。 -Objects that are made invisible using the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command or the [Visibility](FormObjects/properties_Display.md#visibility) property do not generate this event. +[`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドの使用や、[表示状態](FormObjects/properties_Display.md#表示状態) プロパティの設定によって非表示にされたオブジェクトでは、このイベントは生成されません。 ### コールスタック diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onScroll.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onScroll.md index e0e611eaf03d52..19655b53d2d56e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onScroll.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onScroll.md @@ -14,7 +14,7 @@ title: On Scroll このイベントは、スクロールアクションに関連した他のすべてのユーザーイベント ([On Clicked](onClicked.md)、[On After Keystroke](onAfterKeystroke.md)、等) の後にトリガーされます。 このイベントは、オブジェクトメソッドの中でのみ生成されます (フォームメソッドでは生成されません)。 -このイベントは、ユーザーのアクションの結果としてスクロールが発生した場合にのみ生成されます: スクロールバー/カーソルの使用、マウスホイールまたは [キーボード](FormObjects/properties_Appearance.md#縦スクロールバー) の使用、等です。 It is not generated when the object is scrolled due to the execution of the [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) command. +このイベントは、ユーザーのアクションの結果としてスクロールが発生した場合にのみ生成されます: スクロールバー/カーソルの使用、マウスホイールまたは [キーボード](FormObjects/properties_Appearance.md#縦スクロールバー) の使用、等です。 [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) コマンド使用の結果スクロールした場合には生成されません。 ### ピクチャー入力 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onValidate.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onValidate.md index 78363c6579fa03..b8d5c35e84938d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onValidate.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/Events/onValidate.md @@ -10,7 +10,7 @@ title: On Validate ## 説明 -This event is triggered when the record data entry has been validated, for example after an `accept` [standard action](FormObjects/properties_Action.md#standard-action). +このイベントは、`accept` [標準アクション](FormObjects/properties_Action.md#標準アクション)の後など、レコードのデータ入力が確定されたときにトリガーされます。 ### サブフォーム diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md index c5b1e8bee004a5..62c02ed59851a0 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/FormEditor/formEditor.md @@ -53,24 +53,24 @@ title: フォームエディター ツールバーには以下の要素があります: -| アイコン | 名称 | 説明 | -| ------------------------------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ![](../assets/en/FormEditor/execute.png) | フォーム実行 | フォームの実行をテストするために使用します。 このボタンをクリックすると、4D は新しいウィンドウを開き、そのコンテキストでフォームを表示します (リストフォームの場合レコードリスト、詳細フォームの場合カレントレコード)。 フォームはメインプロセスで実行されます。 | -| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#selecting-objects) | フォームオブジェクトの選択・移動・リサイズをおこないます。

    **注**: テキストやグループボックスタイプのオブジェクトを選択すると、**Enter**キーを押すことで編集モードになります。

    | -| ![](../assets/en/FormEditor/zOrder.png) | [入力順](#data-entry-order) | "入力順" モードに切り替わり、フォームの現在の入力順を表示・変更できます。 入力順は、バッジを使用して確認することもできます。 | -| ![](../assets/en/FormEditor/moving.png) | [移動](#moving-objects) | "移動" モードに移行し、ウィンドウ中をドラッグ&ドロップすることで素早くフォームの表示部分を移動することができます。 このモードでカーソルは手の形になります。 このモードは、フォームを拡大表示している時に特に便利です。 | -| ![](../assets/en/FormEditor/zoom.png) | [拡大](#zoom) | フォーム表示の拡大/縮小率を変更できます (デフォルトで100%)。 "拡大/縮小" モードにするには虫眼鏡をクリックするか、拡大/縮小率バーをクリックします。 この機能は前節で説明しています。 | -| ![](../assets/en/FormEditor/alignment.png) | [整列](#aligning-objects) | このボタンには、フォーム中でオブジェクトを均等に配置するためのメニューがリンクされています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。
    選択オブジェクトの位置が CSSプロパティによりロックされている場合は無効です。 | -| ![](../assets/en/FormEditor/distribution.png) | [均等配置](#distributing-objects) | このボタンには、フォーム中でオブジェクトの並びを揃えるためのメニューがリンクされています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。
    選択オブジェクトの位置が CSSプロパティによりロックされている場合は無効です。 | -| ![](../assets/en/FormEditor/level.png) | [レベル](#layering-objects) | このボタンには、フォーム上のオブジェクトの階層を変更するためのメニューが関連付けられています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。 | -| ![](../assets/en/FormEditor/group.png) | [グループ化/グループ解除](#grouping-objects) | このボタンには、フォーム上の選択オブジェクトのグループ化やグループ解除をおこなうためのメニューが関連付けられています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。 | -| ![](../assets/en/FormEditor/displyAndPage.png) | [表示とページ管理](forms.html#form-pages) | このエリアを使用して、フォームページ間の移動やページの追加ができます。 フォームページを移動するには矢印ボタンをクリックするか、または中央のエリアをクリックすると現われるメニューから表示したいページを選択します。 最終ページが表示されている状態で、右矢印ボタンをクリックすると、4D はページを追加します。 | -| ![](../assets/en/FormEditor/cssPreviewicon.png) | [CSSプレビュー](#css-preview) | このボタンで、使用する CSSモードを選択します。 | -| ![](../assets/en/FormEditor/views.png) | [ビュー管理](#views) | このボタンは、ビューパレットの表示や非表示をおこないます。 この機能については "オブジェクトビューを使用する" で説明しています。 | -| ![](../assets/en/FormEditor/shields2.png) | [バッジ表示](#shields) | このボタンをクリックするたびに、すべてのタイプのフォームバッジが順に表示されます。 また、このボタンには、表示するバッジタイプを直接選択できるメニューが関連付けられています。 | -| ![](../assets/en/FormEditor/library.png) | [定義済みオブジェクトライブラリ](objectLibrary.html) | このボタンは定義済みオブジェクトライブラリを表示します。 このライブラリは定義済みのプロパティを持つオブジェクトを多数提供します。 | -| ![](../assets/en/FormEditor/listBoxBuilder1.png) | [リストボックスビルダー](#list-box-builder) | このボタンは、新しいエンティティセレクション型リストボックスを作成します。 | -| ![](../assets/en/FormEditor/insertFields.png) | [フィールドを挿入](#insert-fields) | このボタンは、テーブルフォームにおいて、親テーブルの全フィールド (オブジェクト型と BLOB型を除く) をインターフェース標準に従ってラベル付きで挿入します。 | +| アイコン | 名称 | 説明 | +| ------------------------------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ![](../assets/en/FormEditor/execute.png) | フォーム実行 | フォームの実行をテストするために使用します。 このボタンをクリックすると、4D は新しいウィンドウを開き、そのコンテキストでフォームを表示します (リストフォームの場合レコードリスト、詳細フォームの場合カレントレコード)。 フォームはメインプロセスで実行されます。 | +| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | +| ![](../assets/en/FormEditor/zOrder.png) | [入力順](#data-entry-order) | "入力順" モードに切り替わり、フォームの現在の入力順を表示・変更できます。 入力順は、バッジを使用して確認することもできます。 | +| ![](../assets/en/FormEditor/moving.png) | [移動](#moving-objects) | "移動" モードに移行し、ウィンドウ中をドラッグ&ドロップすることで素早くフォームの表示部分を移動することができます。 このモードでカーソルは手の形になります。 このモードは、フォームを拡大表示している時に特に便利です。 | +| ![](../assets/en/FormEditor/zoom.png) | [拡大](#zoom) | フォーム表示の拡大/縮小率を変更できます (デフォルトで100%)。 "拡大/縮小" モードにするには虫眼鏡をクリックするか、拡大/縮小率バーをクリックします。 この機能は前節で説明しています。 | +| ![](../assets/en/FormEditor/alignment.png) | [整列](#aligning-objects) | このボタンには、フォーム中でオブジェクトを均等に配置するためのメニューがリンクされています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。
    選択オブジェクトの位置が CSSプロパティによりロックされている場合は無効です。 | +| ![](../assets/en/FormEditor/distribution.png) | [均等配置](#distributing-objects) | このボタンには、フォーム中でオブジェクトの並びを揃えるためのメニューがリンクされています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。
    選択オブジェクトの位置が CSSプロパティによりロックされている場合は無効です。 | +| ![](../assets/en/FormEditor/level.png) | [レベル](#layering-objects) | このボタンには、フォーム上のオブジェクトの階層を変更するためのメニューが関連付けられています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。 | +| ![](../assets/en/FormEditor/group.png) | [グループ化/グループ解除](#grouping-objects) | このボタンには、フォーム上の選択オブジェクトのグループ化やグループ解除をおこなうためのメニューが関連付けられています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。 | +| ![](../assets/en/FormEditor/displyAndPage.png) | [表示とページ管理](forms.html#form-pages) | このエリアを使用して、フォームページ間の移動やページの追加ができます。 フォームページを移動するには矢印ボタンをクリックするか、または中央のエリアをクリックすると現われるメニューから表示したいページを選択します。 最終ページが表示されている状態で、右矢印ボタンをクリックすると、4D はページを追加します。 | +| ![](../assets/en/FormEditor/cssPreviewicon.png) | [CSSプレビュー](#css-preview) | このボタンで、使用する CSSモードを選択します。 | +| ![](../assets/en/FormEditor/views.png) | [ビュー管理](#views) | このボタンは、ビューパレットの表示や非表示をおこないます。 この機能については "オブジェクトビューを使用する" で説明しています。 | +| ![](../assets/en/FormEditor/shields2.png) | [バッジ表示](#shields) | このボタンをクリックするたびに、すべてのタイプのフォームバッジが順に表示されます。 また、このボタンには、表示するバッジタイプを直接選択できるメニューが関連付けられています。 | +| ![](../assets/en/FormEditor/library.png) | [定義済みオブジェクトライブラリ](objectLibrary.html) | このボタンは定義済みオブジェクトライブラリを表示します。 このライブラリは定義済みのプロパティを持つオブジェクトを多数提供します。 | +| ![](../assets/en/FormEditor/listBoxBuilder1.png) | [リストボックスビルダー](#list-box-builder) | このボタンは、新しいエンティティセレクション型リストボックスを作成します。 | +| ![](../assets/en/FormEditor/insertFields.png) | [フィールドを挿入](#insert-fields) | このボタンは、テーブルフォームにおいて、親テーブルの全フィールド (オブジェクト型と BLOB型を除く) をインターフェース標準に従ってラベル付きで挿入します。 | ### オブジェクトバー @@ -146,11 +146,11 @@ title: フォームエディター ツールバーを使用してオブジェクトを選択するには: -1. ツールバーの矢印ツールをクリックします。

    ![](../assets/en/FormEditor/selection.png)

    +1. ツールバーの矢印ツールをクリックします。
    ![](../assets/en/FormEditor/selection.png) -

    マウスカーソルをフォームエリアに移動すると、カーソルは標準の矢印の形をしたポインターに変わります

    。 +
    マウスカーソルをフォームエリアに移動すると、カーソルは標準の矢印の形をしたポインターに変わります。 -2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表わします。

    ![](../assets/en/FormEditor/selectResize.png)

    +2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表わします。
    ![](../assets/en/FormEditor/selectResize.png) プロパティリストを使用してオブジェクトを選択するには: @@ -235,13 +235,12 @@ title: フォームエディター オブジェクトをグループ化するには: 1. グループ化したいオブジェクトを選択します。 -2. オブジェクトメニューから **グループ化** を選択します。 または フォームエディターのツールバーでグループ化ボタンをクリックします。

    ![](../assets/en/FormEditor/group.png)

    -4D は、新たにグループ化されたオブジェクトの境界をハンドルで表わします。 グループ内の各オブジェクトの境界にはハンドルが表示されません。 これ以降、グループ化されたオブジェクトを編集すると、グループを構成する全オブジェクトが変更されます。 +2. オブジェクトメニューから **グループ化** を選択します。 OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. グループ内の各オブジェクトの境界にはハンドルが表示されません。 これ以降、グループ化されたオブジェクトを編集すると、グループを構成する全オブジェクトが変更されます。 オブジェクトのグループ化を解除するには: 1. グループ化を解除したいグループオブジェクトを選択します。 -2. **オブジェクト** メニューから **グループ化解除** を選択します。

    OR

    フォームエディターのツールバーで **グループ化解除** ボタン (**グループ化** ボタンのサブ項目) をクリックします。

    **グループ化解除** が選択不可の場合、選択したオブジェクトはグループに属していないことを意味します。

    4D は個々のオブジェクトの境界をハンドルで表わします。 +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D は個々のオブジェクトの境界をハンドルで表わします。 ### オブジェクトの整列 @@ -268,9 +267,10 @@ title: フォームエディター このダイアログボックスを表示するには、揃えたいオブジェクトを選択し、**オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 -- "左/右整列" や "上/下整列" エリアで、実行しようとする整列に対応する整列アイコンをクリックします。

    見本エリアには、選択結果が表示されます。

    +- "左/右整列" や "上/下整列" エリアで、実行しようとする整列に対応する整列アイコンをクリックします。
    見本エリアには、選択結果が表示されます。 + +- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. この場合、基準オブジェクトの位置は変わりません。 -- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 または:

    特定のオブジェクトを基準にオブジェクトを揃えるには、**整列** オプションを選択し、整列基準としたいオブジェクトを一覧から選択します。 この場合、基準オブジェクトの位置は変わりません。

    **プレビュー** ボタンをクリックすると、整列の結果をプレビューすることができます。 するとフォームエディター上のオブジェクトは見かけ上整列しますが、ダイアログボックスが表示されたままなので、この整列のキャンセルや適用をおこなうことができます。 > このダイアログボックスでは、整列と均等配置を合わせて実行することができます。 整列に関する詳細は [オブジェクトの整列](#オブジェクトの整列) を参照ください。 @@ -304,7 +304,7 @@ title: フォームエディター 1. 3つ以上のオブジェクトを選択し、希望する均等配置ツールをクリックします。 -2. 適用したい均等配置に対応する整列ツールをツールバー上で選択します。

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    **オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから均等揃えメニューコマンドを選択します。

    4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 "整列と均等配置" ダイアログボックスを用いてオブジェクトを均等に配置するには: @@ -312,9 +312,9 @@ title: フォームエディター 2. **オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 以下のダイアログボックスが表示されます:![](../assets/en/FormEditor/alignmentAssistant.png) -3. "左/右整列" や "上/下整列" エリアで、標準の均等配置アイコンをクリックします: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (標準の横均等揃えアイコン)

    見本エリアには、選択結果が表示されます。 +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. 標準の均等配置を実行するには、**プレビュー** または *適用* をクリックします。

    この場合、4D は標準の均等配置を実行し、オブジェクトは等間隔で配置されます。

    または:

    特定の均等配置を実行するには、**均等配置** オプションを選択します (たとえば各オブジェクトの右辺までの距離をもとにしてオブジェクトを均等に配置したい場合)。 このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:
    - 左/右整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの左辺、中央 (横)、右辺で均等に揃えます。 - 上/下整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの上辺、中央 (縦)、下辺で均等に揃えます。 @@ -367,11 +367,11 @@ JSONフォームの入力順序の設定は、[`entryOrder`](properties_JSONref. 入力順モードに切り替え、入力順を変更するには: -1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:
    ![](../assets/en/FormEditor/zOrder.png)
    ポインターが入力順ポインターに変わり、4D はフォーム上に線を引いて、データ入力時にオブジェクトが選択される順序を示します。 ツールパレット上の他のツールをクリックするまでは、入力順序の表示と変更操作しかおこなえません。 -2. データ入力順を変更するには、フォームオブジェクト上にポインターを置き、マウスボタンを押したまま、次の入力順に設定したいオブジェクトまでポインターをドラッグします。

    ![](../assets/en/FormEditor/entryOrder3.png)

    これに応じて、4D はデータ入力順を調整します。 +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. 入力順を設定したいだけ、ステップ2 を繰り返します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/FormObjects/listbox_overview.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/FormObjects/listbox_overview.md index 2d90daa8889249..43c14130b5e183 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/FormObjects/listbox_overview.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/FormObjects/listbox_overview.md @@ -70,7 +70,7 @@ title: リストボックス デフォルトで 4D は各列に “ColumnX” という名前を割り当てます。 この配列変数名は [列のプロパティ](listbox_overview.md#列特有のプロパティ) で変更できます (プロパティリストの [変数あるいは式](properties_Object.md#変数あるいは式) プロパティを使用します)。 列ごとの表示フォーマットを指定するには、`OBJECT SET FORMAT` コマンドも使用できます。 > 配列タイプのリストボックスは、特別なメカニズムをもつ [階層モード](listbox_overview.md#階層リストボックス) で表示することができます。 -配列タイプのリストボックスでは、入力あるいは表示される値は 4Dランゲージで制御します。 列に [選択リスト](properties_DataSource.md#選択リスト) を割り当てて、データ入力を制御することもできます。 The values of columns are managed using high-level List box commands (such as [`LISTBOX INSERT ROWS`](../commands/listbox-insert-rows) or `LISTBOX DELETE ROWS`) as well as array manipulation commands. たとえば、列の内容を初期化するには、以下の命令を使用できます: +配列タイプのリストボックスでは、入力あるいは表示される値は 4Dランゲージで制御します。 列に [選択リスト](properties_DataSource.md#選択リスト) を割り当てて、データ入力を制御することもできます。 リストボックスのハイレベルコマンド ([`LISTBOX INSERT ROWS`](../commands/listbox-insert-rows) や `LISTBOX DELETE ROWS` 等) や配列操作コマンドを使用して、列の値を管理します。 たとえば、列の内容を初期化するには、以下の命令を使用できます: ```4d ARRAY TEXT(varCol;size) @@ -299,7 +299,7 @@ myCol:=myCol.push("new value") // リストボックスに new value を表示 ランタイムにおいてヘッダーで発生したイベントは、その列のオブジェクトメソッド が受け取ります。 -When the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command is used with a header, it is applied to all headers, regardless of the individual element set by the command. たとえば、`OBJECT SET VISIBLE(*;"header3";False)` という命令の場合、指定したヘッダーだけではなく、*header3* が属するリストボックスの全ヘッダーを非表示にします。 +ヘッダーに [`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドを使用すると、このコマンドに渡した引数に関わらず、そのリストボックスのすべてのヘッダーが対象になります。 たとえば、`OBJECT SET VISIBLE(*;"header3";False)` という命令の場合、指定したヘッダーだけではなく、*header3* が属するリストボックスの全ヘッダーを非表示にします。 ### ヘッダー特有のプロパティ @@ -318,7 +318,7 @@ When the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command is used ランタイムにおいてフッターで発生したイベントは、その列のオブジェクトメソッド が受け取ります。 -When the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command is used with a footer, it is applied to all footers, regardless of the individual element set by the command. たとえば、`OBJECT SET VISIBLE(*;"footer3";False)` という命令の場合、指定したフッターだけではなく、*footer3* が属するリストボックスの全フッターを非表示にします。 +フッターに [`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドを使用すると、このコマンドに渡した引数に関わらず、そのリストボックスのすべてのフッターが対象になります。 たとえば、`OBJECT SET VISIBLE(*;"footer3";False)` という命令の場合、指定したフッターだけではなく、*footer3* が属するリストボックスの全フッターを非表示にします。 ### フッター特有のプロパティ @@ -403,7 +403,7 @@ When the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command is used End if ``` -> The [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) command scrolls the list box rows so that the first selected row or a specified row is displayed. +> [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) コマンドは、最初に選択された行または指定された行を表示するようにリストボックスをスクロールします。 ### 選択行の見た目のカスタマイズ @@ -629,13 +629,13 @@ End if ### 詳細モード -このモードでは、リストボックスの印刷は `Print object` コマンドを使用してプログラムにより実行されます (プロジェクトフォームとテーブルフォームがサポートされています)。 The [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) command is used to control the printing of the object. +このモードでは、リストボックスの印刷は `Print object` コマンドを使用してプログラムにより実行されます (プロジェクトフォームとテーブルフォームがサポートされています)。 [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) コマンドを使用してオブジェクトの印刷を制御できます。 このモードでは: -* オブジェクトの高さよりも印刷する行数が少ない場合、リストボックスオブジェクトの高さは自動で減少させられます ("空白" 行は印刷されません)。 他方、オブジェクトの内容に基づき高さが自動で増大することはありません。 The size of the object actually printed can be obtained via the [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) command. -* リストボックスオブジェクトは "そのまま" 印刷されます。言い換えれば、ヘッダーやグリッド線の表示、表示/非表示行など、現在の表示設定が考慮されます。 These parameters also include the first row to be printed: if you call the [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) command before launching the printing, the first row printed in the list box will be the one designated by the command. -* 自動メカニズムにより、表示可能な行以上の行数を含むリストボックスの印刷が容易になります。 連続して `Print object` を呼び出し、呼び出し毎に別の行のまとまりを印刷することができます。 The [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) command can be used to check the status of the printing while it is underway. +* オブジェクトの高さよりも印刷する行数が少ない場合、リストボックスオブジェクトの高さは自動で減少させられます ("空白" 行は印刷されません)。 他方、オブジェクトの内容に基づき高さが自動で増大することはありません。 実際に印刷されるオブジェクトのサイズは [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) コマンドで取得できます。 +* リストボックスオブジェクトは "そのまま" 印刷されます。言い換えれば、ヘッダーやグリッド線の表示、表示/非表示行など、現在の表示設定が考慮されます。 これらの設定には印刷される最初の行も含みます。 印刷を実行する前に [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) を呼び出すと、リストボックスに印刷される最初の行はコマンドで指定した行になります。 +* 自動メカニズムにより、表示可能な行以上の行数を含むリストボックスの印刷が容易になります。 連続して `Print object` を呼び出し、呼び出し毎に別の行のまとまりを印刷することができます。 [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) コマンドを使用して、印刷がおこなわれている間の状態をチェックできます。 ## 階層リストボックス @@ -762,7 +762,7 @@ Variable 1 は常に、リストボックスの先頭列の変数名に対応し > 親が折りたたまれているために行が非表示になっていると、それらは選択から除外されます。 (直接あるいはスクロールによって) 表示されている行のみを選択できます。 言い換えれば、行を選択かつ隠された状態にすることはできません。 -As with selections, the [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) command will return the same values for a hierarchical list box and a non-hierarchical list box. This means that in both of the examples below, [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) will return the same position: (3;2). +選択と同様に、 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) コマンドは階層リストボックスと非階層リストボックスにおいて同じ値を返します。 つまり以下の両方の例題で、 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) は同じ位置 (3;2) を返します。 *非階層表示:* ![](../assets/en/FormObjects/hierarch9.png) @@ -772,11 +772,11 @@ As with selections, the [`LISTBOX GET CELL POSITION`](../commands/listbox-get-ce #### ブレーク行の管理 -If the user selects a break row, [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) returns the first occurrence of the row in the corresponding array. 以下のケースで: +ユーザーがブレーク行を選択すると、 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) は対応する配列の最初のオカレンスを返します。 以下のケースで: ![](../assets/en/FormObjects/hierarch11.png) -... [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) returns (2;4). To select a break row by programming, you will need to use the [`LISTBOX SELECT BREAK`](../commands/listbox-select-break) command. +[`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) は (2;4) を返します。 プログラムでブレーク行を選択するには [`LISTBOX SELECT BREAK`](../commands/listbox-select-break) コマンドを使用する必要があります。 ブレーク行はリストボックスのグラフィカルな表示 (スタイルやカラー) を管理する内部的な配列では考慮されません。 しかし、オブジェクトのグラフィックを管理するオブジェクト (フォーム) テーマのコマンドを使用してブレーク行の表示を変更できます。 階層を構成する配列に対して、適切なコマンドを実行します。 @@ -802,17 +802,17 @@ If the user selects a break row, [`LISTBOX GET CELL POSITION`](../commands/listb `On Expand` や `On Collapse` フォームイベントを使用して階層リストボックスの表示を最適化できます。 -階層リストボックスはその配列の内容から構築されます。 そのためこれらの配列すべてがメモリにロードされる必要があります。 This makes it difficult to build large hierarchical list boxes based on arrays generated from data (through the [`SELECTION TO ARRAY`](../commands/selection-to-array) command), not only because of the display speed but also the memory used. +階層リストボックスはその配列の内容から構築されます。 そのためこれらの配列すべてがメモリにロードされる必要があります。 大量のデータから ([`SELECTION TO ARRAY`](../commands/selection-to-array) コマンドを使用して) 生成される配列をもとに階層リストボックスを構築するのは、表示速度だけでなくメモリ使用量の観点からも困難が伴います。 -`On Expand` と `On Collapse` フォームイベントを使用することで、この制限を回避できます。 たとえば、ユーザーのアクションに基づいて階層の一部だけを表示したり、必要に応じて配列をロード/アンロードできます。 In the context of these events, the [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) command returns the cell where the user clicked in order to expand or collapse a row. +`On Expand` と `On Collapse` フォームイベントを使用することで、この制限を回避できます。 たとえば、ユーザーのアクションに基づいて階層の一部だけを表示したり、必要に応じて配列をロード/アンロードできます。 これらのイベントのコンテキストでは、[`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) コマンドは、行を展開/折りたたむためにユーザーがクリックしたセルを返します。 この場合、開発者がコードを使用して配列を空にしたり値を埋めたりしなければなりません。 実装する際注意すべき原則は以下のとおりです: * リストボックスが表示される際、先頭の配列のみ値を埋めます。 しかし 2番目の配列を空の値で生成し、リストボックスに展開/折りたたみアイコンが表示されるようにしなければなりません: ![](../assets/en/FormObjects/hierarch15.png) -* ユーザーが展開アイコンをクリックすると `On Expand` イベントが生成されます。 The [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) command returns the cell concerned and lets you build the appropriate hierarchy: you fill the first array with the repeated values and the second with the values sent from the [`SELECTION TO ARRAY`](../commands/selection-to-array) command and you insert as many rows as needed in the list box using the [`LISTBOX INSERT ROWS`](../commands/listbox-insert-rows) command. ![](../assets/en/FormObjects/hierarch16.png) +* ユーザーが展開アイコンをクリックすると `On Expand` イベントが生成されます。 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) コマンドはクリックされたセルを返すので、適切な階層を構築します: 先頭の配列に繰り返しの値を設定し、2番目の配列には [`SELECTION TO ARRAY`](../commands/selection-to-array) コマンドから得られる値を設定します。 そして[`LISTBOX INSERT ROWS`](../commands/listbox-insert-rows) コマンドを使用して必要なだけ行を挿入します。 ![](../assets/en/FormObjects/hierarch16.png) -* ユーザーが折りたたみアイコンをクリックすると `On Collapse` イベントが生成されます。 The [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) command returns the cell concerned: you remove as many rows as needed from the list box using the [`LISTBOX DELETE ROWS`](../commands/listbox-delete-rows) command. +* ユーザーが折りたたみアイコンをクリックすると `On Collapse` イベントが生成されます。 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) コマンドはクリックされたセルを返すので、 [`LISTBOX DELETE ROWS`](../commands/listbox-delete-rows) コマンドを使用してリストボックスから必要なだけ行を削除します。 ## オブジェクト配列の使用 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/REST/manData.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/REST/manData.md index 36706bacb91db1..e202253e90ae96 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/REST/manData.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/REST/manData.md @@ -22,7 +22,7 @@ REST API を使って、4D内と同等のデータ操作をおこなうことが [\{dataClass\}(\{key\})](dataClass.md#dataclasskey) でデータクラスのいちエンティティを取得する以外にも、エンティティセレクションやコレクションを返す [クラス関数](ClassFunctions.md#関数の呼び出し) を用意することもできます。 -Before returning a selection, you can also sort it by using [`$orderby`]($orderby.md) on one or more attributes (even relation attributes). +戻り値としてセレクションを返す前に、[`$orderby`]($orderby.md) を使って一つ以上の属性 (リレーション属性も可) を基準に並べ替えることもできます。 ## データのナビゲーション diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-19/WebServer/authentication.md b/i18n/ja/docusaurus-plugin-content-docs/version-19/WebServer/authentication.md index 64fa63784bfddf..1745bfbc97110c 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-19/WebServer/authentication.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-19/WebServer/authentication.md @@ -119,7 +119,7 @@ BASICモードと同様に、ユーザーは接続時に自分の名前とパス -> $RequestAccepted : Boolean ``` -> `On Web Authentication` データベースメソッドのすべての引数が必ず値を受け取るわけではありません。 The information received by the database method depends on the selected [authentication mode](#authentication-modes). +> `On Web Authentication` データベースメソッドのすべての引数が必ず値を受け取るわけではありません。 このデータベースメソッドが受け取る情報は、[認証モード](#authentication-modes)の設定により異なります。 #### $1 - URL diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/API/CollectionClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/API/CollectionClass.md index b073eab4be9478..a1e68f21ebc952 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/API/CollectionClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/API/CollectionClass.md @@ -3220,15 +3220,15 @@ $r:=$c.reduceRight(Formula($1.accumulator*=$1.value); 1) // 戻り値は 86400 > このコマンドは、元のコレクションを変更します。 引数もなしに呼び出された場合、`.sort()` はスカラー値 (数値、テキスト、日付、ブール) のみを並べ替えます。 デフォルトでは、要素はそれぞれの型に応じて昇順で並べ替えられます。 -You can also pass one of the following constants in the *ascOrDesc* parameter: +*ascOrDesc* 引数には、以下の定数のいずれか一つを渡すことができます: ``` - |Constant| Type|Value|Comment| + |定数| 型|値|詳細| |---|---|---|---| - |ck ascending|Integer|0|Elements are ordered in ascending order (default)| - |ck descending|Integer|1|Elements are ordered in descending order| + |ck ascending|Integer|0|要素は昇順に並んでいます(デフォルト)| + |ck descending|Integer|1|要素は降順に並んでいます| - This syntax orders scalar values in the collection only (other element types such as objects or collections are returned unordered). + このシンタックスはコレクション内のスカラー値のみを並び替えます(オブジェクトやコレクションなどの他の型の要素は並べ替えされません)。 ``` コレクションが異なる型の要素を格納している場合、それらはまず型ごとにグループ分けされ、そのあとで並べ替えられます。 型は以下の順番で返されます: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/API/WebServerClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/API/WebServerClass.md index 17424e7687aaaa..355622d42cb192 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/API/WebServerClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/API/WebServerClass.md @@ -318,7 +318,7 @@ The HTTPリクエストログファ **.isRunning** : Boolean -*内容* +*読み取り専用プロパティ* Webサーバーで旧式セッションが有効されている場合に true、それ以外は false。 @@ -417,7 +417,7 @@ The HTTPリクエストログファ **.name** : Text -*内容* +*読み取り専用プロパティ* Webサーバーアプリケーションの名称。 @@ -429,7 +429,7 @@ The HTTPリクエストログファ **.openSSLVersion** : Text -*内容* +*読み取り専用プロパティ* 使用されている OpenSSLライブラリのバージョン。 @@ -441,7 +441,7 @@ The HTTPリクエストログファ **.perfectForwardSecrecy** : Boolean -*内容* +*読み取り専用プロパティ* サーバーの PFS利用可否状況。 @@ -489,7 +489,7 @@ The HTTPリクエストログファ セッションID の保存に使用されるセッションcookie の名称。 -*内容* +*読み取り専用プロパティ* diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md index b7c42db2785c20..8855875dcf17ae 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md @@ -7,7 +7,7 @@ title: コンポーネント ## コンポーネントのインストール -いくつかのコンポーネントは [4D開発環境にプリインストール](Extensions/overview.md) されていますが、4Dコミュニティによる多くの 4Dコンポーネントが [GitHub 上に公開](https://github.com/search?q=4d-component&type=Repositories) されています。 また、[独自の 4Dコンポーネントを開発](Extensions/develop-components.md) することもできます。 +いくつかのコンポーネントは [4D開発環境にプリインストール](Extensions/overview.md) されていますが、4Dコミュニティによる多くの 4Dコンポーネントが [GitHub 上に公開](https://github.com/topics/4d-component) されています。 また、[独自の 4Dコンポーネントを開発](Extensions/develop-components.md) することもできます。 4Dプロジェクトのコンポーネントのインストールとロードは、[4D依存関係マネージャー](../Project/components.md) を介しておこなわれます。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md index 33293b4f3746fd..5d1a6166262a90 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md index 668003a8ccf9e7..a3dee0bff39419 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: フィールドプロパティ --- -他のフィールドプロパティについては、[doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.ja.html#5523008) を参照してください。 +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md index ec48521b51969e..bf66478c6aaa1d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md @@ -56,7 +56,7 @@ title: フォームエディター | アイコン | 名称 | 説明 | | ------------------------------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | フォーム実行 | フォームの実行をテストするために使用します。 このボタンをクリックすると、4D は新しいウィンドウを開き、そのコンテキストでフォームを表示します (リストフォームの場合レコードリスト、詳細フォームの場合カレントレコード)。 フォームはメインプロセスで実行されます。 | -| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#オブジェクトの選択) | フォームオブジェクトの選択、移動、そしてリサイズを行います。

    **注意**: テキストやグループボックスタイプのオブジェクトを選択すると、**Enter** キーを押すことで編集モードになります。

    | +| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#オブジェクトの選択) | フォームオブジェクトの選択、移動、そしてリサイズを行います。
    **注**: テキストやグループボックスタイプのオブジェクトを選択すると、**Enter**キーを押すことで編集モードになります。 | | ![](../assets/en/FormEditor/zOrder.png) | [入力順](#データの入力順) | "入力順" モードに切り替わり、フォームの現在の入力順を表示・変更できます。 入力順は、バッジを使用して確認することもできます。 | | ![](../assets/en/FormEditor/moving.png) | [移動](#オブジェクトの移動) | "移動" モードに移行し、ウィンドウ中をドラッグ&ドロップすることで素早くフォームの表示部分を移動することができます。 このモードでカーソルは手の形になります。 このモードは、フォームを拡大表示している時に特に便利です。 | | ![](../assets/en/FormEditor/zoom.png) | [拡大](#拡大) | フォーム表示の拡大/縮小率を変更できます (デフォルトで100%)。 "拡大/縮小" モードにするには虫眼鏡をクリックするか、拡大/縮小率バーをクリックします。 この機能は前節で説明しています。 | @@ -146,11 +146,11 @@ title: フォームエディター ツールバーを使用してオブジェクトを選択するには: -1. ツールバーの矢印ツールをクリックします。

    ![](../assets/en/FormEditor/selection.png)

    +1. ツールバーの矢印ツールをクリックします。
    ![](../assets/en/FormEditor/selection.png) -

    マウスカーソルをフォームエリアに移動すると、カーソルは標準の矢印の形をしたポインターに変わります

    。 +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表します。

    ![](../assets/en/FormEditor/selectResize.png)

    +2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表します。
    ![](../assets/en/FormEditor/selectResize.png) プロパティリストを使用してオブジェクトを選択するには: @@ -242,13 +242,13 @@ title: フォームエディター 1. グループ化したいオブジェクトを選択します。 2. オブジェクトメニューから **グループ化** を選択します。 または - フォームエディターのツールバーでグループ化ボタンをクリックします。

    ![](../assets/en/FormEditor/group.png)

    + フォームエディターのツールバーでグループ化ボタンをクリックします。
    ![](../assets/en/FormEditor/group.png) 4D は、新たにグループ化されたオブジェクトの境界をハンドルで表わします。 グループ内の各オブジェクトの境界にはハンドルが表示されません。 これ以降、グループ化されたオブジェクトを編集すると、グループを構成する全オブジェクトが変更されます。 オブジェクトのグループ化を解除するには: 1. グループ化を解除したいグループオブジェクトを選択します。 -2. **オブジェクト**メニューから**グループ解除** を選択します。

    あるいは

    フォームエディターのツールバーで **グループ化解除** ボタン (**グループ化** ボタンのサブ項目) をクリックします。

    **グループ化解除** が選択不可の場合、選択したオブジェクトはグループに属していないことを意味します。

    4D は個々のオブジェクトの境界をハンドルで表わします。 +2. **オブジェクト**メニューから**グループ解除** を選択します。
    あるいは
    フォームエディターのツールバーで **グループ化解除** ボタン (**グループ化** ボタンのサブ項目) をクリックします。
    **グループ化解除** が選択不可の場合、選択したオブジェクトはグループに属していないことを意味します。 4D は個々のオブジェクトの境界をハンドルで表わします。 ### オブジェクトの整列 @@ -276,9 +276,9 @@ title: フォームエディター このダイアログボックスを表示するには、揃えたいオブジェクトを選択し、**オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 -- “左/右整列” や “上/下整列” エリアで、実行しようとする整列に対応する整列アイコンをクリックします。

    見本エリアには、選択結果が表示されます。

    +- “左/右整列” や “上/下整列” エリアで、実行しようとする整列に対応する整列アイコンをクリックします。
    見本エリアには、選択結果が表示されます。 -- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 または:

    特定のオブジェクトを基準にオブジェクトを揃えるには、**整列** オプションを選択し、整列基準としたいオブジェクトを一覧から選択します。 この場合、基準オブジェクトの位置は変わりません。

    +- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 または:
    特定のオブジェクトを基準にオブジェクトを揃えるには、**整列** オプションを選択し、整列基準としたいオブジェクトを一覧から選択します。 この場合、基準オブジェクトの位置は変わりません。 **プレビュー** ボタンをクリックすると、整列の結果をプレビューすることができます。 するとフォームエディター上のオブジェクトは見かけ上整列しますが、ダイアログボックスが表示されたままなので、この整列のキャンセルや適用をおこなうことができます。 @@ -315,7 +315,8 @@ title: フォームエディター 1. 3つ以上のオブジェクトを選択し、希望する均等配置ツールをクリックします。 -2. 適用したい均等配置に対応する整列ツールをツールバー上で選択します。

    ![](../assets/en/FormEditor/distributionTool.png)

    あるいは

    **オブジェクト**メニュー内の**整列** サブメニュー、またはエディターのコンテキストメニューから分配メニューコマンドを選択します。

    4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 +2. 適用したい均等配置に対応する整列ツールをツールバー上で選択します。
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 "整列と均等配置" ダイアログボックスを用いてオブジェクトを均等に配置するには: @@ -323,9 +324,9 @@ title: フォームエディター 2. **オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 次のダイアログボックスが表示されます: [](../assets/en/FormEditor/alignmentAssistant.png) -3. "左/右整列" や "上/下整列" エリアで、標準の均等配置アイコンをクリックします: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (標準の横均等揃えアイコン)

    見本エリアには、選択結果が表示されます。 +3. "左/右整列" や "上/下整列" エリアで、標準の均等配置アイコンをクリックします: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (標準の横均等揃えアイコン)
    見本エリアには、選択結果が表示されます。 -4. 標準の均等配置を実行するには、**プレビュー** または **適用** をクリックします。

    この場合、4D は標準の均等配置を実行し、オブジェクトは等間隔で配置されます。

    あるいは:

    特定の均等配置を実行するには、**均等配置** オプションを選択します (たとえば各オブジェクトの右辺までの距離をもとにしてオブジェクトを均等に配置したい場合)。 このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:

    +4. 標準の均等配置を実行するには、**プレビュー** または **適用** をクリックします。
    この場合、4D は標準の均等配置を実行し、オブジェクトは等間隔で配置されます。
    あるいは:
    特定の均等配置を実行するには、**均等配置** オプションを選択します (たとえば各オブジェクトの右辺までの距離をもとにしてオブジェクトを均等に配置したい場合)。 このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:
    - 左/右整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの左辺、中央 (横)、 右辺で均等に揃えます。 - 上/下整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの上辺、中央 (縦)、 下辺で均等に揃えます。 @@ -380,11 +381,11 @@ JSONフォームの入力順序の設定は、[`entryOrder`](properties_JSONref. 入力順モードに切り替え、入力順を変更するには: -1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:
    ![](../assets/en/FormEditor/zOrder.png)
    ポインターが入力順ポインターに変わり、4D はフォーム上に線を引いて、データ入力時にオブジェクトが選択される順序を示します。 ツールパレット上の他のツールをクリックするまでは、入力順序の表示と変更操作しかおこなえません。 -2. データ入力順を変更するには、フォームオブジェクト上にポインターを置き、マウスボタンを押したまま、次の入力順に設定したいオブジェクトまでポインターをドラッグします。

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D はそれに応じて入力順を調整します。 +2. データ入力順を変更するには、フォームオブジェクト上にポインターを置き、マウスボタンを押したまま、次の入力順に設定したいオブジェクトまでポインターをドラッグします。
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D はそれに応じて入力順を調整します。 3. 入力順を設定したいだけ、ステップ2 を繰り返します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md index aad5530955644b..36a6abaf633cf6 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md @@ -212,15 +212,15 @@ title: 動作 ## 標準アクション -アクティブオブジェクトにより実行される典型的な処理 (例: レコードの入力・取り消し・削除、レコード間の移動、マルチページフォームでのページ間の移動、など) は、4D より標準アクションとして提供されています。 詳細な情報に関しては、*デザインリファレンス* の [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) の章を参照ください。 +アクティブオブジェクトにより実行される典型的な処理 (例: レコードの入力・取り消し・削除、レコード間の移動、マルチページフォームでのページ間の移動、など) は、4D より標準アクションとして提供されています。 詳細な情報に関しては、*デザインリファレンス* の [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) の章を参照ください。 There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). フォームオブジェクトには、標準アクションとメソッドの両方を割り当てることができます。 この場合、標準アクションは通常、メソッドの後に実行されます。また、4D はこのアクションを使用して、カレントコンテキストに応じてオブジェクトを有効化/無効化します。 フォームオブジェクトが無効化されていた場合、関連づけられたメソッドは実行されません。 #### JSON 文法 -| 名称 | データタイプ | とりうる値 | -| ------ | ------ | ------------------------------------------------------------------------------------ | -| action | string | 有効な [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) | +| 名称 | データタイプ | とりうる値 | +| ------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### 対象オブジェクト diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md index 29e1132a0df443..eb60ae72c2ff5e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md @@ -469,7 +469,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection この関数は、データクラスのエンティティセレクションまたはエンティティが要求されるたびに呼び出されます。 フィルターは、エンティティセレクションが作成されたときに一度だけ実行されます。 -フィルターは、データクラスのエンティティセレクションを返さなければなりません。 戻り値のエンティティセレクションには、クエリの結果や、[`Storage`] に格納されているものなどが使えます。 +フィルターは、データクラスのエンティティセレクションを返さなければなりません。 It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 9b6f26afd6daa1..8f0c50be7ae228 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: ORDA Events +title: Entity Events ---
    履歴 @@ -11,13 +11,13 @@ title: ORDA Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::info note Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -25,7 +25,7 @@ ORDA events in the datastore are equivalent to triggers in the 4D database. Howe ### Event level -A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). +A entity event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute. @@ -49,7 +49,7 @@ With other remote configurations (i.e. Qodly applications, [REST API requests](. ### Summary table -The following table lists ORDA events along with their rules. +The following table lists ORDA entity events along with their rules. | イベント | レベル | Function name | (C/S) Executed on | | :------------------- | :----- | :------------------------------------------------------ | :------------------------------------------------------------------: | @@ -67,11 +67,11 @@ The [`constructor()`](./ordaClasses.md#class-constructor-1) function is not actu Event functions accept a single *event* object as parameter. When the function is called, the parameter is filled with several properties: -| プロパティ名 | 利用可能性 | 型 | 説明 | -| :-------------- | :------------------------------------- | :-- | :------------------------------------------------------------------------------------- | -| `kind` | Always | 文字列 | Event name ("touched") | -| *attributeName* | Only for events involving an attribute | 文字列 | Attribute name (*e.g.* "firstname") | -| *dataClassName* | Always | 文字列 | Dataclass name (*e.g.* "Company") | +| プロパティ名 | 利用可能性 | 型 | 説明 | +| :-------------- | :----------- | :-- | :------------------------------------------------------------------------------------- | +| `kind` | Always | 文字列 | イベント名("touched") | +| *attributeName* | 属性に関するイベントのみ | 文字列 | Attribute name (*e.g.* "firstname") | +| *dataClassName* | Always | 文字列 | Dataclass name (*e.g.* "Company") | ## Event function description @@ -87,8 +87,8 @@ Event functions accept a single *event* object as parameter. When the function i This event is triggered each time a value is modified in the entity. -- if you defined the function at the entity level (first syntax), it is triggered for modifications on any attribute of the entity. -- if you defined the function at the attribute level (second syntax), it is triggered only for modifications on this attribute. +- 関数をエンティティレベルで定義していた場合(第一シンタックス)、その関数はエンティティの任意の属性における変更に対してトリガーされます。 +- 関数を属性レベルで定義していた場合(第二シンタックス)、関数はその属性に対する変更に対してのみトリガーされます。 This event is triggered as soon as the 4D Server / 4D engine can detect a modification of attribute value which can be due to the following actions: @@ -101,7 +101,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi The function receives an [*event* object](#event-parameter) as parameter. -If this event [throws](../commands-legacy/throw.md) an error, it will not stop the undergoing action. +このイベントがエラーを[throw](../commands-legacy/throw.md) する場合でも、進行中のアクションは停止しません。 :::note diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Project/components.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Project/components.md index 63488266de291f..0318156284d0d5 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Project/components.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/Project/components.md @@ -5,7 +5,7 @@ title: 依存関係 4D のコンポーネントとは、プロジェクトに追加可能な、1つ以上の機能を持つ 4Dコードや 4Dフォームの一式です。 たとえば、[4D SVG](https://github.com/4d/4D-SVG)コンポーネント は、SVGファイルの表示するための高度なコマンドと統合されたレンダリングエンジンを追加します。 -独自の 4Dコンポーネントを [開発](../Extensions/develop-components.md) し、[ビルド](../Desktop/building.md) することもできますし、4Dコミュニティによって共有されているパブリックコンポーネントを [GitHubで見つけて](https://github.com/search?q=4d-component\\\\\\&type=Repositories) ダウンロードすることもできます。 +独自の 4Dコンポーネントを [開発](../Extensions/develop-components.md) し、[ビルド](../Desktop/building.md) することもできますし、4Dコミュニティによって共有されているパブリックコンポーネントを [GitHubで見つけて](https://github.com/topics/4d-component) ダウンロードすることもできます。 4D で開発する際、コンポーネントファイルはコンピューター上または Githubリポジトリ上に、透過的に保存することができます。 @@ -339,7 +339,7 @@ GitHubでリリースが作成されると、そこに**タグ**と**バージ 依存関係マネージャは、それぞれのコンポーネントが持つ `dependencies.json` ファイルを読み込み、可能な限り指定されたバージョンを遵守しつつ全ての必要な依存関係を回帰的にインストールします。 これによって、ネストされた依存関係を手動で特定し、一つずつ追加しなくても済むようになります。 -- **コンフリクトの解決**: 複数の依存関係が同じコンポーネントの[異なるバージョン](#) を必要とする場合、依存関係マネージャは全ての重なったバージョン範囲を満たすバージョンを探し出すことでコンフリクトを自動的に解決しようとします。 一次依存関係が二次依存関係とコンフリクトを起こした場合には、一次依存関係が優先されます。 +- **コンフリクトの解決**: 複数の依存関係が同じコンポーネントの[異なるバージョン](#defining-a-github-dependency-version-range) を必要とする場合、依存関係マネージャは全ての重なったバージョン範囲を満たすバージョンを探し出すことでコンフリクトを自動的に解決しようとします。 一次依存関係が二次依存関係とコンフリクトを起こした場合には、一次依存関係が優先されます。 :::note @@ -516,7 +516,7 @@ GitHub 依存関係は[**dependencies.json**](#dependenciesjson) ファイル内 #### GitHub 依存関係バージョン範囲の変更 -You can modify the [version setting](#defining-a-github-dependency-version-range) for a listed GitHub dependency: select the dependency to modify and select **Modify the dependency...** from the contextual menu. In the "Modify the dependency" dialog box, edit the Dependency Rule menu and click **Apply**. +一覧に表示されたGitHub 依存関係に対して[バージョン設定](#github-依存関係のバージョン範囲を定義) を編集することができます: 編集する依存関係を選択し、コンテキストメニューから**依存関係を編集...** を選択して下さい。 In the "依存関係を編集" ダイアログボックス内にて、依存関係のルールメニューを編集し、**適用** をクリックします。 バージョン範囲の変更は、自動アップデート機能を使用しているときに依存関係を特定のバージョン番号にロックしておきたいときに有用です。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md index bc02e94eaca792..d2391813312363 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md @@ -201,7 +201,7 @@ Else End if ``` -:::note +:::tips 関連したblog 記事 [高度な Webアプリケーションに対応したスケーラブルセッション](https://blog.4d.com/ja/scalable-sessions-for-advanced-web-applications/) diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/WritePro/writeprointerface.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/WritePro/writeprointerface.md index fc2acfdb8020c0..c73338891c9f16 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/WritePro/writeprointerface.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/WritePro/writeprointerface.md @@ -10,10 +10,10 @@ slug: /WritePro/write-pro-interface インターフェースのマニュアルについては、*4D デザインリファレンス* の [4D Write Pro エリアのドキュメント](https://doc.4d.com/4Dv20/4D/20/Entry-areas.300-6263967.ja.html) を参照ください。 -You will find below: +ここには以下のような情報があります: -- the Table Wizard configuration documentation, -- the integrated A.I. ドキュメント. +- 表ウィザード設定ドキュメンテーション +- 統合されたAIについての ドキュメント. ## 表ウィザード @@ -303,36 +303,36 @@ JSONファイルで設定する各属性に対して、以下の WP属性を定 [4D Write Pro - 表ウィザード (チュートリアル動画)](https://www.youtube.com/watch?v=2ChlTju-mtM) -## Integrated AI +## 統合されたAI -You can use an integrated AI in the 4D Write Pro interface so that you can easily translate or enhance your documents without having to use an external AI application. +4D Write Pro インターフェース内に統合されたAI を使用して、外部AI アプリケーションを使用することなくドキュメントを簡単に要約したり改善したりすることができます。 -Once you have enabled the AI feature, you can display a chat box over your 4D Write Pro document and interact with *chatGPT* to modify the text of the selection or of the document itself. +AI 機能を有効化すると、4D Write Pro ドキュメント上にチャットボックスが表示され、そこから*chatGPT* とやりとりをすることで選択したテキストやドキュメント自身を変更することができます。 :::note -The 4D Write Pro interface uses OpenAI, for which you need to provide your own key (see below). +4D Write Pro インターフェースはOpenAI を使用し、これを使用するためにはご自身のキーを提供する必要があります(以下参照)。 ::: -### Limitations (Developer Preview) +### 制約(デベロッパープレビュー) -In the current implementation, the feature has the following limitations: +現在の実装では、この機能では以下のような制約があります: -- use of a predefined AI provider and necessity to pass your OpenAI key -- basic chatting features -- no image handling -- non-configurable predefined action commands -- predefined translations English/French and French/English only +- 使用するAI プロバイダーが決められていることと、OpenAI キーを渡す必要があること +- 基本的なチャット機能 +- 画像処理なし +- 設定不可な定義済みアクションコマンド +- 定義済みの翻訳は英語→フランス語とフランス語→英語のみ -### Enabling the AI feature +### AI機能の有効化 -The AI dialog box is available by clicking on a button in the 4D Write Pro interface. This button is **hidden by default**, you need to enable it explicitely. +AI ダイアログボックスは4D Write Pro インターフェース内のボタンをクリックすることで利用可能になります。 このボタンは**デフォルトでは非表示** なので、明示的に有効化する必要があります。 -To display the AI dialog box button, you need to: +AI ダイアログボックスボタンを表示するためには、以下の操作が必要です: -1. Get an API key from the [OpenAI website](https://openai.com/api/). -2. Execute the following 4D code: +1. [OpenAI website](https://openai.com/api/) からAPI キーを取得する。 +2. 以下の4D コードを実行する: ```4d @@ -342,44 +342,44 @@ WP SetAIKey ("") // :::note -No checking is done on the OpenAI key validity. If it is invalid, the *chatGPT* box will stay empty. +OpenAi キーの有効性に関するチェックは行われません。 キーが無効だった場合には、*chatGPT* ボックスは空のままになります。 ::: -The **A.I.** button is then displayed: +その後**A.I.** ボタンは、以下の場所に表示されます: ![ai button](../assets/en/WritePro/ai-button.png) -- in the 4D Write Pro Toolbar, in the **Import Export** tab, -- in the 4D Write Pro Widget, in the **Font Style** tab. +- **読み込み書き出し** タブ内の4D Write Pro ツールバー内 +- **フォントスタイル** タブ内の4D Write Pro ウィジェット内。 -Click on the button to display the AI dialog box. +AI ダイアログボックスを表示するには、ボタンをクリックしてください。 -### AI dialog box +### AI ダイアログボックス -The 4D Write Pro AI dialog box allows a straightforward interaction between the chat area and the 4D Write Pro document. +4D Write Pro AI ダイアログボックスを使用するとチャットエリアと4D Write Pro ドキュメントとの簡単なやりとりを可能にします。 -#### Prompt area +#### プロンプトエリア -At the bottom of the window, the **prompt area** allows you to enter any question to send to the AI. +ウィンドウの下部には、**プロンプトエリア** があり、ここにAI に送信したい質問を入力することができます。 -To send your question to the AI, click on the Send button: +AI に質問を送信するためには、送信ボタンをクリックします: ![ai send](../assets/en/WritePro/ai-send.png) -The button icon changes when the same request is sent again: +同じリクエストが再度送信されると、ボタンのアイコンが変わります: ![ai resend](../assets/en/WritePro/ai-resend.png) -On the left side of this area, a pop up menu provides examples of common actions that can be usually delegated to the AI. +このエリアの左側にあるポップアップメニューには、通常AI にたずねるような一般的なアクションの一例が提供されています。 -Selecting an action writes a corresponding question to the prompt. If necessary, you can modify the question and then to click on the Send button to actually send it: +アクションを選択すると、それに対応した質問がプロンプトに入力さます。 必要であれば、質問を書き換えてから送信ボタンを押して送信することもできます: ![ai menu](../assets/en/WritePro/ai-menu.png) :::note -Default translation actions are based upon the current 4D default configuration and depend on available languages. +デフォルトの翻訳アクションはカレントの4D のデフォルト設定に基づき、利用可能な言語に依存します。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md index 24fd10a739da75..0d340f0e28706e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ title: OpenAI ## 設定プロパティ -| プロパティ名 | 型 | 説明 | 任意 | -| --------- | ---- | ---------------------------------------------------------- | ----------- | -| `apiKey` | Text | あなたの [OpenAI API キー](https://platform.openai.com/api-keys) | OpenAI では必須 | -| `baseURL` | Text | OpenAI API リクエストのためのベースURL。 | ◯ | -| `組織` | Text | あなたの OpenAI 組織 ID。 | ◯ | -| `project` | Text | あなたの OpenAI プロジェクト ID。 | ◯ | +| プロパティ名 | 型 | 説明 | 任意 | +| --------- | ---- | ---------------------------------------------------------- | --------------------------------------------------------- | +| `apiKey` | Text | あなたの [OpenAI API キー](https://platform.openai.com/api-keys) | プロバイダーによっては必須 | +| `baseURL` | Text | OpenAI API リクエストのためのベースURL。 | Yes (if omitted = use OpenAI provider) | +| `組織` | Text | あなたの OpenAI 組織 ID。 | ◯ | +| `project` | Text | あなたの OpenAI プロジェクト ID。 | ◯ | ### 追加のHTTPプロパティ diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatHelper.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatHelper.md index d72fcbf4b6e596..2668ad7f7d862a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatHelper.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAIChatHelper.md @@ -14,7 +14,7 @@ title: OpenAIChatHelper | `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | - | Open AI との通信で使用されるチャットAPI インスタンス。 | | `systemPrompt` | [OpenAIMessage](OpenAIMessage.md) | - | チャットアシスタントのレスポンスをガイドするためのシステムプロンプトメッセージ。 | | `numberOfMessages` | Integer | 5 | チャット履歴に保持するメッセージの最大数。 | -| `引数` | [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) | - | OpenAI チャット補完リクエスト用のパラメーター。 | +| `parameters` | [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) | - | OpenAI チャット補完リクエスト用のパラメーター。 | | `messages` | [OpenAIMessage](OpenAIMessage.md) のコレクション | [] | そのチャットセッション内でやりとりされたメッセージのコレクション。 | ## 関数 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md index 2afc35ae0f24b3..c7f6e6cc20e6a8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: プロバイダ 多くのAI プロバイダがOpenAI に似たAPI を提供しているので、このプロジェクトを使用してそれらに接続することができます。 -そのためには元の `baseURL` をプロバイダーのものに変更し、必要であればそのサービスのAPI キーを使用するだけです。 +そのためには元の `baseURL` をプロバイダーのものに設定し、必要であればそのサービスのAPI キーを使用するだけです。 ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ $client.baseURL:="https://api.mistral.ai/v1" ## リモート -| プロバイダ | ベースURL | +| プロバイダ | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ja/ | https://api.mistral.ai/v1/ja | | https://www.deepseek.com/ja/ | https://api.deepseek.com/ja | @@ -31,7 +31,7 @@ $client.baseURL:="https://api.mistral.ai/v1" ## ローカル -| プロバイダ | デフォルトのベースURL | ドキュメント | +| プロバイダ | デフォルトの baseURL | ドキュメント | | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ja/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ja/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md index c7e4e997250902..2a46d487876dc1 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md @@ -128,7 +128,11 @@ displayed_sidebar: docs   // On Server Open Connection データベースメソッド  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current timeコレクションの要素を並べ替え、並べ替えられた元のコレクションを返します 。 > このコマンドは、元のコレクションを変更します。 -引数もなしに呼び出された場合、`.sort()` はスカラー値 (数値、テキスト、日付、ブール) のみを並べ替えます。 デフォルトでは、要素はそれぞれの型に応じて昇順で並べ替えられます。 You can also pass one of the following constants in the *ascOrDesc* parameter: +引数もなしに呼び出された場合、`.sort()` はスカラー値 (数値、テキスト、日付、ブール) のみを並べ替えます。 デフォルトでは、要素はそれぞれの型に応じて昇順で並べ替えられます。 *ascOrDesc* 引数には、以下の定数のいずれか一つを渡すことができます: - |Constant| Type|Value|Comment| + |定数| 型|値|詳細| |---|---|---|---| - |ck ascending|Integer|0|Elements are ordered in ascending order (default)| - |ck descending|Integer|1|Elements are ordered in descending order| + |ck ascending|Integer|0|要素は昇順に並んでいます(デフォルト)| + |ck descending|Integer|1|要素は降順に並んでいます| - This syntax orders scalar values in the collection only (other element types such as objects or collections are returned unordered). + このシンタックスはコレクション内のスカラー値のみを並び替えます(オブジェクトやコレクションなどの他の型の要素は並べ替えされません)。 コレクションが異なる型の要素を格納している場合、それらはまず型ごとにグループ分けされ、そのあとで並べ替えられます。 型は以下の順番で返されます: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/API/DataClassClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/API/DataClassClass.md index 7c50aa187dc627..5c26f0e33a732f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/API/DataClassClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/API/DataClassClass.md @@ -1184,7 +1184,7 @@ $es:=ds.Movie.query("roles.actor.lastName = :1 AND roles.actor{2}.lastName = :2" * フォーミュラは処理されるエンティティごとに評価され、true または false を返さなくてはなりません。 クエリの実行中、フォーミュラの結果がブール値でなかった場合、それは false であるとみなされます。 * 処理中のエンティティはフォーミュラ内において `This` で参照されます。 -* if the `Formula` object is **null**, the error 1626 ("Expecting a text or formula") is generated, that you can intercept using a method installed with `ON ERR CALL`. +* `Formula` オブジェクトが **null** の場合、エラー1626 ("テキストまたはフォーミュラが必要です") が生成されます。このエラーは `ON ERR CALL` で実装したメソッドで割り込み可能です。 > セキュリティのため、 `query()` 関数内のフォーミュラ使用を禁止することができます。 *querySettings* パラメーターの説明を参照ください。 #### フォーミュラに引数を渡す diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Concepts/components.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Concepts/components.md index 638238501fa66e..2e3049c4d4bb7a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Concepts/components.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Concepts/components.md @@ -7,7 +7,7 @@ title: コンポーネント ## コンポーネントの見つけ方 -いくつかのコンポーネントは [4D開発環境にプリインストール](Extensions/overview.md) されていますが、4Dコミュニティによる多くの 4Dコンポーネントが [GitHub 上に公開](https://github.com/search?q=4d-component&type=Repositories) されています。 また、[独自の 4Dコンポーネントを開発](Extensions/develop-components.md) することもできます。 +Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). また、[独自の 4Dコンポーネントを開発](Extensions/develop-components.md) することもできます。 ## コンポーネントのインストール diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Concepts/operators.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Concepts/operators.md index 472be758eb2929..9114734be65366 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Concepts/operators.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Concepts/operators.md @@ -93,7 +93,7 @@ $a+=2 // $a=3 | | Time *= Number | Number | `$t1*=5 //$t1:=$t1*5` | | | Picture *= Number | Picture | `$p1*=5 //$p1:=$p1*5 ($p1 を 5倍にリサイズします)` | -These operators apply on any [assignable expressions](quick-tour.md#assignable-vs-non-assignable-expressions) except: +これらの演算子は、あらゆる[代入可能の式](quick-tour.md#代入可能vs代入不可) に対して適用されますが、以下は除きます: - オブジェクトプロパティあるいはコレクション要素としてのピクチャー - 配列のインデックス変数 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Desktop/clientServer.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Desktop/clientServer.md index 8a25b376c2b890..7dcdaddaac5b3c 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Desktop/clientServer.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Desktop/clientServer.md @@ -74,7 +74,7 @@ title: クライアント/サーバー管理 同じマシン上で 4D が 4D Server に接続すると、アプリケーションはシングルユーザーモードの 4D のようにふるまい、デザイン環境にてプロジェクトファイルの編集が可能です。 この機能により、クライアント/サーバーアプリケーションを運用時と同じコンテキストで開発することができます。 -> When 4D connects to a 4D Server on the same machine, the **development mode** is automatically activated, whatever the [Activate development mode](#opening-a-remote-project) option status. +> 同じマシン上で 4D Server に 4D を接続する場合には、 [開発モードを有効化](#リモートプロジェクトを開く) の設定にかかわらず **開発モード** が自動的に有効化されます。 デザイン環境にて 4D が **すべてを保存** アクションを (**ファイル** メニューを使って明示的に、または、アプリケーションモードへの移行により暗示的に) おこなうと、4D Server は同期的にプロジェクトファイルをリロードします。 4D Server によるプロジェクトファイルのリロードが完了するのを待って、4D は続行します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseEnter.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseEnter.md index 90eb5ad9f3f021..580d2b235722bc 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseEnter.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseEnter.md @@ -14,7 +14,7 @@ title: On Mouse Enter `On Mouse Enter` イベントは、*MouseX* および *MouseY* システム変数を更新します。 -Objects that are made invisible using the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command or the [Visibility](FormObjects/properties_Display.md#visibility) property do not generate this event. +[`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドの使用や、[表示状態](FormObjects/properties_Display.md#表示状態) プロパティの設定によって非表示にされたオブジェクトでは、このイベントは生成されません。 ### コールスタック diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseLeave.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseLeave.md index d3d0d2a1281f6a..0d22dd1ad1efdc 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseLeave.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseLeave.md @@ -14,7 +14,7 @@ title: On Mouse Leave `On Mouse Leave` イベントは、*MouseX* および *MouseY* システム変数を更新します。 -Objects that are made invisible using the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command or the [Visibility](FormObjects/properties_Display.md#visibility) property do not generate this event. +[`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドの使用や、[表示状態](FormObjects/properties_Display.md#表示状態) プロパティの設定によって非表示にされたオブジェクトでは、このイベントは生成されません。 ### コールスタック diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseMove.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseMove.md index 8f0701bc752a18..94b131b1243593 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseMove.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onMouseMove.md @@ -19,7 +19,7 @@ title: On Mouse Move `On Mouse Move` イベントは、*MouseX* および *MouseY* システム変数を更新します。 -Objects that are made invisible using the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command or the [Visibility](FormObjects/properties_Display.md#visibility) property do not generate this event. +[`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドの使用や、[表示状態](FormObjects/properties_Display.md#表示状態) プロパティの設定によって非表示にされたオブジェクトでは、このイベントは生成されません。 ### コールスタック diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onScroll.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onScroll.md index e0e611eaf03d52..19655b53d2d56e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onScroll.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onScroll.md @@ -14,7 +14,7 @@ title: On Scroll このイベントは、スクロールアクションに関連した他のすべてのユーザーイベント ([On Clicked](onClicked.md)、[On After Keystroke](onAfterKeystroke.md)、等) の後にトリガーされます。 このイベントは、オブジェクトメソッドの中でのみ生成されます (フォームメソッドでは生成されません)。 -このイベントは、ユーザーのアクションの結果としてスクロールが発生した場合にのみ生成されます: スクロールバー/カーソルの使用、マウスホイールまたは [キーボード](FormObjects/properties_Appearance.md#縦スクロールバー) の使用、等です。 It is not generated when the object is scrolled due to the execution of the [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) command. +このイベントは、ユーザーのアクションの結果としてスクロールが発生した場合にのみ生成されます: スクロールバー/カーソルの使用、マウスホイールまたは [キーボード](FormObjects/properties_Appearance.md#縦スクロールバー) の使用、等です。 [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) コマンド使用の結果スクロールした場合には生成されません。 ### ピクチャー入力 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onValidate.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onValidate.md index 78363c6579fa03..b8d5c35e84938d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onValidate.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Events/onValidate.md @@ -10,7 +10,7 @@ title: On Validate ## 説明 -This event is triggered when the record data entry has been validated, for example after an `accept` [standard action](FormObjects/properties_Action.md#standard-action). +このイベントは、`accept` [標準アクション](FormObjects/properties_Action.md#標準アクション)の後など、レコードのデータ入力が確定されたときにトリガーされます。 ### サブフォーム diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md index c5b1e8bee004a5..62c02ed59851a0 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/FormEditor/formEditor.md @@ -53,24 +53,24 @@ title: フォームエディター ツールバーには以下の要素があります: -| アイコン | 名称 | 説明 | -| ------------------------------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ![](../assets/en/FormEditor/execute.png) | フォーム実行 | フォームの実行をテストするために使用します。 このボタンをクリックすると、4D は新しいウィンドウを開き、そのコンテキストでフォームを表示します (リストフォームの場合レコードリスト、詳細フォームの場合カレントレコード)。 フォームはメインプロセスで実行されます。 | -| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#selecting-objects) | フォームオブジェクトの選択・移動・リサイズをおこないます。

    **注**: テキストやグループボックスタイプのオブジェクトを選択すると、**Enter**キーを押すことで編集モードになります。

    | -| ![](../assets/en/FormEditor/zOrder.png) | [入力順](#data-entry-order) | "入力順" モードに切り替わり、フォームの現在の入力順を表示・変更できます。 入力順は、バッジを使用して確認することもできます。 | -| ![](../assets/en/FormEditor/moving.png) | [移動](#moving-objects) | "移動" モードに移行し、ウィンドウ中をドラッグ&ドロップすることで素早くフォームの表示部分を移動することができます。 このモードでカーソルは手の形になります。 このモードは、フォームを拡大表示している時に特に便利です。 | -| ![](../assets/en/FormEditor/zoom.png) | [拡大](#zoom) | フォーム表示の拡大/縮小率を変更できます (デフォルトで100%)。 "拡大/縮小" モードにするには虫眼鏡をクリックするか、拡大/縮小率バーをクリックします。 この機能は前節で説明しています。 | -| ![](../assets/en/FormEditor/alignment.png) | [整列](#aligning-objects) | このボタンには、フォーム中でオブジェクトを均等に配置するためのメニューがリンクされています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。
    選択オブジェクトの位置が CSSプロパティによりロックされている場合は無効です。 | -| ![](../assets/en/FormEditor/distribution.png) | [均等配置](#distributing-objects) | このボタンには、フォーム中でオブジェクトの並びを揃えるためのメニューがリンクされています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。
    選択オブジェクトの位置が CSSプロパティによりロックされている場合は無効です。 | -| ![](../assets/en/FormEditor/level.png) | [レベル](#layering-objects) | このボタンには、フォーム上のオブジェクトの階層を変更するためのメニューが関連付けられています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。 | -| ![](../assets/en/FormEditor/group.png) | [グループ化/グループ解除](#grouping-objects) | このボタンには、フォーム上の選択オブジェクトのグループ化やグループ解除をおこなうためのメニューが関連付けられています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。 | -| ![](../assets/en/FormEditor/displyAndPage.png) | [表示とページ管理](forms.html#form-pages) | このエリアを使用して、フォームページ間の移動やページの追加ができます。 フォームページを移動するには矢印ボタンをクリックするか、または中央のエリアをクリックすると現われるメニューから表示したいページを選択します。 最終ページが表示されている状態で、右矢印ボタンをクリックすると、4D はページを追加します。 | -| ![](../assets/en/FormEditor/cssPreviewicon.png) | [CSSプレビュー](#css-preview) | このボタンで、使用する CSSモードを選択します。 | -| ![](../assets/en/FormEditor/views.png) | [ビュー管理](#views) | このボタンは、ビューパレットの表示や非表示をおこないます。 この機能については "オブジェクトビューを使用する" で説明しています。 | -| ![](../assets/en/FormEditor/shields2.png) | [バッジ表示](#shields) | このボタンをクリックするたびに、すべてのタイプのフォームバッジが順に表示されます。 また、このボタンには、表示するバッジタイプを直接選択できるメニューが関連付けられています。 | -| ![](../assets/en/FormEditor/library.png) | [定義済みオブジェクトライブラリ](objectLibrary.html) | このボタンは定義済みオブジェクトライブラリを表示します。 このライブラリは定義済みのプロパティを持つオブジェクトを多数提供します。 | -| ![](../assets/en/FormEditor/listBoxBuilder1.png) | [リストボックスビルダー](#list-box-builder) | このボタンは、新しいエンティティセレクション型リストボックスを作成します。 | -| ![](../assets/en/FormEditor/insertFields.png) | [フィールドを挿入](#insert-fields) | このボタンは、テーブルフォームにおいて、親テーブルの全フィールド (オブジェクト型と BLOB型を除く) をインターフェース標準に従ってラベル付きで挿入します。 | +| アイコン | 名称 | 説明 | +| ------------------------------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ![](../assets/en/FormEditor/execute.png) | フォーム実行 | フォームの実行をテストするために使用します。 このボタンをクリックすると、4D は新しいウィンドウを開き、そのコンテキストでフォームを表示します (リストフォームの場合レコードリスト、詳細フォームの場合カレントレコード)。 フォームはメインプロセスで実行されます。 | +| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | +| ![](../assets/en/FormEditor/zOrder.png) | [入力順](#data-entry-order) | "入力順" モードに切り替わり、フォームの現在の入力順を表示・変更できます。 入力順は、バッジを使用して確認することもできます。 | +| ![](../assets/en/FormEditor/moving.png) | [移動](#moving-objects) | "移動" モードに移行し、ウィンドウ中をドラッグ&ドロップすることで素早くフォームの表示部分を移動することができます。 このモードでカーソルは手の形になります。 このモードは、フォームを拡大表示している時に特に便利です。 | +| ![](../assets/en/FormEditor/zoom.png) | [拡大](#zoom) | フォーム表示の拡大/縮小率を変更できます (デフォルトで100%)。 "拡大/縮小" モードにするには虫眼鏡をクリックするか、拡大/縮小率バーをクリックします。 この機能は前節で説明しています。 | +| ![](../assets/en/FormEditor/alignment.png) | [整列](#aligning-objects) | このボタンには、フォーム中でオブジェクトを均等に配置するためのメニューがリンクされています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。
    選択オブジェクトの位置が CSSプロパティによりロックされている場合は無効です。 | +| ![](../assets/en/FormEditor/distribution.png) | [均等配置](#distributing-objects) | このボタンには、フォーム中でオブジェクトの並びを揃えるためのメニューがリンクされています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。
    選択オブジェクトの位置が CSSプロパティによりロックされている場合は無効です。 | +| ![](../assets/en/FormEditor/level.png) | [レベル](#layering-objects) | このボタンには、フォーム上のオブジェクトの階層を変更するためのメニューが関連付けられています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。 | +| ![](../assets/en/FormEditor/group.png) | [グループ化/グループ解除](#grouping-objects) | このボタンには、フォーム上の選択オブジェクトのグループ化やグループ解除をおこなうためのメニューが関連付けられています。 このボタンは選択されているオブジェクトに応じて有効/無効になります。 | +| ![](../assets/en/FormEditor/displyAndPage.png) | [表示とページ管理](forms.html#form-pages) | このエリアを使用して、フォームページ間の移動やページの追加ができます。 フォームページを移動するには矢印ボタンをクリックするか、または中央のエリアをクリックすると現われるメニューから表示したいページを選択します。 最終ページが表示されている状態で、右矢印ボタンをクリックすると、4D はページを追加します。 | +| ![](../assets/en/FormEditor/cssPreviewicon.png) | [CSSプレビュー](#css-preview) | このボタンで、使用する CSSモードを選択します。 | +| ![](../assets/en/FormEditor/views.png) | [ビュー管理](#views) | このボタンは、ビューパレットの表示や非表示をおこないます。 この機能については "オブジェクトビューを使用する" で説明しています。 | +| ![](../assets/en/FormEditor/shields2.png) | [バッジ表示](#shields) | このボタンをクリックするたびに、すべてのタイプのフォームバッジが順に表示されます。 また、このボタンには、表示するバッジタイプを直接選択できるメニューが関連付けられています。 | +| ![](../assets/en/FormEditor/library.png) | [定義済みオブジェクトライブラリ](objectLibrary.html) | このボタンは定義済みオブジェクトライブラリを表示します。 このライブラリは定義済みのプロパティを持つオブジェクトを多数提供します。 | +| ![](../assets/en/FormEditor/listBoxBuilder1.png) | [リストボックスビルダー](#list-box-builder) | このボタンは、新しいエンティティセレクション型リストボックスを作成します。 | +| ![](../assets/en/FormEditor/insertFields.png) | [フィールドを挿入](#insert-fields) | このボタンは、テーブルフォームにおいて、親テーブルの全フィールド (オブジェクト型と BLOB型を除く) をインターフェース標準に従ってラベル付きで挿入します。 | ### オブジェクトバー @@ -146,11 +146,11 @@ title: フォームエディター ツールバーを使用してオブジェクトを選択するには: -1. ツールバーの矢印ツールをクリックします。

    ![](../assets/en/FormEditor/selection.png)

    +1. ツールバーの矢印ツールをクリックします。
    ![](../assets/en/FormEditor/selection.png) -

    マウスカーソルをフォームエリアに移動すると、カーソルは標準の矢印の形をしたポインターに変わります

    。 +
    マウスカーソルをフォームエリアに移動すると、カーソルは標準の矢印の形をしたポインターに変わります。 -2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表わします。

    ![](../assets/en/FormEditor/selectResize.png)

    +2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表わします。
    ![](../assets/en/FormEditor/selectResize.png) プロパティリストを使用してオブジェクトを選択するには: @@ -235,13 +235,12 @@ title: フォームエディター オブジェクトをグループ化するには: 1. グループ化したいオブジェクトを選択します。 -2. オブジェクトメニューから **グループ化** を選択します。 または フォームエディターのツールバーでグループ化ボタンをクリックします。

    ![](../assets/en/FormEditor/group.png)

    -4D は、新たにグループ化されたオブジェクトの境界をハンドルで表わします。 グループ内の各オブジェクトの境界にはハンドルが表示されません。 これ以降、グループ化されたオブジェクトを編集すると、グループを構成する全オブジェクトが変更されます。 +2. オブジェクトメニューから **グループ化** を選択します。 OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. グループ内の各オブジェクトの境界にはハンドルが表示されません。 これ以降、グループ化されたオブジェクトを編集すると、グループを構成する全オブジェクトが変更されます。 オブジェクトのグループ化を解除するには: 1. グループ化を解除したいグループオブジェクトを選択します。 -2. **オブジェクト** メニューから **グループ化解除** を選択します。

    OR

    フォームエディターのツールバーで **グループ化解除** ボタン (**グループ化** ボタンのサブ項目) をクリックします。

    **グループ化解除** が選択不可の場合、選択したオブジェクトはグループに属していないことを意味します。

    4D は個々のオブジェクトの境界をハンドルで表わします。 +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D は個々のオブジェクトの境界をハンドルで表わします。 ### オブジェクトの整列 @@ -268,9 +267,10 @@ title: フォームエディター このダイアログボックスを表示するには、揃えたいオブジェクトを選択し、**オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 -- "左/右整列" や "上/下整列" エリアで、実行しようとする整列に対応する整列アイコンをクリックします。

    見本エリアには、選択結果が表示されます。

    +- "左/右整列" や "上/下整列" エリアで、実行しようとする整列に対応する整列アイコンをクリックします。
    見本エリアには、選択結果が表示されます。 + +- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. この場合、基準オブジェクトの位置は変わりません。 -- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 または:

    特定のオブジェクトを基準にオブジェクトを揃えるには、**整列** オプションを選択し、整列基準としたいオブジェクトを一覧から選択します。 この場合、基準オブジェクトの位置は変わりません。

    **プレビュー** ボタンをクリックすると、整列の結果をプレビューすることができます。 するとフォームエディター上のオブジェクトは見かけ上整列しますが、ダイアログボックスが表示されたままなので、この整列のキャンセルや適用をおこなうことができます。 > このダイアログボックスでは、整列と均等配置を合わせて実行することができます。 整列に関する詳細は [オブジェクトの整列](#オブジェクトの整列) を参照ください。 @@ -304,7 +304,7 @@ title: フォームエディター 1. 3つ以上のオブジェクトを選択し、希望する均等配置ツールをクリックします。 -2. 適用したい均等配置に対応する整列ツールをツールバー上で選択します。

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    **オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから均等揃えメニューコマンドを選択します。

    4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 "整列と均等配置" ダイアログボックスを用いてオブジェクトを均等に配置するには: @@ -312,9 +312,9 @@ title: フォームエディター 2. **オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 以下のダイアログボックスが表示されます:![](../assets/en/FormEditor/alignmentAssistant.png) -3. "左/右整列" や "上/下整列" エリアで、標準の均等配置アイコンをクリックします: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (標準の横均等揃えアイコン)

    見本エリアには、選択結果が表示されます。 +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. 標準の均等配置を実行するには、**プレビュー** または *適用* をクリックします。

    この場合、4D は標準の均等配置を実行し、オブジェクトは等間隔で配置されます。

    または:

    特定の均等配置を実行するには、**均等配置** オプションを選択します (たとえば各オブジェクトの右辺までの距離をもとにしてオブジェクトを均等に配置したい場合)。 このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:
    - 左/右整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの左辺、中央 (横)、右辺で均等に揃えます。 - 上/下整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの上辺、中央 (縦)、下辺で均等に揃えます。 @@ -367,11 +367,11 @@ JSONフォームの入力順序の設定は、[`entryOrder`](properties_JSONref. 入力順モードに切り替え、入力順を変更するには: -1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:
    ![](../assets/en/FormEditor/zOrder.png)
    ポインターが入力順ポインターに変わり、4D はフォーム上に線を引いて、データ入力時にオブジェクトが選択される順序を示します。 ツールパレット上の他のツールをクリックするまでは、入力順序の表示と変更操作しかおこなえません。 -2. データ入力順を変更するには、フォームオブジェクト上にポインターを置き、マウスボタンを押したまま、次の入力順に設定したいオブジェクトまでポインターをドラッグします。

    ![](../assets/en/FormEditor/entryOrder3.png)

    これに応じて、4D はデータ入力順を調整します。 +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. 入力順を設定したいだけ、ステップ2 を繰り返します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/FormObjects/listbox_overview.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/FormObjects/listbox_overview.md index fae046c8910e3a..be2ac0a48e4da8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/FormObjects/listbox_overview.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/FormObjects/listbox_overview.md @@ -76,7 +76,7 @@ title: リストボックス デフォルトで 4D は各列に “ColumnX” という名前を割り当てます。 この配列変数名は [列のプロパティ](listbox_overview.md#列特有のプロパティ) で変更できます (プロパティリストの [変数あるいは式](properties_Object.md#変数あるいは式) プロパティを使用します)。 列ごとの表示フォーマットを指定するには、`OBJECT SET FORMAT` コマンドも使用できます。 > 配列タイプのリストボックスは、特別なメカニズムをもつ [階層モード](listbox_overview.md#階層リストボックス) で表示することができます。 -配列タイプのリストボックスでは、入力あるいは表示される値は 4Dランゲージで制御します。 列に [選択リスト](properties_DataSource.md#選択リスト) を割り当てて、データ入力を制御することもできます。 The values of columns are managed using high-level List box commands (such as [`LISTBOX INSERT ROWS`](../commands/listbox-insert-rows) or `LISTBOX DELETE ROWS`) as well as array manipulation commands. たとえば、列の内容を初期化するには、以下の命令を使用できます: +配列タイプのリストボックスでは、入力あるいは表示される値は 4Dランゲージで制御します。 列に [選択リスト](properties_DataSource.md#選択リスト) を割り当てて、データ入力を制御することもできます。 リストボックスのハイレベルコマンド ([`LISTBOX INSERT ROWS`](../commands/listbox-insert-rows) や `LISTBOX DELETE ROWS` 等) や配列操作コマンドを使用して、列の値を管理します。 たとえば、列の内容を初期化するには、以下の命令を使用できます: ```4d ARRAY TEXT(varCol;size) @@ -326,7 +326,7 @@ myCol:=myCol.push("new value") // リストボックスに new value を表示 ランタイムにおいてヘッダーで発生したイベントは、その列のオブジェクトメソッド が受け取ります。 -When the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command is used with a header, it is applied to all headers, regardless of the individual element set by the command. たとえば、`OBJECT SET VISIBLE(*;"header3";False)` という命令の場合、指定したヘッダーだけではなく、*header3* が属するリストボックスの全ヘッダーを非表示にします。 +ヘッダーに [`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドを使用すると、このコマンドに渡した引数に関わらず、そのリストボックスのすべてのヘッダーが対象になります。 たとえば、`OBJECT SET VISIBLE(*;"header3";False)` という命令の場合、指定したヘッダーだけではなく、*header3* が属するリストボックスの全ヘッダーを非表示にします。 ### ヘッダー特有のプロパティ @@ -349,7 +349,7 @@ When the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command is used ランタイムにおいてフッターで発生したイベントは、その列のオブジェクトメソッド が受け取ります。 -When the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command is used with a footer, it is applied to all footers, regardless of the individual element set by the command. たとえば、`OBJECT SET VISIBLE(*;"footer3";False)` という命令の場合、指定したフッターだけではなく、*footer3* が属するリストボックスの全フッターを非表示にします。 +フッターに [`OBJECT SET VISIBLE`](../commands/object-set-visible) コマンドを使用すると、このコマンドに渡した引数に関わらず、そのリストボックスのすべてのフッターが対象になります。 たとえば、`OBJECT SET VISIBLE(*;"footer3";False)` という命令の場合、指定したフッターだけではなく、*footer3* が属するリストボックスの全フッターを非表示にします。 ### フッター特有のプロパティ @@ -436,7 +436,7 @@ When the [`OBJECT SET VISIBLE`](../commands/object-set-visible) command is used End if ``` -> The [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) command scrolls the list box rows so that the first selected row or a specified row is displayed. +> [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) コマンドは、最初に選択された行または指定された行を表示するようにリストボックスをスクロールします。 ### 選択行の見た目のカスタマイズ @@ -671,13 +671,13 @@ End if ### 詳細モード -このモードでは、リストボックスの印刷は `Print object` コマンドを使用してプログラムにより実行されます (プロジェクトフォームとテーブルフォームがサポートされています)。 The [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) command is used to control the printing of the object. +このモードでは、リストボックスの印刷は `Print object` コマンドを使用してプログラムにより実行されます (プロジェクトフォームとテーブルフォームがサポートされています)。 [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) コマンドを使用してオブジェクトの印刷を制御できます。 このモードでは: -- オブジェクトの高さよりも印刷する行数が少ない場合、リストボックスオブジェクトの高さは自動で減少させられます ("空白" 行は印刷されません)。 他方、オブジェクトの内容に基づき高さが自動で増大することはありません。 The size of the object actually printed can be obtained via the [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) command. -- リストボックスオブジェクトは "そのまま" 印刷されます。言い換えれば、ヘッダーやグリッド線の表示、表示/非表示行など、現在の表示設定が考慮されます。 These parameters also include the first row to be printed: if you call the [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) command before launching the printing, the first row printed in the list box will be the one designated by the command. -- 自動メカニズムにより、表示可能な行以上の行数を含むリストボックスの印刷が容易になります。 連続して `Print object` を呼び出し、呼び出し毎に別の行のまとまりを印刷することができます。 The [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) command can be used to check the status of the printing while it is underway. +- オブジェクトの高さよりも印刷する行数が少ない場合、リストボックスオブジェクトの高さは自動で減少させられます ("空白" 行は印刷されません)。 他方、オブジェクトの内容に基づき高さが自動で増大することはありません。 実際に印刷されるオブジェクトのサイズは [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) コマンドで取得できます。 +- リストボックスオブジェクトは "そのまま" 印刷されます。言い換えれば、ヘッダーやグリッド線の表示、表示/非表示行など、現在の表示設定が考慮されます。 これらの設定には印刷される最初の行も含みます。 印刷を実行する前に [`OBJECT SET SCROLL POSITION`](../commands/object-set-scroll-position) を呼び出すと、リストボックスに印刷される最初の行はコマンドで指定した行になります。 +- 自動メカニズムにより、表示可能な行以上の行数を含むリストボックスの印刷が容易になります。 連続して `Print object` を呼び出し、呼び出し毎に別の行のまとまりを印刷することができます。 [`LISTBOX GET PRINT INFORMATION`](../commands/listbox-get-print-information) コマンドを使用して、印刷がおこなわれている間の状態をチェックできます。 @@ -814,7 +814,7 @@ Variable 1 は常に、リストボックスの先頭列の変数名に対応し > 親が折りたたまれているために行が非表示になっていると、それらは選択から除外されます。 (直接あるいはスクロールによって) 表示されている行のみを選択できます。 言い換えれば、行を選択かつ隠された状態にすることはできません。 -As with selections, the [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) command will return the same values for a hierarchical list box and a non-hierarchical list box. This means that in both of the examples below, [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) will return the same position: (3;2). +選択と同様に、 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) コマンドは階層リストボックスと非階層リストボックスにおいて同じ値を返します。 つまり以下の両方の例題で、 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) は同じ位置 (3;2) を返します。 *非階層表示:* ![](../assets/en/FormObjects/hierarch9.png) @@ -824,12 +824,12 @@ As with selections, the [`LISTBOX GET CELL POSITION`](../commands/listbox-get-ce #### ブレーク行の管理 -If the user selects a break row, [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) returns the first occurrence of the row in the corresponding array. 以下のケースで: +ユーザーがブレーク行を選択すると、 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) は対応する配列の最初のオカレンスを返します。 以下のケースで: ![](../assets/en/FormObjects/hierarch11.png) -... [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) returns (2;4). To select a break row by programming, you will need to use the [`LISTBOX SELECT BREAK`](../commands/listbox-select-break) command. +[`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) は (2;4) を返します。 プログラムでブレーク行を選択するには [`LISTBOX SELECT BREAK`](../commands/listbox-select-break) コマンドを使用する必要があります。 ブレーク行はリストボックスのグラフィカルな表示 (スタイルやカラー) を管理する内部的な配列では考慮されません。 しかし、オブジェクトのグラフィックを管理するオブジェクト (フォーム) テーマのコマンドを使用してブレーク行の表示を変更できます。 階層を構成する配列に対して、適切なコマンドを実行します。 @@ -856,17 +856,17 @@ If the user selects a break row, [`LISTBOX GET CELL POSITION`](../commands/listb `On Expand` や `On Collapse` フォームイベントを使用して階層リストボックスの表示を最適化できます。 -階層リストボックスはその配列の内容から構築されます。 そのためこれらの配列すべてがメモリにロードされる必要があります。 This makes it difficult to build large hierarchical list boxes based on arrays generated from data (through the [`SELECTION TO ARRAY`](../commands/selection-to-array) command), not only because of the display speed but also the memory used. +階層リストボックスはその配列の内容から構築されます。 そのためこれらの配列すべてがメモリにロードされる必要があります。 大量のデータから ([`SELECTION TO ARRAY`](../commands/selection-to-array) コマンドを使用して) 生成される配列をもとに階層リストボックスを構築するのは、表示速度だけでなくメモリ使用量の観点からも困難が伴います。 -`On Expand` と `On Collapse` フォームイベントを使用することで、この制限を回避できます。 たとえば、ユーザーのアクションに基づいて階層の一部だけを表示したり、必要に応じて配列をロード/アンロードできます。 In the context of these events, the [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) command returns the cell where the user clicked in order to expand or collapse a row. +`On Expand` と `On Collapse` フォームイベントを使用することで、この制限を回避できます。 たとえば、ユーザーのアクションに基づいて階層の一部だけを表示したり、必要に応じて配列をロード/アンロードできます。 これらのイベントのコンテキストでは、[`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) コマンドは、行を展開/折りたたむためにユーザーがクリックしたセルを返します。 この場合、開発者がコードを使用して配列を空にしたり値を埋めたりしなければなりません。 実装する際注意すべき原則は以下のとおりです: - リストボックスが表示される際、先頭の配列のみ値を埋めます。 しかし 2番目の配列を空の値で生成し、リストボックスに展開/折りたたみアイコンが表示されるようにしなければなりません: ![](../assets/en/FormObjects/hierarch15.png) -- ユーザーが展開アイコンをクリックすると `On Expand` イベントが生成されます。 The [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) command returns the cell concerned and lets you build the appropriate hierarchy: you fill the first array with the repeated values and the second with the values sent from the [`SELECTION TO ARRAY`](../commands/selection-to-array) command and you insert as many rows as needed in the list box using the [`LISTBOX INSERT ROWS`](../commands/listbox-insert-rows) command. ![](../assets/en/FormObjects/hierarch16.png) +- ユーザーが展開アイコンをクリックすると `On Expand` イベントが生成されます。 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) コマンドはクリックされたセルを返すので、適切な階層を構築します: 先頭の配列に繰り返しの値を設定し、2番目の配列には [`SELECTION TO ARRAY`](../commands/selection-to-array) コマンドから得られる値を設定します。 そして[`LISTBOX INSERT ROWS`](../commands/listbox-insert-rows) コマンドを使用して必要なだけ行を挿入します。 ![](../assets/en/FormObjects/hierarch16.png) -- ユーザーが折りたたみアイコンをクリックすると `On Collapse` イベントが生成されます。 The [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) command returns the cell concerned: you remove as many rows as needed from the list box using the [`LISTBOX DELETE ROWS`](../commands/listbox-delete-rows) command. +- ユーザーが折りたたみアイコンをクリックすると `On Collapse` イベントが生成されます。 [`LISTBOX GET CELL POSITION`](../commands/listbox-get-cell-position) コマンドはクリックされたセルを返すので、 [`LISTBOX DELETE ROWS`](../commands/listbox-delete-rows) コマンドを使用してリストボックスから必要なだけ行を削除します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/Notes/updates.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/Notes/updates.md index 09d472ba092668..3b62e29954c52f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/Notes/updates.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/Notes/updates.md @@ -25,7 +25,7 @@ title: リリースノート #### 動作の変更 -- As of 4D **20.7 HF2**, the [`Time`](https://doc.4d.com/4dv20/help/command/en/page179.html) command returns a negative time expression when the *timeValue* parameter is negative. For instance, `Time("-01:02:03")` will now return -01:02:03. 過去のリリースにおいては、負の符号は無視されていました。 +- 4D **20.7 HF2** 以降、[`Time`](https://doc.4d.com/4dv20/help/command/ja/page179.html) コマンドは、*timeValue* 引数が負の値の場合には負の時間式を返すようになりました。 例えば、`Time("-01:02:03")` は、 -01:02:03 を返すようになりました。 過去のリリースにおいては、負の符号は無視されていました。 ## 4D 20.6 LTS diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/REST/manData.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/REST/manData.md index 38397cc87cd235..2d3836699ebaac 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/REST/manData.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/REST/manData.md @@ -22,7 +22,7 @@ REST API を使って、4D内と同等のデータ操作をおこなうことが [\{dataClass\}(\{key\})](dataClass.md#dataclasskey) でデータクラスのいちエンティティを取得する以外にも、エンティティセレクションやコレクションを返す [クラス関数](ClassFunctions.md#関数の呼び出し) を用意することもできます。 -Before returning a selection, you can also sort it by using [`$orderby`]($orderby.md) on one or more attributes (even relation attributes). +戻り値としてセレクションを返す前に、[`$orderby`]($orderby.md) を使って一つ以上の属性 (リレーション属性も可) を基準に並べ替えることもできます。 ## データのナビゲーション diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-20/WebServer/authentication.md b/i18n/ja/docusaurus-plugin-content-docs/version-20/WebServer/authentication.md index a63ad5f4d4a4ee..c3a5a7f60b7dcb 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-20/WebServer/authentication.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-20/WebServer/authentication.md @@ -125,7 +125,7 @@ BASICモードと同様に、ユーザーは接続時に自分の名前とパス -> $RequestAccepted : Boolean ``` -> `On Web Authentication` データベースメソッドのすべての引数が必ず値を受け取るわけではありません。 The information received by the database method depends on the selected [authentication mode](#authentication-modes). +> `On Web Authentication` データベースメソッドのすべての引数が必ず値を受け取るわけではありません。 このデータベースメソッドが受け取る情報は、[認証モード](#authentication-modes)の設定により異なります。 #### $1 - URL diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/CollectionClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/CollectionClass.md index b073eab4be9478..a1e68f21ebc952 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/CollectionClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/CollectionClass.md @@ -3220,15 +3220,15 @@ $r:=$c.reduceRight(Formula($1.accumulator*=$1.value); 1) // 戻り値は 86400 > このコマンドは、元のコレクションを変更します。 引数もなしに呼び出された場合、`.sort()` はスカラー値 (数値、テキスト、日付、ブール) のみを並べ替えます。 デフォルトでは、要素はそれぞれの型に応じて昇順で並べ替えられます。 -You can also pass one of the following constants in the *ascOrDesc* parameter: +*ascOrDesc* 引数には、以下の定数のいずれか一つを渡すことができます: ``` - |Constant| Type|Value|Comment| + |定数| 型|値|詳細| |---|---|---|---| - |ck ascending|Integer|0|Elements are ordered in ascending order (default)| - |ck descending|Integer|1|Elements are ordered in descending order| + |ck ascending|Integer|0|要素は昇順に並んでいます(デフォルト)| + |ck descending|Integer|1|要素は降順に並んでいます| - This syntax orders scalar values in the collection only (other element types such as objects or collections are returned unordered). + このシンタックスはコレクション内のスカラー値のみを並び替えます(オブジェクトやコレクションなどの他の型の要素は並べ替えされません)。 ``` コレクションが異なる型の要素を格納している場合、それらはまず型ごとにグループ分けされ、そのあとで並べ替えられます。 型は以下の順番で返されます: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md index a8f389fc3a0b6a..c6ce0426d6b2c3 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md @@ -1187,11 +1187,11 @@ $es:=ds.Movie.query("roles.actor.lastName = :1 AND roles.actor{2}.lastName = :2" この場合、*value* 引数は、以下のプロパティを格納した**比較ベクトルオブジェクト** である必要があります: -| プロパティ | 型 | 説明 | -| --------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| vector | [4D.Vector](../API/VectorClass.md) | 必須設定です。 比較するベクトル | -| metric | Text | 任意。 クエリに使用する[ベクトル計算](../API/VectorClass.md#ことなるベクトル計算を理解する)。 You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine distance between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | -| threshold | Real | 任意(デフォルト: 0.5)。 選択された"metric"に従って、コサイン、ドット、またはユークリッド類似度に基づいたベクトル比較をフィルタリングするために使用されるしきい値。 最適な結果を得るためには、特定の用途に最適な類似度のしきい値をきちんと選択することが強く推奨されます。 | +| プロパティ | 型 | 説明 | +| --------- | -------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| vector | [4D.Vector](../API/VectorClass.md) | 必須設定です。 比較するベクトル | +| metric | Text | 任意。 クエリに使用する[ベクトル計算](../API/VectorClass.md#ことなるベクトル計算を理解する)。 You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot`: ベクトルのドット類似度を計算します。
  • `mk euclidean`: ベクトル間のユークリッド距離を計算します。 | +| threshold | Real | 任意(デフォルト: 0.5)。 選択された"metric"に従って、コサイン、ドット、またはユークリッド類似度に基づいたベクトル比較をフィルタリングするために使用されるしきい値。 最適な結果を得るためには、特定の用途に最適な類似度のしきい値をきちんと選択することが強く推奨されます。 | **comparator** 記号の、一部のみがサポートされます。 これらの比較記号は、結果としきい値を比較するのに使用されるという点に注意してください: @@ -1588,7 +1588,7 @@ var $employees:=ds.Employee.query("embedding > :1"; {vector: $vector; metric: mk // 明示的にコサイン計量を指定し、カスタムのしきい値を用いた検索 var $employees:=ds.Employee.query("embedding > :1"; {vector: $vector; metric: mk cosine; threshold: 0.9}) // フォーミュラを使用した検索 -var $employees:=ds.Employee.query(Formula(This.embdedding.cosineSimilarity($vector)>0.9)) +var $employees:=ds.Employee.query(Formula(This.embedding.cosineSimilarity($vector)>0.9)) ``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/EntityClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/EntityClass.md index ea05954febe964..9286847f81b575 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/EntityClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/EntityClass.md @@ -338,10 +338,10 @@ vCompareResult1 (すべての差異が返されています):
    履歴 -| リリース | 内容 | -| ---- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | 追加 | +| リリース | 内容 | +| ---- | ----------- | +| 21 | ステータス7と8を追加 | +| 17 | 追加 |
    @@ -368,7 +368,7 @@ vCompareResult1 (すべての差異が返されています): **戻り値** -The object returned by `.drop()` contains the following properties: +`.drop()` によって返されるオブジェクトには以下のプロパティが格納されます: | プロパティ | | 型 | 説明 | | --------------------------------- | ----------------------------------- | ------------------- | ----------------------------------------------------------------------------------------------------------- | @@ -393,15 +393,15 @@ The object returned by `.drop()` contains the following properties: (\*) エラー時には *Result* オブジェクトの *status* あるいは *statusText* プロパティに以下のいずれかの値が返されます: -| 定数 | 値 | 説明 | -| ----------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 When using entity.drop(), this error can be returned when dk force drop if stamp changed option is used. When using entity.lock(), this error can be returned when dk reload if stamp changed option is used.
  • **Associated statusText**: "Entity does not exist anymore" | -| `dk status locked` | 3 | エンティティはペシミスティックロックによってロックされています。
    **割り当てられた statusText**: "Already locked" | -| `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    **割り当てられた statusText**: "Other error" | -| `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | -| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used
  • **Associated statusText**: "Stamp has changed"
  • | -| `dk status wrong permission` | 1 | 現在の権限では、エンティティを削除することはできません。 現在の権限では、エンティティを保存することはできません。 **割り当てられた statusText**: "Permission Error" (権限エラー) | +| 定数 | 値 | 説明 | +| ----------------------------------------- | - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 entity.drop() を使用するとき、このエラーは dk force drop if stamp changed オプションを使用した場合に返されることがあります。 entity.lock() を使用するとき、このエラーは dk reload drop if stamp changed オプションを使用した場合に返されることがあります。
  • **割り当てられた statusText**: "エンティティはもう存在しません" | +| `dk status locked` | 3 | エンティティはペシミスティックロックによってロックされています。
    **割り当てられた statusText**: "Already locked" | +| `dk status validation failed` | 7 | [検証イベント](../ORDA/orda-events.md) 用にデベロッパーから送信された、致命的ではないエラー。 **割り当てられた statusText**: "Mild Validation Error" (緩やかな検証エラー) | +| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    **割り当てられた statusText**: "Other error" | +| `dk status serious validation error` | 8 | [検証イベント](../ORDA/orda-events.md) 用にデベロッパーから送信された、致命的なエラー。 **割り当てられたstatusText**: "Serious Validation Error" (深刻な検証エラー) | +| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • `entity.save()` の場合: `dk auto merge` オプションが使用されていない場合に限りエラー
  • `entity.drop()` の場合: `dk force drop if stamp changed` オプションが使用されていない場合に限りエラー
  • `entity.lock()` の場合: `dk reload if stamp changed` オプションが使用されていない場合に限りエラー
  • **割り当てられた statusText**: "Stamp has changed"
  • | +| `dk status wrong permission` | 1 | 現在の権限では、エンティティを削除することはできません。 現在の権限では、エンティティを保存することはできません。 **割り当てられた statusText**: "Permission Error" (権限エラー) | #### 例題 1 @@ -1016,13 +1016,12 @@ $info:=$address.getRemoteContextAttributes() (\*) エラー時には *Result* オブジェクトの *status* あるいは *statusText* プロパティに以下のいずれかの値が返されます: -| 定数 | 値 | 説明 | -| ----------------------------------------- | - | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | -| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。
    **割り当てられた statusText**: "既にロックされています" | -| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require | -| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    **割り当てられた statusText**: "Other error" | -| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | +| 定数 | 値 | 説明 | +| ----------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 `.drop()` を使用するとき、このエラーは dk force drop if stamp changed オプションを使用した場合に返されることがあります。 `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | +| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。
    **割り当てられた statusText**: "既にロックされています" | +| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    **割り当てられた statusText**: "Other error" | +| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • `.save()` の場合: `dk auto merge` オプションが使用されていない場合に限りエラー
  • `.drop()` の場合: `dk force drop if stamp changed` オプションが使用されていない場合に限りエラー
  • `.lock()` の場合: `dk reload if stamp changed` オプションが使用されていない場合に限りエラー

  • **割り当てられた statusText**: "Stamp has changed" | #### 例題 1 @@ -1183,10 +1182,10 @@ $info:=$address.getRemoteContextAttributes() (\*) エラー時には *Result* オブジェクトの *status* あるいは *statusText* プロパティに以下のいずれかの値が返されます: -| 定数 | 値 | 説明 | -| ----------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 When using `.drop()`, this error can be returned when `dk force drop if stamp changed` option is used. `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | -| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    ***割り当てられた statusText***: "Other error" | +| 定数 | 値 | 説明 | +| ----------------------------------------- | - | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 `.drop()` を使用するとき、このエラーは dk force drop if stamp changed オプションを使用した場合に返されることがあります。 `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | +| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。
    ***割り当てられた statusText***: "Other error" | #### 例題 @@ -1215,10 +1214,10 @@ $info:=$address.getRemoteContextAttributes()
    履歴 -| リリース | 内容 | -| ---- | -------------------- | -| 21 | Added status 7 and 8 | -| 17 | 追加 | +| リリース | 内容 | +| ---- | ----------- | +| 21 | ステータス7と8を追加 | +| 17 | 追加 |
    @@ -1278,16 +1277,16 @@ $info:=$address.getRemoteContextAttributes() エラー時には Result オブジェクトの `status` あるいは `statusText` プロパティに以下のいずれかの値が返されます: -| 定数 | 値 | 説明 | -| ----------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `dk status automerge failed` | 6 | (Only if the `dk auto merge` option is used) The automatic merge option failed when saving the entity. **Associated statusText**: "Auto merge failed" | -| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 When using `.drop()`, this error can be returned when `dk force drop if stamp changed` option is used. `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | -| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。 **割り当てられた statusText**: "Already locked" | -| `dk status validation failed` | 7 | Non fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Mild Validation Error" | -| `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc. **Associated statusText**: "Other error" | -| `dk status serious validation error` | 8 | Fatal error sent by the developer for a [validate event](../ORDA/orda-events.md). **Associated statusText**: "Serious Validation Error" | -| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | -| `dk status wrong permission` | 1 | 現在の権限では、エンティティを保存することはできません。 現在の権限では、エンティティを保存することはできません。 **割り当てられた statusText**: "Permission Error" (権限エラー) | +| 定数 | 値 | 説明 | +| ----------------------------------------- | - | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `dk status automerge failed` | 6 | (`dk auto merge` オプションが使用されたときのみ) エンティティを保存するときに自動マージオプションが失敗しました。 **割り当てられた statusText**: "自動マージ失敗" | +| `dk status entity does not exist anymore` | 5 | エンティティはもうデータ内に存在していません。 このエラーは以下のような場合に起きえます:
  • エンティティがドロップされている (スタンプが変更されていて、メモリ空間は解放されている)
  • エンティティがドロップされていて、他のプライマリーキー値を持つエンティティで置き換えられている (スタンプは変更されていて、新しいエンティティがメモリ空間を使用している)。 `.drop()` を使用するとき、このエラーは dk force drop if stamp changed オプションを使用した場合に返されることがあります。 `entity.lock()` を使用するとき、このエラーは `dk reload drop if stamp changed` オプションを使用した場合に返されることがあります。

  • **割り当てられた statusText**: "Entity does not exist anymore" (エンティティはもう存在しません) | +| `dk status locked` | 3 | エンティティはペシミスティック・ロックでロックされています。 **割り当てられた statusText**: "Already locked" | +| `dk status validation failed` | 7 | [検証イベント](../ORDA/orda-events.md) 用にデベロッパーから送信された、致命的ではないエラー。 **割り当てられた statusText**: "Mild Validation Error" (緩やかな検証エラー) | +| `dk status serious error` | 4 | 深刻なエラーとは、低レベルのデータベースエラー (例: 重複キー)、ハードウェアエラーなどです。 **割り当てられた statusText**: "その他のエラー" | +| `dk status serious validation error` | 8 | [検証イベント](../ORDA/orda-events.md) 用にデベロッパーから送信された、致命的なエラー。 **割り当てられたstatusText**: "Serious Validation Error" (深刻な検証エラー) | +| `dk status stamp has changed` | 2 | エンティティの内部的なスタンプ値がデータ内に保存されているエンティティのものと合致しません (オプティミスティック・ロック)。
  • `.save()` の場合: `dk auto merge` オプションが使用されていない場合に限りエラー
  • `.drop()` の場合: `dk force drop if stamp changed` オプションが使用されていない場合に限りエラー
  • `.lock()` の場合: `dk reload if stamp changed` オプションが使用されていない場合に限りエラー

  • **割り当てられた statusText**: "Stamp has changed" | +| `dk status wrong permission` | 1 | 現在の権限では、エンティティを保存することはできません。 現在の権限では、エンティティを保存することはできません。 **割り当てられた statusText**: "Permission Error" (権限エラー) | #### 例題 1 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/SessionClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/SessionClass.md index dbdb9acd8d6eef..740722a59c202f 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/SessionClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/SessionClass.md @@ -54,10 +54,10 @@ Session オブジェクトは [`Session`](../commands/session.md) コマンド
    履歴 -| リリース | 内容 | -| ----- | -------------------------- | -| 21 | Support of remote sessions | -| 18 R6 | 追加 | +| リリース | 内容 | +| ----- | -------------- | +| 21 | リモートセッションのサポート | +| 18 R6 | 追加 |
    @@ -75,7 +75,7 @@ Session オブジェクトは [`Session`](../commands/session.md) コマンド :::note -This function does nothing and always returns **True** with stored procedure sessions and standalone sessions. +この関数は、すトアドプロシージャーセッションおよびスタンドアロンセッションでは何もせず、常に **True** を返します。 ::: @@ -89,7 +89,7 @@ This function does nothing and always returns **True** with stored procedure ses ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +リモートクライアントセッションにおいては、この関数は[Web エリアを通して送信されたWeb リクエスト](../Desktop/clientServer.md#webエリア内のqodlyページ内でセッションを共有する) のコンテキストで実行されたコンテキストのみに関係します。 #### 例題 @@ -110,10 +110,10 @@ $isGuest:=Session.isGuest() // $isGuest は true
    履歴 -| リリース | 内容 | -| ----- | -------------------------- | -| 21 | Support of remote sessions | -| 20 R9 | 追加 | +| リリース | 内容 | +| ----- | -------------- | +| 21 | リモートセッションのサポート | +| 20 R9 | 追加 |
    @@ -124,7 +124,7 @@ $isGuest:=Session.isGuest() // $isGuest は true | 引数 | 型 | | 説明 | | -------- | ------- | :-------------------------: | ------------------------------------ | | lifespan | Integer | -> | セッショントークンの有効期限(秒) | -| 戻り値 | Text | <- | UUID of the token | +| 戻り値 | Text | <- | トークンの UUID | @@ -132,7 +132,7 @@ $isGuest:=Session.isGuest() // $isGuest は true :::note -This function is available with web user sessions and remote sessions. It returns an empty string in stored procedure and standalone sessions. +この関数はWeb ユーザーセッションとリモートセッションにおいて利用可能です。 ストアドプロシージャーとスタンドアロンセッションでは空の文字列を返します。 ::: @@ -140,14 +140,14 @@ This function is available with web user sessions and remote sessions. It return OTP トークンについてのより詳細な情報については、[こちらの章](../WebServer/sessions.md#セッショントークンotp)を参照して下さい。 -*lifespan* に秒単位の値を渡すことで、カスタムのタイムアウト時間を設定することができます。 If an expired token is used to restore a session, it is ignored. By default, if the *lifespan* parameter is omitted: +*lifespan* に秒単位の値を渡すことで、カスタムのタイムアウト時間を設定することができます。 セッションを復元するために失効したトークンを使用した場合、それは無視されます。 *lifespan* 引数が省略された場合はデフォルトで: -- with web user sessions, the token is created with the same lifespan as the [`.idleTimeOut`](#idletimeout) of the session. -- with remote sessions, the token is created with a 10 seconds lifespan. +- Web ユーザーセッションの場合、トークンはセッションの[`.idleTimeOut`](#idletimeout) と同じ有効期限を持って作成されます。 +- リモートセッションの場合、トークンは10秒の有効期限を持って作成されます。 -For **web user sessions**, the returned token can be used in exchanges with third-party applications or websites to securely identify the session. 例えば、セッションOTP トークンは支払いアプリケーションなどにおいて使用することができます。 +**Web ユーザーセッション** の場合、返されたトークンは、サードパーティアプリケーションや他のWebサイトとのやり取りで使用することでセッションを安全に特定することができます。 例えば、セッションOTP トークンは支払いアプリケーションなどにおいて使用することができます。 -For **remote sessions**, the returned token can be used on 4D Server to identitfy requests coming from a [remote 4D running Qodly forms in a Web area](../Desktop/clientServer.md#remote-user-sessions). +**リモートセッション** の場合、返されたトークンを4D Server 上で使用することで[Web エリアでQodly フォームを実行しているリモート 4D](../Desktop/clientServer.md#リモートユーザーセッション) からのリクエストを識別することができます。 #### 例題 @@ -262,10 +262,10 @@ $expiration:=Session.expirationDate // 例: "2021-11-05T17:10:42Z"
    履歴 -| リリース | 内容 | -| ----- | --------------------------------- | -| 21 | Support of remote client sessions | -| 20 R6 | 追加 | +| リリース | 内容 | +| ----- | -------------------- | +| 21 | リモートクライアントセッションのサポート | +| 20 R6 | 追加 |
    @@ -289,9 +289,9 @@ $expiration:=Session.expirationDate // 例: "2021-11-05T17:10:42Z" ::: -With remote client sessions, the privileges only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). +リモートクライアントセッションでは、権限は[Web エリアを通して送信されたWeb リクエスト](../Desktop/clientServer.md#webエリア内のqodlyページ内でセッションを共有する) のコンテキストで実行されたコンテキストのみに関係します。 -With stored procedure sessions and standalone sessions, this function returns a collection only containing "WebAdmin". +ストアドプロシージャーセッションとスタンドアロンセッションでは、この関数は"WebAdmin" のみを格納したコレクションを返します。 #### 例題 @@ -360,10 +360,10 @@ $privileges := Session.getPrivileges()
    履歴 -| リリース | 内容 | -| ----- | ----------------------------------------------------------------------- | -| 21 | Returns True for promoted privileges, Support of remote client sessions | -| 18 R6 | 追加 | +| リリース | 内容 | +| ----- | ------------------------------------- | +| 21 | 昇格した権限ならTrue を返す、リモートクライアントセッションのサポート | +| 18 R6 | 追加 |
    @@ -388,9 +388,9 @@ $privileges := Session.getPrivileges() ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +リモートクライアントセッションにおいては、この関数は[Web エリアを通して送信されたWeb リクエスト](../Desktop/clientServer.md#webエリア内のqodlyページ内でセッションを共有する) のコンテキストで実行されたコンテキストのみに関係します。 -With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. +ストアドプロシージャーセッションとスタンドアロンセッションの場合、この関数は*privilege* に関わらず必ずTrue を返します。 #### 例題 @@ -728,11 +728,11 @@ Function callback($request : 4D.IncomingMessage) : 4D.OutgoingMessage
    履歴 -| リリース | 内容 | -| ----- | --------------------------------- | -| 21 | Support of remote client sessions | -| 19 R8 | roles プロパティをサポート | -| 18 R6 | 追加 | +| リリース | 内容 | +| ----- | -------------------- | +| 21 | リモートクライアントセッションのサポート | +| 19 R8 | roles プロパティをサポート | +| 18 R6 | 追加 |
    @@ -753,7 +753,7 @@ Function callback($request : 4D.IncomingMessage) : 4D.OutgoingMessage :::note -This function does nothing and always returns **False** with stored procedure sessions and standalone sessions. +この関数は、ストアドプロシージャーセッションおよびスタンドアロンセッションでは何もせず、常に**False** を返します。 ::: @@ -763,11 +763,11 @@ This function does nothing and always returns **False** with stored procedure se - *privileges* には、アクセス権の名称を文字列のコレクションとして渡します。 - *settings* には、以下のプロパティを持つオブジェクトを渡します: -| プロパティ | 型 | 説明 | -| ---------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| privileges | Text または Collection |
  • アクセス権名の文字列
  • アクセス権名のコレクション
  • | -| roles | Text または Collection |
  • ロールの文字列
  • ロールの文字列のコレクション
  • | -| userName | Text | User name to associate to the session (optional, web sessions only). Not available in remote client sessions (ignored). | +| プロパティ | 型 | 説明 | +| ---------- | ------------------- | --------------------------------------------------------------------------------------------------------- | +| privileges | Text または Collection |
  • アクセス権名の文字列
  • アクセス権名のコレクション
  • | +| roles | Text または Collection |
  • ロールの文字列
  • ロールの文字列のコレクション
  • | +| userName | Text | セッションに関連づけるユーザー名(任意、Web セッションのみ)。 リモートクライアントセッションでは利用できません(無視されます)。 | :::note @@ -781,7 +781,7 @@ This function does nothing and always returns **False** with stored procedure se [`userName`](#username) プロパティは Session オブジェクトレベルで利用可能です (読み取り専用)。 -Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). +リモートクライアントセッションにおいては、この関数は[Web エリアを通して送信されたWeb リクエスト](../Desktop/clientServer.md#webエリア内のqodlyページ内でセッションを共有する) のコンテキストで実行されたコンテキストのみに関係します。 #### 例題 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/WebServerClass.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/WebServerClass.md index e6c5e7c17d1183..c9d3286c25e7fa 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/API/WebServerClass.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/API/WebServerClass.md @@ -185,9 +185,9 @@ The HTTPリクエストログファ **.handlers** : Collection -*内容* +*読み取り専用プロパティ* -A collection of custom HTTP handler objects. An HTTP handler object contains a listened URL pattern, a handled verb, and the code to be called. HTTP handlers can be defined through a HTTPHandlers.json file or the *settings* parameter of the [`.start()`](#start) function. For more information, please refer to the [HTTP Request handler](../WebServer/http-request-handler.md) page. +カスタムHTTP ハンドラオブジェクトのコレクション。 HTTP ハンドラオブジェクトには聞いているURL パターン、管理される動詞(メソッド)、そして呼び出されるべきコードが格納されています。 HTTP ハンドラはHTTPHandlers.json ファイルまたは[`.start()`](#start) 関数の*settings* 引数で定義することができます。 詳細については[HTTP リクエストハンドラ](../WebServer/http-request-handler.md) のページを参照してください。 @@ -340,7 +340,7 @@ A collection of custom HTTP handler **.isRunning** : Boolean -*内容* +*読み取り専用プロパティ* Webサーバーで旧式セッションが有効されている場合に true、それ以外は false。 @@ -439,7 +439,7 @@ A collection of custom HTTP handler **.name** : Text -*内容* +*読み取り専用プロパティ* Webサーバーアプリケーションの名称。 @@ -451,7 +451,7 @@ A collection of custom HTTP handler **.openSSLVersion** : Text -*内容* +*読み取り専用プロパティ* 使用されている OpenSSLライブラリのバージョン。 @@ -463,7 +463,7 @@ A collection of custom HTTP handler **.perfectForwardSecrecy** : Boolean -*内容* +*読み取り専用プロパティ* サーバーの PFS利用可否状況。 @@ -493,9 +493,9 @@ A collection of custom HTTP handler **.rules** : Collection -*内容* +*読み取り専用プロパティ* -A collection of rule objects currently handled to customize HTTP headers. A rule object contains a "regexPattern" property, as well as an action name with a value. HTTP rules can be defined through a HTTPRules.json file or the *settings* parameter of the [`.start()`](#start) function. For more information, please refer to the [HTTP Rules](../WebServer/http-rules.md) page. +HTTP ヘッダーをカスタマイズするために現在管理されているルールオブジェクトのコレクション。 ルールオブジェクトには"regexPattern" プロパティに加え、アクション名と値が格納されています。 HTTP ルールはHTTPRules.json ファイルまたは[`.start()`](#start) 関数の*settings* 引数で定義することができます。 詳細については[HTTP ルール](../WebServer/http-rules.md) のページを参照してください。 @@ -531,7 +531,7 @@ A collection of rule objects currently セッションID の保存に使用されるセッションcookie の名称。 -*内容* +*読み取り専用プロパティ* diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/Concepts/components.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/Concepts/components.md index 024694520c74aa..22368f829aff95 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/Concepts/components.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/Concepts/components.md @@ -9,7 +9,7 @@ title: コンポーネント 4D プロジェクト内へのコンポーネントのインストールとロードは、[4D 依存関係マネージャー](../Project/components.md) を通して管理されます。 -いくつかのコンポーネントが[4D によって開発](../Extensions/overview.md#components-developed-by-4d)されていますが、それ以外にも4D コミュニティによるたくさんの4D コンポーネントが[GitHub 上で公開されています](https://github.com/search?q=4d-component&type=Repositories)。 また、[独自の 4Dコンポーネントを開発](../Extensions/develop-components.md) することもできます。 +いくつかのコンポーネントが[4D によって開発](../Extensions/overview.md#components-developed-by-4d)されていますが、それ以外にも4D コミュニティによるたくさんの4D コンポーネントが[GitHub 上で公開されています](https://github.com/topics/4d-component)。 また、[独自の 4Dコンポーネントを開発](../Extensions/develop-components.md) することもできます。 ## コンポーネントの使い方 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md index 33293b4f3746fd..5d1a6166262a90 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md index 668003a8ccf9e7..a3dee0bff39419 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: フィールドプロパティ --- -他のフィールドプロパティについては、[doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.ja.html#5523008) を参照してください。 +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md index ec48521b51969e..bf66478c6aaa1d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md @@ -56,7 +56,7 @@ title: フォームエディター | アイコン | 名称 | 説明 | | ------------------------------------------------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | フォーム実行 | フォームの実行をテストするために使用します。 このボタンをクリックすると、4D は新しいウィンドウを開き、そのコンテキストでフォームを表示します (リストフォームの場合レコードリスト、詳細フォームの場合カレントレコード)。 フォームはメインプロセスで実行されます。 | -| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#オブジェクトの選択) | フォームオブジェクトの選択、移動、そしてリサイズを行います。

    **注意**: テキストやグループボックスタイプのオブジェクトを選択すると、**Enter** キーを押すことで編集モードになります。

    | +| ![](../assets/en/FormEditor/selection.png) | [選択ツール](#オブジェクトの選択) | フォームオブジェクトの選択、移動、そしてリサイズを行います。
    **注**: テキストやグループボックスタイプのオブジェクトを選択すると、**Enter**キーを押すことで編集モードになります。 | | ![](../assets/en/FormEditor/zOrder.png) | [入力順](#データの入力順) | "入力順" モードに切り替わり、フォームの現在の入力順を表示・変更できます。 入力順は、バッジを使用して確認することもできます。 | | ![](../assets/en/FormEditor/moving.png) | [移動](#オブジェクトの移動) | "移動" モードに移行し、ウィンドウ中をドラッグ&ドロップすることで素早くフォームの表示部分を移動することができます。 このモードでカーソルは手の形になります。 このモードは、フォームを拡大表示している時に特に便利です。 | | ![](../assets/en/FormEditor/zoom.png) | [拡大](#拡大) | フォーム表示の拡大/縮小率を変更できます (デフォルトで100%)。 "拡大/縮小" モードにするには虫眼鏡をクリックするか、拡大/縮小率バーをクリックします。 この機能は前節で説明しています。 | @@ -146,11 +146,11 @@ title: フォームエディター ツールバーを使用してオブジェクトを選択するには: -1. ツールバーの矢印ツールをクリックします。

    ![](../assets/en/FormEditor/selection.png)

    +1. ツールバーの矢印ツールをクリックします。
    ![](../assets/en/FormEditor/selection.png) -

    マウスカーソルをフォームエリアに移動すると、カーソルは標準の矢印の形をしたポインターに変わります

    。 +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表します。

    ![](../assets/en/FormEditor/selectResize.png)

    +2. 選択したいオブジェクトをクリックします。 サイズ変更ハンドルが表示され、オブジェクトが選択されたことを表します。
    ![](../assets/en/FormEditor/selectResize.png) プロパティリストを使用してオブジェクトを選択するには: @@ -242,13 +242,13 @@ title: フォームエディター 1. グループ化したいオブジェクトを選択します。 2. オブジェクトメニューから **グループ化** を選択します。 または - フォームエディターのツールバーでグループ化ボタンをクリックします。

    ![](../assets/en/FormEditor/group.png)

    + フォームエディターのツールバーでグループ化ボタンをクリックします。
    ![](../assets/en/FormEditor/group.png) 4D は、新たにグループ化されたオブジェクトの境界をハンドルで表わします。 グループ内の各オブジェクトの境界にはハンドルが表示されません。 これ以降、グループ化されたオブジェクトを編集すると、グループを構成する全オブジェクトが変更されます。 オブジェクトのグループ化を解除するには: 1. グループ化を解除したいグループオブジェクトを選択します。 -2. **オブジェクト**メニューから**グループ解除** を選択します。

    あるいは

    フォームエディターのツールバーで **グループ化解除** ボタン (**グループ化** ボタンのサブ項目) をクリックします。

    **グループ化解除** が選択不可の場合、選択したオブジェクトはグループに属していないことを意味します。

    4D は個々のオブジェクトの境界をハンドルで表わします。 +2. **オブジェクト**メニューから**グループ解除** を選択します。
    あるいは
    フォームエディターのツールバーで **グループ化解除** ボタン (**グループ化** ボタンのサブ項目) をクリックします。
    **グループ化解除** が選択不可の場合、選択したオブジェクトはグループに属していないことを意味します。 4D は個々のオブジェクトの境界をハンドルで表わします。 ### オブジェクトの整列 @@ -276,9 +276,9 @@ title: フォームエディター このダイアログボックスを表示するには、揃えたいオブジェクトを選択し、**オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 -- “左/右整列” や “上/下整列” エリアで、実行しようとする整列に対応する整列アイコンをクリックします。

    見本エリアには、選択結果が表示されます。

    +- “左/右整列” や “上/下整列” エリアで、実行しようとする整列に対応する整列アイコンをクリックします。
    見本エリアには、選択結果が表示されます。 -- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 または:

    特定のオブジェクトを基準にオブジェクトを揃えるには、**整列** オプションを選択し、整列基準としたいオブジェクトを一覧から選択します。 この場合、基準オブジェクトの位置は変わりません。

    +- 標準のアンカー方式による整列を実行するには、**プレビュー** または **適用** をクリックします。 この場合、整列をおこなう方向で最も離れた位置にあるオブジェクトがアンカーとして使用され、他のオブジェクトはこのオブジェクトに合わせられます。 たとえば、一連のオブジェクトに対して右揃えを実行したい場合、一番右側に位置するオブジェクトがアンカーとして使用されます。 または:
    特定のオブジェクトを基準にオブジェクトを揃えるには、**整列** オプションを選択し、整列基準としたいオブジェクトを一覧から選択します。 この場合、基準オブジェクトの位置は変わりません。 **プレビュー** ボタンをクリックすると、整列の結果をプレビューすることができます。 するとフォームエディター上のオブジェクトは見かけ上整列しますが、ダイアログボックスが表示されたままなので、この整列のキャンセルや適用をおこなうことができます。 @@ -315,7 +315,8 @@ title: フォームエディター 1. 3つ以上のオブジェクトを選択し、希望する均等配置ツールをクリックします。 -2. 適用したい均等配置に対応する整列ツールをツールバー上で選択します。

    ![](../assets/en/FormEditor/distributionTool.png)

    あるいは

    **オブジェクト**メニュー内の**整列** サブメニュー、またはエディターのコンテキストメニューから分配メニューコマンドを選択します。

    4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 +2. 適用したい均等配置に対応する整列ツールをツールバー上で選択します。
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D は各オブジェクトを均等に配置します。 各オブジェクトの中心までの間隔、および隣接する 2つのオブジェクトの間隔のうち最も広い間隔が基準として用いられます。 "整列と均等配置" ダイアログボックスを用いてオブジェクトを均等に配置するには: @@ -323,9 +324,9 @@ title: フォームエディター 2. **オブジェクト** メニュー、またはエディターのコンテキストメニューの **整列** サブメニューから **整列...** コマンドを選択します。 次のダイアログボックスが表示されます: [](../assets/en/FormEditor/alignmentAssistant.png) -3. "左/右整列" や "上/下整列" エリアで、標準の均等配置アイコンをクリックします: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (標準の横均等揃えアイコン)

    見本エリアには、選択結果が表示されます。 +3. "左/右整列" や "上/下整列" エリアで、標準の均等配置アイコンをクリックします: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (標準の横均等揃えアイコン)
    見本エリアには、選択結果が表示されます。 -4. 標準の均等配置を実行するには、**プレビュー** または **適用** をクリックします。

    この場合、4D は標準の均等配置を実行し、オブジェクトは等間隔で配置されます。

    あるいは:

    特定の均等配置を実行するには、**均等配置** オプションを選択します (たとえば各オブジェクトの右辺までの距離をもとにしてオブジェクトを均等に配置したい場合)。 このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:

    +4. 標準の均等配置を実行するには、**プレビュー** または **適用** をクリックします。
    この場合、4D は標準の均等配置を実行し、オブジェクトは等間隔で配置されます。
    あるいは:
    特定の均等配置を実行するには、**均等配置** オプションを選択します (たとえば各オブジェクトの右辺までの距離をもとにしてオブジェクトを均等に配置したい場合)。 このオプションはスイッチのように機能します。 均等配置チェックボックスが選択されていると、このオプションの下にあるアイコンは異なる動作をおこないます:
    - 左/右整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの左辺、中央 (横)、 右辺で均等に揃えます。 - 上/下整列の場合、各アイコンは次の均等配置に対応します: 選択オブジェクトの上辺、中央 (縦)、 下辺で均等に揃えます。 @@ -380,11 +381,11 @@ JSONフォームの入力順序の設定は、[`entryOrder`](properties_JSONref. 入力順モードに切り替え、入力順を変更するには: -1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. **フォーム** メニューから **入力順** を選択するか、ツールバーの入力順ボタンをクリックします:
    ![](../assets/en/FormEditor/zOrder.png)
    ポインターが入力順ポインターに変わり、4D はフォーム上に線を引いて、データ入力時にオブジェクトが選択される順序を示します。 ツールパレット上の他のツールをクリックするまでは、入力順序の表示と変更操作しかおこなえません。 -2. データ入力順を変更するには、フォームオブジェクト上にポインターを置き、マウスボタンを押したまま、次の入力順に設定したいオブジェクトまでポインターをドラッグします。

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D はそれに応じて入力順を調整します。 +2. データ入力順を変更するには、フォームオブジェクト上にポインターを置き、マウスボタンを押したまま、次の入力順に設定したいオブジェクトまでポインターをドラッグします。
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D はそれに応じて入力順を調整します。 3. 入力順を設定したいだけ、ステップ2 を繰り返します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md index a421e9046f83c1..d460a48eb79567 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md @@ -100,6 +100,12 @@ title: Forms On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. + +| ライトテーマ | ダークテーマ | +| --------------------------------------- | -------------------------------------------- | +| ![](../assets/en/FormEditor/fluent.png) | ![](../assets/en/FormEditor/fluent-dark.png) | + :::caution デベロッパー・プレビュー Fluent UI support is currently in the Developer Preview phase. 本番環境で使用すべきではありません。 @@ -112,20 +118,18 @@ This feature can only be used on Windows. On macOS, it is ignored. ::: -### Fluent UI rendering availability +:::tip Related blog post + +[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -The Fluent UI rendering is available in the following execution environments only: +::: -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- 組み込みの [スタンドアロン](../Desktop/building#スタンドアロンアプリケーションをビルド) または [クライアント](../Desktop/building#クライアントアプリケーションをビルド) 4Dアプリケーション -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +### 要件 -:::note +The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms. If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. -::: - ### Enabling the Fluent UI rendering You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. @@ -149,19 +153,23 @@ Each form can define its own rendering via the **Widget appearance** property. The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". -### Features and limitations - -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. +### Specific behaviors When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. +- The new `FORM Windows theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. - If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). - [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). - [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). - [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). - The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). + +:::info Limitations + +This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: ## 継承フォーム diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md index aad5530955644b..36a6abaf633cf6 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md @@ -212,15 +212,15 @@ title: 動作 ## 標準アクション -アクティブオブジェクトにより実行される典型的な処理 (例: レコードの入力・取り消し・削除、レコード間の移動、マルチページフォームでのページ間の移動、など) は、4D より標準アクションとして提供されています。 詳細な情報に関しては、*デザインリファレンス* の [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) の章を参照ください。 +アクティブオブジェクトにより実行される典型的な処理 (例: レコードの入力・取り消し・削除、レコード間の移動、マルチページフォームでのページ間の移動、など) は、4D より標準アクションとして提供されています。 詳細な情報に関しては、*デザインリファレンス* の [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) の章を参照ください。 There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). フォームオブジェクトには、標準アクションとメソッドの両方を割り当てることができます。 この場合、標準アクションは通常、メソッドの後に実行されます。また、4D はこのアクションを使用して、カレントコンテキストに応じてオブジェクトを有効化/無効化します。 フォームオブジェクトが無効化されていた場合、関連づけられたメソッドは実行されません。 #### JSON 文法 -| 名称 | データタイプ | とりうる値 | -| ------ | ------ | ------------------------------------------------------------------------------------ | -| action | string | 有効な [標準アクション](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.ja.html) | +| 名称 | データタイプ | とりうる値 | +| ------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### 対象オブジェクト diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/webArea_overview.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/webArea_overview.md index f75f96f240a10d..f9f51797c37684 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/webArea_overview.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/FormObjects/webArea_overview.md @@ -206,7 +206,7 @@ Windows においては、Webエリアから、同じ 4Dアプリケーション ### プロトコルの挿入 (macOS) -macOS 上の Webエリアで、プログラムにより処理される URL は、プロトコルで開始されていなければなりません。 つまり、"www.mysite.com" ではなく、"http://www.mysite.com" 文字列を渡さなければならないということです。 +macOS 上の Webエリアで、プログラムにより処理される URL は、プロトコルで開始されていなければなりません。 つまり、"www.mysite.com" ではな、"http://www.mysite.com" 文字列を渡さなければならないということです。 ## Webインスペクターへのアクセス diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/Notes/updates.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/Notes/updates.md index eb435eba5b6f23..2a1c5bf455b87a 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/Notes/updates.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/Notes/updates.md @@ -5,27 +5,28 @@ title: リリースノート ## 4D 21 -Read [**What’s new in 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/), the blog post that lists all new features and enhancements in 4D 21. +[**4D 21 での新機能**](https://blog.4d.com/en-whats-new-in-4d-21/): 4D 21 の新機能と拡張機能をすべてリストアップしたブログ記事です。 #### ハイライト -- Support of AI Vector Searches in the [`query()`](../API/DataClassClass.md#query-by-vector-similarity) function and in the [`$filter`](../REST/$filter.md#vector-similarity) REST API. -- Support of TLS encryption for the [4D.TCPConnection](../API/TCPConnectionClass.md#4dtcpconnectionnew) class. +- [`query()`](../API/DataClassClass.md#ベクトル類似度でのクエリ) 関数と、[`$filter`](../REST/$filter.md#vector-similarity) REST API 内でのAI ベクトル検索のサポート。 +- [4D.TCPConnection](../API/TCPConnectionClass.md#4dtcpconnectionnew) クラスにおけるTLS 暗号化のサポート。 - Web サーバー: - - new [HTTP rules](../WebServer/http-rules.md) to customize HTTP response headers, - - ability to set [HTTP request handlers](../WebServer/http-request-handler.md) using a `handlers` property in the *settings* parameter of the Web server [`start()`](../API/WebServerClass.md#start) function, - - the Web server object contains new [`rules`](../API/WebServerClass.md#rules) and [`handlers`](../API/WebServerClass.md#handlers) properties. -- New [ORDA events on data](../ORDA/orda-events.md): validateSave, saving, afterSave, validateDrop, dropping, afterDrop. -- New option allowing to use certificates from Windows Certificate Store instead of a local certificates folder in [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) and [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew) classes. -- Client/server: - - You can display Qodly pages in Web areas and [share the remote client session](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). - - The [QUIC network layer](../settings/client-server.md#network-layer) has been enhanced to handle network interface changes transparently, for example when you travel with your laptop. See [this blog post](https://blog.4d.com/work-and-move-with-quic-and-network-switching). -- You can now [create components directly from the host project](../Extensions/develop-components.md#creating-components) and [edit their code from a dedicated tab](../Extensions/develop-components.md#editing-all-component-code) in the 4D Explorer without leaving or restarting the project. -- The 4D product activation step has been simplified and automated during [sign-in](../GettingStarted/Installation.md#sign-in). -- 4D AIKit component: new features to [invoke a specific tool automatically](../aikit/Classes/OpenAIChatHelper.md#registertool) and [specify a response format](../aikit/Classes/OpenAIChatCompletionsParameters.md#response-format). + - 新しい [HTTP ルール](../WebServer/http-rules.md) を使用することでHTTP レスポンスヘッダーをカスタマイズすることができます。 + - Web サーバーの[`start()`](../API/WebServerClass.md#start) 関数の*settings* 引数内の`handlers` プロパティを使用することで、[HTTP リクエストハンドラー](../WebServer/http-request-handler.md) を設定することができます。 + - Web サーバーオブジェクトには新しい[`rules`](../API/WebServerClass.md#rules) and [`handlers`](../API/WebServerClass.md#handlers) プロパティが含まれます。 +- 新しい[データに対するORDA イベント](../ORDA/orda-events.md): validateSave、saving、afterSave、validateDrop、dropping、afterDrop +- [`HTTPRequest`](../API/HTTPRequestClass.md#4dhttprequestnew) および [`HTTPAgent`](../API/HTTPAgentClass.md#4dhttpagentnew) クラスにおいて、ローカルの証明書フォルダの代わりにWindows 証明書ストアからの証明書を使用することを許可する新しいオプション。 +- クライアント/サーバー: + - Web エリア内でQodly ページを表示し、[リモートクライアントセッションを共有](../Desktop/clientServer.md#web-エリア内のqodly-ページでセッションを共有する)することができるようになりました。 + - [QUIC ネットワークレイヤー](../settings/client-server.md#ネットワークレイヤー) はネットワークインターフェースの変更(例えばラップトップを持って良好するような場合)を透過的に管理できるように改善されました。 [こちらの blog 記事](https://blog.4d.com/work-and-move-with-quic-and-network-switching) をご覧ください。 +- プロジェクトを閉じたり再起動したりすることなく、4D エクスプローラーから[ホストプロジェクトから直接コンポーネントを作成](../Extensions/develop-components.md#コンポーネントの作成)したり、あるいは[専用のタブからコンポーネントのコードを編集する](../Extensions/develop-components.md#全てのコンポーネントコードを編集) ことができるようになりました。 +- 4D プロダクトのアクティベーションステップが、簡略化されて[サインイン](../GettingStarted/Installation.md#sign-in) 中に自動化されました。 +- 4D AIKit コンポーネント: [特定のツールを自動的に呼び出す](../aikit/Classes/OpenAIChatHelper.md#registertool) ことと [レスポンスフォーマットを指定する](../aikit/Classes/OpenAIChatCompletionsParameters.md#response-format) 新機能。 - 4Dランゲージ: - - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). - - [`Num`](../commands/num.md) and [`String`](../commands/string.md) commands have been updated to support conversions in different bases (radix). + - 文字列から先頭と末尾のスペースを削除する新しい "trim" 系コマンド: [`Trim`](../commands/trim.md)、[`Trim start`](../commands/trim-start.md)、および[`Trim end`](../commands/trim-end.md)。 + - [`Num`](../commands/num.md) および [`String`](../commands/string.md) コマンドは、異なる基数での変換をサポートするようにアップデートされました。 +- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=21): list of all bugs that have been fixed in 4D 21. #### デベロッパー・プレビュー @@ -43,7 +44,7 @@ Read [**What’s new in 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/), th - Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. - Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). - The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. -- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    +- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview.md#components-developed-by-4d)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    ![alt-text](../assets/en/getStart/convert.png)
    \- **Import**: import automatically 4D components as dependencies to the project
    \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    @@ -65,26 +66,26 @@ In binary databases, you need to select the required components in the 4D instal - [`4D.TCPConnection.new()`](../API/TCPConnectionClass.md#4dtcpconnectionnew) 関数の[`options`](../API/TCPConnectionClass.md#options-parameter) 引数に新しい`connectionTimeout` オプションが追加されました。 - 新しい[`4D.Vector`](../API/VectorClass.md) クラス。これを使用して、一般的にAI で計算されたベクトルを処理して比較することができます。 - [4D 自動フィールド](../settings/database.md#自動uuidバージョン) および [`Generate UUID`](../commands/generate-uuid) コマンドに対して、**バージョン 7**のUUID を生成するための新しいオプション。 -- New [`UDPSocket`](../API/UDPSocketClass.md) and [`UDPEvent`](../API/UDPEventClass.md) classes to send data using UDP sockets. Support of detailed logging for UDP events in the [`4DTCPUDPLog.txt`](../Debugging/debugLogFiles.md#4dtcpudplogtxt) log file (renamed from `4DTCPLog.txt`). -- New [`.promote()`](../API/SessionClass.md#promote) and [`.demote()`](../API/SessionClass.md#demote) functions in the [Session class](../API/SessionClass.md) to dynamically add/remove privileges in a web process. -- [Automatic selection of licenses to embed](../Desktop/building.md#application-automatically-embedding-available-licenses) in the Build application dialog box, modified [`Create deployment license`](../commands/create-deployment-license.md) command, new [`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.en.html) BuildApplication xml key. -- Enhanced security for formula copy/paste in [4D Write Pro](../WritePro/managing-formulas.md) and [styled text areas](../FormObjects/input_overview.md): formulas copied from outside the current 4D application are now always pasted as values only. -- 4D AIKit component: new [OpenAIEmbeddingsAPI class](../aikit/Classes/OpenAIEmbeddingsAPI.md) to create embeddings using OpenAI's API. -- You can now [associate a class](../Develop/field-properties.md) to an object field in the structure editor. -- Automatic handling of [recursive dependencies](../Project/components.md#automatic-dependency-resolution). +- 新しい[`UDPSocket`](../API/UDPSocketClass.md) および [`UDPEvent`](../API/UDPEventClass.md) クラスを使用することでUDP ソケットを使用してデータを送信することができます。 [`4DTCPUDPLog.txt`](../Debugging/debugLogFiles.md#4dtcpudplogtxt) ログファイル(`4DTCPLog.txt` から改名)内でのUDP イベントの詳細なログのサポート。 +- [Session class](../API/SessionClass.md) 内の[`.promote()`](../API/SessionClass.md#promote) および[`.demote()`](../API/SessionClass.md#demote) 関数を使用することでWeb プロセスの権限を動的に追加/削除することができます。 +- ビルドアプリケーションのダイアログボックスで[埋め込むライセンスの自動選択](../Desktop/building.md#アプリケーションの利用可能なライセンスの自動埋め込み)、 更新された[`Create deployment license`](../commands/create-deployment-license.md) コマンド、新しい[`AutomaticLicenseIntegration`](https://doc.4d.com/4Dv20R10/4D/20-R10/AutomaticLicenseIntegration.300-7611090.ja.html) ビルドアプリケーションXML キー。 +- [4D Write Pro](../WritePro/managing-formulas.md) および [スタイル付きテキストエリア](../FormObjects/input_overview.md)におけるフォーミュラのコピー/ペースト時のセキュリティの改善: カレントの4D アプリケーションの外部からコピーされたフォーミュラは、今後は常に値のみがペーストされます。 +- 4D AIKit コンポーネント: 新しい [OpenAIEmbeddingsAPI class](../aikit/Classes/OpenAIEmbeddingsAPI.md) を使用することで、OpenAI のAPI を使用して埋め込みを作成できます。 +- ストラクチャーエディターにおいて、オブジェクト型フィールドに対して[クラスを割り当てる](../Develop/field-properties.md) ことができます。 +- [再起的な依存関係](../Project/components.md#自動依存関係解決) の自動管理。 - 4Dランゲージ: - 統一性のため、[`Create entity selection`](../commands/create-entity-selection.md) コマンドおよび [`USE ENTITY SELECTION`](../commands/use-entity-selection.md) コマンドは、["4D 環境"](../commands/theme/4D_Environment.md) テーマから ["Selection"](../commands/theme/Selection.md) テーマへと移動しました。 - 新しい [`OBJECT SET DATA SOURCE FORMULA`](../commands/object-set-data-source-formula.md) および [`OBJECT Get data source formula`](../commands/object-get-data-source-formula.md) コマンドを使用して、フォームオブジェクトに対して`Formula` オブジェクトを割り当て、または読み出しができるようになります。 - [`LISTBOX SET PROPERTY`](../commands/listbox-set-property.md) および [`LISTBOX Get property`](../commands/listbox-get-property.md) は3つの新しい定数をサポートするようになりました: `lk current item`、`lk current item position`、および `lk selected items expression` です。 -- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=20_R10): list of all bugs that have been fixed in 4D 20 R10. +- [**修正リスト**](https://bugs.4d.fr/fixedbugslist?version=20_R10): 4D 20 R10 で修正されたバグのリストです(日本語版は[こちら](https://4d-jp.github.io/2025/188/release-note-version-20r10/))。 #### 動作の変更 - Windows 上では、印刷しか想定していない(つまりスクリーン上で使用不可能な)カレントプリンターフォントは、4D の起動時にはロードされないようになりました。 -- The *MeCab* library has been removed. This change only affects the processing of Japanese text. -- When an object variable or parameter is declared with a ["cs" class](../Concepts/classes.md#cs) type, assigning it with an object instance of a different class now generates a syntax error. -- [`.hasPrivilege()`](../API/SessionClass.md#hasprivilege) returns True for promoted privileges in the web process. -- The [`Time`](../commands/time) command now returns a negative time expression when the *timeValue* parameter is negative. For instance, `Time("-01:02:03")` will return **-01:02:03**. In previous releases, the negative sign was ignored. +- *MeCab* ライブラリーは削除されました。 この変更は、日本語テキストの処理のみに影響します。 +- ["cs" クラス](../Concepts/classes.md#cs) タイプを使用して宣言されたオブジェクト型変数またはオブジェクト型引数に、異なるクラスのオブジェクトインスタンスを代入した場合にはシンタックスエラーを生成するようになりました。 +- [`.hasPrivilege()`](../API/SessionClass.md#hasprivilege) 関数は、Web プロセス内において昇格された権限に対してはTrue を返すようになりました。 +- [`Time`](../commands/time) コマンドは、*timeValue* 引数が負の値の場合には、負の時間式を返すようになりました。 例えば、`Time("-01:02:03")` は **-01:02:03** を返します。 過去のリリースにおいては、負の符号は無視されていました。 ## 4D 20 R9 @@ -176,7 +177,7 @@ In binary databases, you need to select the required components in the 4D instal #### ハイライト - [オブジェクト参照](../Concepts/dt_object.md#オブジェクト演算子) と [コレクション参照](../Concepts/dt_collection.md#コレクション演算子) を対象とした比較演算子をサポート。 [`collection.query()`](../API/CollectionClass.md#query) は、[オブジェクト参照やコレクション参照をクエリの値](../API/CollectionClass.md#オブジェクト参照やコレクション参照で検索する) としてサポートするようになりました。 [`collection.query()`](../API/CollectionClass.md#query) は、[オブジェクト参照やコレクション参照をクエリの値](../API/CollectionClass.md#オブジェクト参照やコレクション参照で検索する) としてサポートするようになりました。 -- [宣言された名前空間](../Extensions/develop-components.md#コンポーネント名前空間の宣言) をコンポーネントが持つ場合、そのクラスは [`cs.`](../Concepts/classes.md#cs) を介して、ホストプロジェクトに読み込まれているすべてのコンポーネント間で自動的に共有されるようになりました。 +- [宣言された名前空間](../Extensions/develop-components.md#コンポーネント名前空間の宣言) をコンポーネントが持つ場合、そのクラスは [`cs.`](../Concepts/classes.md#cs). - コンポーネントマネージャー: [GitHub に保存されたコンポーネント](../Project/components.md#github-に保存されたコンポーネント) のサポート。 - 新しい [`entitySelection.clean()`](../API/EntitySelectionClass.md#clean) 関数と [`$clean`](../REST/$clean.md) REST API が追加されました。これらは、対象のエンティティセレクションから削除済みエンティティを除外したエンティティセレクションを新規に取得します。 - セッションの権限を確認し、デバッグを容易にするための新しい [`session.getPrivileges()`](../API/SessionClass.md#getprivileges) 関数と [`$info/privileges`](../REST/$info.md) REST API が追加されました。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ORDA/entities.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ORDA/entities.md index 29e1132a0df443..eb60ae72c2ff5e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ORDA/entities.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ORDA/entities.md @@ -469,7 +469,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection この関数は、データクラスのエンティティセレクションまたはエンティティが要求されるたびに呼び出されます。 フィルターは、エンティティセレクションが作成されたときに一度だけ実行されます。 -フィルターは、データクラスのエンティティセレクションを返さなければなりません。 戻り値のエンティティセレクションには、クエリの結果や、[`Storage`] に格納されているものなどが使えます。 +フィルターは、データクラスのエンティティセレクションを返さなければなりません。 It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md index cbf92c9aad387b..55806fa7ab68bf 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: Events +title: Entity Events ---
    履歴 @@ -12,19 +12,19 @@ title: Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::tip Related blog post -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: :::info note Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -52,7 +52,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). ### Summary table @@ -102,19 +102,19 @@ When an error occurs in an event, the other events are stopped at the first rais ### Error object properties -| プロパティ | 型 | 説明 | Set by the developer | -| ------------------ | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | ◯ | -| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | ◯ | -| extraDescription | Object | Free information to set up | ◯ | -| seriousError | Boolean | Used only with validate events (see below). Will insert a specific `status` value in the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) function:
  • If true: `dk status serious validation error`
  • If false: `dk status validation failed`
  • | Yes (default is false) | -| componentSignature | Text | Always "DBEV" | × | +| プロパティ | 型 | 説明 | Set by the developer | +| ------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | ◯ | +| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | ◯ | +| extraDescription | Object | Free information to set up | ◯ | +| seriousError | Boolean | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • `False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • | Yes (default is false) | +| componentSignature | Text | Always "DBEV" | × | -- The errors are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. -- In case of an error triggered by a **validate** event, the `fatalError` property allows you to insert a specific `status` and its associated `statusText` in the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions: - - If **false**: `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". Such errors do not require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. - - If **true**: `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". Such errors require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. They are raised at the end of the event and reach the client requesting the save/drop action (REST client for example). -- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error (`dk status serious error`) whatever the `seriousError` property value. +- [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. +- In case of an error triggered by a **validate** event, the `seriousError` property allows you to choose the level of the error to generate: + - If **true**: a serious error is thrown and should be handled by the [error processing code](../Concepts/error-handling.md#predictable-vs-unpredictable-errors), such as a [try catch](../Concepts/error-handling.md#trycatchend-try). In the result object of the calling function, `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". The error is raised at the end of the event and reach the client requesting the save/drop action (REST client for example). + - If **false** (default): a [silent (predictable) error is generated](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). It does not trigger any exception and is not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. In the result object of the calling function, `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". +- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error whatever the `seriousError` property value. ## Event function description @@ -139,7 +139,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi - the user sets a value on a 4D form, - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. +- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) The function receives an [*event* object](#event-parameter) as parameter. @@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`). #### 例題 -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro #### 例題 -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` ### `Function event afterSave` @@ -454,29 +452,25 @@ The function receives an [*event* object](#event-parameter) as parameter. - To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. - Throwing an [error object](#error-object) is **not supported** by this function. -#### 例題 1 +#### 例題 -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` ### `Function event validateDrop` @@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### 例題 1 +#### 例題 -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### 例題 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` ### `Function event dropping` @@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### 例題 1 +#### 例題 -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### 例題 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### 例題 1 +#### 例題 -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### 例題 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/Preferences/methods.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/Preferences/methods.md index e0d5eb69a426f8..e1e76859c3dc67 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/Preferences/methods.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/Preferences/methods.md @@ -179,8 +179,8 @@ The corresponding [clipboard shorcuts](../code-editor/write-class-method.md#clip このエリアでは、コードエディターの自動補完メカニズムを設定して、作業習慣に合わせることができます。 -| | 説明 | -| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| ウィンドウを自動で開く | 次の要素に関する提案ウィンドウを自動で開くかを指定します:
    • 定数
    • 変数(ローカルまたはインタープロセス)あるいはオブジェクト属性
    • テーブル
    • プロトタイプ (例: クラス関数)

    たとえば、"変数(ローカルまたはインタープロセス)あるいはオブジェクト属性" オプションがチェックされている場合、$ 文字を入力すると提案されるローカル変数のリストが表示されます:

    ![](../assets/en/Preferences/suggestionsAutoOpen.png)

    対応するオプションのチェックを外すことで、要素ごとにこの機能を無効にできます。 | -| 提案の決定 | コードエディターで、自動補完ウィンドウに表示されたカレントの提案を受け入れるための、入力コンテキストを設定します。
    • **タブと区切り文字**
      このオプションが選択されていると、タブキーまたは現在のコンテキストに関連する区切り文字で、現在選択されている提案を決定することができます。 たとえば "ALE" と入力して "(" を入力すると、4Dは自動で "ALERT(" とエディターに書き込みます。 区切り文字は以下の通りです:
      ( ; : = < [ {
    • **タブのみ**
      このオプションが選択されていると、現在の提案はタブキーを押したときにのみ受け入れられます。 これは特に ${1} のように、要素名に区切り文字を入力することを容易にします。**注記**: ウィンドウ内をダブルクリックするか、改行キーを押すことで提案を受け入れることもできます。
    | +| | 説明 | +| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ウィンドウを自動で開く | 次の要素に関する提案ウィンドウを自動で開くかを指定します:
    • 定数
    • 変数(ローカルまたはインタープロセス)あるいはオブジェクト属性
    • テーブル
    • プロトタイプ (例: クラス関数)

    たとえば、"変数(ローカルまたはインタープロセス)あるいはオブジェクト属性" オプションがチェックされている場合、$ 文字を入力すると提案されるローカル変数のリストが表示されます:

    ![](../assets/en/Preferences/suggestionsAutoOpen.png)

    対応するオプションのチェックを外すことで、要素ごとにこの機能を無効にできます。 | +| 提案の決定 | コードエディターで、自動補完ウィンドウに表示されたカレントの提案を受け入れるための、入力コンテキストを設定します。
    • **タブと区切り文字**
      このオプションが選択されていると、タブキーまたは現在のコンテキストに関連する区切り文字で、現在選択されている提案を決定することができます。 たとえば "ALE" と入力して "(" を入力すると、4Dは自動で "ALERT(" とエディターに書き込みます。 区切り文字は以下の通りです:
      ( ; : = < [ {
    • **タブのみ**
      このオプションが選択されていると、現在の提案はタブキーを押したときにのみ受け入れられます。 これは特に ${1} のように、要素名に区切り文字を入力することを容易にします。**注記**: ウィンドウ内をダブルクリックするか、改行キーを押すことで提案を受け入れることもできます。
    | diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/Project/components.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/Project/components.md index 5979f2a6997c4c..2b43e0d03225a0 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/Project/components.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/Project/components.md @@ -5,7 +5,7 @@ title: 依存関係 4D [プロジェクトアーキテクチャー](../Project/architecture.md) はモジュール式です。 [**コンポーネント**](../Concepts/components.md) や [**プラグイン**](../Concepts/plug-ins.md) をインストールすることで、4Dプロジェクトに追加機能を持たせることができます。 コンポーネントは4D コードで書かれていますが、プラグインは[あらゆる言語を使用してビルドすることができます](../Extensions/develop-plug-ins.md)。 -独自の 4Dコンポーネントを [開発](../Extensions/develop-components.md) し、[ビルド](../Desktop/building.md) することもできますし、4Dコミュニティによって共有されているパブリックコンポーネントを [GitHubで見つけて](https://github.com/search?q=4d-component\\\\\\&type=Repositories) ダウンロードすることもできます。 +独自の 4Dコンポーネントを [開発](../Extensions/develop-components.md) し、[ビルド](../Desktop/building.md) することもできますし、4Dコミュニティによって共有されているパブリックコンポーネントを [GitHubで見つけて](https://github.com/topics/4d-component) ダウンロードすることもできます。 4D 環境にインストールされると、拡張機能は特別なプロパティを持つ**依存関係** として扱われます。 @@ -326,7 +326,7 @@ GitHubでリリースが作成されると、そこに**タグ**と**バージ 依存関係マネージャは、それぞれのコンポーネントが持つ `dependencies.json` ファイルを読み込み、可能な限り指定されたバージョンを遵守しつつ全ての必要な依存関係を回帰的にインストールします。 これによって、ネストされた依存関係を手動で特定し、一つずつ追加しなくても済むようになります。 -- **コンフリクトの解決**: 複数の依存関係が同じコンポーネントの[異なるバージョン](#) を必要とする場合、依存関係マネージャは全ての重なったバージョン範囲を満たすバージョンを探し出すことでコンフリクトを自動的に解決しようとします。 一次依存関係が二次依存関係とコンフリクトを起こした場合には、一次依存関係が優先されます。 +- **コンフリクトの解決**: 複数の依存関係が同じコンポーネントの[異なるバージョン](#defining-a-github-dependency-version-range) を必要とする場合、依存関係マネージャは全ての重なったバージョン範囲を満たすバージョンを探し出すことでコンフリクトを自動的に解決しようとします。 一次依存関係が二次依存関係とコンフリクトを起こした場合には、一次依存関係が優先されます。 :::note @@ -349,7 +349,7 @@ GitHubでリリースが作成されると、そこに**タグ**と**バージ - 4D では、**デザイン/プロジェクト依存関係** メニューアイテムを選択します (開発環境)。
    ![dependency-menu](../assets/en/Project/dependency-menu.png) -- 4D Server では、**ウインドウ/プロジェクト依存関係** メニューアイテムを選択します。
    +- 4D Server では、**ウィンドウ/プロジェクト依存関係** メニュー項目を選択します。
    ![dependency-menu-server](../assets/en/Project/dependency-menu-server.png) 依存関係パネルが表示されます。 依存関係は ABC順にソートされます。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/REST/$filter.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/REST/$filter.md index 28f0596b8c40dc..bf6aa412bbfee3 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/REST/$filter.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/REST/$filter.md @@ -89,11 +89,11 @@ Use the `params` property to provide the filter with the vector comparison param The *vectorComparison* parameter is a collection of the following elements: -| プロパティ | 型 | 説明 | | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| [].vector | Object の Collection) | 必須設定です。 A collection that represents the vector to compare | | -| [].metric | Text | 任意。 クエリに使用する[ベクトル計算](../API/VectorClass.md#ことなるベクトル計算を理解する)。 Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | | -| | [].threshold | Real | 任意(デフォルト: 0.5)。 選択された"metric"に従って、コサイン、ドット、またはユークリッド類似度に基づいたベクトル比較をフィルタリングするために使用されるしきい値。 最適な結果を得るためには、特定の用途に最適な類似度のしきい値をきちんと選択することが強く推奨されます。 | +| プロパティ | 型 | 説明 | +| -------------------------------------------------------------------------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [].vector | Collection of numbers | 必須設定です。 A collection that represents the vector to compare | +| [].metric | Text | 任意。 クエリに使用する[ベクトル計算](../API/VectorClass.md#ことなるベクトル計算を理解する)。 Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": ベクトルのドット類似度を計算します。
  • "euclidean": ベクトル間のユークリッド距離を計算します。 | +| [].threshold | Real | 任意(デフォルト: 0.5)。 選択された"metric"に従って、コサイン、ドット、またはユークリッド類似度に基づいたベクトル比較をフィルタリングするために使用されるしきい値。 最適な結果を得るためには、特定の用途に最適な類似度のしきい値をきちんと選択することが強く推奨されます。 | Only a subset of **comparator** symbols are supported with vector comparisons. これらの比較記号は、結果としきい値を比較するのに使用されるという点に注意してください: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/REST/$method.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/REST/$method.md index 722858ec7053d5..df2bee8b228d9b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/REST/$method.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/REST/$method.md @@ -197,6 +197,7 @@ RESTリクエストで定義されたリレートエンティティのコレク - **日付** は JavaScript 形式で表す必要があります: YYYY-MM-DDTHH:MM:SSZ (例: "2010-10-05T23:00:00Z")。 日付属性のためだけに日付プロパティを指定した場合、タイムゾーンおよび時刻 (時間・分・秒) の情報は削除されます。 この場合、レスポンスの形式 dd!mm!yyyy (例: 05!10!2013) を使って日付を送信することも可能です。 - **ブール** は true または false です。 - `$upload` を使ってアップロードしたファイルは、`{ "ID": "D507BC03E613487E9B4C2F6A0512FE50"}` のような形式で返されるオブジェクトを渡すことで、ピクチャー型やBLOB型の属性に適用できます。 + ::: ### 例題 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md index 183cb255ecf2df..749f7fa9d1acad 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md @@ -31,10 +31,10 @@ title: VP Copy to object 任意の *options* 引数として、以下のプロパティを渡すことができます。 -| プロパティ | 型 | 説明 | -| ----------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Boolean | コマンド実行後もコピーされた値、書式、数式が保持するには *true* (デフォルト)。 削除するには *false*。 | -| copyOptions | Integer | コピーまたは移動する内容を指定します。 とりうる値:

    説明
    `vk clipboard options all` (デフォルト)値、フォーマット、フォーミュラを含むすべてのデータオブジェクトをコピーします。
    `vk clipboard options formatting`フォーマットだけをコピーします。
    `vk clipboard options formulas`フォーミュラだけをコピーします。
    `vk clipboard options formulas and formatting`フォーミュラとフォーマットをコピーします。
    `vk clipboard options values`値だけをコピーします。
    `vk clipboard options value and formatting`値とフォーマットをコピーします。

    | +| プロパティ | 型 | 説明 | +| ----------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| copy | Boolean | コマンド実行後もコピーされた値、書式、数式が保持するには *true* (デフォルト)。 削除するには *false*。 | +| copyOptions | Integer | コピーまたは移動する内容を指定します。 取り得る値:

    詳細
    `vk clipboard options all` (デフォルト)値、書式、数式を含め、全てのデータオブジェクトをコピーします。
    `vk clipboard options formatting`書式のみをコピーします。
    `vk clipboard options formulas`数式のみをコピーします。
    `vk clipboard options formulas and formatting`数式と書式をコピーします。
    `vk clipboard options values`値のみをコピーします。
    `vk clipboard options value and formatting`値と書式をコピーします。

    | [ワークブックオプション](vp-set-workbook-options.md) で定義されている貼り付けオプションが考慮されます。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md index 70ceccbf7b40d6..c394508d9bed5b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-find.md @@ -32,8 +32,8 @@ title: VP Find | afterColumn | Integer | 検索を開始するカラムの直前のカラムの番号。 *rangeObj* 引数が統合されたレンジの場合、渡されるカラムの番号は最初のレンジのものでなければなりません。 デフォルト値: -1 (*rangeObj* の最初) | | afterRow | Integer | 検索を開始する行の直前の行番号。 *rangeObj* 引数が統合されたレンジの場合、渡される行番号は最初のレンジのものでなければなりません。 デフォルト値: -1 (*rangeObj* の最初) | | all | Boolean |
  • true - *rangeObj* 内で *searchValue* の値に合致するセルはすべて返されます。
  • false - (デフォルト値) *rangeObj* 内で *searchValue* の値に合致する最初のセルのみが返されます。
  • | -| flags | Integer |
    `vk find flag exact match`セルの中身全体が検索値と完全に一致する必要があります
    `vk find flag ignore case`文字の大小は区別されません。 例: "a" と "A" は同じとみなされます。
    `vk find flag none`検索フラグは指定されていません (デフォルト)。
    `vk find flag use wild cards`検索文字列においてワイルドカード文字 (\*,?) を使用できます。 ワイルドカードは、すべての文字列の比較に使用することができ、ワイルドカードによって置き換わる文字の数は指定されません:
  • \* は 0 から複数文字に使用可能です (例: "bl*" を検索した場合、"bl"、"black"、"blob" などが合致します)。
  • ? は単一文字に使用可能です (例: "h?t" を検索した場合、"hot"、"hit" などが合致します)。
  • フラグは組み合わせることができます。 例: $search.flags:=vk find flag use wild cards+vk find flag ignore case | -| order | Integer |
    `vk find order by columns`検索がカラムごとに実行されます。 カラムの各行が検索されたあとに次のカラムへと移動します。
    `vk find order by rows`検索が行ごとに実行されます。 行の各カラムが検索されたあとに次の行へと移動します (デフォルト)。
    | +| flags | Integer |
    `vk find flag exact match`セルの中身全体が検索値と完全に一致する必要があります
    `vk find flag ignore case`文字の大小は区別されません。 例: "a" と "A" は同じとみなされます。
    `vk find flag none`検索フラグは指定されていません(デフォルト)
    `vk find flag use wild cards`検索文字列においてワイルドカード文字(\*,?)を使用 を使用できます。 ワイルドカードは、すべての文字列の比較に使用することができ、ワイルドカードによって置き換わる文字の数は指定されません:
  • \* は 0 から複数文字に使用可能です (例: "bl*" を検索した場合、"bl"、"black"、"blob" などが合致します)。
  • ? は単一文字に使用可能です (例: "h?t" を検索した場合、"hot"、"hit" などが合致します)。
  • フラグは組み合わせることができます。 例: $search.flags:=vk find flag use wild cards+vk find flag ignore case | +| order | Integer |
    `vk find order by columns`検索がカラムごとに実行されます。 カラムの各行が検索されたあとに次のカラムへと移動します。
    `vk find order by rows`検索は行ごとに実行されます。 行の各カラムが検索されたあとに次の行へと移動します (デフォルト)。
    | | target | Integer |
    `vk find target formula`セルフォーミュラ内で検索がおこなわれます。
    `vk find target tag`セルタグ内で検索がおこなわれます。
    `vk find target text`セルテキスト内で検索がおこなわれます (デフォルト)。

    フラグは組み合わせることができます。 例:$search.target:=vk find target formula+vk find target text

    | 任意の *replaceValue* 引数として、*rangeObj* 内で見つかった *searchValue* の値のテキストを置換するテキストを渡すことができます。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md index 5d069870ab5a4e..d2178137e0151b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-import-document.md @@ -43,33 +43,33 @@ title: VP IMPORT DOCUMENT 任意の *paramObj* 引数を渡すことで、読み込まれるドキュメントのプロパティを定義することができます: -| 引数 | | 型 | 説明 | -| ------------ | ------------------------- | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| formula | | 4D.Function | 読み込み終了時に実行させるコールバックメソッド。 [`Formula`](../../commands/formula.md) コマンドの戻り値フォーミュラを使用する必要があります。 [コールバックメソッド (フォーミュラ) の渡し方](vp-export-document.md#コールバックメソッド-フォーミュラ-の渡し方) を参照ください。 | -| password | | text | Microsoft Excel のみ (任意) - MS Excel ドキュメントの保護に使用されているパスワード。 | -| csvOptions | | object | CSV読み込みのオプション | -| | range | object | 書き出されるデータの、最初のセルを格納しているセルレンジ。 指定されたレンジがセルレンジではない場合、レンジの最初のセルが使用されます。 | -| | rowDelimiter | text | 行の区切り文字。 渡されなかった場合、区切り文字は 4D によって自動的に定義されます。 | -| | columnDelimiter | text | カラムの区切り文字。 デフォルト: "," | -| sjsOptions | | object | sjs 読み込みのオプション | -| | calcOnDemand | boolean | 要求されたときにだけフォーミュラを計算するかどうか。デフォルトは false。 | -| | dynamicReferences | boolean | 動的参照を含む関数を計算するかどうか。デフォルトは true。 | -| | fullRecalc | boolean | jsonデータを読み込んだ後に計算するかどうか。デフォルトは false。 | -| | includeFormulas | boolean | 読み込み時にフォーミュラを含めるかどうか。デフォルトは true。 | -| | includeStyles | boolean | 読み込み時にスタイルを含めるかどうか。デフォルトは true。 | -| | includeUnusedStyles | boolean | excel xml を json に変換する際、使用されていないカスタム名を含めるかどうか。デフォルトは true。 | -| | openMode | integer |
  • 0 (normal): 通常のオープンモード、レイジーなし、インクリメンタルなし。 ファイルを開くと、特定の時点で UI と UIイベントが更新され、応答します。
  • 1 (lazy): レイジー (遅延) オープンモード。 ファイルを開くと、アクティブなシートだけが直接読み込まれます。 ファイルを開くと、アクティブなシートだけが直接読み込まれます。 他のシートは使用された場合にのみ読み込まれます。
  • 2 (incremental): インクリメンタル (増分) オープンモード。 ファイルを開くと、データ読み込み中に UI と UIイベントが更新され、即座に応答します。
  • | -| excelOptions | | object | Excel のみ (任意) - Excel 書き出しのオプション | -| | includeStyles | boolean | Whether to include the style when importing, default true. | -| | includeFormulas | boolean | Whether to include the formula when importing, default true. | -| | frozenColumnsAsRowHeaders | boolean | Whether to treat the frozen columns as row headers when importing, default false. | -| | frozenRowsAsColumnHeaders | boolean | Whether to treat the frozen rows as column headers when importing, default false. | -| | fullRecalc | boolean | jsonデータを読み込んだ後に計算するかどうか。デフォルトは false。 | -| | dynamicReferences | boolean | Whether to calculate functions with dynamic reference, default true. | -| | calcOnDemand | boolean | Whether to calculate formulas only when they are demanded, default false. | -| | includeUnusedStyles | boolean | Whether to include the unused name style when converting excel xml to the json, default true. | -| | password | text | The password to open the workbook. | -| | openMode | text | The open mode of normal, lazy and incremental. By default is normal. | +| 引数 | | 型 | 説明 | +| ------------ | ------------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| formula | | 4D.Function | 読み込み終了時に実行させるコールバックメソッド。 [`Formula`](../../commands/formula.md) コマンドの戻り値フォーミュラを使用する必要があります。 [コールバックメソッド (フォーミュラ) の渡し方](vp-export-document.md#コールバックメソッド-フォーミュラ-の渡し方) を参照ください。 | +| password | | text | Microsoft Excel のみ (任意) - MS Excel ドキュメントの保護に使用されているパスワード。 | +| csvOptions | | object | CSV読み込みのオプション | +| | range | object | 書き出されるデータの、最初のセルを格納しているセルレンジ。 指定されたレンジがセルレンジではない場合、レンジの最初のセルが使用されます。 | +| | rowDelimiter | text | 行の区切り文字。 渡されなかった場合、区切り文字は 4D によって自動的に定義されます。 | +| | columnDelimiter | text | カラムの区切り文字。 デフォルト: "," | +| sjsOptions | | object | sjs 読み込みのオプション | +| | calcOnDemand | boolean | 要求されたときにだけフォーミュラを計算するかどうか。デフォルトは false。 | +| | dynamicReferences | boolean | 動的参照を含む関数を計算するかどうか。デフォルトは true。 | +| | fullRecalc | boolean | jsonデータを読み込んだ後に計算するかどうか。デフォルトは false。 | +| | includeFormulas | boolean | 読み込み時にフォーミュラを含めるかどうか。デフォルトは true。 | +| | includeStyles | boolean | 読み込み時にスタイルを含めるかどうか。デフォルトは true。 | +| | includeUnusedStyles | boolean | excel xml を json に変換する際、使用されていないカスタム名を含めるかどうか。デフォルトは true。 | +| | openMode | integer |
  • 0 (normal): 通常のオープンモード、レイジーなし、インクリメンタルなし。 ファイルを開くと、特定の時点で UI と UIイベントが更新され、応答します。
  • 1 (lazy): レイジー (遅延) オープンモード。 ファイルを開くと、アクティブなシートだけが直接読み込まれます。 他のシートは使用された場合にのみ読み込まれます。
  • 2 (incremental): インクリメンタル (増分) オープンモード。 ファイルを開くと、データ読み込み中に UI と UIイベントが更新され、即座に応答します。
  • | +| excelOptions | | object | Excel のみ (任意) - Excel 書き出しのオプション | +| | includeStyles | boolean | Whether to include the style when importing, default true. | +| | includeFormulas | boolean | Whether to include the formula when importing, default true. | +| | frozenColumnsAsRowHeaders | boolean | Whether to treat the frozen columns as row headers when importing, default false. | +| | frozenRowsAsColumnHeaders | boolean | Whether to treat the frozen rows as column headers when importing, default false. | +| | fullRecalc | boolean | jsonデータを読み込んだ後に計算するかどうか。デフォルトは false。 | +| | dynamicReferences | boolean | Whether to calculate functions with dynamic reference, default true. | +| | calcOnDemand | boolean | Whether to calculate formulas only when they are demanded, default false. | +| | includeUnusedStyles | boolean | Whether to include the unused name style when converting excel xml to the json, default true. | +| | password | text | The password to open the workbook. | +| | openMode | text | The open mode of normal, lazy and incremental. By default is normal. | :::note 注記 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md index b60aa5046e33ff..731d78f1d33f84 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-move-cells.md @@ -35,10 +35,10 @@ title: VP MOVE CELLS *options* は、複数のプロパティを持ちます: -| プロパティ | 型 | 説明 | -| ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Boolean | *originRange* のセルの値・書式・フォーミュラをコマンド実行後に削除するかどうかを指定します:
    • 削除するには *false* (デフォルト)。
    • 保持するには *true*。
    | -| pasteOptions | Integer | ペーストする内容を指定します。 とりうる値:

    説明
    `vk clipboard options all` (デフォルト)値・フォーマット・フォーミュラを含むすべてのデータオブジェクトをペーストします。
    `vk clipboard options formatting`フォーマットだけをペーストします。
    `vk clipboard options formulas`フォーミュラだけをペーストします。
    `vk clipboard options formulas and formatting`フォーミュラとフォーマットをペーストします。
    `vk clipboard options values`値だけをペーストします。
    `vk clipboard options value and formatting`値とフォーマットをペーストします。

    | +| プロパティ | 型 | 説明 | +| ------------ | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| copy | Boolean | *originRange* のセルの値・書式・フォーミュラをコマンド実行後に削除するかどうかを指定します:
    • 削除するには *false* (デフォルト)。
    • 保持するには *true*。
    | +| pasteOptions | Integer | ペーストする内容を指定します。 取り得る値:

    詳細
    `vk clipboard options all` (デフォルト)値、書式、数式を含め、全てのデータオブジェクトをペーストします。
    `vk clipboard options formatting`書式のみをペーストします。
    `vk clipboard options formulas`数式のみをペーストします。
    `vk clipboard options formulas and formatting`数式と書式をコピーします。
    `vk clipboard options values`値のみをペーストします。
    `vk clipboard options value and formatting`値と書式をペーストします。

    | [ワークブックオプション](vp-set-workbook-options.md) で定義されている貼り付けオプションが考慮されます。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-data-context.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-data-context.md index 36566919d9dbcf..a0a7967066cd84 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-data-context.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-data-context.md @@ -42,10 +42,10 @@ title: VP SET DATA CONTEXT *options* には、追加のオプションを格納したオブジェクトを渡せます。 利用可能なプロパティは次のとおりです: -| プロパティ | 型 | 説明 | -| ------------------- | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| reset | Object | 新しいコンテキストを読み込む前にシートの内容をリセットする場合は true、それ以外は false (デフォルト) | -| autoGenerateColumns | Object | コレクション型のデータの場合にのみ使用します。 データコンテキストがバインドされると同時に、カラムを自動生成する場合は true (デフォルト)。 この場合、次のルールが適用されます:
    • *dataColl* がオブジェクトのコレクションの場合、属性名はカラムのタイトルとして使用されます (例題 2 参照)。
    • *dataColl* がスカラー値のサブコレクションを含む場合、各サブコレクションは一つの行の値を定義します (例題 3 参照)。 最初のサブコレクションにより、生成されるカラム数が決定します。
    | +| プロパティ | 型 | 説明 | +| ------------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| reset | Object | 新しいコンテキストを読み込む前にシートの内容をリセットする場合は true、それ以外は false (デフォルト) | +| autoGenerateColumns | Object | コレクション型のデータの場合にのみ使用します。 データコンテキストがバインドされると同時に、カラムを自動生成する場合は true (デフォルト)。 この場合、以下のルールが適用されます:
    • If *dataColl* がオブジェクトのコレクションである場合、属性名がカラムのタイトルとして使用されます(例題2 を参照)。
    • *dataColl* がスカラー値のサブコレクションを格納している場合、各サブコレクションは一つの行の値を定義します (例題3 参照)。 最初のサブコレクションにより、生成されるカラム数が決定します。
    | *sheet* には、データコンテキストを受け取るシートのインデックスを渡します。 インデックスを渡さなかった場合、コンテキストはカレントシートに対して適用されます。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-show-print-lines.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-show-print-lines.md index 39fe5f6b0ff3cd..2657e9dbfee53e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-show-print-lines.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-show-print-lines.md @@ -17,7 +17,7 @@ title: VP SET SHOW PRINT LINES ## 説明 -`VP SET SHOW PRINT LINES` コマンドは、 スプレッドシート内で印刷プレビュー線を表示するかどうかを設定します。 +`VP SET SHOW PRINT LINES` コマンドは、スプレッドシート内で印刷プレビュー線を表示するかどうかを設定します。。 *vpAreaName* には、4D View Pro エリアの名前を渡します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md index a8d88482966a5d..4ee5c786941f9d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md @@ -28,66 +28,66 @@ title: VP SET WORKBOOK OPTIONS 次の表は、利用可能なワークブックオプションの一覧です: -| プロパティ | 型 | 説明 | -| ------------------------------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| allowUserDragMerge | boolean | ドラッグ&マージオプションを許可します (複数セルを選択し、選択をドラッグしてセルを結合します) | -| allowAutoCreateHyperlink | boolean | スプレッドシート内でハイパーリンクの自動作成を有効にします。 | -| allowContextMenu | boolean | ビルトインのコンテキストメニューの使用を許可します。 | -| allowCopyPasteExcelStyle | boolean | スプレッドシートのスタイルを Excel にコピー&ペーストすることを許可します (逆も可)。 | -| allowDynamicArray | boolean | ワークシート内で動的配列を有効にします。 | -| allowExtendPasteRange | boolean | 貼り付けデータが貼り付け先の範囲に収まりきらない場合に、貼り付け先の範囲を拡張します。 | -| allowSheetReorder | boolean | シートの順序変更を許可します。 | -| allowUndo | boolean | 編集を元に戻す操作を許可します。 | -| allowUserDeselect | boolean | 選択範囲から特定のセルを除外することを許可します。 | -| allowUserDragDrop | boolean | レンジデータのドラッグ&ドロップを許可します。 | -| allowUserDragFill | boolean | ドラッグ&フィルを許可します。 | -| allowUserEditFormula | boolean | セルへのフォーミュラの入力を許可します。 | -| allowUserResize | boolean | カラムと行のリサイズを許可します。 | -| allowUserZoom | boolean | ズームを許可します (Ctrl + マウスホイール)。 | -| autoFitType | number | セル内やヘッダー内に収まるよう、内容をフォーマットします。 使用可能な値:
    定数説明
    vk auto fit type cell 0 内容をセル内に収めます。
    vk auto fit type cell with header 1 内容をセル内・ヘッダー内に収めます。
    | -| backColor | string | エリアの背景色を表すカラー文字列 (例: "red"、"#FFFF00"、"rgb(255,0,0)"、"Accent 5")。 backgroundImage を設定している場合、背景色は非表示になります。 | -| backgroundImage | string / picture / file | エリアの背景画像。 | -| backgroundImageLayout | number | 背景画像のレイアウト。 使用可能な値:
    定数説明
    vk image layout center 1 エリアの中央に表示。
    vk image layout none 3 エリアの左上に元のサイズで表示。
    vk image layout stretch 0 エリアを埋めるように拡大表示。
    vk image layout zoom 2 アスペクト比を維持して表示。
    | -| calcOnDemand | boolean | 要求されたときのみフォーミュラを計算します。 | -| columnResizeMode | number | カラムのリサイズモード。 使用可能な値:
    定数説明
    vk resize mode normal 0 通常のリサイズモード (残りのカラムに影響します)
    vk resize mode split 1 split モード (残りのカラムに影響しません)
    | -| copyPasteHeaderOptions | number | データのコピー/ペースト時に含めるヘッダーについて指定します。 使用可能な値:
    定数説明
    vk copy paste header options all headers3 データのコピー時: 選択ヘッダーを含めます。データのペースト時: 選択ヘッダーを上書きします。
    vk copy paste header options column headers 2 データのコピー時: 選択されたカラムヘッダーを含めます。データのペースト時: 選択されたカラムヘッダーを上書きします。
    vk copy paste header options no headers0 データのコピー時: ヘッダーを含めません。データのペースト時: ヘッダーを上書きしません。
    vk copy paste header options row headers1 データのコピー時: 選択された行ヘッダーを含めます。データのペースト時: 選択された行ヘッダーを上書きします。
    | -| customList | collection | ドラッグ&フィルをカスタマイズするためのリストです。フィルの際には、このリストに合致する値が入力されます。 各コレクション要素は、文字列のコレクションです。 [SpreadJS のドキュメント](https://developer.mescius.com/spreadjs/docs/features/cells/AutoFillData/AutoFillLists) 参照。 | -| cutCopyIndicatorBorderColor | string | ユーザーが選択をカットまたはコピーしたときの領域の境界色。 | -| cutCopyIndicatorVisible | boolean | コピーまたはカットされた際の領域を表示します。 | -| defaultDragFillType | number | デフォルトのドラッグ&フィルタイプ。 使用可能な値 :
    定数説明
    vk auto fill type auto 5 自動でセルをフィルします。
    vk auto fill type clear values 4 セルの値をクリアします。
    vk auto fill type copycells 0 値・フォーマット・フォーミュラを含むすべてのデータオブジェクトでセルをフィルします。
    vk auto fill type fill formatting only 2 フォーマットのみでセルをフィルします。
    vk auto fill type fill series 1 連続データでフィルします。
    vk auto fill type fill without formatting 3 値のみでセルをフィルします (フォーマットは除外)。
    | -| enableAccessibility | boolean | スプレッドシートにおけるアクセシビリティのサポートを有効にします。 | -| enableFormulaTextbox | boolean | フォーミュラテキストボックスを有効化します。 | -| grayAreaBackColor | string | グレー領域の背景色を表すカラー文字列 (例: "red"、"#FFFF00"、"rgb(255,0,0)"、"Accent 5")。 | -| highlightInvalidData | boolean | 無効なデータをハイライト表示します。 | -| iterativeCalculation | boolean | 反復計算を有効にします。 [SpreadJS のドキュメント](https://developer.mescius.com/spreadjs/docs/formulareference/formulaoverview/calculating-iterative) 参照。 | -| iterativeCalculationMaximumChange | numeric | 2つの計算値の最大差。 | -| iterativeCalculationMaximumIterations | numeric | フォーミュラが反復計算される最大回数。 | -| newTabVisible | boolean | 新規シートを挿入するための特別なタブを表示します。 | -| numbersFitMode | number | 日付/数値データがカラム幅を超える場合の表示モード。 使用可能な値:
    定数説明
    vk numbers fit mode mask0 データの中身を "###" で置き換え、Tipを表示します。
    vk numbers fit mode overflow 1 データの中身を文字列として表示します。 隣のセルが空であれば、はみ出して表示します。
    | -| pasteSkipInvisibleRange | boolean | 非表示のレンジへの貼り付けについて指定します。
    • False (デフォルト): データを貼り付けます。
    • True: 非表示のレンジはスキップします。
    非表示のレンジについての詳細は [SpreadJS のドキュメント](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) を参照ください。 | -| referenceStyle | number | セルフォーミュラにおける、セルやレンジ参照のスタイル。 使用可能な値:
    定数説明
    vk reference style A1 0 A1 スタイルを使用します。
    vk reference style R1C1 1 R1C1 スタイルを使用します。
    | -| resizeZeroIndicator | number | 行やカラムのサイズが 0 に変更されたときの描画ポリシー。 使用可能な値:
    定数説明
    vk resize zero indicator default 0 行やカラムのサイズが 0 に変更されたときに、現在の描画ポリシーを使用します。
    vk resize zero indicator enhanced 1 行やカラムのサイズが 0 に変更されたときに、2本の短い線を描画します。
    | -| rowResizeMode | number | 行のリサイズモード。 使用可能な値は columnResizeMode と同じです。 | -| scrollbarAppearance | number | スクロールバーの見た目。 使用可能な値:
    定数説明
    vk scrollbar appearance mobile1 モバイル風のスクロールバー。
    vk scrollbar appearance skin (デフォルト)0 Excel風のクラシックなスクロールバー。
    | -| scrollbarMaxAlign | boolean | スクロールバーをアクティブシートの最後の行およびカラムに揃えます。 | -| scrollbarShowMax | boolean | シートのカラムと行の総数に基づいてスクロールバーを表示します。 | -| scrollByPixel | boolean | ピクセル単位のスクロールを有効にします。 | -| scrollIgnoreHidden | boolean | スクロールバーは非表示の行やカラムを無視します。 | -| scrollPixel | integer | scrollByPixel が true の場合、スクロール毎のピクセル数を指定します。 最終的にスクロールするピクセル数は `scrolling delta (スクロールの相対変化値) * scrollPixel` によって算出されます。 例: scrolling delta が 3、scrollPixel が 5 の場合、最終的なスクロールピクセル数は 15 です。 | -| showDragDropTip | boolean | ドラッグ&ドロップの Tip を表示します。 | -| showDragFillSmartTag | boolean | ドラッグ&フィルダイアログを表示します。 | -| showDragFillTip | boolean | ドラッグ&フィルの Tip を表示します。 | -| showHorizontalScrollbar | boolean | 横スクロールバーを表示します。 | -| showResizeTip | number | リサイズ Tip の表示を指定します。 使用可能な値:
    定数説明
    vk show resize tip both 3 縦と横のリサイズ Tip が表示されます。
    vk show resize tip column 1 横のリサイズ Tip のみ表示されます。
    vk show resize tip none 0 リサイズ Tip は表示されません。
    vk show resize tip row 2 縦のリサイズ Tip のみ表示されます。
    | -| showScrollTip | number | スクロール Tip の表示を指定します。 使用可能な値:
    定数説明
    vk show scroll tip both 3 縦と横のスクロール Tip が表示されます。
    vk show scroll tip horizontal 1 横のスクロール Tip のみ表示されます。
    vk show scroll tip none スクロール Tip は表示されません。
    vk show scroll tip vertical 2 縦のスクロール Tip のみ表示されます。
    | -| showVerticalScrollbar | boolean | 縦スクロールバーを表示します。 | -| tabEditable | boolean | タブストリップの編集を有効にします。 | -| tabNavigationVisible | boolean | タブナビゲーションを表示します。 | -| tabStripPosition | number | タブストリップの位置を指定します。 使用可能な値:
    定数説明
    vk tab strip position bottom 0 タブストリップはワークブックの下側に位置します。
    vk tab strip position left 2 タブストリップはワークブックの左側に位置します。
    vk tab strip position right 3 タブストリップはワークブックの右側に位置します。
    vk tab strip position top 1 タブストリップはワークブックの上側に位置します。
    | -| tabStripRatio | number | スプレッドシートエリアの幅において、タブストリップが占める割合を指定します (0.x)。 残るスペース (1 - 0.x) には横スクロールバーが表示されます。 | -| tabStripVisible | boolean | タブストリップを表示します。 | -| tabStripWidth | number | タブストリップの位置が左側/右側の場合に、その幅を指定します。 デフォルト値は最小値の 80 です。 | -| useTouchLayout | boolean | Spreadコンポーネントを提示するのにタッチレイアウトを使用するかどうかを指定します。 | +| プロパティ | 型 | 説明 | +| ------------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| allowUserDragMerge | boolean | ドラッグ&マージオプションを許可します (複数セルを選択し、選択をドラッグしてセルを結合します) | +| allowAutoCreateHyperlink | boolean | スプレッドシート内でハイパーリンクの自動作成を有効にします。 | +| allowContextMenu | boolean | ビルトインのコンテキストメニューの使用を許可します。 | +| allowCopyPasteExcelStyle | boolean | スプレッドシートのスタイルを Excel にコピー&ペーストすることを許可します (逆も可)。 | +| allowDynamicArray | boolean | ワークシート内で動的配列を有効にします。 | +| allowExtendPasteRange | boolean | 貼り付けデータが貼り付け先の範囲に収まりきらない場合に、貼り付け先の範囲を拡張します。 | +| allowSheetReorder | boolean | シートの順序変更を許可します。 | +| allowUndo | boolean | 編集を元に戻す操作を許可します。 | +| allowUserDeselect | boolean | 選択範囲から特定のセルを除外することを許可します。 | +| allowUserDragDrop | boolean | レンジデータのドラッグ&ドロップを許可します。 | +| allowUserDragFill | boolean | ドラッグ&フィルを許可します。 | +| allowUserEditFormula | boolean | セルへのフォーミュラの入力を許可します。 | +| allowUserResize | boolean | カラムと行のリサイズを許可します。 | +| allowUserZoom | boolean | ズームを許可します (Ctrl + マウスホイール)。 | +| autoFitType | number | セル内やヘッダー内に収まるよう、内容をフォーマットします。 使用可能な値:
    定数説明
    vk auto fit type cell 0 内容をセル内に収めます。
    vk auto fit type cell with header 1 内容をセル内・ヘッダー内に収めます。
    | +| backColor | string | エリアの背景色を表すカラー文字列 (例: "red"、"#FFFF00"、"rgb(255,0,0)"、"Accent 5")。 backgroundImage を設定している場合、背景色は非表示になります。 | +| backgroundImage | string / picture / file | エリアの背景画像。 | +| backgroundImageLayout | number | 背景画像のレイアウト。 利用可能な値:
    定数詳細
    vk image layout center 1エリアの中心に配置。
    vk image layout none 3エリアの左上端にオリジナルのサイズで配置。
    vk image layout stretch 0エリアを埋めるように配置。
    vk image layout zoom 2元々のアスペクト比で表示。
    | +| calcOnDemand | boolean | 要求されたときのみフォーミュラを計算します。 | +| columnResizeMode | number | カラムのリサイズモード。 使用可能な値:
    定数説明
    vk resize mode normal 0 通常のリサイズモード (残りのカラムに影響します)
    vk resize mode split 1 split モード (残りのカラムに影響しません)
    | +| copyPasteHeaderOptions | number | データのコピー/ペースト時に含めるヘッダーについて指定します。 利用可能な値:
    定数詳細
    vk copy paste header options all headers3データがコピーされる際に選択されたヘッダーを含み、データがペーストされるときに選択されたヘッダーを上書きする。
    vk copy paste header options column headers 2データがコピーされる際に選択されたカラムヘッダーを含み、データがペーストされるときに選択されたカラムヘッダを上書きする。
    vk copy paste header options no headers0データがコピーされる際にカラム及び行ヘッダーは含まれず、データがペーストされるときにカラムおよび行ヘッダーは上書きされません。
    vk copy paste header options row headers1データがコピーされる際に選択された行ヘッダーを含み、データがペーストされる際に選択された行ヘッダーを上書きします。
    | +| customList | collection | ドラッグ&フィルをカスタマイズするためのリストです。フィルの際には、このリストに合致する値が入力されます。 各コレクション要素は、文字列のコレクションです。 [SpreadJS のドキュメント](https://developer.mescius.com/spreadjs/docs/features/cells/AutoFillData/AutoFillLists) 参照。 | +| cutCopyIndicatorBorderColor | string | ユーザーが選択をカットまたはコピーしたときの領域の境界色。 | +| cutCopyIndicatorVisible | boolean | コピーまたはカットされた際の領域を表示します。 | +| defaultDragFillType | number | デフォルトのドラッグ&フィルタイプ。 使用可能な値 :
    定数説明
    vk auto fill type auto 5 自動でセルをフィルします。
    vk auto fill type clear values 4セルの値をクリアします。
    vk auto fill type copycells 0値、書式、数式を含め、全てのデータオブジェクトでセルを埋めます。
    vk auto fill type fill formatting only 2書式のみをセルにフィルします。
    vk auto fill type fill series 1 セルを系列で埋めます。
    vk auto fill type fill without formatting 3 値のみでセルをフィルします (フォーマットは除外)。
    | +| enableAccessibility | boolean | スプレッドシートにおけるアクセシビリティのサポートを有効にします。 | +| enableFormulaTextbox | boolean | フォーミュラテキストボックスを有効化します。 | +| grayAreaBackColor | string | グレー領域の背景色を表すカラー文字列 (例: "red"、"#FFFF00"、"rgb(255,0,0)"、"Accent 5")。 | +| highlightInvalidData | boolean | 無効なデータをハイライト表示します。 | +| iterativeCalculation | boolean | 反復計算を有効にします。 [SpreadJS のドキュメント](https://developer.mescius.com/spreadjs/docs/formulareference/formulaoverview/calculating-iterative) 参照。 | +| iterativeCalculationMaximumChange | numeric | 2つの計算値の最大差。 | +| iterativeCalculationMaximumIterations | numeric | フォーミュラが反復計算される最大回数。 | +| newTabVisible | boolean | 新規シートを挿入するための特別なタブを表示します。 | +| numbersFitMode | number | 日付/数値データがカラム幅を超える場合の表示モード。 使用可能な値:
    定数説明
    vk numbers fit mode mask0 データの中身を "###" で置き換え、Tipを表示します。
    vk numbers fit mode overflow 1 データの中身を文字列として表示します。 隣のセルが空であれば、はみ出して表示します。
    | +| pasteSkipInvisibleRange | boolean | 非表示のレンジへの貼り付けについて指定します。
    • False (デフォルト): データを貼り付けます。
    • True: 非表示のレンジはスキップします。
    非表示のレンジについての詳細は [SpreadJS のドキュメント](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) を参照ください。 | +| referenceStyle | number | セルフォーミュラにおける、セルやレンジ参照のスタイル。 利用可能な値:
    定数詳細
    vk reference style A1 0A1 スタイルを使用。
    vk reference style R1C1 1R1C1 スタイルを使用。
    | +| resizeZeroIndicator | number | 行やカラムのサイズが 0 に変更されたときの描画ポリシー。 利用可能な値:
    定数詳細
    vk resize zero indicator default 0行またはカラムがゼロにリサイズされた際には現在の描画ポリシーを使用します。
    vk resize zero indicator enhanced 1行またはカラムがゼロにリサイズされた際には2本の短い線を描画します。
    | +| rowResizeMode | number | 行のリサイズモード。 使用可能な値は columnResizeMode と同じです。 | +| scrollbarAppearance | number | スクロールバーの見た目。 利用可能な値:
    定数詳細
    vk scrollbar appearance mobile1 モバイルのスクロールバーの見た目。
    vk scrollbar appearance skin (デフォルト)0Excel 風のクラシックなスクロールバーの見た目。
    | +| scrollbarMaxAlign | boolean | スクロールバーをアクティブシートの最後の行およびカラムに揃えます。 | +| scrollbarShowMax | boolean | シートのカラムと行の総数に基づいてスクロールバーを表示します。 | +| scrollByPixel | boolean | ピクセル単位のスクロールを有効にします。 | +| scrollIgnoreHidden | boolean | スクロールバーは非表示の行やカラムを無視します。 | +| scrollPixel | integer | scrollByPixel が true の場合、スクロール毎のピクセル数を指定します。 最終的にスクロールするピクセル数は `scrolling delta (スクロールの相対変化値) * scrollPixel` によって算出されます。 例: scrolling delta が 3、scrollPixel が 5 の場合、最終的なスクロールピクセル数は 15 です。 | +| showDragDropTip | boolean | ドラッグ&ドロップの Tip を表示します。 | +| showDragFillSmartTag | boolean | ドラッグ&フィルダイアログを表示します。 | +| showDragFillTip | boolean | ドラッグ&フィルの Tip を表示します。 | +| showHorizontalScrollbar | boolean | 横スクロールバーを表示します。 | +| showResizeTip | number | リサイズ Tip の表示を指定します。 利用可能な値:
    定数詳細
    vk show resize tip both 3水平方向と垂直方向のリサイズTips が表示されます。
    vk show resize tip column 1水平方向のリサイズ Tips のみ表示されます。
    vk show resize tip none 0リサイズTips は表示されません。
    vk show resize tip row 2垂直方向のリサイズTips のみ表示されます。
    | +| showScrollTip | number | スクロール Tip の表示を指定します。 利用可能な値:
    定数詳細
    vk show scroll tip both 3水平方向と垂直方向のスクロールTips が表示されます。
    vk show scroll tip horizontal 1水平方向のスクロールTips のみが表示されます。
    vk show scroll tip none スクロールTips は表示されません。
    vk show scroll tip vertical 2垂直方向のスクロールTips のみが表示されます。
    | +| showVerticalScrollbar | boolean | 縦スクロールバーを表示します。 | +| tabEditable | boolean | タブストリップの編集を有効にします。 | +| tabNavigationVisible | boolean | タブナビゲーションを表示します。 | +| tabStripPosition | number | タブストリップの位置を指定します。 利用可能な値:
    定数詳細
    vk tab strip position bottom 0タブストリップの位置は、ワークブックの下に対しての相対位置となります。
    vk tab strip position left 2タブストリップの位置は、ワークブックの左に対しての相対位置となります。
    vk tab strip position right 3タブストリップの位置は、ワークブックの右に対しての相対位置となります。
    vk tab strip position top 1タブストリップの一は、ワークブックの上に対しての相対位置となります。
    | +| tabStripRatio | number | スプレッドシートエリアの幅において、タブストリップが占める割合を指定します (0.x)。 残るスペース (1 - 0.x) には横スクロールバーが表示されます。 | +| tabStripVisible | boolean | タブストリップを表示します。 | +| tabStripWidth | number | タブストリップの位置が左側/右側の場合に、その幅を指定します。 デフォルト値は最小値の 80 です。 | +| useTouchLayout | boolean | Spreadコンポーネントを提示するのにタッチレイアウトを使用するかどうかを指定します。 | ## 例題 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md index d857bb23d70623..6f6e8aacb4e491 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md @@ -64,12 +64,17 @@ The following action keywords are supported: ### Non-modifiable headers -The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions: +Some headers could not be added, modified or removed: -- "日付", -- "Content-Length" +| Header | 追加 | Set | Reduce | +| ---------------- | -- | ---------- | ------ | +| Date | × | × | × | +| Content-Length | × | × | × | +| Content-Encoding | × | × | × | +| Vary | ◯ | × | × | +| Set-Cookie | ◯ | Add cookie | × | -Modifying these headers do not generate errors, however modifications will be ignored. +Unauthorized changes on these headers do not generate errors, however modifications will be ignored. ### Current rules diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md index 17c2d431301349..858d01afba03f5 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md @@ -138,8 +138,8 @@ Qodlyページを利用した Webアプリケーションを開発するには | デバッガー | 4D IDE デバッガー
    *4D Serverのみ*: Qodly Studio デバッガー ([この段落](#4d-server-で-qodlyデバッガーを使用する) を参照ください) | Qodly Studio デバッガー | | REST/Web ロールとアクセス権 | roles.json の直接編集 / Qodly Studio ロールとアクセス権エディター | Qodly Studio ロールとアクセス権エディター | -(1) Qodly Studioでは **Model** 項目は無効化されています。
    -(2) 4D Serverでは、Qodly Studio のコードエディターで 4Dコードを開くことができます (**テストおよびデバッグ目的のみ**。[この段落](#開発と運用) を参照ください) 4Dシングルユーザーの場合、Qodly Studio で 4Dコードを開くと、シンタックスの配色がサポートされておらず、"Lsp not loaded" という警告が表示されます。 +(1) **Model** の項目はQodly Studio では無効化されています。
    +(2) 4D Server では、Qodly Studio で4D コードを開くことは、**テストおよびデバッグ目的のため** にサポートされています([こちらの段落](#開発と運用) をご覧ください)。 4Dシングルユーザーの場合、Qodly Studio で 4Dコードを開くと、シンタックスの配色がサポートされておらず、"Lsp not loaded" という警告が表示されます。 ### ランゲージ @@ -235,7 +235,7 @@ Qodly Studio デバッガーを実行中の 4D Server アプリケーション ::: -2. Qodly Studio のツールバーで、**Debug** ボタンをクリックします。
    +2. Qoldy Studio ツールバー内において、**Debug** ボタンをクリックします。
    ![qodly-debug](../assets/en/WebServer/qodly-debug.png) デバッグセッションが正常に開始されると、ボタンラベルに緑色の丸が表示され ![qodly-debug](../assets/en/WebServer/debug2.png) 、Qodly Studio デバッガーを使用できるようになります。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md index aef3a4ae864205..aec14fa9fb346b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md @@ -201,7 +201,7 @@ Else End if ``` -:::note +:::tips 関連したblog 記事 [高度な Webアプリケーションに対応したスケーラブルセッション](https://blog.4d.com/ja/scalable-sessions-for-advanced-web-applications/) diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md index 020a8dc923f782..ab699f1c9596ec 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md @@ -629,7 +629,8 @@ This option allows you to designate a user, previously defined in the [4D passwo Keep-Alive接続を設定する 2つのオプションがあります: -- **接続毎のリクエスト数**: ひとつの Keep-Alive接続におけるリクエストとレスポンスの最大数を設定します。 接続あたりのリクエスト数を制限することで、サーバーのリクエスト過多を避けることができます (攻撃者が使用するテクニック)。

    4D Webサーバーをホストするマシンのリソースに応じて、デフォルト値 (100) を増減できます。

    +- **接続毎のリクエスト数**: ひとつの Keep-Alive接続におけるリクエストとレスポンスの最大数を設定します。 接続あたりのリクエスト数を制限することで、サーバーのリクエスト過多を避けることができます (攻撃者が使用するテクニック)。

    + 4D Webサーバーをホストするマシンのリソースに応じて、デフォルト値 (100) を増減できます。

    - **タイムアウト**: この値を使用して、Webブラウザーからリクエストがおこなわれない状態で、Webサーバーが開かれた接続を保守する最大の待ち秒数を設定します。 この秒数が経過すると、サーバーは接続を閉じます。

    接続が閉じられた後に Webブラウザーがリクエストを送信すると、新しい TCP接続が作成されます。 この動作はユーザーからは見えません。

    diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md index e25a76d713e869..2f1e46a91dbe29 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md @@ -20,7 +20,7 @@ displayed_sidebar: docs ## 説明 -**WP Add picture** コマンドは、 引数として渡されたピクチャーを*wpDoc* 引数で指定したドキュメント内での固定された場所にアンカーし、その参照を返します。 返された参照は、 [WP SET ATTRIBUTES](wp-set-attributes.md) コマンドへと渡すことで*wpDoc* 引数で指定したドキュメント内の(ページ、セクション、ヘッダー、フッター等の)任意の位置へと移動させることができます。 レイヤーやサイズなども指定可能です。 +**WP Add picture** コマンドは、引数として渡されたピクチャーを、*wpDoc* 引数で指定されたドキュメント内の固定された位置にアンカーし、その参照を返します。 その返された参照は、[WP SET ATTRIBUTES](wp-set-attributes.md) コマンドに渡すことによって *wpDoc* (ページ、セクション、ヘッダー、フッター、他)引数内の任意の位置にピクチャーを移動させることができます。 レイヤーやサイズなども指定可能です。 *wpDoc* 引数には、4D Write Pro ドキュメントオブジェクトを渡します。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md index fd9e6d6d78da8e..53188bb1383cf8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md @@ -52,25 +52,25 @@ displayed_sidebar: docs *option* 引数には、書き出されるドキュメントのプロパティを定義する値を格納している[オブジェクト](# "ネイティブな4D オブジェクトとして構築されたデータ") を渡します。 次のプロパティを利用することができます: 次のプロパティを利用することができます: 次のプロパティを利用することができます: -| 定数 | 値 | 説明 | -| ------------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| wk CID host domain name | cidHostDomain | CID ホストドメイン名: 生成されるCID URL に追加されるホストドメイン。'@' が区切り文字として含まれます。 wk mime html フォーマットが使用されている際にのみ使用可能です。 Available only when the `wk mime html` format is used. | -| wk embedded pictures | embeddedPictures | SVG 書き出し専用。 [WP EXPORT DOCUMENT](wp-export-document.md) を呼び出した時、ピクチャーが書き出された.svg ファイル内に埋め込まれるかどうかを設定します。 Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted | -| wk factur x | facturX | PDF 書き出しのみ。 Value: object configuring a "Factur-X (ZUGFeRD)" PDF export (see [wk factur x object](#wk-factur-x-object)). | -| wk files | files | PDF 書き出しのみ。 Value: collection of objects, each of them describing a file to be embedded in the final document (see [wk files collection](#wk-files-collection)). This feature is only supported in PDF/A-3 documents: when the `wk files` attribute is used, the "PDF/A-3" version is automatically set (the `wk pdfa version` attribute is ignored). Factur-X PDF 書き出し(下記参照)の場合、コレクションの最初のオブジェクトにはFactur-X XML ファイルが格納されている必要があります。 | -| wk google fonts tag | googleFontsTag | SVG書き出し専用。 書き出されたSVG 内でのGoogle フォントの読み込みルールを設定します。 取り得る値:
  • false (デフォルト): google フォントの読み込みルールは何も追加されていません。
  • true: @import ルールを下記出されたファイルに追加します。 Useful if you want to use fonts that are not available by default on Windows or macOS.
  • **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. | -| wk HTML pretty print | htmlPrettyPrint | HTML コードは読みやすいようにフォーマットされます。 | -| wk max picture DPI | maxPictureDPI | 画像を適切な解像度にリサンプリング(縮小)するのに使用されます。 Windows でのSVG 画像に対しては。ラスタライズに使用されます。 デフォルト値: 300 (for wk optimized for \= wk print 時) 192 (for wk optimized for \= wk screen 時) 取り得る最大値: 1440 | -| wk optimized for | optimizedFor | 書き出されたドキュメントを、その目的に応じてどのように最適化するかを定義します。 取り得る値:
  • `wk print` (`wk pdf` および `wk svg` のデフォルト値) ビットマップピクチャーは、`wk max picture DPI` で定義されたDPI または300 (デフォルト値) を使用してダウンスケールされる可能性があり、また書き出されるタイプに対してコーデックがサポートされていない場合にはPNG へと変換される可能性もあります。 ベクターのピクチャーは `wk max picture DPI` で定義されたDPI、または300 (Windows のみ)を使用してPNG へと変換されます。 If a picture contains more than one format, the best format for printing is used (*e.g.*, .tiff instead or .jpg)
  • `wk screen` (default value for `wk web page complete` and `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 192 (Windows only). If a picture contains more than one format, the format for screen rendering is used.
  • **Note:** Documents exported in `wk docx` format are always optimized for wk print (wk optimized for option is ignored). | -| wk page index | pageIndex | SVG書き出し専用。 SVG書き出し専用。 SVG フォーマットへと書き出すページのインデックス(デフォルトは1)。 ページのインデックスは1から始まり、これはドキュメントの最初のページを指します。 **注意:** ページインデックスはページナンバリングとは異なるものです。 ページのインデックスは1から始まり、これはドキュメントの最初のページを指します。 **注意:** ページインデックスはページナンバリングとは異なるものです。 | -| wk pdfa version | pdfaVersion | PDF/A バージョンに適合したPDF を書き出します。 PDF/A のプロパティおよびバージョンの詳細については、[Wikipedia のPDF/A のページ](https://ja.wikipedia.org/wiki/PDF/A) を参照してください。 Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". Windows 上では、出力されたPDF ファイルは常に指定されたバージョンと同じになります。 | -| wk recompute formulas | recomputeFormulas | 書き出し時にフォーミュラを再計算するかどうかを定義します。 Possible values:
  • true - Default value. All formulas are recomputed
  • false - Do not recompute formulas
  • | -| wk visible background and anchored elements | visibleBackground | 背景画像/背景色、アンカーされた画像またはテキストボックス(ディスプレイ用では、ページビューモードまたは埋め込みビューモードでのみ表示されるエフェクト)を表示または書き出しをします。 取り得る値: True/False 取り得る値: True/False 取り得る値: True/False | -| wk visible empty images | visibleEmptyImages | 読み込めない、あるいは計算できない画像(空の画像またはサポートされていないフォーマットの画像)に対してデフォルトの黒い四角形を表示または書き出しします。 取り得る値: True/False. 取り得る値: True/False. デフォルト値: True 値がFalse の場合、たとえ画像に境界線、幅、高さ、背景などが設定されてあっても空の画像要素は全く表示されないという点に注意して下さい。これはインライン画像のページレイアウトに影響する可能性があります。 | -| wk visible footers | visibleFooters | フッターを表示または書き出しします(表示用においてはページビューモードでのみ表示されるエフェクトです)。 取り得る値: True/False 取り得る値: True/False | -| wk visible headers | visibleHeaders | ヘッダーを表示または書き出しします(表示用においてはページビューモードでのみ表示されるエフェクトです)。 取り得る値: True/False 取り得る値: True/False 取り得る値: True/False | -| wk visible references | visibleReferences | ドキュメントに挿入されている4D 式を参照として表示または書き出しします。 取り得る値: True/False | -| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` and `wk web page complete` export formats. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". | +| 定数 | 値 | 説明 | +| ------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| wk CID host domain name | cidHostDomain | CID ホストドメイン名: 生成されるCID URL に追加されるホストドメイン。'@' が区切り文字として含まれます。 wk mime html フォーマットが使用されている際にのみ使用可能です。 Available only when the `wk mime html` format is used. | +| wk embedded pictures | embeddedPictures | SVG 書き出し専用。 [WP EXPORT DOCUMENT](wp-export-document.md) を呼び出した時、ピクチャーが書き出された.svg ファイル内に埋め込まれるかどうかを設定します。 Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. ピクチャーは埋め込まれませんが、.svg ファイルから参照されます。
  • 注意: フォルダが既に存在する場合、ファイルが書き出される前にそのフォルダは空にされます。 If there is no image on the exported page, the folder is deleted | +| wk factur x | facturX | PDF 書き出しのみ。 Value: object configuring a "Factur-X (ZUGFeRD)" PDF export (see [wk factur x object](#wk-factur-x-object)). | +| wk files | files | PDF 書き出しのみ。 Value: collection of objects, each of them describing a file to be embedded in the final document (see [wk files collection](#wk-files-collection)). This feature is only supported in PDF/A-3 documents: when the `wk files` attribute is used, the "PDF/A-3" version is automatically set (the `wk pdfa version` attribute is ignored). Factur-X PDF 書き出し(下記参照)の場合、コレクションの最初のオブジェクトにはFactur-X XML ファイルが格納されている必要があります。 | +| wk google fonts tag | googleFontsTag | SVG書き出し専用。 書き出されたSVG 内でのGoogle フォントの読み込みルールを設定します。 取り得る値:
  • false (デフォルト): Google フォントの読み込みルールは何も追加されません。
  • true: 書き出されたファイルに@import ルールを追加します。 Windows またはmacOS において利用できないフォントを使用したい場合に有用です。
  • **注意:** このプロパティはデフォルトではFalse に設定されています。なぜなら読み込まれたGoogle フォントはネイティブのフォントを上書きしますが、一般的にはネイティブのフォントはブラウザ上で綺麗にレンダリングされるからです。 | +| wk HTML pretty print | htmlPrettyPrint | HTML コードは読みやすいようにフォーマットされます。 | +| wk max picture DPI | maxPictureDPI | 画像を適切な解像度にリサンプリング(縮小)するのに使用されます。 Windows でのSVG 画像に対しては。ラスタライズに使用されます。 デフォルト値: 300 (for wk optimized for \= wk print 時) 192 (for wk optimized for \= wk screen 時) 取り得る最大値: 1440 | +| wk optimized for | optimizedFor | 書き出されたドキュメントを、その目的に応じてどのように最適化するかを定義します。 取り得る値:
  • `wk print` (`wk pdf` および `wk svg` のデフォルト値) ビットマップピクチャーは、`wk max picture DPI` で定義されたDPI または300 (デフォルト値) を使用してダウンスケールされる可能性があり、また書き出されるタイプに対してコーデックがサポートされていない場合にはPNG へと変換される可能性もあります。 ベクターのピクチャーは `wk max picture DPI` で定義されたDPI、または300 (Windows のみ)を使用してPNG へと変換されます。 If a picture contains more than one format, the best format for printing is used (*e.g.*, .tiff instead or .jpg)
  • `wk screen` (default value for `wk web page complete` and `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 192 (Windows only). 画像に複数のフォーマットが含まれている場合、スクリーンレンダリング用のフォーマットが使用されます。
  • **注意:** `wk docx` フォーマットで書き出されたドキュメントは、常にwk print 用に最適化されています(wk optimized for オプションは無視されます)。 | +| wk page index | pageIndex | SVG書き出し専用。 SVG書き出し専用。 SVG フォーマットへと書き出すページのインデックス(デフォルトは1)。 ページのインデックスは1から始まり、これはドキュメントの最初のページを指します。 **注意:** ページインデックスはページナンバリングとは異なるものです。 ページのインデックスは1から始まり、これはドキュメントの最初のページを指します。 **注意:** ページインデックスはページナンバリングとは異なるものです。 | +| wk pdfa version | pdfaVersion | PDF/A バージョンに適合したPDF を書き出します。 PDF/A のプロパティおよびバージョンの詳細については、[Wikipedia のPDF/A のページ](https://ja.wikipedia.org/wiki/PDF/A) を参照してください。 Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". Windows 上では、出力されたPDF ファイルは常に指定されたバージョンと同じになります。 | +| wk recompute formulas | recomputeFormulas | 書き出し時にフォーミュラを再計算するかどうかを定義します。 Possible values:
  • true - Default value. All formulas are recomputed
  • false - Do not recompute formulas
  • | +| wk visible background and anchored elements | visibleBackground | 背景画像/背景色、アンカーされた画像またはテキストボックス(ディスプレイ用では、ページビューモードまたは埋め込みビューモードでのみ表示されるエフェクト)を表示または書き出しをします。 取り得る値: True/False 取り得る値: True/False 取り得る値: True/False | +| wk visible empty images | visibleEmptyImages | 読み込めない、あるいは計算できない画像(空の画像またはサポートされていないフォーマットの画像)に対してデフォルトの黒い四角形を表示または書き出しします。 取り得る値: True/False. 取り得る値: True/False. デフォルト値: True 値がFalse の場合、たとえ画像に境界線、幅、高さ、背景などが設定されてあっても空の画像要素は全く表示されないという点に注意して下さい。これはインライン画像のページレイアウトに影響する可能性があります。 | +| wk visible footers | visibleFooters | フッターを表示または書き出しします(表示用においてはページビューモードでのみ表示されるエフェクトです)。 取り得る値: True/False 取り得る値: True/False | +| wk visible headers | visibleHeaders | ヘッダーを表示または書き出しします(表示用においてはページビューモードでのみ表示されるエフェクトです)。 取り得る値: True/False 取り得る値: True/False 取り得る値: True/False | +| wk visible references | visibleReferences | ドキュメントに挿入されている4D 式を参照として表示または書き出しします。 取り得る値: True/False | +| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` and `wk web page complete` export formats. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". | 以下の表は*format* 引数の各フォーマットごとに利用可能な*option* 引数のオプションをあらわしています: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md index 4817ba6934cdb2..0832de95bfc83d 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md @@ -52,25 +52,25 @@ In the *format* parameter, pass a constant from the *4D Write Pro Constants* the *option* 引数には、書き出されるドキュメントのプロパティを定義する値を格納している[オブジェクト](# "ネイティブな4D オブジェクトとして構築されたデータ") を渡します。 次のプロパティを利用することができます: 次のプロパティを利用することができます: 次のプロパティを利用することができます: -| 定数 | 値 | 説明 | -| ------------------------------------------- | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| wk CID host domain name | cidHostDomain | CID ホストドメイン名: 生成されるCID URL に追加されるホストドメイン。'@' が区切り文字として含まれます。 wk mime html フォーマットが使用されている際にのみ使用可能です。 Available only when the `wk mime html` format is used. | -| wk embedded pictures | embeddedPictures | SVG 書き出し専用。 [WP EXPORT DOCUMENT](wp-export-document.md) を呼び出した時、ピクチャーが書き出された.svg ファイル内に埋め込まれるかどうかを設定します。 Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted | -| wk factur x | facturX | PDF 書き出しのみ。 Value: object configuring a "Factur-X (ZUGFeRD)" PDF export (see [wk factur x object](./wp-export-document.md#wk-factur-x-object)). | -| wk files | files | PDF 書き出しのみ。 Value: collection of objects, each of them describing a file to be embedded in the final document (see [wk files collection](./wp-export-document.md#wk-files-collection)). This feature is only supported in PDF/A-3 documents: when the `wk files` attribute is used, the "PDF/A-3" version is automatically set (the `wk pdfa version` attribute is ignored). Factur-X PDF 書き出し(下記参照)の場合、コレクションの最初のオブジェクトにはFactur-X XML ファイルが格納されている必要があります。 | -| wk google fonts tag | googleFontsTag | SVG書き出し専用。 書き出されたSVG 内でのGoogle フォントの読み込みルールを設定します。 取り得る値:
  • false (デフォルト): google フォントの読み込みルールは何も追加されていません。
  • true: @import ルールを下記出されたファイルに追加します。 Useful if you want to use fonts that are not available by default on Windows or macOS.
  • **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. | -| wk HTML pretty print | htmlPrettyPrint | HTML コードは読みやすいようにフォーマットされます。 | -| wk max picture DPI | maxPictureDPI | 画像を適切な解像度にリサンプリング(縮小)するのに使用されます。 Windows でのSVG 画像に対しては。ラスタライズに使用されます。 デフォルト値: 300 (for wk optimized for \= wk print 時) 192 (for wk optimized for \= wk screen 時) 取り得る最大値: 1440 | -| wk optimized for | optimizedFor | 書き出されたドキュメントを、その目的に応じてどのように最適化するかを定義します。 取り得る値:
  • `wk print` (`wk pdf` および `wk svg` のデフォルト値) ビットマップピクチャーは、`wk max picture DPI` で定義されたDPI または300 (デフォルト値) を使用してダウンスケールされる可能性があり、また書き出されるタイプに対してコーデックがサポートされていない場合にはPNG へと変換される可能性もあります。 ベクターのピクチャーは `wk max picture DPI` で定義されたDPI、または300 (Windows のみ)を使用してPNG へと変換されます。 If a picture contains more than one format, the best format for printing is used (*e.g.*, .tiff instead or .jpg)
  • `wk screen` (default value for `wk web page complete` and `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 192 (Windows only). If a picture contains more than one format, the format for screen rendering is used.
  • **Note:** Documents exported in `wk docx` format are always optimized for wk print (wk optimized for option is ignored). | -| wk page index | pageIndex | SVG書き出し専用。 SVG書き出し専用。 SVG フォーマットへと書き出すページのインデックス(デフォルトは1)。 ページのインデックスは1から始まり、これはドキュメントの最初のページを指します。 **注意:** ページインデックスはページナンバリングとは異なるものです。 ページのインデックスは1から始まり、これはドキュメントの最初のページを指します。 **注意:** ページインデックスはページナンバリングとは異なるものです。 | -| wk pdfa version | pdfaVersion | PDF/A バージョンに適合したPDF を書き出します。 PDF/A のプロパティおよびバージョンの詳細については、[Wikipedia のPDF/A のページ](https://ja.wikipedia.org/wiki/PDF/A) を参照してください。 Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". Windows 上では、出力されたPDF ファイルは常に指定されたバージョンと同じになります。 | -| wk recompute formulas | recomputeFormulas | 書き出し時にフォーミュラを再計算するかどうかを定義します。 Possible values:
  • true - Default value. All formulas are recomputed
  • false - Do not recompute formulas
  • | -| wk visible background and anchored elements | visibleBackground | 背景画像/背景色、アンカーされた画像またはテキストボックス(ディスプレイ用では、ページビューモードまたは埋め込みビューモードでのみ表示されるエフェクト)を表示または書き出しをします。 取り得る値: True/False 取り得る値: True/False 取り得る値: True/False | -| wk visible empty images | visibleEmptyImages | 読み込めない、あるいは計算できない画像(空の画像またはサポートされていないフォーマットの画像)に対してデフォルトの黒い四角形を表示または書き出しします。 取り得る値: True/False. 取り得る値: True/False. デフォルト値: True 値がFalse の場合、たとえ画像に境界線、幅、高さ、背景などが設定されてあっても空の画像要素は全く表示されないという点に注意して下さい。これはインライン画像のページレイアウトに影響する可能性があります。 | -| wk visible footers | visibleFooters | フッターを表示または書き出しします(表示用においてはページビューモードでのみ表示されるエフェクトです)。 取り得る値: True/False 取り得る値: True/False | -| wk visible headers | visibleHeaders | ヘッダーを表示または書き出しします(表示用においてはページビューモードでのみ表示されるエフェクトです)。 取り得る値: True/False 取り得る値: True/False 取り得る値: True/False | -| wk visible references | visibleReferences | ドキュメントに挿入されている4D 式を参照として表示または書き出しします。 取り得る値: True/False | -| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` export format. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". | +| 定数 | 値 | 説明 | +| ------------------------------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| wk CID host domain name | cidHostDomain | CID ホストドメイン名: 生成されるCID URL に追加されるホストドメイン。'@' が区切り文字として含まれます。 wk mime html フォーマットが使用されている際にのみ使用可能です。 Available only when the `wk mime html` format is used. | +| wk embedded pictures | embeddedPictures | SVG 書き出し専用。 [WP EXPORT DOCUMENT](wp-export-document.md) を呼び出した時、ピクチャーが書き出された.svg ファイル内に埋め込まれるかどうかを設定します。 Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. ピクチャーは埋め込まれませんが、.svg ファイルから参照されます。
  • 注意: フォルダが既に存在する場合、ファイルが書き出される前にそのフォルダは空にされます。 If there is no image on the exported page, the folder is deleted | +| wk factur x | facturX | PDF 書き出しのみ。 Value: object configuring a "Factur-X (ZUGFeRD)" PDF export (see [wk factur x object](./wp-export-document.md#wk-factur-x-object)). | +| wk files | files | PDF 書き出しのみ。 Value: collection of objects, each of them describing a file to be embedded in the final document (see [wk files collection](./wp-export-document.md#wk-files-collection)). This feature is only supported in PDF/A-3 documents: when the `wk files` attribute is used, the "PDF/A-3" version is automatically set (the `wk pdfa version` attribute is ignored). Factur-X PDF 書き出し(下記参照)の場合、コレクションの最初のオブジェクトにはFactur-X XML ファイルが格納されている必要があります。 | +| wk google fonts tag | googleFontsTag | SVG書き出し専用。 書き出されたSVG 内でのGoogle フォントの読み込みルールを設定します。 取り得る値:
  • false (デフォルト): Google フォントの読み込みルールは何も追加されません。
  • true: 書き出されたファイルに@import ルールを追加します。 Windows またはmacOS において利用できないフォントを使用したい場合に有用です。
  • **注意:** このプロパティはデフォルトではFalse に設定されています。なぜなら読み込まれたGoogle フォントはネイティブのフォントを上書きしますが、一般的にはネイティブのフォントはブラウザ上で綺麗にレンダリングされるからです。 | +| wk HTML pretty print | htmlPrettyPrint | HTML コードは読みやすいようにフォーマットされます。 | +| wk max picture DPI | maxPictureDPI | 画像を適切な解像度にリサンプリング(縮小)するのに使用されます。 Windows でのSVG 画像に対しては。ラスタライズに使用されます。 デフォルト値: 300 (for wk optimized for \= wk print 時) 192 (for wk optimized for \= wk screen 時) 取り得る最大値: 1440 | +| wk optimized for | optimizedFor | 書き出されたドキュメントを、その目的に応じてどのように最適化するかを定義します。 取り得る値:
  • `wk print` (`wk pdf` および `wk svg` のデフォルト値) ビットマップピクチャーは、`wk max picture DPI` で定義されたDPI または300 (デフォルト値) を使用してダウンスケールされる可能性があり、また書き出されるタイプに対してコーデックがサポートされていない場合にはPNG へと変換される可能性もあります。 ベクターのピクチャーは `wk max picture DPI` で定義されたDPI、または300 (Windows のみ)を使用してPNG へと変換されます。 If a picture contains more than one format, the best format for printing is used (*e.g.*, .tiff instead or .jpg)
  • `wk screen` (default value for `wk web page complete` and `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Vectorial pictures are converted to PNG using the DPI defined by `wk max picture DPI` or 192 (Windows only). 画像に複数のフォーマットが含まれている場合、スクリーンレンダリング用のフォーマットが使用されます。
  • **注意:** `wk docx` フォーマットで書き出されたドキュメントは、常にwk print 用に最適化されています(wk optimized for オプションは無視されます)。 | +| wk page index | pageIndex | SVG書き出し専用。 SVG書き出し専用。 SVG フォーマットへと書き出すページのインデックス(デフォルトは1)。 ページのインデックスは1から始まり、これはドキュメントの最初のページを指します。 **注意:** ページインデックスはページナンバリングとは異なるものです。 ページのインデックスは1から始まり、これはドキュメントの最初のページを指します。 **注意:** ページインデックスはページナンバリングとは異なるものです。 | +| wk pdfa version | pdfaVersion | PDF/A バージョンに適合したPDF を書き出します。 PDF/A のプロパティおよびバージョンの詳細については、[Wikipedia のPDF/A のページ](https://ja.wikipedia.org/wiki/PDF/A) を参照してください。 Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". Windows 上では、出力されたPDF ファイルは常に指定されたバージョンと同じになります。 | +| wk recompute formulas | recomputeFormulas | 書き出し時にフォーミュラを再計算するかどうかを定義します。 Possible values:
  • true - Default value. All formulas are recomputed
  • false - Do not recompute formulas
  • | +| wk visible background and anchored elements | visibleBackground | 背景画像/背景色、アンカーされた画像またはテキストボックス(ディスプレイ用では、ページビューモードまたは埋め込みビューモードでのみ表示されるエフェクト)を表示または書き出しをします。 取り得る値: True/False 取り得る値: True/False 取り得る値: True/False | +| wk visible empty images | visibleEmptyImages | 読み込めない、あるいは計算できない画像(空の画像またはサポートされていないフォーマットの画像)に対してデフォルトの黒い四角形を表示または書き出しします。 取り得る値: True/False. 取り得る値: True/False. デフォルト値: True 値がFalse の場合、たとえ画像に境界線、幅、高さ、背景などが設定されてあっても空の画像要素は全く表示されないという点に注意して下さい。これはインライン画像のページレイアウトに影響する可能性があります。 | +| wk visible footers | visibleFooters | フッターを表示または書き出しします(表示用においてはページビューモードでのみ表示されるエフェクトです)。 取り得る値: True/False 取り得る値: True/False | +| wk visible headers | visibleHeaders | ヘッダーを表示または書き出しします(表示用においてはページビューモードでのみ表示されるエフェクトです)。 取り得る値: True/False 取り得る値: True/False 取り得る値: True/False | +| wk visible references | visibleReferences | ドキュメントに挿入されている4D 式を参照として表示または書き出しします。 取り得る値: True/False | +| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` export format. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". | 以下の表は*format* 引数の各フォーマットごとに利用可能な*option* 引数のオプションをあらわしています: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md index 00127fc47458f2..b7637d2c7a8b8b 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md @@ -20,7 +20,7 @@ displayed_sidebar: docs ## 説明 -**WP Get attributes** コマンドは、4D Write Proレンジ、ヘッダー/フッター/本文/表、あるいはドキュメント内のあらゆる属性の値を返します。 このコマンドを使用すると4D Write Proのどのような内部属性(文字、段落、ドキュメント、表組み、画像など)にもアクセスすることができます。 +**WP Get attributes** コマンドは、4D Write Pro レンジ、ヘッダー、本文、フッター、表、あるいはドキュメント内の、任意の属性の値を返します。 このコマンドを使用することで、4D Write Pro の次のようなあらゆる内部属性にアクセスすることができます: 文字、段落、ドキュメント、表、画像。 *targetObj* 引数には、以下のいずれかを渡すことができます: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md index 87612c74082c6b..602782c26b45ce 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md @@ -21,7 +21,7 @@ displayed_sidebar: docs ## 説明 -**WP Insert picture** コマンドは、指定した挿入モード*mode* とレンジ更新モード*rangeUpdate* に従って、*picture* または*pictureFileObj* のピクチャーを*targetObj* で指定したレンジに挿入し、ピクチャー要素への参照を返します。ピクチャーは文字として*targetObj* に挿入されます。 +**WP Insert picture** コマンドは、指定した挿入モード*mode* とレンジ更新モード*rangeUpdate* に従って、*picture* または*pictureFileObj* のピクチャーを*targetObj* で指定したレンジに挿入し、ピクチャー要素への参照を返します。 ピクチャーは文字として*targetObj* に挿入されます。 *targetObj* 引数には、以下のいずれかを渡すことができます: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md index 368b1df0e0f68d..a12ae76803aa41 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md @@ -19,7 +19,7 @@ displayed_sidebar: docs ## 説明 -**WP RESET ATTRIBUTES** コマンドは引数として渡されたレンジ、要素、またはドキュメントの1つ以上の値をリセットすることができます。このコマンドは任意の4D Write Pro 内部属性(文字、段落、ドキュメント、表または画像)を削除することができます。 リセットしたい属性の名前を*attribName* 引数に渡すか、あるいは*attribColl* 引数に属性名のコレクションを渡すことで、複数の属性を一度にリセットすることもできます。 +**WP RESET ATTRIBUTES** コマンドは、 引数として渡されたレンジ、要素、ドキュメント内の一つ以上の属性の値をリセットすることができます。 このコマンドを使用することで、4D Write Pro の次のようなあらゆる内部属性を削除することができます: 文字、段落、ドキュメント、表、画像。 リセットしたい属性の名前を*attribName* 引数に渡すか、あるいは*attribColl* 引数に属性名のコレクションを渡すことで、複数の属性を一度にリセットすることもできます。 > セクションかサブセクションの場合、*sectionOrSubsection* 引数単体を渡すだけで、すべての属性は一度にリセットされます。 diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md index 70c4e79cbb1085..c4458458422cee 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md @@ -19,7 +19,7 @@ displayed_sidebar: docs ## 説明 -**WP SET ATTRIBUTES** コマンドを使うとレンジ、要素、あるいはドキュメントのあらゆる属性の値を設定することができます。このコマンドを使ってあらゆる4D Write Pro内部の属性(文字、段落、ドキュメント、表組、またはピクチャー)にアクセスすることができます。 +**WP SET ATTRIBUTES** コマンドは、引数として渡されたレンジ、要素、ドキュメント内の一つ以上の属性の値を設定することができます。 このコマンドを使用することで、4D Write Pro の次のようなあらゆる内部属性にアクセスすることができます: 文字、段落、ドキュメント、表、画像。 *targetObj* 引数には、以下のいずれかを渡すことができます : diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md index e4b0ae78508d88..871d6082d75649 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md @@ -54,22 +54,22 @@ For security reasons, when formulas are pasted from a different 4D application o [WP Insert formula](commands/wp-insert-formula.md) コマンドを使用することで、あらゆるドキュメントエリア(本文、ヘッダー、フッター) にドキュメント属性に関連した特殊な式を挿入することができます。 フォーミュラ内ではフォーミュラコンテキストオブジェクトが自動的に公開されます。 [**This**](../commands/this.md) を通してこのオブジェクトのプロパティを使用することができます: -| プロパティ | 型 | 説明 | -| ------------------------------------------------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [This](../commands/this.md).title | Text | wk title 属性で定義されているタイトル | -| [This](../commands/this.md).author | Text | wk author 属性で定義されている作者 | -| [This](../commands/this.md).subject | Text | wk subject 属性で定義されている主題 | -| [This](../commands/this.md).company | Text | wk company 属性で定義されている会社 | -| [This](../commands/this.md).notes | Text | wk notes 属性で定義されている注記 | -| [This](../commands/this.md).dateCreation | Date | wk date creation 属性で定義されている作成日 | -| [This](../commands/this.md).dateModified | Date | wk date modified 属性で定義されている変更日 | -| [This](../commands/this.md).pageNumber (\*) | Number | 以下の場所から定義されているページ番号:
  • - ドキュメントの開始からのページ番号(デフォルト)
  • - セクションの開始から定義されている場合には、セクションの開始からのページ番号
  • このフォーミュラは常に動的です。つまり[**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) コマンドの影響を受けません。 | -| [This](../commands/this.md).pageCount (\*) | Number | ページ数: 総合のページ数。
    このフォーミュラは常に動的です。つまり[**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) コマンドの影響を受けません。 | -| [This](../commands/this.md).document | Object | 4D Write Pro ドキュメント | -| [This](../commands/this.md).data | Object | [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) コマンドで設定された4D Write Pro ドキュメントのデータコンテキスト | -| [This](../commands/this.md).sectionIndex | Number | 4D Write Pro ドキュメント内のセクションのインデックス(1から開始) | -| [This](../commands/this.md).pageIndex | Number | 4D Write Pro ドキュメント内の実際のページ番号(1から開始、セクションのページ番号とは無関係) | -| [This](../commands/this.md).sectionName | 文字列 | ユーザーが与えたセクションの名前 | +| プロパティ | 型 | 説明 | +| ------------------------------------------------------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [This](../commands/this.md).title | Text | wk title 属性で定義されているタイトル | +| [This](../commands/this.md).author | Text | wk author 属性で定義されている作者 | +| [This](../commands/this.md).subject | Text | wk subject 属性で定義されている主題 | +| [This](../commands/this.md).company | Text | wk company 属性で定義されている会社 | +| [This](../commands/this.md).notes | Text | wk notes 属性で定義されている注記 | +| [This](../commands/this.md).dateCreation | Date | wk date creation 属性で定義されている作成日 | +| [This](../commands/this.md).dateModified | Date | wk date modified 属性で定義されている変更日 | +| [This](../commands/this.md).pageNumber (\*) | Number | 定義されているページ番号:
  • - ドキュメントの開始からのページ番号(デフォルト) あるいは
  • - セクションの開始ページから定義されている場合にはセクションの開始ページからのページ番号。
  • このフォーミュラは常にダイナミックであり、[**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) コマンドの影響をうけません。 | +| [This](../commands/this.md).pageCount (\*) | Number | ページカウント: 合計のページ数。
    このフォーミュラは常にダイナミックであり、[**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md) コマンドの影響をうけません。 | +| [This](../commands/this.md).document | Object | 4D Write Pro ドキュメント | +| [This](../commands/this.md).data | Object | [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) コマンドで設定された4D Write Pro ドキュメントのデータコンテキスト | +| [This](../commands/this.md).sectionIndex | Number | 4D Write Pro ドキュメント内のセクションのインデックス(1から開始) | +| [This](../commands/this.md).pageIndex | Number | 4D Write Pro ドキュメント内の実際のページ番号(1から開始、セクションのページ番号とは無関係) | +| [This](../commands/this.md).sectionName | 文字列 | ユーザーが与えたセクションの名前 | :::note @@ -95,17 +95,17 @@ For security reasons, when formulas are pasted from a different 4D application o When used in a formula within the table, the **This** keyword gives access to different data according to the context: -| **Context** | **Expression** | **型** | **戻り値** | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Anywhere | [This](../commands/this.md).table | Object | Current table | -| | [This](../commands/this.md).row | Object | Current table row element | -| | [This](../commands/this.md).rowIndex | Number | Index of the current row, starting from 1 | -| When a datasource has been defined for the table | [This](../commands/this.md).table.dataSource | Object (フォーミュラ) | Datasource as a formula | -| | [This](../commands/this.md).tableData | Collection or Entity selection (usually) | Evaluated table.dataSource | -| In each data row when a table datasource returns a collection or an entity selection | [This](../commands/this.md).item.xxx | 制限なし | Mapped to each item of the table datasource collection or entity selection, for example **This.item.firstName** if the associated entity has the *firstName* attribute | -| | [This](../commands/this.md).itemIndex | Number | Index of the current item in the collection or entity selection, starting from 0 | -| In any row (except header rows) when a table datasource returns a collection or an entity selection | [This](../commands/this.md).previousItems | Collection or 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.
    This expression returns the same type of value as the **This.tableData** expression. | -| In a break row | [This](../commands/this.md).breakItems | Collection or 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.
    • the current break and the next break row of the same level (or the end of the table) if the break row(s) are displayed before the data row.
    | +| **Context** | **Expression** | **型** | **戻り値** | +| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Anywhere | [This](../commands/this.md).table | Object | Current table | +| | [This](../commands/this.md).row | Object | Current table row element | +| | [This](../commands/this.md).rowIndex | Number | Index of the current row, starting from 1 | +| When a datasource has been defined for the table | [This](../commands/this.md).table.dataSource | Object (フォーミュラ) | Datasource as a formula | +| | [This](../commands/this.md).tableData | Collection or Entity selection (usually) | Evaluated table.dataSource | +| In each data row when a table datasource returns a collection or an entity selection | [This](../commands/this.md).item.xxx | 制限なし | Mapped to each item of the table datasource collection or entity selection, for example **This.item.firstName** if the associated entity has the *firstName* attribute | +| | [This](../commands/this.md).itemIndex | Number | Index of the current item in the collection or entity selection, starting from 0 | +| In any row (except header rows) when a table datasource returns a collection or an entity selection | [This](../commands/this.md).previousItems | Collection or 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.
    This expression returns the same type of value as the **This.tableData** expression. | +| In a break row | [This](../commands/this.md).breakItems | Collection or Entity selection | コレクションまたはエンティティセレクションの項目は、以下の箇所に表示されます:
    • ブレーク行がデータ行の後に表示されている場合には、同じレベルのカレントのブレーク行と前のブレーク行(または表のスタート)との間。
    • ブレーク行がデータ行の前に表示されている場合には、同じレベルのカレントのブレーク行と次のブレーク行(または表の終わり)との間。
    | In any other contexts, these expressions will return *undefined*. diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/writeprointerface.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/writeprointerface.md index fc2acfdb8020c0..c73338891c9f16 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/writeprointerface.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/WritePro/writeprointerface.md @@ -10,10 +10,10 @@ slug: /WritePro/write-pro-interface インターフェースのマニュアルについては、*4D デザインリファレンス* の [4D Write Pro エリアのドキュメント](https://doc.4d.com/4Dv20/4D/20/Entry-areas.300-6263967.ja.html) を参照ください。 -You will find below: +ここには以下のような情報があります: -- the Table Wizard configuration documentation, -- the integrated A.I. ドキュメント. +- 表ウィザード設定ドキュメンテーション +- 統合されたAIについての ドキュメント. ## 表ウィザード @@ -303,36 +303,36 @@ JSONファイルで設定する各属性に対して、以下の WP属性を定 [4D Write Pro - 表ウィザード (チュートリアル動画)](https://www.youtube.com/watch?v=2ChlTju-mtM) -## Integrated AI +## 統合されたAI -You can use an integrated AI in the 4D Write Pro interface so that you can easily translate or enhance your documents without having to use an external AI application. +4D Write Pro インターフェース内に統合されたAI を使用して、外部AI アプリケーションを使用することなくドキュメントを簡単に要約したり改善したりすることができます。 -Once you have enabled the AI feature, you can display a chat box over your 4D Write Pro document and interact with *chatGPT* to modify the text of the selection or of the document itself. +AI 機能を有効化すると、4D Write Pro ドキュメント上にチャットボックスが表示され、そこから*chatGPT* とやりとりをすることで選択したテキストやドキュメント自身を変更することができます。 :::note -The 4D Write Pro interface uses OpenAI, for which you need to provide your own key (see below). +4D Write Pro インターフェースはOpenAI を使用し、これを使用するためにはご自身のキーを提供する必要があります(以下参照)。 ::: -### Limitations (Developer Preview) +### 制約(デベロッパープレビュー) -In the current implementation, the feature has the following limitations: +現在の実装では、この機能では以下のような制約があります: -- use of a predefined AI provider and necessity to pass your OpenAI key -- basic chatting features -- no image handling -- non-configurable predefined action commands -- predefined translations English/French and French/English only +- 使用するAI プロバイダーが決められていることと、OpenAI キーを渡す必要があること +- 基本的なチャット機能 +- 画像処理なし +- 設定不可な定義済みアクションコマンド +- 定義済みの翻訳は英語→フランス語とフランス語→英語のみ -### Enabling the AI feature +### AI機能の有効化 -The AI dialog box is available by clicking on a button in the 4D Write Pro interface. This button is **hidden by default**, you need to enable it explicitely. +AI ダイアログボックスは4D Write Pro インターフェース内のボタンをクリックすることで利用可能になります。 このボタンは**デフォルトでは非表示** なので、明示的に有効化する必要があります。 -To display the AI dialog box button, you need to: +AI ダイアログボックスボタンを表示するためには、以下の操作が必要です: -1. Get an API key from the [OpenAI website](https://openai.com/api/). -2. Execute the following 4D code: +1. [OpenAI website](https://openai.com/api/) からAPI キーを取得する。 +2. 以下の4D コードを実行する: ```4d @@ -342,44 +342,44 @@ WP SetAIKey ("") // :::note -No checking is done on the OpenAI key validity. If it is invalid, the *chatGPT* box will stay empty. +OpenAi キーの有効性に関するチェックは行われません。 キーが無効だった場合には、*chatGPT* ボックスは空のままになります。 ::: -The **A.I.** button is then displayed: +その後**A.I.** ボタンは、以下の場所に表示されます: ![ai button](../assets/en/WritePro/ai-button.png) -- in the 4D Write Pro Toolbar, in the **Import Export** tab, -- in the 4D Write Pro Widget, in the **Font Style** tab. +- **読み込み書き出し** タブ内の4D Write Pro ツールバー内 +- **フォントスタイル** タブ内の4D Write Pro ウィジェット内。 -Click on the button to display the AI dialog box. +AI ダイアログボックスを表示するには、ボタンをクリックしてください。 -### AI dialog box +### AI ダイアログボックス -The 4D Write Pro AI dialog box allows a straightforward interaction between the chat area and the 4D Write Pro document. +4D Write Pro AI ダイアログボックスを使用するとチャットエリアと4D Write Pro ドキュメントとの簡単なやりとりを可能にします。 -#### Prompt area +#### プロンプトエリア -At the bottom of the window, the **prompt area** allows you to enter any question to send to the AI. +ウィンドウの下部には、**プロンプトエリア** があり、ここにAI に送信したい質問を入力することができます。 -To send your question to the AI, click on the Send button: +AI に質問を送信するためには、送信ボタンをクリックします: ![ai send](../assets/en/WritePro/ai-send.png) -The button icon changes when the same request is sent again: +同じリクエストが再度送信されると、ボタンのアイコンが変わります: ![ai resend](../assets/en/WritePro/ai-resend.png) -On the left side of this area, a pop up menu provides examples of common actions that can be usually delegated to the AI. +このエリアの左側にあるポップアップメニューには、通常AI にたずねるような一般的なアクションの一例が提供されています。 -Selecting an action writes a corresponding question to the prompt. If necessary, you can modify the question and then to click on the Send button to actually send it: +アクションを選択すると、それに対応した質問がプロンプトに入力さます。 必要であれば、質問を書き換えてから送信ボタンを押して送信することもできます: ![ai menu](../assets/en/WritePro/ai-menu.png) :::note -Default translation actions are based upon the current 4D default configuration and depend on available languages. +デフォルトの翻訳アクションはカレントの4D のデフォルト設定に基づき、利用可能な言語に依存します。 ::: diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md index 24fd10a739da75..0d340f0e28706e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ title: OpenAI ## 設定プロパティ -| プロパティ名 | 型 | 説明 | 任意 | -| --------- | ---- | ---------------------------------------------------------- | ----------- | -| `apiKey` | Text | あなたの [OpenAI API キー](https://platform.openai.com/api-keys) | OpenAI では必須 | -| `baseURL` | Text | OpenAI API リクエストのためのベースURL。 | ◯ | -| `組織` | Text | あなたの OpenAI 組織 ID。 | ◯ | -| `project` | Text | あなたの OpenAI プロジェクト ID。 | ◯ | +| プロパティ名 | 型 | 説明 | 任意 | +| --------- | ---- | ---------------------------------------------------------- | --------------------------------------------------------- | +| `apiKey` | Text | あなたの [OpenAI API キー](https://platform.openai.com/api-keys) | プロバイダーによっては必須 | +| `baseURL` | Text | OpenAI API リクエストのためのベースURL。 | Yes (if omitted = use OpenAI provider) | +| `組織` | Text | あなたの OpenAI 組織 ID。 | ◯ | +| `project` | Text | あなたの OpenAI プロジェクト ID。 | ◯ | ### 追加のHTTPプロパティ diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatAPI.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatAPI.md index c5a5e4be2c6c42..5bd0113af4ccbb 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatAPI.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatAPI.md @@ -14,7 +14,7 @@ title: OpenAIChatAPI | `completions` | [OpenAIChatCompletionsAPI](OpenAIChatCompletionsAPI.md) | チャット補完リクエストを管理するインスタンス。 | | `vision` | [OpenAIVision](OpenAIVision.md) | ビジョン関連のリクエストを管理するヘルパーインスタンス。 | -## 関数 +## Function ### create() diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatHelper.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatHelper.md index 57c10348740857..c2dd0059375cd0 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatHelper.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIChatHelper.md @@ -9,26 +9,26 @@ title: OpenAIChatHelper ## プロパティ -| プロパティ名 | 型 | デフォルト値 | 説明 | -| --------------------- | --------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------------------------------------------------------- | -| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | - | Open AI との通信で使用されるチャットAPI インスタンス。 | -| `systemPrompt` | [OpenAIMessage](OpenAIMessage.md) | - | チャットアシスタントのレスポンスをガイドするためのシステムプロンプトメッセージ。 | -| `numberOfMessages` | Integer | 15 | チャット履歴に保持するメッセージの最大数。 | -| `引数` | [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) | - | OpenAI チャット補完リクエスト用のパラメーター。 | -| `messages` | [OpenAIMessage](OpenAIMessage.md) のコレクション | [] | そのチャットセッション内でやりとりされたメッセージのコレクション。 | -| `ツール` | Collection of [OpenAITool](OpenAITool.md) | [] | List of registered OpenAI tools for function calling. | -| `autoHandleToolCalls` | Boolean | true | Boolean indicating whether tool calls are handled automatically using registered tools. | -| `lastErrors` | Collection | - | Collection containing the last errors encountered during chat operations. | +| プロパティ名 | 型 | デフォルト値 | 説明 | +| --------------------- | --------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------- | +| `chat` | [OpenAIChatAPI](OpenAIChatAPI.md) | - | Open AI との通信で使用されるチャットAPI インスタンス。 | +| `systemPrompt` | [OpenAIMessage](OpenAIMessage.md) | - | チャットアシスタントのレスポンスをガイドするためのシステムプロンプトメッセージ。 | +| `numberOfMessages` | Integer | 15 | チャット履歴に保持するメッセージの最大数。 | +| `parameters` | [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) | - | OpenAI チャット補完リクエスト用のパラメーター。 | +| `messages` | [OpenAIMessage](OpenAIMessage.md) のコレクション | [] | そのチャットセッション内でやりとりされたメッセージのコレクション。 | +| `ツール` | [OpenAITool](OpenAITool.md) のコレクション | [] | 関数呼び出し用に登録されたOpenAI ツールの一覧。 | +| `autoHandleToolCalls` | Boolean | true | 登録されたツールを使用してツール呼び出しを自動的に管理するかどうかをあらわすブール値。 | +| `lastErrors` | Collection | - | チャット操作中に発生した最後のエラーを格納したコレクション。 | -## Constructor +## コンストラクター -To create a new `OpenAIChatHelper` instance, it's best to use the `create()` method from the [OpenAI client's chat API](OpenAIChatAPI.md): +新しい `OpenAIChatHelper` インスタンスを作成するためには、[OpenAI クライアントのチャットAPI](OpenAIChatAPI.md)の `create()` メソッドを使用するのが最適です: ```4D var $chatHelper:=$client.chat.create("You are a helpful assistant.") ``` -This method creates a new chat helper with the specified system prompt and initializes it with default parameters. The system prompt defines the assistant's role and behavior throughout the conversation. +このメソッドは指定されたシステムプロンプトで新しいチャットヘルパーを作成し、デフォルトの引数で初期化します。 このシステムプロンプトが会話の間全体の、アシスタントの役割と振る舞いを定義します。 ## 関数 @@ -54,52 +54,52 @@ $result:=$chatHelper.prompt("Why 42?") **reset**() -Resets the chat context by clearing all messages and unregistering all tools. This effectively starts a fresh conversation while keeping the system prompt and parameters intact. +全てのメッセージを消去し、全てのツールの登録を解除することで、チャットコンテキストをリセットします。 これにより、システムのプロンプトとパラメータをそのままにしながら、効果的に新しい会話を始めることができます。 -#### Reset Example +#### リセットの例 ```4D $chatHelper.prompt("Hello!") -$chatHelper.reset() // Clear all previous messages and tools +$chatHelper.reset() // 以前のメッセージとツールを全て消去 ``` ### registerTool() **registerTool**(*tool* : Object; *handler* : Object) -| 引数 | 型 | 説明 | -| --------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| *tool* | Object | The tool definition object (or [OpenAITool](OpenAITool.md) instance) | -| *handler* | Object | The function to handle tool calls ([4D.Function](../../API/FunctionClass.md) or Object), optional if defined inside *tool* as *handler* property | +| 引数 | 型 | 説明 | +| --------- | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | +| *tool* | Object | ツール定義オブジェクト(あるいは[OpenAITool](OpenAITool.md) インスタンス) | +| *handler* | Object | ツール呼び出しを管理する関数([4D.Function](../../API/FunctionClass.md) またはオブジェクト)、*tool* 内の *handler* プロパティで定義されている場合にはオプション。 | -Registers a tool with its handler function for automatic tool call handling. +自動ツール呼び出し関数のために、ツールとそのハンドラ関数を登録します。 -The *handler* parameter can be: +*handler* 引数には以下のものを渡すことができます: -- A **4D.Function**: Direct handler function -- An **Object**: An object containing a `formula` property matching the tool function name +- **4D.Function**: 直接ハンドラ関数 +- **オブジェクト**: ツール関数名と一致する `formula` プロパティを格納しているオブジェクト -The handler function receives an object containing the parameters passed from the OpenAI tool call. This object contains key-value pairs where the keys match the parameter names defined in the tool's schema, and the values are the actual arguments provided by the AI model. +ハンドラー関数はOpenAI ツール呼び出しから渡された引数を格納しているオブジェクトを受け取ります。 オブジェクトは、ツールのスキーマで定義されたパラメーター名とキーが一致するキーと、AI モデルから提供された実際の引数である値との、キーと値のペアを格納しています。 -#### Register Tool Example +#### ツールを登録する例題 ```4D -// Example 1: Simple registration with direct handler +// Example 1: 直接ハンドラを使用したシンプルな登録 var $tool:={type: "function"; function: {name: "get_weather"; description: "Get current weather"; parameters: {type: "object"; properties: {location: {type: "string"; description: "City name"}}}}} var $handler:=Formula(return "Sunny, 25°C in "+$1.location) $chatHelper.registerTool($tool; $handler) -// Example 2: Tool with handler property (no second parameter needed) +// Example 2: プロパティを持つtool オブジェクトを使用(この場合第2に引数は不要です) var $tool:={name: "calculate"; description: "Perform calculations"; handler: Formula(return String(Num($1.expression)))} $chatHelper.registerTool($tool) -// Example 3: Using object notation +// Example 3: オブジェクト記法を使用する $chatHelper.registerTool({tool: $tool; handler: $handler}) -// Example 4: Handler as object with formula matching tool name +// Example 4: ツール名と合致するフォーミュラを持ったオブジェクトとしてのハンドラ var $tool:={name: "getTime"; description: "Get current time"} -var $handlerObj:=cs.MyTimeTool.new() // class with a getTime function +var $handlerObj:=cs.MyTimeTool.new() // getTime 関数を持つクラス $chatHelper.registerTool($tool; $handlerObj) ``` @@ -107,19 +107,19 @@ $chatHelper.registerTool($tool; $handlerObj) **registerTools**(*toolsWithHandlers* : Variant) -| 引数 | 型 | 説明 | -| ------------------- | ------- | -------------------------------------------------------- | -| *toolsWithHandlers* | Variant | Object or Collection containing tools and their handlers | +| 引数 | 型 | 説明 | +| ------------------- | ------- | ------------------------------- | +| *toolsWithHandlers* | Variant | ツールとのそのハンドラを格納したオブジェクトまたはコレクション | -Registers multiple tools at once. The parameter can be: +複数のツールを一度に登録します。 引数には以下のものを渡すことができます: -- **Collection**: Array of tool objects (with handlers embedded or separate) -- **Object**: Object with function names as keys mapping to tool definitions -- **Object with `tools` attribute**: Object containing a `tools` collection and formula properties matching tool names +- **コレクション**: (ハンドラが埋め込んである、あるいは分離してある)ツールオブジェクトのコレクション +- **オブジェクト**: 関数名がツール定義にマッピングされているキーとするオブジェクト +- **`tools` 属性を持つオブジェクト**: `tools` コレクションと、ツール名に合致するフォーミュラプロパティを格納しているオブジェクト -#### Register Multiple Tools Example +#### 複数のツールを登録する例題 -##### Example 1: Collection format with handlers in tools +##### 例 1: ツール内のハンドルを使用したコレクションフォーマット ```4D var $weatherTool:={name: "getWeather"; description: "Get current weather"; handler: Formula(return "Sunny, 25°C in "+$1.location)} @@ -128,7 +128,7 @@ var $calculatorTool:={name: "calculate"; description: "Perform calculations"; ha $chatHelper.registerTools([$weatherTool; $calculatorTool]) ``` -##### Example 2: Object format with separate tool and handler +##### 例 2: 別個のツールとハンドラを使用したオブジェクトフォーマット ```4D var $toolsWithSeparateHandlers:={} @@ -138,15 +138,15 @@ $toolsWithSeparateHandlers.calculate:={tool: $calculatorToolDefinition; handler: $chatHelper.registerTools($toolsWithSeparateHandlers) ``` -##### Example 3: Object with tools collection attribute and formula properties +##### 例 3: tools コレクション属性とformula プロパティを持ったオブジェクト -MyTools class: +MyTools クラス: ```4D Class constructor this.tools:=[{name: "getWeather"; description: "Get current weather"}; \ - {name: "getTime"; description: "Get current time"}] // Collection of tool definitions + {name: "getTime"; description: "Get current time"}] // ツール定義のコレクション Function getWeather($parameters: Object) return "Sunny, 25°C" @@ -159,12 +159,12 @@ Function getTime($parameters: Object) $chatHelper.registerTools(cs.MyTools.new()) ``` -##### Example 4: Simple object format with tools as properties +##### 例 4: ツールをプロパティにもつシンプルなオブジェクトフォーマット ```4D var $tools:={} -$tools.getWeather:=$weatherTool // Tool with handler property -$tools.calculate:=$calculatorTool // Tool with handler property +$tools.getWeather:=$weatherTool // handler プロパティを持つTool +$tools.calculate:=$calculatorTool // handler プロパティを持つTool $chatHelper.registerTools($tools) ``` @@ -173,28 +173,28 @@ $chatHelper.registerTools($tools) **unregisterTool**(*functionName* : Text) -| 引数 | 型 | 説明 | -| -------------- | ---- | ------------------------------------------- | -| *functionName* | Text | The name of the function tool to unregister | +| 引数 | 型 | 説明 | +| -------------- | ---- | --------------- | +| *functionName* | Text | 登録を解除したいツールの関数名 | -Unregisters a specific tool by its function name. This removes the tool from the registered tools collection, clears its handler, and removes it from the parameters. +特定のツールをその関数名で指定して登録解除します。 これによってツールは登録されたツールのコレクションから削除され、ハンドラも消去され、引数からも削除されます。 -#### Unregister Tool Example +#### ツールを登録解除する例 ```4D $chatHelper.registerTool($weatherTool; $weatherHandler) -$chatHelper.unregisterTool("get_weather") // Remove the weather tool +$chatHelper.unregisterTool("get_weather") // weather ツールを削除 ``` ### unregisterTools() **unregisterTools**() -Unregisters all tools at once. This clears all tool handlers, empties the tools collection, and removes all tools from the parameters. +全てのツールを一度に登録解除します。 これはすべてのツールハンドラを消去し、tools コレクションをからにし、そして引数からも全てのツールを削除します。 -#### Unregister All Tools Example +#### 全てのツールを登録解除する例 ```4D $chatHelper.registerTools($multipleTools) -$chatHelper.unregisterTools() // Remove all tools +$chatHelper.unregisterTools() // 全てのツールを削除 ``` \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md index 8c840ac2ac5c0a..71ac6fa0763f7e 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAIMessage.md @@ -9,13 +9,13 @@ title: OpenAIMessage ## プロパティ -| プロパティ | 型 | 説明 | -| -------------- | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `role` | Text | The role of the message (e.g., "user", "assistant", "system", "tool"). | -| `内容` | Variant | メッセージのコンテンツ。テキスト、またはオブジェクトのコレクションのいずれかです。 | -| `user` | Text | メッセージに割り当てられたユーザーを表すオプションのプロパティ。 | -| `tool_calls` | Collection | A collection of tool calls requested by the assistant. Each tool call contains an `id`, `type`, and a `function` object. | -| `tool_call_id` | Text | The ID of the tool call that this message is responding to (used when `role` is "tool"). | +| プロパティ | 型 | 説明 | +| -------------- | ---------- | ----------------------------------------------------------------------------------- | +| `role` | Text | メッセージの役割(例: "user"、"assistant"、"system"、"tool")。 | +| `内容` | Variant | メッセージのコンテンツ。テキスト、またはオブジェクトのコレクションのいずれかです。 | +| `user` | Text | メッセージに割り当てられたユーザーを表すオプションのプロパティ。 | +| `tool_calls` | Collection | アシスタントからリクエストされたツール呼び出しのコレクション。 各ツール呼び出しには `id`、`type`、`function` オブジェクトが含まれます。 | +| `tool_call_id` | Text | このメッセージが返答しているツール呼び出しのID (`role` が "tool"の場合に使用されます)。 | ## 計算プロパティ @@ -38,7 +38,7 @@ title: OpenAIMessage ## 使用例 -### Create a simple message and attach an image +### シンプルなメッセージを作成し画像を添付する ```4d // OpenAIMessage のインスタンスを作成 @@ -48,11 +48,11 @@ var $message:=cs.AIKit.OpenAIMessage({role: "user"; content: "Hello!"}) $message.addImageURL("http://example.com/image.jpg"; "high") ``` -### Respond to a tool call message +### ツール呼び出しメッセージに応答する -When an assistant needs to use external functions, it generates a message with `tool_calls` to request function execution. +アシスタントが外部関数を使用する必要がある場合、関数の実行をリクエストするための、`tool_calls` を持ったメッセージを生成します。 -**Assistant message requesting tool calls:** +**ツール呼び出しをリクエストするアシスタントメッセージ:** ```json { @@ -70,41 +70,41 @@ When an assistant needs to use external functions, it generates a message with ` } ``` -**Handling the tool call:** +**ツール呼び出しを管理する:** -When you receive a tool call message, you need to: +ツール呼び出しメッセージを受信した場合、以下のことを行う必要があります: -1. **Extract the function information:** - - `function.name`: The name of the function to call (must match a function defined in your [OpenAITool](OpenAITool.md) - you can select code to execute according to this name) - - `function.arguments`: A JSON string containing the function parameters that must be parsed with `JSON Parse` - - `id`: The unique identifier for this specific tool call +1. **関数の情報を抽出する:** + - `function.name`: 呼び出す関数の名前([OpenAITool](OpenAITool.md) 内で定義されている関数と合致する必要があります- この名前に応じて実行するコードを選択することができます) + - `function.arguments`: `JSON Parse` でパースされる必要のある、関数の引数を格納したJSON 文字列 + - `id`: この特定のツール呼び出しのための固有の識別子 -2. **Execute the function:** - Parse the arguments (which is a JSON string) and call the corresponding function that you defined in your OpenAITool configuration. +2. **関数を実行する:** + (JSON 文字列になっている)引数をパースし、OpenAITool 設定内で定義された対応する関数を呼び出します。 -3. **Respond with the tool result:** - Create a response message using the exact `tool_call_id` from the original request. +3. **ツールの結果で応答する:** + オリジナルのリクエストの`tool_call_id` を使用してレスポンスメッセージを作成します。 -**Example tool response:** +**ツールのレスポンスの一例:** ```4d -// Parse the function arguments (if any) +// 関数の引数をパースする(あれば) var $arguments : Object := JSON Parse($toolCall.function.arguments) -// Execute your code corresponding to "get_database_tables" +// "get_database_tables" に対応するコードを実行する var $tableNames: Text := OB Keys(ds).join(", ") -// Create the tool response message with the required tool_call_id +// 必要な tool_call_id を持ったツールレスポンスメッセージを作成する var $toolResponse:=cs.AIKit.OpenAIMessage.new({ \ role: "tool"; \ tool_call_id: "call_12345"; \ content: $tableNames \ }) -// Add it to the conversation and continue +// 会話にそれを追加して続行する ``` -**Important:** The `tool_call_id` in your response must exactly match the `id` from the original tool call. This allows the AI model to correctly associate your response with the specific function call that was made. +**重要:** レスポンス内の`tool_call_id` は、元のツール呼び出しの`id` と完全に一致している必要があります。 これによってAI モデルはあなたのレスポンスと、呼び出しを行った特定の関数を正確に結びつけることができます。 ## 参照 -- [OpenAITool](OpenAITool.md) - For tool definition \ No newline at end of file +- [OpenAITool](OpenAITool.md) - ツール定義に必要 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAITool.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAITool.md index bc638180ea1b72..a34a35bd12d990 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAITool.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAITool.md @@ -5,50 +5,50 @@ title: OpenAITool # OpenAITool -The `OpenAITool` class represents a tool that can be called by the OpenAI model during a conversation. Tools allow the AI to perform specific functions and interact with external systems or retrieve information. +`OpenAITool` クラスは会話の途中でOpenAI モデルによって呼び出されうるツールを表します。 ツールを使用するとAI に特定の機能を実行させたり、外部システムとやりとりしたり、情報を取得したりといったことが可能になります。 -See [OpenAIMessage](OpenAIMessage.md) to see how to responds to a tool call. +ツール呼び出しに応答する方法については、[OpenAIMessage](OpenAIMessage.md) を参照して下さい。 -> **Note:** The tool calls are handled automatically when using [OpenAIChatHelper](OpenAIChatHelper.md) with `autoHandleToolCalls` enabled. +> **注意:** [OpenAIChatHelper](OpenAIChatHelper.md) を`autoHandleToolCalls` を有効化して使用した場合には、ツール呼び出しは自動的に管理されます。 ## プロパティ -### Root Properties +### ルートプロパティ -| プロパティ | 型 | デフォルト | 説明 | -| -------- | ------- | ------------ | ------------------------------------------------------------------------------------------------------------------------ | -| `type` | Text | `"function"` | The type of tool. Currently supports `"function"`, `"custom"`, and other built-in types. | -| `strict` | Boolean | `false` | Whether to enforce strict schema validation for function parameters. | +| プロパティ | 型 | デフォルト | 説明 | +| -------- | ------- | ------------ | ---------------------------------------------------------------- | +| `type` | Text | `"function"` | ツールのタイプ。 現在サポートされているのは`"function"`、`"custom"`、そしてその他のビルトインタイプです。 | +| `strict` | Boolean | `false` | 関数の引数に対して厳格なスキーマ検証を強制するかどうかを指定します。 | -### Common Properties +### 共通プロパティ -| プロパティ | 型 | 説明 | -| ------------- | ---- | ------------------------------------------------------------------------------ | -| `名称` | Text | The name of the tool, which works as an identifier. | -| `description` | Text | Description of the tool to help the LLM decide when to use it. | +| プロパティ | 型 | 説明 | +| ------------- | ---- | --------------------------------- | +| `名称` | Text | ツール名。識別子として機能します。 | +| `description` | Text | LLM がツールをいつ使うかを決定する手助けとなる、ツールの説明。 | -### Function-specific Properties +### 関数特有のプロパティ -| プロパティ | 型 | 説明 | -| ----- | ------ | -------------------------------------------------------------------------------- | -| `引数` | Object | Parameters definition for the function using JSON schema format. | +| プロパティ | 型 | 説明 | +| ------------ | ------ | ---------------------------- | +| `parameters` | Object | JSON スキーマフォーマットを使用した関数の引数宣言。 | -## Constructor +## コンストラクター ### new() **new**(*object* : Object) : OpenAITool -| 引数 | 型 | 説明 | -| --------- | ---------- | --------------------------------- | -| *options* | Object | Configuration object for the tool | -| 戻り値 | OpenAITool | New instance of OpenAITool | +| 引数 | 型 | 説明 | +| --------- | ---------- | -------------------- | +| *options* | Object | ツールの設定オブジェクト | +| 戻り値 | OpenAITool | OpenAITool の新規インスタンス | -Creates a new OpenAITool instance. The constructor accepts both simplified format and OpenAI API format. +新しい OpenAITool インスタンスを作成します。 このコンストラクターは簡易フォーマットとOpenAI API フォーマットの両方を受け入れます。 -#### Supported formats +#### サポートされるフォーマット -**Simplified format:** +**簡易フォーマット:** ```4d var $tool := cs.OpenAITool.new({ \ @@ -64,7 +64,7 @@ var $tool := cs.OpenAITool.new({ \ }) ``` -**OpenAI API format:** +**OpenAI API フォーマット:** ```4d var $tool := cs.OpenAITool.new({ \ @@ -84,9 +84,9 @@ var $tool := cs.OpenAITool.new({ \ }) ``` -## Integration with Chat Completions +## チャット補完との統合 -Tools are typically used with the `OpenAIChatCompletionsParameters.tools` property: +ツールは通常`OpenAIChatCompletionsParameters.tools` プロパティで使用されます: ```4d var $parameters := cs.AIKit.OpenAIChatCompletionsParameters.new({ \ @@ -95,10 +95,10 @@ var $parameters := cs.AIKit.OpenAIChatCompletionsParameters.new({ \ }) ``` -> **Note:** You can pass plain objects directly - they will be automatically converted to `OpenAITool` instances. There's no need to explicitly create `OpenAITool` objects. +> **注意:** プレーンなオブジェクトを直接渡すこともできます - 渡したオブジェクトは自動的に`OpenAITool` インスタンスに変換されます。 明示的に `OpenAITool` オブジェクトを作成する必要はありません。 ## 参照 -- [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - For tool configuration -- [OpenAIChatHelper](OpenAIChatHelper.md) - For automatic tool call handling -- [OpenAIMessage](OpenAIMessage.md) - For tool call responses \ No newline at end of file +- [OpenAIChatCompletionsParameters](OpenAIChatCompletionsParameters.md) - ツール設定用 +- [OpenAIChatHelper](OpenAIChatHelper.md) - 自動ツール呼び出し管理用 +- [OpenAIMessage](OpenAIMessage.md) - ツール呼び出しレスポンス用 \ No newline at end of file diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md index 2afc35ae0f24b3..c7f6e6cc20e6a8 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: プロバイダ 多くのAI プロバイダがOpenAI に似たAPI を提供しているので、このプロジェクトを使用してそれらに接続することができます。 -そのためには元の `baseURL` をプロバイダーのものに変更し、必要であればそのサービスのAPI キーを使用するだけです。 +そのためには元の `baseURL` をプロバイダーのものに設定し、必要であればそのサービスのAPI キーを使用するだけです。 ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ $client.baseURL:="https://api.mistral.ai/v1" ## リモート -| プロバイダ | ベースURL | +| プロバイダ | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ja/ | https://api.mistral.ai/v1/ja | | https://www.deepseek.com/ja/ | https://api.deepseek.com/ja | @@ -31,7 +31,7 @@ $client.baseURL:="https://api.mistral.ai/v1" ## ローカル -| プロバイダ | デフォルトのベースURL | ドキュメント | +| プロバイダ | デフォルトの baseURL | ドキュメント | | ------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ja/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ja/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png b/i18n/ja/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png b/i18n/ja/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/i18n/ja/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png differ diff --git a/i18n/ja/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md b/i18n/ja/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md index c7e4e997250902..2a46d487876dc1 100644 --- a/i18n/ja/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/ja/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md @@ -128,7 +128,11 @@ displayed_sidebar: docs   // On Server Open Connection データベースメソッド  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time`mk cosine` (default if omitted): calculates the cosine distance between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | -| threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. | +| Propriedade | Tipo | Descrição | +| ----------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| vector | [4D.Vector](../API/VectorClass.md) | Obrigatório. The vector to be compared | +| metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | +| threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. | Only a subset of **comparator** symbols are supported. Note that they compare results to the threshold value: diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/API/EntityClass.md b/i18n/pt/docusaurus-plugin-content-docs/current/API/EntityClass.md index b503f0a3d13253..715fbb94159c98 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/API/EntityClass.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/API/EntityClass.md @@ -1017,7 +1017,6 @@ O objeto retornado por `.lock()` contém as seguintes propriedades: | ----------------------------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dk status entity does not exist anymore` | 5 | A entidade não existe mais nos dados. Esse erro pode ocorrer nos seguintes casos
  • :a entidade foi descartada (o carimbo foi alterado e o espaço de memória agora está livre)
  • a entidade foi descartada e substituída por outra com outra chave primária (o carimbo foi alterado e uma nova entidade agora usa o espaço de memória). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. Quando usando `. ock()`, este erro pode ser retornado quando a opção `dk reload se o carimbo mudar` é usada

  • **Associado statusText**: "Entidade não existe mais" | | `dk status locked` | 3 | A entidade está bloqueada por um bloqueio pessimista.**statusText associado**: "Already locked" | -| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require | | `dk status serious error` | 4 | Um erro grave é um erro de banco de dados de baixo nível (por exemplo, chave duplicada), um erro de hardware, etc.
    \*\*statusText associado \*\*: "Other error" | | `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/API/SessionClass.md b/i18n/pt/docusaurus-plugin-content-docs/current/API/SessionClass.md index 6ea1fd129e4c34..c26001d78e0d51 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/API/SessionClass.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/API/SessionClass.md @@ -89,7 +89,7 @@ This function does not remove **promoted privileges** from the web process, whet ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). #### Exemplo @@ -388,7 +388,7 @@ This function returns True for the *privilege* if called from a function that wa ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/components.md b/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/components.md index f68e3abde1e8ad..0fc243a77163dd 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/components.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/components.md @@ -9,7 +9,7 @@ Um componente 4D é um conjunto de código 4D e formulários que representam uma Installation and loading of components in your 4D projects are handled through the [4D Dependency manager](../Project/components.md). -Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Além disso, você pode [desenvolver seus próprios componentes 4D](../Extensions/develop-components.md). +Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Além disso, você pode [desenvolver seus próprios componentes 4D](../Extensions/develop-components.md). ## Utilização de componentes diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/parameters.md b/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/parameters.md index e445ba05f5e050..1a932939fb4e6c 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/parameters.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Concepts/parameters.md @@ -295,12 +295,6 @@ The legacy syntax for declaring variadic parameters (`C_TEXT(${4})`) is deprecat ::: -## Triggers e On Drag Over - -Alguns contextos não suportam a declaração em um método "Compiler_", portanto, são tratados especificamente: - -- Triggers - O parâmetro $0 (Longint), o resultado de um trigger, será tipado pelo compilador se o parâmetro não tiver sido declarado explicitamente. Entretanto, se quiser declará-lo, deve fazer isso no próprio trigger. - ## Tipo de parámetro equivocado Calling a parameter with an wrong type or a wrong class (for object parameters) is an [error](error-handling.md) that prevents correct execution. Por exemplo se executar os métodos diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md b/i18n/pt/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md new file mode 100644 index 00000000000000..a645035d2390bd --- /dev/null +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Develop-legacy/triggers.md @@ -0,0 +1,291 @@ +--- +id: triggers +title: Triggers +slug: /Develop/triggers +displayed_sidebar: docs +--- + + +A **trigger** is a method attached to a table. It is a property of a table. You do not call triggers; they are automatically invoked by the 4D database engine each time you manipulate table records (add, delete and modify). You can write very simple triggers, and then make them more sophisticated. + +Triggers can prevent "illegal" operations on the records of your database. They are a very powerful tool for restricting operations on a table, as well as preventing accidental data loss or tampering. For example, in an invoicing system, you can prevent anyone from adding an invoice without specifying the customer to whom the invoice is billed. + + + + + +## Activating and Creating a Trigger + +By default, when you create a table in the Design Environment, it has no trigger. + +To use a trigger for a table, you need to: + +- Activate the trigger and tell 4D when it has to be invoked. +- Write the code for the trigger. + +Activating a trigger that is not yet written or writing a trigger without activating it will not affect the operations performed on a table. + +1. To activate a trigger for a table, you must select one of the **Triggers** options (database events) for the table in the Inspector window of the structure: + +![](../assets/en/Develop/triggers-set.png) + +2. Creating a Trigger. + +To create a trigger for a table, click on the **Edit...** button in the Inspector window or press **Alt** (Windows)/**Option** (macOS) and double-click on the table title in the Structure window ans write the code corresponding to the trigger that you want to create. + + + +## Description of the triggers + +### On saving an existing record + +If this option is selected, the trigger will be invoked each time a record of the table is modified. This happens when: + +- Modifying a record in data entry (Design environment, [`MODIFY RECORD`](../commands/modify-record) command or the SQL `UPDATE` command). +- Saving an already existing record using [`SAVE RECORD`](../commands/save-record). +- Calling any other commands that save existing records (i.e., [`ARRAY TO SELECTION`](../commands/array-to-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), etc.). +- Using an ORDA function that saves the entity. + +:::note + +For optimization reasons, the trigger is not called when the record is saved by the user or via the [`SAVE RECORD`](../commands/save-record) command if no field in the table has been modified in the record. If you want to "force" the calling of the trigger in this case, you can simply assign a field to itself: + +```4d +[thetable]thefield:=[thetable]thefield +``` + +::: + +### On deleting a record + +If this option is selected, the trigger will be invoked each time a record of the table is deleted. This happens when: + +- Deleting a record (Design environment or calling [`DELETE RECORD`](../commands/delete-record), [`DELETE SELECTION`](../commands/delete-selection) or the SQL `DELETE` command). +- Performing any operation that provokes deletion of related records through the deletion control options of a relation. +- Using an ORDA function that deletes the entity. + +:::note + +The [`TRUNCATE TABLE`](../commands/trucate-table) command does NOT call the trigger. + +::: + +### On saving a new record + +If this option is selected, the trigger will be invoked each time a record is added to the table. This happens when: + +- Adding a record in data entry (Design environment, [`ADD RECORD`](../commands/add-record) command or the SQL `INSERT` command). +- Creating and saving a record with [`CREATE RECORD`](../commands/create-record) and [`SAVE RECORD`](../commands/save-record). Note that the trigger is invoked at the moment you call [`SAVE RECORD`](../commands/save-record), not when it is created. +- Importing records (Design environment or using an import command). +- Calling any other commands that create and/or save new records (i.e., [`ARRAY TO SELECTION`](../commands/array-to-selection), [`SAVE RELATED ONE`](../commands/save-related-one), etc.). +- Using ORDA functions such as [`ds.dataclass.new()`](../API/DataClassClass.md#new) and [`entity.save()`](../API/EntityClass.md#save). + + +## Database events + +A trigger can be invoked for one of the three database events described above. Within the trigger, you detect which event is occurring by calling the [`Trigger event`](../commands/trigger-event) command. This function returns a numeric value that denotes the database event. + +Typically, you write a trigger with a [`Case of` structure](../Concepts/flow-control.md#case-ofelseend-case) on the result returned by [`Trigger event`](../commands/trigger-event). + +```4d + //Trigger for [anyTable] +#DECLARE -> $result : Integer +$result:=0 // Assume the database request will be granted + Case of + :(Trigger event=On Saving New Record Event) + // Perform appropriate actions for the saving of a newly created record + :(Trigger event=On Saving Existing Record Event) + // Perform appropriate actions for the saving of an already existing record + :(Trigger event=On Deleting Record Event) + // Perform appropriate actions for the deletion of a record + End case + ``` + + +## Triggers are Functions + +A trigger has two purposes: + +- Performing actions on the record just before it is saved or deleted. +- Granting or rejecting a database operation. + + +### Performing Actions + +Each time a record is saved (added or modified) to a [Documents] table, you want to "mark" the record with a time stamp for creation and another one for the most recent modification. You can write the following trigger: + +```4d + // Trigger for table [Documents] + Case of + :(Trigger event=On Saving New Record Event) + [Documents]CreationStamp:=myTimeStamp + [Documents]ModificationStamp:=myTimeStamp + :(Trigger event=On Saving Existing Record Event) + [Documents]ModificationStamp:=myTimeStamp + End case +``` + +:::note + +The *myTimeStamp* function used in this example is a small project method that returns the number of seconds elapsed since a fixed date was chosen arbitrarily. + +::: + +After this trigger has been written and activated, no matter what way you add or modify a record to the [Documents] table (data entry, import, project method, ORDA function), the fields [Documents]CreationStamp and [Documents]ModificationStamp will automatically be assigned by the trigger before the record is eventually written to the disk. + +### Granting or rejecting the database operation + +To grant or reject a database operation, the trigger must **return a trigger error code** in the function result. + +#### Example + +Let's take the case of an [Employees] table. During data entry, you enforce a rule on the social security number field for the [Employees] table. When you click the validation button, you check the field using the object method of the button: + +```4d + // bAccept button object method + If(GoodSSnumber([Employees]SSNumber)) + ACCEPT + Else + BEEP + ALERT("Enter a Social Security Number then click OK again.") + End if +``` + +If the field value is valid, you accept the data entry; if the field value is not valid, you display an alert and you stay in data entry. + +If you also create [Employees] records programmatically, the following piece of code would be programmatically valid, but would violate the rule expressed in the previous object method: + +```4d + // Extract from a project method + // ... + CREATE RECORD([Employees]) + [Employees]Name:="DOE" + SAVE RECORD([Employees]) // <-- DB rule violation! The SS number has not been assigned! + // ... +``` + +Using a trigger for the [Employees] table, you can enforce the [Employees]SSNumber rule at all the levels of the database. The trigger would look like this: + +```4d + // Trigger for [Employees] + #DECLARE -> $result : Integer + $result:=0 + $dbEvent:=Trigger event + Case of + :(($dbEvent=On Saving New Record Event)|($dbEvent=On Saving Existing Record Event)) + If(Not(GoodSSnumber([Employees]SSNumber))) + $result:=-15050 + Else + // ... + End if + // ... + End case +``` + +Once this trigger is written and activated, the line `SAVE RECORD([Employees])` will generate a database engine error -15050, and the record will NOT be saved. + +Similarly, if a 4D Plug-in attempted to save an [Employees] record with an invalid social security number, the trigger will generate the same error and the record will not be saved. + +The trigger guarantees that nobody (user, database designer, plug-in) can violate the social security number rule, either deliberately or accidentally. + +Note that even if you do not have a trigger for a table, you can get database engine errors while attempting to save or delete a record. For example, if you attempt to save a record with a duplicated value in a unique indexed field, the error -9998 is returned. + +Therefore, triggers returning errors add database engine errors to your application: + +- 4D manages the "regular" errors: unique index, relational data control, and so on. +- Using triggers, you manage the custom errors unique to your application. + +**Important:** You can return an error code value of your choice. However, do NOT use error codes already taken by the 4D database engine. We strongly recommend that you use error codes between -32000 and -15000. We reserve error codes above -15000 for the database engine. + +At the process level, you handle trigger errors the same way you handle database engine errors: + +- You can let 4D display the standard error dialog box, then the method is halted. +- You can use an [error-handling method](../Concepts/error-handling.md) and recover the error the appropriate way (except for commands acting on a selection of records, see the note below). + +:::note Notes + +- During data entry, if a trigger error is returned while attempting to validate or delete a record, the error is handled like a unique indexed error. The error dialog is displayed, and you stay in data entry. Even if you use a database in the Design environment (not in the Application environment), you have the benefit of using triggers. +- When an error is generated by a trigger for a record within the framework of a command acting on a selection of records ([`DELETE SELECTION`](../commands/delete-selection), [`APPLY TO SELECTION`](../commands/apply-to-selection), [`ARRAY TO SELECTION`](../commands/array-to-selection)...), the record is not processed but is automatically registered in the [`LockedSet` of the process](../Develop/processes.md#elements-of-a-process). The command continues its execution until the end and no error can be catched. The error-handling method, if any, is not called. To know if errors have been generated in this context, you need to test the `LockedSet` just after the command call. Also, in the trigger, you have to store error codes, for example in a collection, and handle them afterwards. + +::: + +Even when a trigger returns no error ($result=0), this does not mean that a database operation will be successful—a unique index violation may occur. If the operation is the update of a record, the record may be locked, an I/O error may occur, and so on. The checking is done after the execution of the trigger. However, at the higher level of the executing process, errors returned by the database engine or a trigger are the same—a trigger error is a database engine error. + + + +## Triggers and the 4D Architecture + +Triggers execute at the database engine level. This is summarized in the following diagram: + +![](../assets/en/Develop/triggers-architecture.png) + +Triggers are executed on the machine where the database engine is actually located. This is obvious with a 4D single-user version. On 4D Server, triggers are executed within the acting process on the server machine (in the "twinned" process of the process that set off the trigger), not on the client machine. + +When a trigger is invoked, it executes within the context of the process that attempts the database operation. This process, which invokes the trigger execution, is called the **invoking process**. The elements included in this context differ according to whether the database is executed with 4D in local mode or with 4D Server : + +- With 4D in local mode, the trigger works with the current selections, current records, table read/write states, record locking operations, etc., of the invoking process. +- With 4D Server, only the context of the database of the invoking client process is preserved (locked records and transactional states). 4D Server also (and only) guarantees that the current record of the table of the trigger is correctly positioned. The other elements of the context (current selections for example) are those of the trigger process. + +Be careful about using other database or language objects of the 4D environment, because a trigger may execute on a machine other than that of the invoking process—this is the case with 4D Server! + +- **Process variables**: Each trigger has its own table of process variables. A trigger has no access to the process variables of the invoking process. +- **Local variables**: You can use local variables in a trigger. Their scope is the trigger execution; they are created/deleted at each execution. +- **Semaphores**: A trigger can test or set global semaphores as well as local semaphores (on the machine where it executes). However, a trigger must execute quickly, so you must be very careful when testing or setting semaphores from within triggers. +- **Sets and Named selections**: If you use a set or a named selection from within a trigger, you work on the machine where the trigger executes. In client/server mode, "process" sets and named selections (whose names do not begin with a $ nor with \<>) that are created on the client machine are visible in a trigger. +- **User Interface**: Do NOT use user interface elements in a trigger (no alerts, no messages, no dialog boxes). Accordingly, you should limit any tracing of triggers in the [Debugging window](../Debugging/debugger.md). Remember that in Client/Server, triggers execute on the 4D Server machine. An alert message on the server machine does not help a user on a client machine. Let the invoking process handle the user interface. + +Note that in client-server mode, if you use 4D's password system, you can execute the [`Current user`](../commands/current-user) command in the trigger in order, for example, to save the name of the user at the origin of the trigger call in a journaled table. + + +## Triggers and Transactions + +[Transactions](./transactions.md) must be handled at the invoking process level. They must not be managed at the trigger level. During one trigger execution, if you have to add, modify or delete multiple records (see the following case study), you must first use the [`In transaction`](../commands/in-transaction) command from within the trigger to test if the invoking process is currently in transaction. If this is not the case, the trigger may potentially encounter a locked record. Therefore, if the invoking process is not in transaction, do not even start the operations on the records. Just return an error in the trigger $result in order to signal to the invoking process that the database operation it is trying to perform must be executed in a transaction. Otherwise, if locked records are met, the invoking process will have no means to roll back the actions of the trigger. + + +:::note + +In order to optimize the combined operation of triggers and transactions, 4D does not call triggers after the execution of [`VALIDATE TRANSACTION`](../commands/validate-transaction). This prevents the triggers from being executed twice. + +::: + +## Cascading Triggers + +Given the following example structure: + +![](../assets/en/Develop/triggers-cascade.png) + + +Note: The tables have been collapsed; they have more fields than shown here. + +Let's say that the database "authorizes" the deletion of an invoice. We can examine how such an operation would be handled at the trigger level (because you could also perform deletions at the process level). + +In order to maintain the relational integrity of the data, deleting an invoice requires the following actions to be performed in the trigger for [Invoices]: + +- In the [Customer] record, decrement the Gross Sales field by the amount of the invoice. +- Delete all the [Line Items] records related to the invoice. +- This also implies that the [Line Items] trigger decrements the Quantity Sold field of the [Products] record related to the line item to be deleted. +- Delete all the [Payments] records related to the deleted invoice. + +First, the trigger for [Invoices] must perform these actions only if the invoking process is in transaction, so that a roll-back is possible if a locked record is met. + +Second, the trigger for [Line Items] is **cascading** with the trigger for [Invoices]. The [Line Items] trigger executes "within" the execution of the [Invoices] trigger, because the deletion of the list items are consequent to a call to `DELETE SELECTION` from within the [Invoices] trigger. + +Consider that all tables in this example have triggers activated for all database events. The cascade of triggers will be: + +- [Invoices] trigger is invoked because the invoking process deletes an invoice + - [Customers] trigger is invoked because the [Invoices] trigger updates the Gross Sales field + - [Line Items] trigger is invoked because the [Invoices] trigger deletes a line item (repeated) + - [Products] trigger is invoked because the [Line Items] trigger updates the Quantity Sold fiel + - [Payments] trigger is invoked because the [Invoices] trigger deletes a payment (repeated) + +In this cascade relationship, the [Invoices] trigger is said to be executing at level 1, the [Customers], [Line Items], and [Payments] triggers at level 2, and the [Products] trigger at level 3. + +From within the triggers, you can use the [`Trigger level`](../commands/trigger-level) command to detect the level at which a trigger is executed. In addition, you can use the [`TRIGGER PROPERTIES`](../commands/trigger-properties) command to get information about the other levels. + +For example, if a [Products] record is being deleted at a process level, the [Products] trigger would be executed at level 1, not at level 3. + +Using [`Trigger level`](../commands/trigger-level) and [`TRIGGER PROPERTIES`](../commands/trigger-properties), you can detect the cause of an action. In our example, an invoice is deleted at a process level. If we delete a [Customers] record at a process level, then the [Customers] trigger should attempt to delete all the invoices related to that customer. This means that the [Invoices] trigger will be invoked as above, but for another reason. From within the [Invoices] trigger, you can detect if it executed at level 1 or 2. If it did execute at level 2, you can then check whether or not it is because the [Customers] record is deleted. If this is the case, you do not even need to bother updating the Gross Sales field. + + + + diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Develop/field-properties.md b/i18n/pt/docusaurus-plugin-content-docs/current/Develop/field-properties.md index 0d96fcfcb26f13..b0213ba5a93a84 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Develop/field-properties.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Field properties --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Develop/triggers-new.md b/i18n/pt/docusaurus-plugin-content-docs/current/Develop/triggers-new.md new file mode 100644 index 00000000000000..268972c12a12f8 --- /dev/null +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Develop/triggers-new.md @@ -0,0 +1,21 @@ +--- +id: triggers-new +title: Triggers +--- + +to import + + + +## Triggers vs ORDA entity events + +**Triggers** (aka database events) and [**ORDA entity events**](../ORDA/orda-events.md) have similar purposes: they establish rules to control fundamental operations on the data (create, edit, or delete). However, they do not operate at the same level: + +- triggers are handled at the database level, which is the lowest level, +- ORDA entity events are handled at the [datastore](../ORDA/dsMapping.md#datastore) level, which is related to your business logic. + +Actions on data executed through the datastore, such as [`.save()`](../API/EntityClass.md#save) or [`.drop`](../API/EntityClass.md#drop), will call the triggers, if any. + +On the other hand, actions triggered at the 4D database level using the 4D classic language commands, such as [`SAVE RECORD`](../commands/save-record) or [standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html#3371159) will NOT trigger ORDA entity events. + + diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Extensions/develop-components.md b/i18n/pt/docusaurus-plugin-content-docs/current/Extensions/develop-components.md index a051325df053db..3a8476b40a366b 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Extensions/develop-components.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Extensions/develop-components.md @@ -316,6 +316,8 @@ However, you can install a [component error handler in the host application](../ However, you can install a [component error handler in the host application](../Concepts/error-handling.md#scope-and-components) to manage uncaught errors from compponents. +However, you can install a [component error handler in the host application](../Concepts/error-handling.md#scope-and-components) to manage uncaught errors from compponents. + ## Acesso às tabelas do projeto local Apesar de os componentes não poderem usar tabelas, ponteiros podem permitir que projetos locais e componentes se comuniquem entre si. Por exemplo, aqui está um método que pode ser chamado a partir de um componente: diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md b/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md index cbe997c6971a80..86e4cbdff0d795 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/formEditor.md @@ -56,7 +56,7 @@ A barra de ferramentas contém os seguintes elementos: | Ícone | Nome | Descrição | | ------------------------------------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Executar o formulário | Utilizado para testar a execução do formulário. Ao clicar nesse botão, 4D abre uma nova janela e exibe o formulário em seu contexto (lista de registros para um formulário de lista e página de registro atual para um formulário detalhado). O formulário é executado no processo principal. | -| ![](../assets/en/FormEditor/selection.png) | [Ferramenta de seleção](#selecting-objects) | Permite selecionar, mover e redimensionar objetos de formulário

    : Quando um objeto do tipo Text ou Group Box é selecionado, pressionar a tecla **Enter** permite alternar para o modo de edição.

    | +| ![](../assets/en/FormEditor/selection.png) | [Ferramenta de seleção](#selecting-objects) | Permite selecionar, mover e redimensionar objetos de formulário
    : Quando um objeto do tipo Text ou Group Box é selecionado, pressionar a tecla **Enter** permite alternar para o modo de edição. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordem de entrada](#data-entry-order) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. | | ![](../assets/en/FormEditor/moving.png) | [Moving](#objetos-em-movimento) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. | @@ -146,18 +146,18 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a Para selecionar um objeto usando a barra de ferramentas: -1. Clique na ferramenta Seta na barra de ferramentas

    ![](../assets/en/FormEditor/selection.png)

    +1. Clique na ferramenta Seta na barra de ferramentas
    ![](../assets/en/FormEditor/selection.png) -

    Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Clique no objecto que deseja selecionar. As alças de redimensionamento identificam o objeto selecionado

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Clique no objecto que deseja selecionar. As alças de redimensionamento identificam o objeto selecionado
    ![](../assets/en/FormEditor/selectResize.png) Para selecionar um objecto utilizando a Lista de Propriedades: 1. Escolher o nome do objecto na lista pendente da Lista de Objectos localizada no topo da Lista de Propriedades. Usando estes dois métodos, pode seleccionar um objecto que esteja escondido por outros objectos ou localizado fora da área visível da janela actual. Para cancelar a seleção de um objeto, clique fora do limite do objeto ou **Shift+clique** no objeto. -> Também é possível selecionar objetos clicando duas vezes neles na janela de resultados da operação "Localizar no design". +> It is also possible to select objects by double-clicking them in the result window of "Find in design" operation. ### Selecção de múltiplos objectos @@ -241,13 +241,13 @@ Para agrupar objectos: 1. Selecione o objecto agrupado que pretende desagrupar. 2. Elija **Agrupar** en el menú Objetos. OU - Clique no botão Group (Agrupar

    )

    na barra de ferramentas do editor de formulários:

    ![](../assets/en/FormEditor/group.png)

    + Clique no botão Group (Agrupar
    ) na barra de ferramentas do editor de formulários:

    ![](../assets/en/FormEditor/group.png)

    4D marca o limite dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo. Para desagrupar objetos: 1. Seleccione o objecto ou objectos que pretende duplicar. -2. Escolha **Ungroup** no menu **Object**

    .OUClique no

    botão **Ungroup** (variante do botão **Group**) na barra de ferramentas do editor de formulários.

    Se **Ungroup** estiver esmaecido, isso significa que o objeto selecionado já está separado em sua forma mais simples.

    4D marca os limites dos objetos individuais com alças. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca os limites dos objetos individuais com alças. ### Alinhamento de objetos @@ -275,9 +275,9 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen Para exibir essa caixa de diálogo, selecione os objetos que deseja alinhar e escolha o comando **Alinhamento** no submenu **Alinhar** do menu **Objeto** ou no menu de contexto do editor. -- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.

    A área de exemplo exibe os resultados da sua seleção.

    +- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.
    A área de exemplo exibe os resultados da sua seleção. -- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:

    Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. In this case, the position of the reference object will not be altered.

    +- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:
    Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada. Você pode visualizar os resultados do alinhamento clicando no botão **Preview**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento. @@ -314,7 +314,8 @@ Para distribuir objetos com igual espaçamento: 1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida. -2. Na barra de ferramentas, clique na ferramenta de distribuição que corresponde à distribuição que você deseja aplicar.

    ![](../assets/en/FormEditor/distributionTool.png)

    OU

    Selecione um comando de menu de distribuição no submenu **Alinhar** no menu **Objeto** ou no menu de contexto do editor.

    4D distribui os objetos apropriadamente. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: @@ -322,9 +323,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. A seguinte caixa de diálogo é exibida:![](../assets/en/FormEditor/alignmentAssistant.png) -3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (ícone padrão de distribuição horizontal)

    A área de exemplo exibe os resultados da sua seleção. +3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (ícone padrão de distribuição horizontal)
    A área de exemplo exibe os resultados da sua seleção. -4. Para executar uma distribuição que use o esquema padrão, clique em **Preview** ou *Apply*.

    Nesse caso, o 4D executará uma distribuição padrão, de modo que os objetos sejam dispostos com uma quantidade igual de espaço entre eles

    . OU:

    Para executar uma distribuição específica, selecione a opção **Distribute** (por exemplo, se quiser distribuir os objetos com base na distância até o lado direito). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:

    +4. Para executar uma distribuição que use o esquema padrão, clique em **Preview** ou *Apply*.
    Nesse caso, o 4D executará uma distribuição padrão, de modo que os objetos sejam dispostos com uma quantidade igual de espaço entre eles
    . OU:
    Para executar uma distribuição específica, selecione a opção **Distribute** (por exemplo, se quiser distribuir os objetos com base na distância até o lado direito). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:
    - Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdos, centros (hor.) e os lados direito dos objetos selecionados. - Verticalmente, os ícones correspondem às seguintes distribuições: uniformemente em relação às bordas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados. @@ -379,11 +380,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada Para ver ou alterar a ordem de entrada: -1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:
    ![](../assets/en/FormEditor/zOrder.png)
    O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas. -2. Para mudar a ordem de entrada de dados, posicione o ponteiro em um objeto no formulário e, enquanto mantém pressionado o botão do mouse, arraste o ponteiro para o objeto que deseja na ordem de entrada de dados.4D ajustará a ordem de entrada de acordo. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar. 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 1138d8154a484c..e0f5a4167e9998 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/forms.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/FormEditor/forms.md @@ -100,6 +100,12 @@ Um formulário de múltiplas páginas possui tanto uma página de fundo quanto v On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. + +| Light theme | Dark theme | +| --------------------------------------- | -------------------------------------------- | +| ![](../assets/en/FormEditor/fluent.png) | ![](../assets/en/FormEditor/fluent-dark.png) | + :::caution Prévia do desenvolvedor Fluent UI support is currently in the Developer Preview phase. Não deve ser usado na produção. @@ -112,20 +118,18 @@ This feature can only be used on Windows. On macOS, it is ignored. ::: -### Fluent UI rendering availability +:::tip Related blog post + +[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -The Fluent UI rendering is available in the following execution environments only: +::: -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- Fusionado aplicación 4D [autónomo](../Desktop/building.md#build-stand-alone-application) o [cliente](../Desktop/building.md#build-client-application) -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +### Requisitos -:::note +The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms. If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. -::: - ### Enabling the Fluent UI rendering You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. @@ -149,19 +153,23 @@ Each form can define its own rendering via the **Widget appearance** property. A The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". -### Features and limitations - -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. +### Specific behaviors When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. +- The new `FORM Windows theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. - If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). - [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). - [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). - [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). - The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). + +:::info Limitations + +This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: ## Formulários herdados diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md b/i18n/pt/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md index cbf8415a3b5a49..39960a6164d24c 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/FormObjects/properties_Action.md @@ -13,10 +13,10 @@ Estão disponíveis dois modos de arrastamento: - **Personalizado**: nesse modo, qualquer operação de arrastar executada no objeto aciona o evento de formulário `On Begin Drag` no contexto do objeto. Em seguida, a ação de arrastamento é gerida através de um método. No modo personalizado, basicamente toda a operação de arrastar e soltar é tratada pelo programador. Esse modo permite que você implemente qualquer interface baseada em arrastar e soltar, incluindo interfaces que não necessariamente transportam dados, mas podem executar qualquer ação, como abrir arquivos ou acionar um cálculo. Esse modo é baseado em uma combinação de propriedades, eventos e comandos específicos do tema `Pasteboard`. -- **Automático**: nesse modo, 4D **cópia** o texto ou as imagens diretamente do objeto formulário. Poderá então ser utilizado na mesma área de 4D, entre duas áreas 4D ou entre 4D e outra aplicação. Por exemplo, o arrastar (e soltar) automático permite que você copie um valor entre dois campos sem usar programação:\ - ![](../assets/en/FormObjects/property_automaticDragDrop.png)\ - ![](../assets/en/FormObjects/property_automaticDragDrop2.png) - Nesse modo, o evento de formulário `On Begin Drag` NÃO é gerado. Si quiere "forzar" el uso del arrastre personalizado mientras está activado el arrastre automático, mantenga presionada la tecla **Alt** (Windows) o **Opción** (macOS) durante la acción. Esta opção não está disponível para as imagens. +- **Automático**: nesse modo, 4D **cópia** o texto ou as imagens diretamente do objeto formulário. Poderá então ser utilizado na mesma área de 4D, entre duas áreas 4D ou entre 4D e outra aplicação. For example, automatic drag (and drop) lets you copy a value between two fields without using programming: + ![](../assets/en/FormObjects/property_automaticDragDrop.png) + ![](../assets/en/FormObjects/property_automaticDragDrop2.png)
    + In this mode, the `On Begin Drag` form event is NOT generated. Si quiere "forzar" el uso del arrastre personalizado mientras está activado el arrastre automático, mantenga presionada la tecla **Alt** (Windows) o **Opción** (macOS) durante la acción. Esta opção não está disponível para as imagens. Para más información, consulte [Arrastrar y soltar](https://doc.4d.com/4Dv20/4D/20.6/Drag-and-Drop.300-7487471.en.html) en el manual *Lenguaje 4D*. @@ -191,15 +191,15 @@ Em outros casos (list box baseados em seleções nomeadas, colunas associadas co ## Ação padrão -Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*. +Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Você pode atribuir uma ação padrão e um método projeto de um objeto. Neste caso, a ação padrão é geralmente executada depois que o método e o 4D usa esta ação para ativar/desativar o objeto conforme o contexto atual. Quando um objeto é desativado, o método projeto associado não pode ser executado. #### Gramática JSON -| Nome | Tipo de dados | Valores possíveis | -| ------ | ------------- | -------------------------------------------------------------------------------------------------------------------------- | -| action | string | O nome de uma [ação padrão válida](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nome | Tipo de dados | Valores possíveis | +| ------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objectos suportados 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 4dfe31a544cba8..199d034334829a 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Notes/updates.md @@ -44,7 +44,7 @@ Leia [**O que há de novo no 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/ - Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. - Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). - The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. -- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    +- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview.md#components-developed-by-4d)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    ![alt-text](../assets/en/getStart/convert.png)
    \- **Import**: import automatically 4D components as dependencies to the project
    \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    @@ -100,6 +100,35 @@ In binary databases, you need to select the required components in the 4D instal - Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. - Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. - Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). +- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. + +#### Prévia do desenvolvedor + +[**Fluent UI** rendering for 4D forms](../FormEditor/forms.md#fluent-ui-rendering-developer-preview) is proposed in Developer Preview during the beta test program. + +#### Mudanças de comportamento + +:::caution Index rebuild + +4D 21 includes an ICU library update ([see below](#library-table)) which will force an automatic rebuild of indexes of type alpha, text, and object. Dependendo do tamanho do ficheiro de dados, esta operação pode demorar algum tempo e pode necessitar de ser planeada. + +::: + +- Web services (SOAP): when [scalable sessions](../WebServer/sessions.md#enabling-web-sessions) are enabled, web services now run in [**preemptive processes**](../Develop/preemptive.md) in compiled mode. Make sure your SOAP code is thread-safe. +- Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. +- Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). +- The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. +- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    + ![alt-text](../assets/en/getStart/convert.png)
    + \- **Import**: import automatically 4D components as dependencies to the project
    + \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    + \- **Ask later**: do not import components and display the dialog at the next project opening. + +:::note + +In binary databases, you need to select the required components in the 4D installer or download them from the [4D Product Download portal](https://product-download.4d.com/?type=components). + +::: #### Prévia do desenvolvedor diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/entities.md b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/entities.md index 647fe5f0082093..07c4d294a07e89 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/entities.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/entities.md @@ -463,7 +463,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Esta função é chamada sempre que uma seleção de entidade ou uma entidade da classe de dados é solicitada. O filtro é executado uma vez, quando a entity selection é criada. -O filtro deve retornar uma seleção de entidade da dataclass. Puede ser una selección de entidades creada a partir de una consulta, almacenada en el [`Storage`], etc. +O filtro deve retornar uma seleção de entidade da dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md index 2d483010e8a237..d95347972ed07a 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: Events +title: Entity Events ---
    História @@ -12,19 +12,19 @@ title: Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::tip Related blog post -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: :::info Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -52,7 +52,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). ### Summary table @@ -102,13 +102,13 @@ When an error occurs in an event, the other events are stopped at the first rais ### Error object properties -| Propriedade | Tipo | Descrição | Set by the developer | -| ------------------ | ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Sim | -| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Sim | -| extraDescription | Object | Free information to set up | Sim | -| seriousError | Parâmetros | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • | Yes (default is false) | -| componentSignature | Text | Always "DBEV" | Não | +| Propriedade | Tipo | Descrição | Set by the developer | +| ------------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Sim | +| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Sim | +| extraDescription | Object | Free information to set up | Sim | +| seriousError | Parâmetros | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • `False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • | Yes (default is false) | +| componentSignature | Text | Always "DBEV" | Não | - [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. - In case of an error triggered by a **validate** event, the `seriousError` property allows you to choose the level of the error to generate: @@ -139,7 +139,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi - the user sets a value on a 4D form, - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. +- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) The function receives an [*event* object](#event-parameter) as parameter. @@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`). #### Exemplo -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro #### Exemplo -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` ### `Function event afterSave` @@ -454,29 +452,25 @@ The function receives an [*event* object](#event-parameter) as parameter. - To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. - Throwing an [error object](#error-object) is **not supported** by this function. -#### Exemplo 1 +#### Exemplo -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` ### `Function event validateDrop` @@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### Exemplo 1 +#### Exemplo -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### Exemplo 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` ### `Function event dropping` @@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### Exemplo 1 +#### Exemplo -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### Exemplo 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### Exemplo 1 +#### Exemplo -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### Exemplo 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/Project/components.md b/i18n/pt/docusaurus-plugin-content-docs/current/Project/components.md index b6c05fefa599fc..95b98dbb8e7fa1 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/Project/components.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/Project/components.md @@ -5,7 +5,7 @@ title: Dependencies A [arquitetura dos projetos](../Project/architecture.md) 4D é modular. Você pode fornecer funcionalidades adicionais aos seus projetos 4D instalando [**componentes**](Concepts/components.md) e [**plug-ins**](Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md). -Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/search?q=4d-component&type=Repositories). +Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/topics/4d-component). Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties. @@ -326,7 +326,7 @@ When you add or update a component (whether [local](#local-components) or [from The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. :::note diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/REST/$filter.md b/i18n/pt/docusaurus-plugin-content-docs/current/REST/$filter.md index 095aab2c43c2a8..01f9c75981cdbe 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/REST/$filter.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/REST/$filter.md @@ -90,11 +90,11 @@ Use the `params` property to provide the filter with the vector comparison param The *vectorComparison* parameter is a collection of the following elements: -| Propriedade | Tipo | Descrição | | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [].vector | Uma coleção de objetos) | Obrigatório. A collection that represents the vector to compare | | -| [].metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | | -| | [].threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. | +| Propriedade | Tipo | Descrição | +| -------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [].vector | Collection of numbers | Obrigatório. A collection that represents the vector to compare | +| [].metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | +| [].threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. | Only a subset of **comparator** symbols are supported with vector comparisons. Note that they compare results to the threshold value: diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/http-rules.md b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/http-rules.md index a8c220ccb23587..2d09d0687cbba6 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/http-rules.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/http-rules.md @@ -64,12 +64,17 @@ The following action keywords are supported: ### Non-modifiable headers -The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions: +Some headers could not be added, modified or removed: -- "Date", -- "Content-Length" +| Header | Add | Set | Remove | +| ---------------- | --- | ---------- | ------ | +| Date | Não | Não | Não | +| Content-Length | Não | Não | Não | +| Content-Encoding | Não | Não | Não | +| Vary | Sim | Não | Não | +| Set-Cookie | Sim | Add cookie | Não | -Modifying these headers do not generate errors, however modifications will be ignored. +Unauthorized changes on these headers do not generate errors, however modifications will be ignored. ### Current rules diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/sessions.md b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/sessions.md index 2471ddb6831c51..1a02e189b920b6 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/sessions.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/WebServer/sessions.md @@ -201,9 +201,9 @@ Else End if ``` -:::note +:::tips Related blog posts -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md index 479fd15eac6a81..e529e68691a3c4 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. ## Configuration Properties -| Nome da propriedade | Tipo | Descrição | Opcional | -| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------- | -| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Não para OpenAI | -| `baseURL` | Text | Base URL for OpenAI API requests. | Sim | -| `organization` | Text | Your OpenAI Organization ID. | Sim | -| `project` | Text | Your OpenAI Project ID. | Sim | +| Nome da propriedade | Tipo | Descrição | Opcional | +| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------------------------------------------------- | +| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider | +| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI Platform) | +| `organization` | Text | Your OpenAI Organization ID. | Sim | +| `project` | Text | Your OpenAI Project ID. | Sim | ### Propriedades HTTP adicionais diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md index 28426d8b6f12b8..7cb74f769f2d19 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Providers Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +To do so you just have to set the `baseURL` to the provider one and use their api key if needed. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Some of them ## Remoto -| Provider | URL base | +| Provider | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Some of them ## Local -| Provider | URL base padrão | Doc | +| Provider | Default baseURL | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/overview.md b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/overview.md index bac8cd22b06ec4..aed3c9f5dd59b6 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/aikit/overview.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/aikit/overview.md @@ -21,7 +21,7 @@ First of all, initialize the OpenAI client using your API key var $client:=cs.AIKit.OpenAI.new("your api key") ``` -For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -43,7 +43,7 @@ var $result:=$client..() O `$result` contém o `HTTPRequest`, um status de `sucess`, uma coleção de `erros` e outros. Ver [OpenAIResult](Classes/OpenAIResult.md) -Veja alguns exemplos abaixo. +See some examples below. #### Chat diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png new file mode 100644 index 00000000000000..7c9d523d0372f1 Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-architecture.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png new file mode 100644 index 00000000000000..8a4a075fd1f5d3 Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-cascade.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png new file mode 100644 index 00000000000000..b339a988df6172 Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/Develop/triggers-set.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent-dark.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/current/assets/en/FormEditor/fluent.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md b/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md index 82ea07e83c1145..0efa560a6e6ade 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/pt/docusaurus-plugin-content-docs/current/commands-legacy/on-server-open-connection-database-method.md @@ -120,7 +120,11 @@ O seguinte exemplo evita uma nova conexão entre as 2 e 4 A.M.   // Método base On Server Open Connection  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time**Nota**: quando um objeto do tipo Texto ou Group Box é selecionado, pressionando a tecla **Enter** permite que você mude para o modo de edição.

    | +| ![](../assets/en/FormEditor/selection.png) | [Ferramenta de selecção](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordem de entrada](#selecting-objects) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. | | ![](../assets/en/FormEditor/moving.png) | [Deslocamento](#moving-objects) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. | @@ -146,11 +146,11 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a Para selecionar um objeto usando a barra de ferramentas: -1. Clique na ferramenta Seta na barra de ferramentas.

    ![](../assets/en/FormEditor/selection.png)

    +1. Clique na ferramenta Seta na barra de ferramentas.
    ![](../assets/en/FormEditor/selection.png) -

    Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta

    . +
    Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta. -2. Clique no objecto que deseja selecionar. As pegas de redimensionamento identificam o objeto selecionado.

    ../assets/en/FormEditor/selectResize.png

    +2. Clique no objecto que deseja selecionar. As pegas de redimensionamento identificam o objeto selecionado.
    ![](../assets/en/FormEditor/selectResize.png) Para selecionar um objecto utilizando a Lista de Propriedades: @@ -235,13 +235,12 @@ O agrupamento só afeta os objetos no editor de formulários. Quando o formulár Para agrupar objectos: 1. Selecione o objecto agrupado que pretende desagrupar. -2. Selecione **Grupo** no menu Objeto. OU Clique no botão do Grupo na barra de ferramentas no editor de formulário:

    ![](../assets/en/FormEditor/group.png)

    -4D marca a borda dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo. +2. Selecione **Grupo** no menu Objeto. OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo. Para desagrupar objetos: 1. Seleccione o objecto ou objectos que pretende duplicar. -2. Escolher **Desagrupar** a partir do menu **Objetos**.

    OU

    Clique no botão **Desagrupamento** (variante do botão **Grupo**) na barra de ferramentas do editor do formulário.

    Se **Desagrupamento** for escurecido, isso significa que o objeto selecionado já está separado em sua forma mais simples.

    4D marca os limites dos objetos individuais com alças. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca os limites dos objetos individuais com alças. ### Alinhamento de objetos @@ -268,9 +267,10 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen Para exibir esta caixa de diálogo, selecione os objetos que você deseja alinhar e escolha o comando **Alinhamento** a partir do menu **Alinhar** no menu **Objeto** ou no menu de contexto do editor. -- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.

    A área de exemplo apresenta os resultados da sua seleção.

    +- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.
    A área de exemplo exibe os resultados da sua seleção. + +- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Prévia** ou **Aplicar**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. Neste caso, a posição do objeto de referência não será alterada. -- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Prévia** ou **Aplicar**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:

    Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada.

    Pode pré-visualizar os resultados do alinhamento clicando no botão **Pré-visualização**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento. > Esta caixa de diálogo permite-lhe alinhar e distribuir objetos numa única operação. Para mais informações sobre como distribuir objetos, consultar [Distribuir objetos](#distributing-objects). @@ -304,7 +304,7 @@ Para distribuir objetos com igual espaçamento: 1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida. -2. Na barra de ferramentas, clique na ferramenta de distribuição que corresponde à distribuição que você deseja aplicar.

    ![](../assets/en/FormEditor/distributionTool.png)

    OU

    Selecione um comando de distribuição no submenu **Alinear** do menu **Objeto** ou no menu contextual do editor.

    4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: @@ -312,9 +312,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: 2. Escolha o comando **Alinhamento** do submenu **Alinhar** no menu **Objeto** ou no menu de contexto do editor. Aparece a seguinte caixa de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. Nas áreas Alinhamento Esquerdo/Direita e/ou Alinhamento Superior/Inferior, clique no ícone de distribuição padrão: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Ícone de distribuição horizontal standard)

    A área de exemplo apresenta os resultados da sua seleção. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. Para realizar uma distribuição que use o esquema padrão, clique em **Pré-visualizar** ou *Aplicar*.

    Neste caso 4D irá executar uma distribuição padrão, de modo que os objetos sejam definidos com a mesma quantidade de espaço entre eles.

    OU:

    Para executar uma distribuição específica, selecione a opção **Distribuir** (por exemplo, se você quiser distribuir os objetos com base na distância até o lado direito). Esta opção funciona como um interruptor. Se a caixa de seleção Distribui for selecionada, os ícones localizados abaixo dele executam uma função diferente:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. Se a caixa de seleção Distribui for selecionada, os ícones localizados abaixo dele executam uma função diferente:
    - Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdo, centros (hor.) e lados direito dos objetos selecionados. - Verticalmente, os ícones correspondem às seguintes distribuições: igualmente com respeito às arestas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados. @@ -367,11 +367,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada Para ver ou alterar a ordem de entrada: -1. Escolha **Ordem de Entrada** a partir do menu **Formulário** ou clique no botão da Ordem de Entrada na barra de ferramentas da janela:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Escolha **Ordem de Entrada** a partir do menu **Formulário** ou clique no botão da Ordem de Entrada na barra de ferramentas da janela:
    ![](../assets/en/FormEditor/zOrder.png)
    O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas. -2. Para alterar a ordem de entrada de dados, posicionar o ponteiro sobre um objeto na forma e, mantendo pressionado o botão do rato, arrastar o ponteiro para o objeto que se pretende a seguir na ordem de entrada de dados.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D irá ajustar a ordem de entrada em conformidade. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md index 2232b0ee3396be..7a4eddbb6334c8 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Concepts/components.md @@ -7,7 +7,7 @@ Um componente 4D é um conjunto de código 4D e formulários que representam uma ## Instalação de componentes -Vários componentes são [pré-instalados no ambiente de desenvolvimento 4D](Extensions/overview.md), mas muitos componentes 4D da comunidade 4D [podem ser encontrados no GitHub](https://github.com/search?q=4d-component&type=Repositories). Além disso, você pode [desenvolver seus próprios componentes 4D](Extensions/develop-components.md). +Vários componentes são [pré-instalados no ambiente de desenvolvimento 4D](Extensions/overview.md), mas muitos componentes 4D da comunidade 4D [podem ser encontrados no GitHub](https://github.com/topics/4d-component). Além disso, você pode [desenvolver seus próprios componentes 4D](Extensions/develop-components.md). A instalação e o carregamento de componentes em seus projetos 4D são feitos por meio do [gerenciador de dependências 4D](../Project/components.md). diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md index 0d96fcfcb26f13..b0213ba5a93a84 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Field properties --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md index a4e7b6b79650c0..ade39d9cdc748e 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormEditor/formEditor.md @@ -56,7 +56,7 @@ A barra de ferramentas contém os seguintes elementos: | Ícone | Nome | Descrição | | ------------------------------------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Executar o formulário | Utilizado para testar a execução do formulário. Ao clicar nesse botão, 4D abre uma nova janela e exibe o formulário em seu contexto (lista de registros para um formulário de lista e página de registro atual para um formulário detalhado). O formulário é executado no processo principal. | -| ![](../assets/en/FormEditor/selection.png) | [Ferramenta de seleção](#selecting-objects) | Allows selecting, moving and resizing form objects.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +| ![](../assets/en/FormEditor/selection.png) | [Ferramenta de seleção](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Nota**: quando um objeto do tipo Texto ou Group Box é selecionado, pressionando a tecla **Enter** permite que você mude para o modo de edição. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordem de entrada](#data-entry-order) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. | | ![](../assets/en/FormEditor/moving.png) | [Moving](#objetos-em-movimento) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. | @@ -146,11 +146,11 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a Para selecionar um objeto usando a barra de ferramentas: -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Clique no objecto que deseja selecionar. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Clique no objecto que deseja selecionar. Resizing handles identify the selected object.
    ../assets/en/FormEditor/selectResize.png Para selecionar um objecto utilizando a Lista de Propriedades: @@ -241,13 +241,13 @@ Para agrupar objectos: 1. Selecione o objecto agrupado que pretende desagrupar. 2. Elija **Agrupar** en el menú Objetos. OU - Clique no botão Group (Agrupar

    )

    na barra de ferramentas do editor de formulários:

    ![](../assets/en/FormEditor/group.png)

    + Clique no botão Group (Agrupar
    ) na barra de ferramentas do editor de formulários:

    ![](../assets/en/FormEditor/group.png)

    4D marca o limite dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo. Para desagrupar objetos: 1. Seleccione o objecto ou objectos que pretende duplicar. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marca os limites dos objetos individuais com alças. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    Se **Desagrupamento** for escurecido, isso significa que o objeto selecionado já está separado em sua forma mais simples. 4D marca os limites dos objetos individuais com alças. ### Alinhamento de objetos @@ -275,9 +275,9 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen Para exibir essa caixa de diálogo, selecione os objetos que deseja alinhar e escolha o comando **Alinhamento** no submenu **Alinhar** do menu **Objeto** ou no menu de contexto do editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    A área de exemplo apresenta os resultados da sua seleção. -- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:

    Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. In this case, the position of the reference object will not be altered.

    +- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:
    Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada. Você pode visualizar os resultados do alinhamento clicando no botão **Preview**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento. @@ -314,7 +314,8 @@ Para distribuir objetos com igual espaçamento: 1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: @@ -322,9 +323,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. A seguinte caixa de diálogo é exibida:![](../assets/en/FormEditor/alignmentAssistant.png) -3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (ícone padrão de distribuição horizontal)

    A área de exemplo exibe os resultados da sua seleção. +3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (ícone padrão de distribuição horizontal)
    A área de exemplo exibe os resultados da sua seleção. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:
    - Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdos, centros (hor.) e os lados direito dos objetos selecionados. - Verticalmente, os ícones correspondem às seguintes distribuições: uniformemente em relação às bordas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados. @@ -379,11 +380,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada Para ver ou alterar a ordem de entrada: -1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:
    ![](../assets/en/FormEditor/zOrder.png)
    O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md index cbf8415a3b5a49..9abf540b4ddac0 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/FormObjects/properties_Action.md @@ -191,15 +191,15 @@ Em outros casos (list box baseados em seleções nomeadas, colunas associadas co ## Ação padrão -Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*. +Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Você pode atribuir uma ação padrão e um método projeto de um objeto. Neste caso, a ação padrão é geralmente executada depois que o método e o 4D usa esta ação para ativar/desativar o objeto conforme o contexto atual. Quando um objeto é desativado, o método projeto associado não pode ser executado. #### Gramática JSON -| Nome | Tipo de dados | Valores possíveis | -| ------ | ------------- | -------------------------------------------------------------------------------------------------------------------------- | -| action | string | O nome de uma [ação padrão válida](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nome | Tipo de dados | Valores possíveis | +| ------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objectos suportados diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md index 0ab195287b1363..e03a8ca21a49cf 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/entities.md @@ -463,7 +463,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Esta função é chamada sempre que uma seleção de entidade ou uma entidade da classe de dados é solicitada. O filtro é executado uma vez, quando a entity selection é criada. -O filtro deve retornar uma seleção de entidade da dataclass. Puede ser una selección de entidades creada a partir de una consulta, almacenada en el [`Storage`], etc. +O filtro deve retornar uma seleção de entidade da dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md index 89f7200ce40369..75941c87ec6b55 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: ORDA Events +title: Entity Events ---
    História @@ -11,13 +11,13 @@ title: ORDA Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::info Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -25,7 +25,7 @@ ORDA events in the datastore are equivalent to triggers in the 4D database. Howe ### Event level -A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). +A entity event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute. @@ -49,7 +49,7 @@ With other remote configurations (i.e. Qodly applications, [REST API requests](. ### Summary table -The following table lists ORDA events along with their rules. +The following table lists ORDA entity events along with their rules. | Evento | Nível | Function name | (C/S) Executed on | | :------------------- | :------- | :------------------------------------------------------ | :------------------------------------------------------------------: | diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Project/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Project/components.md index c78e4286cff83c..ad35a6ee75ce9a 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Project/components.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/Project/components.md @@ -5,7 +5,7 @@ title: Dependencies Um componente 4D é um conjunto de código 4D e/ou formulários que representam uma ou mais funcionalidades que pode adicionar e usar nos seus projetos. Por exemplo, o componente [4D SVG](https://github.com/4d/4D-SVG) adiciona comandos avançados e um mecanismo de renderização integrado que pode ser usado para exibir arquivos SVG. -Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/search?q=4d-component&type=Repositories). +Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/topics/4d-component). Ao desenvolver em 4D, os arquivos de componentes podem ser armazenados de forma transparente no seu computador ou em um repositório do Github. @@ -339,7 +339,7 @@ When you add or update a component (whether [local](#local-components) or [from The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. :::note diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md index c1f821ac13c915..1dbedd8c5da236 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/WebServer/sessions.md @@ -201,9 +201,9 @@ Else End if ``` -:::note +:::tips Related blog posts -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md index 479fd15eac6a81..55feedcff520fe 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. ## Configuration Properties -| Nome da propriedade | Tipo | Descrição | Opcional | -| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------- | -| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Não para OpenAI | -| `baseURL` | Text | Base URL for OpenAI API requests. | Sim | -| `organization` | Text | Your OpenAI Organization ID. | Sim | -| `project` | Text | Your OpenAI Project ID. | Sim | +| Nome da propriedade | Tipo | Descrição | Opcional | +| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------------------------------------------------- | +| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider | +| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI provider) | +| `organization` | Text | Your OpenAI Organization ID. | Sim | +| `project` | Text | Your OpenAI Project ID. | Sim | ### Propriedades HTTP adicionais diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md index 28426d8b6f12b8..7cb74f769f2d19 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Providers Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +To do so you just have to set the `baseURL` to the provider one and use their api key if needed. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Some of them ## Remoto -| Provider | URL base | +| Provider | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Some of them ## Local -| Provider | URL base padrão | Doc | +| Provider | Default baseURL | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md index bac8cd22b06ec4..aed3c9f5dd59b6 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/aikit/overview.md @@ -21,7 +21,7 @@ First of all, initialize the OpenAI client using your API key var $client:=cs.AIKit.OpenAI.new("your api key") ``` -For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -43,7 +43,7 @@ var $result:=$client..() O `$result` contém o `HTTPRequest`, um status de `sucess`, uma coleção de `erros` e outros. Ver [OpenAIResult](Classes/OpenAIResult.md) -Veja alguns exemplos abaixo. +See some examples below. #### Chat diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md index 82ea07e83c1145..0efa560a6e6ade 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md @@ -120,7 +120,11 @@ O seguinte exemplo evita uma nova conexão entre as 2 e 4 A.M.   // Método base On Server Open Connection  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time**Nota**: quando um objeto do tipo Texto ou Group Box é selecionado, pressionando a tecla **Enter** permite que você mude para o modo de edição.

    | +| ![](../assets/en/FormEditor/selection.png) | [Ferramenta de selecção](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordem de entrada](#selecting-objects) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. | | ![](../assets/en/FormEditor/moving.png) | [Deslocamento](#moving-objects) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. | @@ -146,11 +146,11 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a Para selecionar um objeto usando a barra de ferramentas: -1. Clique na ferramenta Seta na barra de ferramentas.

    ![](../assets/en/FormEditor/selection.png)

    +1. Clique na ferramenta Seta na barra de ferramentas.
    ![](../assets/en/FormEditor/selection.png) -

    Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta

    . +
    Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta. -2. Clique no objecto que deseja selecionar. As pegas de redimensionamento identificam o objeto selecionado.

    ../assets/en/FormEditor/selectResize.png

    +2. Clique no objecto que deseja selecionar. As pegas de redimensionamento identificam o objeto selecionado.
    ![](../assets/en/FormEditor/selectResize.png) Para selecionar um objecto utilizando a Lista de Propriedades: @@ -235,13 +235,12 @@ O agrupamento só afeta os objetos no editor de formulários. Quando o formulár Para agrupar objectos: 1. Selecione o objecto agrupado que pretende desagrupar. -2. Selecione **Grupo** no menu Objeto. OU Clique no botão do Grupo na barra de ferramentas no editor de formulário:

    ![](../assets/en/FormEditor/group.png)

    -4D marca a borda dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo. +2. Selecione **Grupo** no menu Objeto. OR Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo. Para desagrupar objetos: 1. Seleccione o objecto ou objectos que pretende duplicar. -2. Escolher **Desagrupar** a partir do menu **Objetos**.

    OU

    Clique no botão **Desagrupamento** (variante do botão **Grupo**) na barra de ferramentas do editor do formulário.

    Se **Desagrupamento** for escurecido, isso significa que o objeto selecionado já está separado em sua forma mais simples.

    4D marca os limites dos objetos individuais com alças. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marca os limites dos objetos individuais com alças. ### Alinhamento de objetos @@ -268,9 +267,10 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen Para exibir esta caixa de diálogo, selecione os objetos que você deseja alinhar e escolha o comando **Alinhamento** a partir do menu **Alinhar** no menu **Objeto** ou no menu de contexto do editor. -- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.

    A área de exemplo apresenta os resultados da sua seleção.

    +- Nas áreas "Alinhamento Esquerda/Direita" e/ou "Alinhamento Superior/Inferior", clique no ícone que corresponde ao alinhamento que você deseja executar.
    A área de exemplo exibe os resultados da sua seleção. + +- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Prévia** ou **Aplicar**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. Neste caso, a posição do objeto de referência não será alterada. -- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Prévia** ou **Aplicar**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:

    Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada.

    Pode pré-visualizar os resultados do alinhamento clicando no botão **Pré-visualização**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento. > Esta caixa de diálogo permite-lhe alinhar e distribuir objetos numa única operação. Para mais informações sobre como distribuir objetos, consultar [Distribuir objetos](#distributing-objects). @@ -304,7 +304,7 @@ Para distribuir objetos com igual espaçamento: 1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida. -2. Na barra de ferramentas, clique na ferramenta de distribuição que corresponde à distribuição que você deseja aplicar.

    ![](../assets/en/FormEditor/distributionTool.png)

    OU

    Selecione um comando de distribuição no submenu **Alinear** do menu **Objeto** ou no menu contextual do editor.

    4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: @@ -312,9 +312,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: 2. Escolha o comando **Alinhamento** do submenu **Alinhar** no menu **Objeto** ou no menu de contexto do editor. Aparece a seguinte caixa de diálogo:![](../assets/en/FormEditor/alignmentAssistant.png) -3. Nas áreas Alinhamento Esquerdo/Direita e/ou Alinhamento Superior/Inferior, clique no ícone de distribuição padrão: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Ícone de distribuição horizontal standard)

    A área de exemplo apresenta os resultados da sua seleção. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. Para realizar uma distribuição que use o esquema padrão, clique em **Pré-visualizar** ou *Aplicar*.

    Neste caso 4D irá executar uma distribuição padrão, de modo que os objetos sejam definidos com a mesma quantidade de espaço entre eles.

    OU:

    Para executar uma distribuição específica, selecione a opção **Distribuir** (por exemplo, se você quiser distribuir os objetos com base na distância até o lado direito). Esta opção funciona como um interruptor. Se a caixa de seleção Distribui for selecionada, os ícones localizados abaixo dele executam uma função diferente:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. Se a caixa de seleção Distribui for selecionada, os ícones localizados abaixo dele executam uma função diferente:
    - Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdo, centros (hor.) e lados direito dos objetos selecionados. - Verticalmente, os ícones correspondem às seguintes distribuições: igualmente com respeito às arestas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados. @@ -367,11 +367,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada Para ver ou alterar a ordem de entrada: -1. Escolha **Ordem de Entrada** a partir do menu **Formulário** ou clique no botão da Ordem de Entrada na barra de ferramentas da janela:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Escolha **Ordem de Entrada** a partir do menu **Formulário** ou clique no botão da Ordem de Entrada na barra de ferramentas da janela:
    ![](../assets/en/FormEditor/zOrder.png)
    O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas. -2. Para alterar a ordem de entrada de dados, posicionar o ponteiro sobre um objeto na forma e, mantendo pressionado o botão do rato, arrastar o ponteiro para o objeto que se pretende a seguir na ordem de entrada de dados.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D irá ajustar a ordem de entrada em conformidade. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md index 59ef8f0eddf9b7..53d16f66e9a596 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/DataClassClass.md @@ -1182,11 +1182,11 @@ If *attributePath* designates an attribute storing [**vector objects**](../API/V In this case, the *value* parameter must be a **comparison vector object** containing the following properties: -| Propriedade | Tipo | Descrição | -| ----------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| vector | [4D.Vector](../API/VectorClass.md) | Obrigatório. The vector to be compared | -| metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine distance between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | -| threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. | +| Propriedade | Tipo | Descrição | +| ----------- | -------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| vector | [4D.Vector](../API/VectorClass.md) | Obrigatório. The vector to be compared | +| metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors. | +| threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. | Only a subset of **comparator** symbols are supported. Note that they compare results to the threshold value: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/EntityClass.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/EntityClass.md index aa53eca5061903..5b354dc41f420e 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/EntityClass.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/EntityClass.md @@ -1017,7 +1017,6 @@ O objeto retornado por `.lock()` contém as seguintes propriedades: | ----------------------------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `dk status entity does not exist anymore` | 5 | A entidade não existe mais nos dados. Esse erro pode ocorrer nos seguintes casos
  • :a entidade foi descartada (o carimbo foi alterado e o espaço de memória agora está livre)
  • a entidade foi descartada e substituída por outra com outra chave primária (o carimbo foi alterado e uma nova entidade agora usa o espaço de memória). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. Quando usando `. ock()`, este erro pode ser retornado quando a opção `dk reload se o carimbo mudar` é usada

  • **Associado statusText**: "Entidade não existe mais" | | `dk status locked` | 3 | A entidade está bloqueada por um bloqueio pessimista.**statusText associado**: "Already locked" | -| `dk status mild validation error` | 7 | Can be returned by the developer only in validate events and do not require | | `dk status serious error` | 4 | A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **Associated statusText**: "Other error" | | `dk status stamp has changed` | 2 | The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed" | diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/SessionClass.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/SessionClass.md index 6ea1fd129e4c34..c26001d78e0d51 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/API/SessionClass.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/API/SessionClass.md @@ -89,7 +89,7 @@ This function does not remove **promoted privileges** from the web process, whet ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). #### Exemplo @@ -388,7 +388,7 @@ This function returns True for the *privilege* if called from a function that wa ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/Concepts/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/Concepts/components.md index f68e3abde1e8ad..0fc243a77163dd 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/Concepts/components.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/Concepts/components.md @@ -9,7 +9,7 @@ Um componente 4D é um conjunto de código 4D e formulários que representam uma Installation and loading of components in your 4D projects are handled through the [4D Dependency manager](../Project/components.md). -Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Além disso, você pode [desenvolver seus próprios componentes 4D](../Extensions/develop-components.md). +Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Além disso, você pode [desenvolver seus próprios componentes 4D](../Extensions/develop-components.md). ## Utilização de componentes diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md index 0d96fcfcb26f13..b0213ba5a93a84 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Field properties --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md index a4e7b6b79650c0..ade39d9cdc748e 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/formEditor.md @@ -56,7 +56,7 @@ A barra de ferramentas contém os seguintes elementos: | Ícone | Nome | Descrição | | ------------------------------------------------ | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ![](../assets/en/FormEditor/execute.png) | Executar o formulário | Utilizado para testar a execução do formulário. Ao clicar nesse botão, 4D abre uma nova janela e exibe o formulário em seu contexto (lista de registros para um formulário de lista e página de registro atual para um formulário detalhado). O formulário é executado no processo principal. | -| ![](../assets/en/FormEditor/selection.png) | [Ferramenta de seleção](#selecting-objects) | Allows selecting, moving and resizing form objects.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +| ![](../assets/en/FormEditor/selection.png) | [Ferramenta de seleção](#selecting-objects) | Allows selecting, moving and resizing form objects.
    **Nota**: quando um objeto do tipo Texto ou Group Box é selecionado, pressionando a tecla **Enter** permite que você mude para o modo de edição. | | ![](../assets/en/FormEditor/zOrder.png) | [Ordem de entrada](#data-entry-order) | Alterna para o modo "Ordem de entrada", onde é possível visualizar e alterar a ordem de entrada atual do formulário. Observe que os escudos permitem a visualização da ordem de entrada atual, enquanto você ainda trabalha no formulário. | | ![](../assets/en/FormEditor/moving.png) | [Moving](#objetos-em-movimento) | Alterne para o modo "Mover", onde for possível alcançar qualquer parte do formulário rapidamente usando arrastar e soltar na janela. O cursor assume a forma de uma mão. Este modo de navegação é particularmente útil ao ampliar o formulário. | | ![](../assets/en/FormEditor/zoom.png) | [Zoom](#zoom) | Permite modificar a percentagem de visualização do formulário (100% por padrão). Você pode alternar para o modo "Zoom" clicando na lupa ou clicando diretamente na barra desejada. Esta função é descrita em pormenor na secção anterior. | @@ -146,11 +146,11 @@ Antes de executar qualquer operação em um objeto (como alterar a largura ou a Para selecionar um objeto usando a barra de ferramentas: -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    Quando você move o ponteiro para a área do formulário, ele se torna um ponteiro padrão em forma de seta

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Clique no objecto que deseja selecionar. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Clique no objecto que deseja selecionar. Resizing handles identify the selected object.
    ../assets/en/FormEditor/selectResize.png Para selecionar um objecto utilizando a Lista de Propriedades: @@ -241,13 +241,13 @@ Para agrupar objectos: 1. Selecione o objecto agrupado que pretende desagrupar. 2. Elija **Agrupar** en el menú Objetos. OU - Clique no botão Group (Agrupar

    )

    na barra de ferramentas do editor de formulários:

    ![](../assets/en/FormEditor/group.png)

    + Clique no botão Group (Agrupar
    ) na barra de ferramentas do editor de formulários:

    ![](../assets/en/FormEditor/group.png)

    4D marca o limite dos objetos recém-agrupados com alças. Nenhum manipulador marca o limite de nenhum dos objetos individuais no grupo. Agora, quando você modifica o objeto agrupado, altere todos os objetos que compõem o grupo. Para desagrupar objetos: 1. Seleccione o objecto ou objectos que pretende duplicar. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marca os limites dos objetos individuais com alças. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    Se **Desagrupamento** for escurecido, isso significa que o objeto selecionado já está separado em sua forma mais simples. 4D marca os limites dos objetos individuais com alças. ### Alinhamento de objetos @@ -275,9 +275,9 @@ O Assistente de Alinhamento permite que você execute qualquer tipo de alinhamen Para exibir essa caixa de diálogo, selecione os objetos que deseja alinhar e escolha o comando **Alinhamento** no submenu **Alinhar** do menu **Objeto** ou no menu de contexto do editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    A área de exemplo apresenta os resultados da sua seleção. -- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:

    Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. In this case, the position of the reference object will not be altered.

    +- Para executar um alinhamento que use o esquema de âncora padrão, clique em **Preview** ou **Apply**. Nesse caso, 4D usa o objeto que está mais distante na direção do alinhamento como âncora e alinha os outros objetos a esse objeto. Por exemplo, se quiser realizar um alinhamento correcto num conjunto de objectos, o objecto mais à direita será utilizado como âncora. OU:
    Para alinhar objetos a um objeto específico, selecione a opção **Alinhar em** e selecione o objeto ao qual você deseja que os outros objetos sejam alinhados na lista de objetos. Neste caso, a posição do objeto de referência não será alterada. Você pode visualizar os resultados do alinhamento clicando no botão **Preview**. Os objetos são então alinhados no editor de formulários, mas como a caixa de diálogo não desaparece, ainda é possível cancelar ou aplicar o alinhamento. @@ -314,7 +314,8 @@ Para distribuir objetos com igual espaçamento: 1. Selecione três ou mais objetos e clique na ferramenta Distribuir pretendida. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. + 4D distribui os objetos em conformidade. Os objetos são distribuídos usando a distância para seus centros, e a maior distância entre dois objetos consecutivos é usada como referência. Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: @@ -322,9 +323,9 @@ Para distribuir objetos utilizando a caixa de diálogo Alinhar e distribuir: 2. Seleccione el comando **Alineación** del submenú **Alinear** del menú **Objeto** o del menú contextual del editor. A seguinte caixa de diálogo é exibida:![](../assets/en/FormEditor/alignmentAssistant.png) -3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (ícone padrão de distribuição horizontal)

    A área de exemplo exibe os resultados da sua seleção. +3. Nas áreas de Alinhamento Esquerdo/Direita e/ou Topo/Bottom Alinhamento, clique no ícone de distribuição padrão: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (ícone padrão de distribuição horizontal)
    A área de exemplo exibe os resultados da sua seleção. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). Esta opção funciona como um interruptor. If the Distribute check box is selected, the icons located below it perform a different function:
    - Horizontalmente, os ícones correspondem às seguintes distribuições: igualmente com relação aos lados esquerdos, centros (hor.) e os lados direito dos objetos selecionados. - Verticalmente, os ícones correspondem às seguintes distribuições: uniformemente em relação às bordas superiores, centros (vert.) e as bordas inferiores dos objetos selecionados. @@ -379,11 +380,11 @@ Este parágrafo descreve a visualização e a modificação da ordem de entrada Para ver ou alterar a ordem de entrada: -1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Selecione **Pedido de entrada** no menu **Formulário** ou clique no botão na barra de ferramentas da janela:
    ![](../assets/en/FormEditor/zOrder.png)
    O ponteiro se transforma em um ponteiro de ordem de entrada e 4D desenha uma linha na forma mostrando a ordem em que ele seleciona objetos durante a entrada de dados. A visualização e alteração da ordem de introdução de dados são as únicas acções que pode realizar até clicar em qualquer ferramenta na paleta Ferramentas. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repita a etapa 2 tantas vezes quantas forem necessárias para definir a ordem de introdução de dados que desejar. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md index 1138d8154a484c..e0f5a4167e9998 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormEditor/forms.md @@ -100,6 +100,12 @@ Um formulário de múltiplas páginas possui tanto uma página de fundo quanto v On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. + +| Light theme | Dark theme | +| --------------------------------------- | -------------------------------------------- | +| ![](../assets/en/FormEditor/fluent.png) | ![](../assets/en/FormEditor/fluent-dark.png) | + :::caution Prévia do desenvolvedor Fluent UI support is currently in the Developer Preview phase. Não deve ser usado na produção. @@ -112,20 +118,18 @@ This feature can only be used on Windows. On macOS, it is ignored. ::: -### Fluent UI rendering availability +:::tip Related blog post + +[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -The Fluent UI rendering is available in the following execution environments only: +::: -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- Fusionado aplicación 4D [autónomo](../Desktop/building.md#build-stand-alone-application) o [cliente](../Desktop/building.md#build-client-application) -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +### Requisitos -:::note +The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms. If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. -::: - ### Enabling the Fluent UI rendering You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. @@ -149,19 +153,23 @@ Each form can define its own rendering via the **Widget appearance** property. A The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". -### Features and limitations - -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. +### Specific behaviors When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. +- The new `FORM Windows theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. - If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). - [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). - [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). - [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). - The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). + +:::info Limitations + +This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: ## Formulários herdados diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md index cbf8415a3b5a49..9abf540b4ddac0 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/FormObjects/properties_Action.md @@ -191,15 +191,15 @@ Em outros casos (list box baseados em seleções nomeadas, colunas associadas co ## Ação padrão -Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*. +Atividades típicas a serem executadas por objetos ativos (\*e.g., permitindo que o usuário aceite, cancele ou exclua registros, mova entre registros ou de página para página em um formulário multi-páginas, etc.) foi predefinido por 4D como ações padrão. Eles são descritos em detalhes na seção [Ações padrão](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) do *manual de Desenho*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). Você pode atribuir uma ação padrão e um método projeto de um objeto. Neste caso, a ação padrão é geralmente executada depois que o método e o 4D usa esta ação para ativar/desativar o objeto conforme o contexto atual. Quando um objeto é desativado, o método projeto associado não pode ser executado. #### Gramática JSON -| Nome | Tipo de dados | Valores possíveis | -| ------ | ------------- | -------------------------------------------------------------------------------------------------------------------------- | -| action | string | O nome de uma [ação padrão válida](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html). | +| Nome | Tipo de dados | Valores possíveis | +| ------ | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| action | string | The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objectos suportados diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/Notes/updates.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/Notes/updates.md index 2ddb2e25800354..3bbe0bf92d5a73 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/Notes/updates.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/Notes/updates.md @@ -26,6 +26,7 @@ Leia [**O que há de novo no 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/ - Línguagem 4D: - New "trim" commands to remove leading and trailing spaces from a string: [`Trim`](../commands/trim.md), [`Trim start`](../commands/trim-start.md), and [`Trim end`](../commands/trim-end.md). - [`Num`](../commands/num.md) and [`String`](../commands/string.md) commands have been updated to support conversions in different bases (radix). +- [**Fixed bug list**](https://bugs.4d.fr/fixedbugslist?version=21): list of all bugs that have been fixed in 4D 21. #### Prévia do desenvolvedor @@ -43,7 +44,7 @@ Leia [**O que há de novo no 4D 21**](https://blog.4d.com/en-whats-new-in-4d-21/ - Web server: the support of deprecated `4DSYNC/` and `4DCGI/` URLs is removed. No specific processing is done on these URLs anymore. - Web user sessions are now returned by [`Process activity`](../commands/process-activity.md). - The [`HIGHLIGHT TEXT`](../commands/highlight-text) command is now supported in the context of subforms. -- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview-old.md)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    +- **Components no longer embedded**: starting with 4D 21, components developed by 4D (4D NetKit, 4D SVG..., see [this list](../Extensions/overview.md#components-developed-by-4d)) are no longer embedded in the 4D application. When upgrading a project to 4D 21 or higher, a dialog box is displayed:
    ![alt-text](../assets/en/getStart/convert.png)
    \- **Import**: import automatically 4D components as dependencies to the project
    \- **Ignore**: do not import components and let you [manage components manually](../Project/components.md)
    @@ -175,7 +176,7 @@ Leia [**O que há de novo no 4D 20 R6**](https://blog.4d.com/en-whats-new-in-4d- #### Destaques - Operadores de comparação nas [referências a objetos](../Concepts/dt_object.md#object-operators) e nas [referências a coleções](../Concepts/dt_collection.md#collection-operators). [`collection.query()`](../API/CollectionClass.md#query) now supports [object and collection references as query values](../API/CollectionClass.md#object-or-collection-reference-as-value). -- When a component has a [declared namespace](../Extensions/develop-components.md#declaring-the-component-namespace), its classes are now automatically shared between all loaded components in the host project via [`cs.`](../Concepts/classes.md#cs). +- Quando um componente tiver um [declared namespace](../Extensions/develop-components.md#declaring-the-component-namespace), suas classes agora são automaticamente compartilhadas entre todos os componentes carregados no projeto host por meio de [`cs.`](../Concepts/classes.md#cs). - Gerenciador de componentes: suporte de [componentes armazenados no GitHub](../Project/components.md#components-stored-on-github). - Novo [`entitySeletion. lean()`](../API/EntitySelectionClass.md#clean) função e [`$clean`](../REST/$clean.md) REST API para obter uma nova seleção de entidade baseada na seleção da entidade original, mas sem as entidades excluídas. - Nova função [`session.getPrivileges()`](../API/SessionClass.md#getprivileges) e [`$info/privileges`](../REST/$info.md) API REST para inspecionar os privilégios de sessão para uma depuração mais fácil. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/entities.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/entities.md index 647fe5f0082093..e03a8ca21a49cf 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/entities.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/entities.md @@ -463,7 +463,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection Esta função é chamada sempre que uma seleção de entidade ou uma entidade da classe de dados é solicitada. O filtro é executado uma vez, quando a entity selection é criada. -O filtro deve retornar uma seleção de entidade da dataclass. Puede ser una selección de entidades creada a partir de una consulta, almacenada en el [`Storage`], etc. +O filtro deve retornar uma seleção de entidade da dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note @@ -565,7 +565,7 @@ Esse mecanismo automático baseia-se no conceito de "bloqueio otimista", sendo p O diagrama seguinte ilustra o bloqueio otimista: -1. Dois processos carregam a mesma entidade.

    ![](../assets/en/ORDA/optimisticLock1.png) +1. Two processes load the same entity.

    ![](../assets/en/ORDA/optimisticLock1.png) 2. O primeiro processo modifica a entidade e valida a alteração. Se llama al método `entity.save( )`. O mecanismo 4D compara automaticamente o valor do carimbo interno da entidade modificada com o da entidade armazenada nos dados. Since they match, the entity is saved and its stamp value is incremented.

    ![](../assets/en/ORDA/optimisticLock2.png) diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md index dcd8c2c2b70e98..d95347972ed07a 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: Events +title: Entity Events ---
    História @@ -12,19 +12,19 @@ title: Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. :::tip Related blog post -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: :::info Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -52,7 +52,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). ### Summary table @@ -102,19 +102,19 @@ When an error occurs in an event, the other events are stopped at the first rais ### Error object properties -| Propriedade | Tipo | Descrição | Set by the developer | -| ------------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | -| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Sim | -| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Sim | -| extraDescription | Object | Free information to set up | Sim | -| seriousError | Parâmetros | Used only with validate events (see below). Will insert a specific `status` value in the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) function:
  • If true: `dk status serious validation error`
  • If false: `dk status validation failed`
  • | Yes (default is false) | -| componentSignature | Text | Always "DBEV" | Não | +| Propriedade | Tipo | Descrição | Set by the developer | +| ------------------ | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | +| errCode | Integer | Same as for [`Last errors`](../commands/last-errors.md) command | Sim | +| message | Text | Same as for [`Last errors`](../commands/last-errors.md) command | Sim | +| extraDescription | Object | Free information to set up | Sim | +| seriousError | Parâmetros | Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • `False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • | Yes (default is false) | +| componentSignature | Text | Always "DBEV" | Não | -- The errors are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. -- In case of an error triggered by a **validate** event, the `fatalError` property allows you to insert a specific `status` and its associated `statusText` in the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions: - - If **false**: `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". Such errors do not require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. - - If **true**: `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". Such errors require a [try catch](../Concepts/error-handling.md#trycatchend-try) and are not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. They are raised at the end of the event and reach the client requesting the save/drop action (REST client for example). -- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error (`dk status serious error`) whatever the `seriousError` property value. +- [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. +- In case of an error triggered by a **validate** event, the `seriousError` property allows you to choose the level of the error to generate: + - If **true**: a serious error is thrown and should be handled by the [error processing code](../Concepts/error-handling.md#predictable-vs-unpredictable-errors), such as a [try catch](../Concepts/error-handling.md#trycatchend-try). In the result object of the calling function, `status` gets `dk status serious validation error` and `statusText` gets "Serious Validation Error". The error is raised at the end of the event and reach the client requesting the save/drop action (REST client for example). + - If **false** (default): a [silent (predictable) error is generated](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). It does not trigger any exception and is not stacked in the errors returned by the [`Last errors`](../commands/last-errors.md) command. In the result object of the calling function, `status` gets `dk status validation failed` and `statusText` gets "Mild Validation Error". +- In case of an error triggered by a **saving/dropping** event, when an error object is returned, the error is always raised as a serious error whatever the `seriousError` property value. ## Event function description @@ -139,7 +139,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi - the user sets a value on a 4D form, - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. +- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) The function receives an [*event* object](#event-parameter) as parameter. @@ -348,26 +348,21 @@ It is not recommended to update the entity within this function (using `This`). #### Exemplo -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -408,32 +403,35 @@ To stop the action, the code of the function must return an [error object](#erro #### Exemplo -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` ### `Function event afterSave` @@ -454,29 +452,25 @@ The function receives an [*event* object](#event-parameter) as parameter. - To avoid infinite loops, calling a [`save()`](../API/EntityClass.md#save) on the current entity (through `This`) in this function is **not allowed**. It will raise an error. - Throwing an [error object](#error-object) is **not supported** by this function. -#### Exemplo 1 +#### Exemplo -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` ### `Function event validateDrop` @@ -506,44 +500,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### Exemplo 1 +#### Exemplo -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### Exemplo 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` ### `Function event dropping` @@ -579,54 +553,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### Exemplo 1 +#### Exemplo -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### Exemplo 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -653,50 +604,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### Exemplo 1 +#### Exemplo -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### Exemplo 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/Project/components.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/Project/components.md index b6c05fefa599fc..26d5677b930cd9 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/Project/components.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/Project/components.md @@ -5,7 +5,7 @@ title: Dependencies A [arquitetura dos projetos](../Project/architecture.md) 4D é modular. Você pode fornecer funcionalidades adicionais aos seus projetos 4D instalando [**componentes**](Concepts/components.md) e [**plug-ins**](Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md). -Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/search?q=4d-component&type=Repositories). +Você pode [desenvolver](../Extensions/develop-components.md) e [construir](../Desktop/building.md) seus próprios componentes 4D, ou baixar componentes públicos compartilhados pela comunidade 4D que [podem ser encontrados no GitHub](https://github.com/topics/4d-component). Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties. @@ -326,7 +326,7 @@ When you add or update a component (whether [local](#local-components) or [from The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. :::note @@ -349,7 +349,7 @@ Para exibir o painel Dependências: - Com 4D, selecione o item de menu **Design/Project Dependencies** (ambiente de desenvolvimento),
    ![dependency-menu](../assets/en/Project/dependency-menu.png) -- com o servidor 4D, selecione o item de menu **dependência do Window/Projeto**.
    +- com 4D Server, selecione o item de menu **Janela/Dependências do projeto**.
    ![dependency-menu-server](../assets/en/Project/dependency-menu-server.png) O painel de Dependências é exibido em seguida. Dependências são classificadas por nome em ordem alfabética: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$filter.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$filter.md index 095aab2c43c2a8..01f9c75981cdbe 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$filter.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$filter.md @@ -90,11 +90,11 @@ Use the `params` property to provide the filter with the vector comparison param The *vectorComparison* parameter is a collection of the following elements: -| Propriedade | Tipo | Descrição | | -| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [].vector | Uma coleção de objetos) | Obrigatório. A collection that represents the vector to compare | | -| [].metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | | -| | [].threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. | +| Propriedade | Tipo | Descrição | +| -------------------------------------------------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [].vector | Collection of numbers | Obrigatório. A collection that represents the vector to compare | +| [].metric | Text | Opcional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors. | +| [].threshold | Real | Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results. | Only a subset of **comparator** symbols are supported with vector comparisons. Note that they compare results to the threshold value: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$method.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$method.md index d21437b56a1f5a..8338676845ead1 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$method.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/REST/$method.md @@ -195,7 +195,8 @@ Se surgir um problema ao adicionar ou modificar uma entidade, ser-lhe-á enviado - **Las fechas** deben expresarse en formato JS: YYYY-MM-DDTHH:MM:SSZ (por ejemplo, "2010-10-05T23:00:00Z"). Se tiver selecionado a propriedade Apenas data para o seu atributo Data, o fuso horário e a hora (hora, minutos e segundos) serão removidos. Neste caso, também pode enviar a data no formato que lhe é devolvido dd!mm!yyyy (por exemplo, 05!10!2013). - **Booleanos** son true o false. -- Los archivos subidos mediante `$upload` pueden aplicarse a un atributo de tipo Imagen o BLOB pasando el objeto devuelto en el siguiente formato `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50"}`::: +- Arquivos carregados usando `$upload` podem ser aplicados a um atributo do tipo Imagem ou BLOB passando o objeto retornado no seguinte formato `{ "ID": "D507BC03E613487E9B4C2F6A0512FE50"}` + ::: ### Exemplo diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md index e16223fade7d46..ad799b3abf413b 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-copy-to-object.md @@ -31,10 +31,10 @@ Em *rangeObj*, passe o intervalo de células com os valores, a formatação e as Você pode passar um parâmetro *options* opcional com as seguintes propriedades: -| Propriedade | Tipo | Descrição | -| ----------- | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| copy | Parâmetros | *Verdadeiro* (padrão) para manter os valores copiados, a formatação e as fórmulas após a execução do comando. *Falso* para removê-los. | -| copyOptions | Integer | Especifica o que é copiado ou movido. Valores possíveis:

    ValorDescrição
    `vk clipboard options all` (padrão)Copia todos os objetos de dados, incluindo valores, formatação e fórmulas.
    `vk clipboard options formatting`Copia somente a formatação.
    `vk clipboard options formulas`Copia somente as fórmulas.
    `vk clipboard options formulas and formatting`Copia as fórmulas e a formatação.
    `vk clipboard options values`Copia apenas os valores.
    `vk clipboard options value and formatting`Copia os valores e a formatação.

    | +| Propriedade | Tipo | Descrição | +| ----------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| copy | Parâmetros | *Verdadeiro* (padrão) para manter os valores copiados, a formatação e as fórmulas após a execução do comando. *Falso* para removê-los. | +| copyOptions | Integer | Especifica o que é copiado ou movido. Possible values:

    ValueDescription
    `vk clipboard options all` (default)Copies all data objects, including values, formatting, and formulas.
    `vk clipboard options formatting`Copies only the formatting.
    `vk clipboard options formulas`Copies only the formulas.
    `vk clipboard options formulas and formatting`Copies the formulas and formatting.
    `vk clipboard options values`Copies only the values.
    `vk clipboard options value and formatting`Copies the values and formatting.

    | As opções de colagem definidas nas [opções de workbook](#vp-set-workbook-options) são tomadas em conta. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md index 1d1a768c2882b6..141ba019a958c3 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-export-to-blob.md @@ -16,7 +16,7 @@ title: VP EXPORT TO BLOB ## Descrição -The `VP EXPORT TO BLOB` command exports the *vpAreaName* 4D View Pro document in a 4D.Blob according to the *paramObj* options. The exported blob is available through the export callback. A exportação e importação de áreas do 4D View Pro como blobs é rápida e eficiente em termos de memória. +O comando `VP EXPORT TO BLOB` exporta o documento *vpAreaName* 4D View Pro em um 4D.Blob de acordo com as opções *paramObj*. O blob exportado está disponível por meio da chamada de retorno de exportação. A exportação e importação de áreas do 4D View Pro como blobs é rápida e eficiente em termos de memória. Em *paramObj*, você pode passar várias propriedades: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md index 65c8d2a7a3aa81..11f9f624e61105 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/ViewPro/commands/vp-set-workbook-options.md @@ -66,7 +66,7 @@ A tabela seguinte lista as opções de libro disponíveis: | newTabVisible | boolean | Apresentar um separador especial para permitir que os usuários insiram novas folhas. | | numbersFitMode | number | Muda o modo de exibição quando a largura de dados/data é maior que a largura da coluna. Available values:
    ConstantValueDescription
    vk numbers fit mode mask0 Replace data content with "###" and shows tip
    vk numbers fit mode overflow 1 Display data content as a string. If next cell is empty, overflow the content.
    | | pasteSkipInvisibleRange | boolean | Paste or skip pasting data in invisible ranges:
    • False (default): paste data
    • True: Skip pasting in invisible ranges
    See [SpreadJS docs](https://developer.mescius.com/spreadjs/docs/features/rows-columns/paste-skip-data-invisible-range) for more information on invisible ranges. | -| referenceStyle | number | Estilo para referências de células e intervalos em fórmulas de células. Valores disponíveis:
    ConstanteValorDescrição
    vk reference style A1 0Usar o estilo A1.
    vk reference style R1C1 1Usar o estilo R1C1
    | +| referenceStyle | number | Estilo para referências de células e intervalos em fórmulas de células. Available values:
    ConstantValueDescription
    vk reference style A1 0 Use A1 style.
    vk reference style R1C1 1 Use R1C1 style
    | | resizeZeroIndicator | number | Política de desenho quando a linha ou coluna é redimensionada para zero. Available values:
    ConstantValueDescription
    vk resize zero indicator default 0 Uses the current drawing policy when the row or column is resized to zero.
    vk resize zero indicator enhanced 1 Draws two short lines when the row or column is resized to zero.
    | | rowResizeMode | number | A forma como as linhas são redimensionadas. Os valores disponíveis são os mesmos que columnResizeMode | | scrollbarAppearance | number | Aspeto da barra de deslocação. Available values:
    ConstantValueDescription
    vk scrollbar appearance mobile1 Mobile scrollbar appearance.
    vk scrollbar appearance skin (default)0 Excel-like classic scrollbar appearance.
    | diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md index a8c220ccb23587..2d09d0687cbba6 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/http-rules.md @@ -64,12 +64,17 @@ The following action keywords are supported: ### Non-modifiable headers -The following headers could not be modified by the `removeHeaders`, `setHeaders`, or `addHeaders` actions: +Some headers could not be added, modified or removed: -- "Date", -- "Content-Length" +| Header | Add | Set | Remove | +| ---------------- | --- | ---------- | ------ | +| Date | Não | Não | Não | +| Content-Length | Não | Não | Não | +| Content-Encoding | Não | Não | Não | +| Vary | Sim | Não | Não | +| Set-Cookie | Sim | Add cookie | Não | -Modifying these headers do not generate errors, however modifications will be ignored. +Unauthorized changes on these headers do not generate errors, however modifications will be ignored. ### Current rules diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md index 146662cec4481d..d1108f678dd9b7 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/qodly-studio.md @@ -138,7 +138,8 @@ There is no direct compatibility between apps implemented with 4D and apps imple | Depurador | 4D IDE debugger
    *4D Server only*: Qodly Studio debugger (see [this paragraph](#using-qodly-debugger-on-4d-server)) | Depurador Qodly Studio | | Funções e privilégios REST/Web | roles.json direct edit/Qodly Studio roles and privileges editor | Qodly Studio role and privileges editor | -Note that in 4D single-user, if you open some 4D code with the Qodly Studio code editor, syntax coloring is not available and a "Lsp not loaded" warning is displayed. (1) The **Model** item is disabled in Qodly Studio.
    +(1) O item **Modelo** está desativado no Qodly Studio.
    +(2) No servidor 4D, a abertura de código 4D com o editor de código Qodly Studio é suportada **para fins de teste e depuração** (veja [esse parágrafo](#development-and-deployment)). (1) The **Model** item is disabled in Qodly Studio.
    (2) In 4D Server, opening 4D code with the Qodly Studio code editor is supported **for testing and debugging purposes** (see [this paragraph](#development-and-deployment)). ### Línguagem @@ -235,7 +236,7 @@ O projeto deve estar sendo executado no modo interpretado para que o item de men ::: -2. Na barra de ferramentas do Qodly Studio, clique no botão **Debug**.
    +2. Na barra de ferramentas Qodly Studio, clique no botão **Debug**.
    ![qodly-debug](../assets/en/WebServer/qodly-debug.png) If the debug session starts successfully, a green bullet appears on the button label ![qodly-debug](../assets/en/WebServer/debug2.png) and you can use the Qodly Studio debugger. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md index 2471ddb6831c51..1a02e189b920b6 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/sessions.md @@ -201,9 +201,9 @@ Else End if ``` -:::note +:::tips Related blog posts -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md index e6222856a3d812..ea0060dd3c63c8 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WebServer/webServerConfig.md @@ -625,9 +625,9 @@ Em alguns casos, outras funções internas otimizadas podem ser invocadas. As li Duas opções permitem que você defina como funcionam as conexões persistentes: -- **Number of requests by connection**: Allows you to set the maximum number of requests and responses able to travel over a connection keep alive. Limiting the number of requests per connection allows you to prevent server flooding due to a large number of incoming requests (a technique used by hackers).

    +- **Number of requests by connection**: Allows you to set the maximum number of requests and responses able to travel over a connection keep alive. Limitar o número de solicitações por conexão permite que você evite a inundação do servidor devido a um grande número de solicitações recebidas (uma técnica usada por hackers).

    The default value (100) can be increased or decreased depending on the resources of the machine hosting the 4D Web Server.

    -- **Timeout**: This value defines the maximum wait period (in seconds) during which the web server maintains an open TCP connection without receiving any requests from the web browser. Once this period is over, the server closes the connection.

    - If the web browser sends a request after the connection is closed, a new TCP connection is automatically created. Esta operação não é visível para o usuário.

    +- **Timeout**: This value defines the maximum wait period (in seconds) during which the web server maintains an open TCP connection without receiving any requests from the web browser. Quando este período acabar, o servidor fecha a conexão.

    + Se o navegador da web enviar um pedido depois que a conexão for fechada, uma nova conexão TCP será criada automaticamente. Esta operação não é visível para o usuário.

    diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md index 124392c8b62474..988c667a79fcaf 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-add-picture.md @@ -20,7 +20,7 @@ displayed_sidebar: docs ## Descrição -The **WP Add picture** command anchors the picture passed as parameter at a fixed location within the specified *wpDoc* and returns its reference. The returned reference can then be passed to the [WP SET ATTRIBUTES](wp-set-attributes.md) command to move the picture to any location in *wpDoc* (page, section, header, footer, etc.) with a defined layer, size, etc. +O comando **WP Adicionar imagem** ancora a imagem passada como parâmetro em um local fixo dentro do *wpDoc* especificado e retorna sua referência. A referência retornada pode ser passada para o comando [WP SET ATTRIBUTES](wp-set-attributes.md) para mover a imagem para qualquer local em *wpDoc* (página, seção, cabeçalho, rodapé, etc.) with a defined layer, size, etc. Em *wpDoc*, passe o nome de um objeto documento 4D Write Pro. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md index 20e7d6838d5ae9..f38e886e2ec987 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-document.md @@ -52,25 +52,25 @@ Você pode omitir o parâmetro *format*, neste caso você precisa especificar a Pass an [object](# "Data structured as a native 4D object") in *option* containing the values to define the properties of the exported document. As seguintes propriedades estão disponíveis: -| Parâmetros | Valor | Comentário | -| ------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponível somente quando o formato `wk mime html` é usado. | -| wk embedded pictures | embeddedPictures | Somente para exportação SVG. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted | -| wk factur x | facturX | Somente para exportação em PDF. Valor: objeto que configura uma exportação de PDF "Factur-X (ZUGFeRD)" (consulte [wk factur x object](#wk-factur-x-object)). | -| wk files | files | Somente para exportação em PDF. Valor: coleção de objetos, cada um deles descrevendo um arquivo a ser incorporado no documento final (consulte [wk files collection](#wk-files-collection)). Este recurso só é suportado em documentos PDF/A-3: quando o atributo `wk files` é usado, a versão "PDF/A-3" é definida automaticamente (o atributo `wk pdfa version` é ignorado). In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. | -| wk google fonts tag | googleFontsTag | Somente para exportação SVG. Sets the import rule for google fonts in the exported SVG. Possible values:
  • false (default): No google fonts import rule is added.
  • true: Adds the @import rule to the exported file. Useful if you want to use fonts that are not available by default on Windows or macOS.
  • **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. | -| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. | -| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 | -| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values:
  • `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 300 (apenas Windows). Se uma imagem contiver mais de um formato, será usado o melhor formato para impressão (*por exemplo*, .tiff em vez de .jpg)
  • `wk screen` (valor padrão para `wk web page complete` e `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 192 (apenas Windows). If a picture contains more than one format, the format for screen rendering is used.
  • **Note:** Documents exported in `wk docx` format are always optimized for wk print (wk optimized for option is ignored). | -| wk page index | pageIndex | Somente para exportação SVG. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Nota:** o índice de páginas é independente da numeração de páginas. | -| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". On Windows, the output PDF file will always be equal to the desired conformance. | -| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valores possíveis:
  • true - Valor padrão. All formulas are recomputed
  • false - Do not recompute formulas
  • | -| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Valores possíveis: True/False | -| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: 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 footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Valores possíveis: True/False | -| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Valores possíveis: True/False | -| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Valores possíveis: True/False | -| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` and `wk web page complete` export formats. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". | +| Parâmetros | Valor | Comentário | +| ------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponível somente quando o formato `wk mime html` é usado. | +| wk embedded pictures | embeddedPictures | Somente para exportação SVG. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted | +| wk factur x | facturX | Somente para exportação em PDF. Valor: objeto que configura uma exportação de PDF "Factur-X (ZUGFeRD)" (consulte [wk factur x object](#wk-factur-x-object)). | +| wk files | files | Somente para exportação em PDF. Valor: coleção de objetos, cada um deles descrevendo um arquivo a ser incorporado no documento final (consulte [wk files collection](#wk-files-collection)). Este recurso só é suportado em documentos PDF/A-3: quando o atributo `wk files` é usado, a versão "PDF/A-3" é definida automaticamente (o atributo `wk pdfa version` é ignorado). In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. | +| wk google fonts tag | googleFontsTag | Somente para exportação SVG. Sets the import rule for google fonts in the exported SVG. Possible values:
  • false (default): No google fonts import rule is added.
  • true: Adds the @import rule to the exported file. Útil se você quiser usar fontes que não estão disponíveis por padrão no Windows ou macOS.
  • **Nota:** Essa propriedade é definida como falso por padrão porque quando habilitada As fontes do Google substituem fontes nativas, e as fontes nativas são geralmente melhor renderizadas no navegador. | +| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. | +| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 | +| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values:
  • `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 300 (apenas Windows). Se uma imagem contiver mais de um formato, será usado o melhor formato para impressão (*por exemplo*, .tiff em vez de .jpg)
  • `wk screen` (valor padrão para `wk web page complete` e `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 192 (apenas Windows). Se uma imagem contiver mais de um formato, será utilizado o formato para a renderização de tela. U
  • **Nota:** Documentos exportados em formato `wk docx` são sempre otimizados para impressão wk (wk otimizado para opção é ignorado). | +| wk page index | pageIndex | Somente para exportação SVG. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Nota:** o índice de páginas é independente da numeração de páginas. | +| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". On Windows, the output PDF file will always be equal to the desired conformance. | +| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valores possíveis:
  • true - Valor padrão. All formulas are recomputed
  • false - Do not recompute formulas
  • | +| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Valores possíveis: True/False | +| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: 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 footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Valores possíveis: True/False | +| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Valores possíveis: True/False | +| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Valores possíveis: True/False | +| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` and `wk web page complete` export formats. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". | A tabela a seguir indica a *option* disponível por *format* de exportação: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md index 90eb441c3f302c..db8472c40d9d5e 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-export-variable.md @@ -52,25 +52,25 @@ In the *format* parameter, pass a constant from the *4D Write Pro Constants* the Pass an [object](# "Data structured as a native 4D object") in *option* containing the values to define the properties of the exported document. As seguintes propriedades estão disponíveis: -| Parâmetros | Valor | Comentário | -| ------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponível somente quando o formato `wk mime html` é usado. | -| wk embedded pictures | embeddedPictures | Somente para exportação SVG. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted | -| wk factur x | facturX | Somente para exportação em PDF. Valor: objeto que configura uma exportação de PDF "Factur-X (ZUGFeRD)" (consulte [wk factur x object](./wp-export-document.md#wk-factur-x-object)). | -| wk files | files | Somente para exportação em PDF. Valor: coleção de objetos, cada um deles descrevendo um arquivo a ser incorporado no documento final (consulte [wk files collection](./wp-export-document.md#wk-files-collection)). Este recurso só é suportado em documentos PDF/A-3: quando o atributo `wk files` é usado, a versão "PDF/A-3" é definida automaticamente (o atributo `wk pdfa version` é ignorado). In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. | -| wk google fonts tag | googleFontsTag | Somente para exportação SVG. Sets the import rule for google fonts in the exported SVG. Possible values:
  • false (default): No google fonts import rule is added.
  • true: Adds the @import rule to the exported file. Useful if you want to use fonts that are not available by default on Windows or macOS.
  • **Note:** This property is set to false by default because when enabled, Google fonts override native fonts, and native fonts are generally better rendered in the browser. | -| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. | -| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 | -| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values:
  • `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 300 (apenas Windows). Se uma imagem contiver mais de um formato, será usado o melhor formato para impressão (*por exemplo*, .tiff em vez de .jpg)
  • `wk screen` (valor padrão para `wk web page complete` e `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 192 (apenas Windows). If a picture contains more than one format, the format for screen rendering is used.
  • **Note:** Documents exported in `wk docx` format are always optimized for wk print (wk optimized for option is ignored). | -| wk page index | pageIndex | Somente para exportação SVG. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Nota:** o índice de páginas é independente da numeração de páginas. | -| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". On Windows, the output PDF file will always be equal to the desired conformance. | -| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valores possíveis:
  • true - Valor padrão. All formulas are recomputed
  • false - Do not recompute formulas
  • | -| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Valores possíveis: True/False | -| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: 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 footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Valores possíveis: True/False | -| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Valores possíveis: True/False | -| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Valores possíveis: True/False | -| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` export format. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". | +| Parâmetros | Valor | Comentário | +| ------------------------------------------- | ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| wk CID host domain name | cidHostDomain | CID host domain name: host domain that will be added to generated CID URLs including an '@' as separator. Disponível somente quando o formato `wk mime html` é usado. | +| wk embedded pictures | embeddedPictures | Somente para exportação SVG. Sets whether pictures are embedded in the exported .svg file when you call [WP EXPORT DOCUMENT](wp-export-document.md). Available values:
  • true (default): Pictures are embedded in the exported .svg file
  • false: Pictures are exported in a folder called "filename\_images" at the level of the exported .svg file, "filename" being the name passed to the command for the file, without the extension. The pictures are not embedded, but referenced in the .svg file.
  • Note: If the folder already exists, it is emptied before the file is exported. If there is no image on the exported page, the folder is deleted | +| wk factur x | facturX | Somente para exportação em PDF. Valor: objeto que configura uma exportação de PDF "Factur-X (ZUGFeRD)" (consulte [wk factur x object](./wp-export-document.md#wk-factur-x-object)). | +| wk files | files | Somente para exportação em PDF. Valor: coleção de objetos, cada um deles descrevendo um arquivo a ser incorporado no documento final (consulte [wk files collection](./wp-export-document.md#wk-files-collection)). Este recurso só é suportado em documentos PDF/A-3: quando o atributo `wk files` é usado, a versão "PDF/A-3" é definida automaticamente (o atributo `wk pdfa version` é ignorado). In case of a Factur-X PDF export (see below), the first object of the collection must contain the Factur-X xml file. | +| wk google fonts tag | googleFontsTag | Somente para exportação SVG. Sets the import rule for google fonts in the exported SVG. Possible values:
  • false (default): No google fonts import rule is added.
  • true: Adds the @import rule to the exported file. Útil se você quiser usar fontes que não estão disponíveis por padrão no Windows ou macOS.
  • **Nota:** Essa propriedade é definida como falso por padrão porque quando habilitada As fontes do Google substituem fontes nativas, e as fontes nativas são geralmente melhor renderizadas no navegador. | +| wk HTML pretty print | htmlPrettyPrint | HTML code is formatted to be easier to read. | +| wk max picture DPI | maxPictureDPI | Used for resampling (reducing) images to preferred resolution. For SVG images in Windows, used for rasterization. Default values: 300 (for wk optimized for \= wk print) 192 (for wk optimized for \= wk screen) Maximum possible value: 1440 | +| wk optimized for | optimizedFor | Defines how an exported document is optimized based on its intended medium. Possible values:
  • `wk print` (default value for `wk pdf` and `wk svg`) Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 300 (default value) and may be converted to PNG if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 300 (apenas Windows). Se uma imagem contiver mais de um formato, será usado o melhor formato para impressão (*por exemplo*, .tiff em vez de .jpg)
  • `wk screen` (valor padrão para `wk web page complete` e `wk mime html`). Bitmap pictures may be downscaled using the DPI defined by `wk max picture DPI` or 192 (default value) and may be converted to JPEG (opaque images) or PNG (transparent images) if codec is not supported for the export type. Imagens vetoriais são convertidas para PNG usando o DPI definido por `wk max image DPI` ou 192 (apenas Windows). Se uma imagem contiver mais de um formato, será utilizado o formato para a renderização de tela. U
  • **Nota:** Documentos exportados em formato `wk docx` são sempre otimizados para impressão wk (wk otimizado para opção é ignorado). | +| wk page index | pageIndex | Somente para exportação SVG. Index of the page to export to svg format (default is 1). Page index starts at 1 for the first page of the document. **Nota:** o índice de páginas é independente da numeração de páginas. | +| wk pdfa version | pdfaVersion | Exports PDF with conformance to a PDF/A version. For more information on PDF/A properties and versions, please refer to the [PDF/A page on Wikipedia](https://en.wikipedia.org/wiki/PDF/A). Possible values:
  • `wk pdfa2`: Exports to version "PDF/A-2"
  • `wk pdfa3`: Exports to version "PDF/A-3"
  • **Note:** On macOS, `wk pdfa2` may export to PDF/A-2 or PDF/A-3 or higher, depending on platform implementation. Also, `wk pdfa3` means "exports to *at least* PDF/A-3". On Windows, the output PDF file will always be equal to the desired conformance. | +| wk recompute formulas | recomputeFormulas | Defines if formulas must be recomputed when exported. Valores possíveis:
  • true - Valor padrão. All formulas are recomputed
  • false - Do not recompute formulas
  • | +| wk visible background and anchored elements | visibleBackground | Displays or exports background images/color, anchored images and text boxes (for display, visible effect in Page or Embedded view mode only). Valores possíveis: True/False | +| wk visible empty images | visibleEmptyImages | Displays or exports a default black rectangle for images that cannot be loaded or computed (empty images or images in an unsupported format). Possible values: True/False. Default value: 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 footers | visibleFooters | Displays or exports the footers (for display, visible effect in Page view mode only). Valores possíveis: True/False | +| wk visible headers | visibleHeaders | Displays or exports the headers (for display, visible effect in Page view mode only). Valores possíveis: True/False | +| wk visible references | visibleReferences | Displays or exports all 4D expressions inserted in the document as references. Valores possíveis: True/False | +| wk whitespace | whitespace | Sets the "white-space" css value for `wk mime html` export format. The [white-space css style](https://developer.mozilla.org/en-US/docs/Web/CSS/white-space) is applied to paragraphs. Possible values: "normal", "nowrap", "pre", "pre-wrap" (default), "pre-line", "break-spaces". | A tabela a seguir indica a *option* disponível por *format* de exportação: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md index 76cc6d196ac60f..e1394446138fd5 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-get-attributes.md @@ -20,7 +20,7 @@ displayed_sidebar: docs ## Descrição -The **WP Get attributes** command returns the value of any attribute in a 4D Write Pro range, header, body, footer, table, or document. This command gives you access to any kind of 4D Write Pro internal attributes: character, paragraph, document, table, or image. +O comando **WP Get attributes** retorna o valor de qualquer atributo em um intervalo 4D de escrita Pro, cabeçalho, corpo, rodapé, tabela ou documento. Este comando lhe dá acesso a qualquer tipo de atributo interno da 4D Write Pro: caractere, parágrafo, tabela ou imagem. Em *targetObj*, você pode passar: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-break.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-break.md index ae118bb3c8a11f..8279b68a3320eb 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-break.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-break.md @@ -4,7 +4,7 @@ title: WP Insert break displayed_sidebar: docs --- -**WP Insert break** ( *targetObj* ; *breakType* ; *mode* {; *rangeUpdate*} ) : Object +**WP Insert break** ( *targetObj* ; *breakType* ; *mode* {; *rangeUpdate*} ): Object diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md index 9457bea1279a66..0ad5602bcedabb 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-formula.md @@ -10,7 +10,7 @@ displayed_sidebar: docs | Parâmetro | Tipo | | Descrição | | ----------- | ------ | --------------------------- | ------------------------------------------------------------------ | -| targetObj | Object | → | Intervalo ou elemento ou documento 4D Write Pro | +| targetObj | Object | → | Range or element or 4D Write Pro document | | formula | Object | → | Objeto de fórmula OU Objeto com propriedades de fórmula e nome | | mode | Number | → | Modo de inserção | | rangeUpdate | Number | → | Inclui ou exclui o conteúdo inserido dentro do intervalo | @@ -42,18 +42,18 @@ Quando você usa um objeto com uma fórmula *name*, esse nome é exibido no docu No parâmetro *mode*, passe uma das seguintes constantes para indicar o modo de inserção a ser usado: -| Parâmetros | Tipo | Valor | Comentário | -| ---------- | ------- | ----- | ---------------------------------- | -| wk append | Integer | 2 | Inserir conteúdo no final do alvo | -| wk prepend | Integer | 1 | Inserir conteúdo no início do alvo | -| wk replace | Integer | 0 | Substituir o conteúdo de destino | +| Parâmetros | Tipo | Valor | Comentário | +| ---------- | ------- | ----- | -------------------------------------- | +| wk append | Integer | 2 | Insert contents at end of target | +| wk prepend | Integer | 1 | Insert contents at beginning of target | +| wk replace | Integer | 0 | Replace target contents | - Se *targetObj* for um intervalo, você poderá usar o parâmetro opcional *rangeUpdate* para passar uma das seguintes constantes e especificar se a *fórmula* inserida está ou não incluída no intervalo resultante: -| Parâmetros | Tipo | Valor | Comentário | -| --------------------- | ------- | ----- | ------------------------------------------------------------------------------ | -| wk exclude from range | Integer | 1 | Conteúdos inseridos não incluídos no intervalo atualizado | -| wk include in range | Integer | 0 | Conteúdo inserido incluído no intervalo atualizado (padrão) | +| Parâmetros | Tipo | Valor | Comentário | +| --------------------- | ------- | ----- | ------------------------------------------------------------------------ | +| wk exclude from range | Integer | 1 | Inserted contents not included in updated range | +| wk include in range | Integer | 0 | Inserted contents included in updated range (default) | Se você não passar um parâmetro *rangeUpdate*, por padrão a *fórmula* inserida será incluída no intervalo resultante. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md index 45485c2be0396f..bfd49a82779419 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-insert-picture.md @@ -10,20 +10,20 @@ displayed_sidebar: docs | Parâmetro | Tipo | | Descrição | | -------------- | ------------------------ | --------------------------- | ------------------------------------------------------------------------- | -| targetObj | Object | → | Intervalo ou elemento ou documento 4D Write Pro | +| targetObj | Object | → | Range or element or 4D Write Pro document | | picture | Imagem | → | Campo de imagem ou variável, ou caminho para o arquivo de imagem no disco | | pictureFileObj | 4D. File | → | Um objeto de arquivo representando um arquivo de imagem. | | mode | Integer | → | Modo de inserção | | rangeUpdate | Integer | → | Modo de atualização de intervalo | -| Resultado | Object | ← | Objeto referenciando a imagem | +| Resultado | Object | ← | Object referencing the picture | ## Descrição -O comando **WP Insert picture** insere uma *imagem* ou um *pictureFileObj* no *targetObj* especificado de acordo com os parâmetros *modo* de inserção passada e *rangeUpdate*, e retorna uma referência ao elemento imagem. A imagem será inserida como um caractere no *targetObj*. +O comando **WP Insert picture** insere uma *picture* ou um *pictureFileObj* no *targetObj* de acordo com os parâmetros *mode* e *rangeUpdate* , e retorna uma referência ao elemento imagem. A imagem será inserida como um caractere no *targetObj*. -Em *targetObj*, pode-se passar: +Em *targetObj*, você pode passar: - Um intervalo - Um elemento (tabela / linha / parágrafo / corpo / cabeçalho / rodapé / imagem em linha / seção / subseção) @@ -34,18 +34,18 @@ Para o segundo parâmetro, você também pode passar: - Em *picture*: - Um campo de imagem ou variável - Uma string que contém um caminho para um arquivo de imagem armazenado no disco, na sintaxe do sistema. - Se você usar uma string, você poderá passar um nome completo ou um nome de caminho relativo ao arquivo de estrutura do banco de dados. Você também pode passar um nome de arquivo, neste caso o arquivo deve estar localizado ao lado do arquivo de estrutura de banco de dados. Se você passar um nome de arquivo, você deve indicar a extensão do arquivo. + Se você usar uma string, você poderá passar um nome completo ou um nome de caminho relativo ao arquivo de estrutura do banco de dados. You can also pass a file name, in which case the file must be located next to the database structure file. Se você passar um nome de arquivo, você deve indicar a extensão do arquivo. - Em *pictureFileObj*: um objeto `File` que representa um arquivo imagem. -Qualquer formato imagem [suportado por 4D](../../FormEditor/pictures.md#native-formats-supported) pode ser usado. Você pode obter a lista de formatos de imagens disponíveis usando o comando [PICTURE CODEC LIST](../../commands-legacy/picture-codec-list.md). Se a imagem encapsular vários formatos (codecs), 4D Write Pro apenas mantém um formato para exibição e um formato para impressão (se diferente) no documento; os "melhores" formatos são selecionados automaticamente. +Qualquer formato imagem [suportado por 4D](../../FormEditor/pictures.md#native-formats-supported) pode ser usado. Você pode obter a lista de formatos de imagens disponíveis usando o comando [PICTURE CODEC LIST](../../commands-legacy/picture-codec-list.md). If the picture encapsulates several formats (codecs), 4D Write Pro only keeps one format for display and one format for printing (if different) in the document; the "best" formats are automatically selected. No parâmetro *modo*, passe uma das seguintes constantes para indicar o modo de inserção a ser usado na imagem no documento: -| Parâmetros | Tipo | Valor | Comentário | -| ---------- | ------- | ----- | ---------------------------------- | -| wk append | Integer | 2 | Inserir conteúdo no final do alvo | -| wk prepend | Integer | 1 | Inserir conteúdo no início do alvo | -| wk replace | Integer | 0 | Replace target contents | +| Parâmetros | Tipo | Valor | Comentário | +| ---------- | ------- | ----- | -------------------------------------- | +| wk append | Integer | 2 | Insert contents at end of target | +| wk prepend | Integer | 1 | Insert contents at beginning of target | +| wk replace | Integer | 0 | Replace target contents | Se *targetObj* for um intervalo, você poderá usar opcionalmente o parâmetro *rangeUpdate* para passar uma das seguintes constantes para especificar se a imagem inserida está ou não incluída no intervalo resultante: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md index 708890267fbbd2..641433ba6ee148 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-reset-attributes.md @@ -19,7 +19,7 @@ displayed_sidebar: docs ## Descrição -The **WP RESET ATTRIBUTES** command allows you to reset the value of one or more attributes in the range, element, or document passed as parameter. This command can remove any kind of 4D Write Pro internal attribute: character, paragraph, document, table, or image. You can pass the attribute name to be reset in *attribName* or you can pass a collection of attributes in *attribColl* to reset multiple attributes at once. +O comando **WP RESET ATTRIBUTES** permite que você reinicie o valor de um ou mais atributos no intervalo, elemento ou documento passado como parâmetro. Este comando pode remover qualquer tipo de atributo interno 4D Write Pro: caractere, parágrafo, tabela ou imagem. You can pass the attribute name to be reset in *attribName* or you can pass a collection of attributes in *attribColl* to reset multiple attributes at once. > In the case of a section or a subsection, the *sectionOrSubsection* object can be passed alone and all the attributes are reset at once. diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md index e354ed2b8d60a8..ce3fb659cefd55 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/commands/wp-set-attributes.md @@ -19,7 +19,7 @@ displayed_sidebar: docs ## Descrição -The **WP SET ATTRIBUTES** command allows you to set the value of any attribute in a range, element, document. This command gives you access to any kind of 4D Write Pro internal attribute: character, paragraph, document, table, or image. +O comando **WP SET ATTRIBUTES** permite que você reinicie o valor de um ou mais atributos no intervalo, elemento ou documento passado como parâmetro. Este comando lhe dá acesso a qualquer tipo de atributo interno da 4D Write Pro: caractere, parágrafo, tabela ou imagem. Em *targetObj*, você pode passar: diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md index 47523aef3f7472..1fb5a0245d7f2e 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/WritePro/managing-formulas.md @@ -54,22 +54,22 @@ You want to replace the selection in a 4D Write Pro area with the contents of a Você pode inserir expressões especiais relacionadas aos atributos de documento em qualquer área de documento (corpo, cabeçalho, rodapé) usando o comando [WP Insert formula](commands/wp-insert-formula.md). Within a formula, a formula context object is automatically exposed. Você pode usar as propriedades desse objeto por meio de [**This**](../commands/this.md): -| Propriedades | Tipo | Descrição | -| ------------------------------------------------------------------------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [This](../commands/this.md).title | Text | Título definido no atributo wk title | -| [This](../commands/this.md).author | Text | Autor definido no atributo wk author | -| [This](../commands/this.md).subject | Text | Assunto definido no atributo wk subject | -| [This](../commands/this.md).company | Text | Empresa definida no atributo wk company | -| [This](../commands/this.md).notes | Text | Notas definidas no atributo wk notes | -| [This](../commands/this.md).dateCreation | Date | Data de criação definida no atributo wk date creation | -| [This](../commands/this.md).dateModified | Date | Data de modificação definida no 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 | Page count: total count of pages.
    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).document | Object | Documento 4D Write Pro | -| [This](../commands/this.md).data | Object | Contexto dos dados do documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) | -| [This](../commands/this.md).sectionIndex | Number | The Index of the section in the 4D Write Pro document starting from 1 | -| [This](../commands/this.md).pageIndex | Number | The actual page number in the 4D Write Pro document starting from 1 (regardless of the section page numbers) | -| [This](../commands/this.md).sectionName | String | The name that the user gives to the section | +| Propriedades | Tipo | Descrição | +| ------------------------------------------------------------------------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [This](../commands/this.md).title | Text | Título definido no atributo wk title | +| [This](../commands/this.md).author | Text | Autor definido no atributo wk author | +| [This](../commands/this.md).subject | Text | Assunto definido no atributo wk subject | +| [This](../commands/this.md).company | Text | Empresa definida no atributo wk company | +| [This](../commands/this.md).notes | Text | Notas definidas no atributo wk notes | +| [This](../commands/this.md).dateCreation | Date | Data de criação definida no atributo wk date creation | +| [This](../commands/this.md).dateModified | Date | Data de modificação definida no atributo wk date modified | +| [This](../commands/this.md).pageNumber (\*) | Number | Número de página conforme definido
  • :- A partir do início do documento (padrão) ou
  • - A partir do início da página da seção, se for definido pelo início da página da seção.
  • Esta fórmula é sempre dinâmica; não é afetada pelo comando [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md). | +| [This](../commands/this.md).pageCount (\*) | Number | Contagem de páginas: contagem total de páginas.
    Esta fórmula é sempre dinâmica; não é afetada pelo comando [**WP FREEZE FORMULAS**](commands-legacy/wp-freeze-formulas.md). | +| [This](../commands/this.md).document | Object | Documento 4D Write Pro | +| [This](../commands/this.md).data | Object | Contexto dos dados do documento 4D Write Pro definido por [**WP SET DATA CONTEXT**](commands-legacy/wp-set-data-context.md) | +| [This](../commands/this.md).sectionIndex | Number | The Index of the section in the 4D Write Pro document starting from 1 | +| [This](../commands/this.md).pageIndex | Number | The actual page number in the 4D Write Pro document starting from 1 (regardless of the section page numbers) | +| [This](../commands/this.md).sectionName | String | The name that the user gives to the section | :::note diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md index 479fd15eac6a81..55feedcff520fe 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/Classes/OpenAI.md @@ -9,12 +9,12 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. ## Configuration Properties -| Nome da propriedade | Tipo | Descrição | Opcional | -| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------- | -| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Não para OpenAI | -| `baseURL` | Text | Base URL for OpenAI API requests. | Sim | -| `organization` | Text | Your OpenAI Organization ID. | Sim | -| `project` | Text | Your OpenAI Project ID. | Sim | +| Nome da propriedade | Tipo | Descrição | Opcional | +| ------------------- | ---- | ---------------------------------------------------------------------------- | --------------------------------------------------------- | +| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider | +| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI provider) | +| `organization` | Text | Your OpenAI Organization ID. | Sim | +| `project` | Text | Your OpenAI Project ID. | Sim | ### Propriedades HTTP adicionais diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md index 28426d8b6f12b8..7cb74f769f2d19 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Providers Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +To do so you just have to set the `baseURL` to the provider one and use their api key if needed. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Some of them ## Remoto -| Provider | URL base | +| Provider | baseURL | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | https://mistral.ai/ | https://api.mistral.ai/v1 | | https://www.deepseek.com/ | https://api.deepseek.com | @@ -31,7 +31,7 @@ Some of them ## Local -| Provider | URL base padrão | Doc | +| Provider | Default baseURL | Doc | | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | | https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | | https://lmstudio.ai/ | http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/overview.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/overview.md index bac8cd22b06ec4..aed3c9f5dd59b6 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/overview.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/aikit/overview.md @@ -21,7 +21,7 @@ First of all, initialize the OpenAI client using your API key var $client:=cs.AIKit.OpenAI.new("your api key") ``` -For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -43,7 +43,7 @@ var $result:=$client..() O `$result` contém o `HTTPRequest`, um status de `sucess`, uma coleção de `erros` e outros. Ver [OpenAIResult](Classes/OpenAIResult.md) -Veja alguns exemplos abaixo. +See some examples below. #### Chat diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png b/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent-dark.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png b/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/i18n/pt/docusaurus-plugin-content-docs/version-21/assets/en/FormEditor/fluent.png differ diff --git a/i18n/pt/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md b/i18n/pt/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md index 82ea07e83c1145..0efa560a6e6ade 100644 --- a/i18n/pt/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md +++ b/i18n/pt/docusaurus-plugin-content-docs/version-21/commands-legacy/on-server-open-connection-database-method.md @@ -120,7 +120,11 @@ O seguinte exemplo evita uma nova conexão entre as 2 e 4 A.M.   // Método base On Server Open Connection  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +|![](../assets/en/FormEditor/selection.png)| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.| |![](../assets/en/FormEditor/zOrder.png)| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. | |![](../assets/en/FormEditor/moving.png)| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.| |![](../assets/en/FormEditor/zoom.png)| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.| @@ -146,11 +146,11 @@ Before you can perform any operation on an object (such as changing a line width To select an object using the toolbar: -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Click the object you want to select. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Click the object you want to select. Resizing handles identify the selected object.
    ![](../assets/en/FormEditor/selectResize.png) To select an object using the Property List: @@ -241,13 +241,13 @@ To group objects: 1. Select the objects that you want to group. 2. Choose **Group** from the Object menu. OR -Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    +Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group. To ungroup an object: 1. Select the grouped object that you want to ungroup. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marks the boundaries of the individual objects with handles. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles. ### Aligning objects @@ -275,9 +275,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    The example area displays the results of your selection. + +- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered. -- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:

    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.

    You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment. @@ -314,7 +315,8 @@ To distribute objects with equal spacing: 1. Select three or more objects and click the desired Distribute tool. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. +4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. To distribute objects using the Align and Distribute dialog box: @@ -322,9 +324,9 @@ To distribute objects using the Align and Distribute dialog box: 2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:![](../assets/en/FormEditor/alignmentAssistant.png) -3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Standard horizontal distribution icon)

    The example area displays the results of your selection. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
    - Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects. - Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects. @@ -347,7 +349,13 @@ To move an object to another level, select it and choose: ![](../assets/en/FormEditor/level2.png) ->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. +When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. + +:::note + +In binary databases, use **Ctrl+Click / Command+Click** to perform the same action. + +::: When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form. @@ -379,11 +387,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr To view or change the entry order: -1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
    ![](../assets/en/FormEditor/zOrder.png)
    The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repeat step 2 as many times as necessary to set the data entry order you want. diff --git a/versioned_docs/version-19/FormObjects/listbox_overview.md b/versioned_docs/version-19/FormObjects/listbox_overview.md index 27d2ddde527e7d..3cd6a93bd14a0e 100644 --- a/versioned_docs/version-19/FormObjects/listbox_overview.md +++ b/versioned_docs/version-19/FormObjects/listbox_overview.md @@ -260,7 +260,7 @@ You can set standard properties (text, background color, etc.) for each column o ### Column Specific Properties {#column-specific-properties} -[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) +[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) ### Supported Form Events diff --git a/versioned_docs/version-19/FormObjects/properties_Entry.md b/versioned_docs/version-19/FormObjects/properties_Entry.md index d36fa52c3cde4c..a29f6837fbde5c 100644 --- a/versioned_docs/version-19/FormObjects/properties_Entry.md +++ b/versioned_docs/version-19/FormObjects/properties_Entry.md @@ -28,7 +28,7 @@ Allows the user access to a standard context menu in the object when the form is For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display#picture-format) using this menu is temporary; it is not saved with the record. -For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands: +For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands: - **Fonts...**: displays the font system dialog box - **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands. diff --git a/versioned_docs/version-20-R10/Concepts/components.md b/versioned_docs/version-20-R10/Concepts/components.md index 224dd859b31fbb..8bb757e34edb7a 100644 --- a/versioned_docs/version-20-R10/Concepts/components.md +++ b/versioned_docs/version-20-R10/Concepts/components.md @@ -7,7 +7,7 @@ A 4D component is a set of 4D code and forms representing one or more functional ## Installing components -Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Additionnally, you can [develop your own 4D components](Extensions/develop-components.md). +Several components are [preinstalled in the 4D development environment](Extensions/overview.md), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Additionnally, you can [develop your own 4D components](Extensions/develop-components.md). Installation and loading of components in your 4D projects are handled through the [4D dependency manager](../Project/components.md). diff --git a/versioned_docs/version-20-R10/Develop-legacy/transactions.md b/versioned_docs/version-20-R10/Develop-legacy/transactions.md index ec3fc9d7f4065d..39380e9e23e4a7 100644 --- a/versioned_docs/version-20-R10/Develop-legacy/transactions.md +++ b/versioned_docs/version-20-R10/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/versioned_docs/version-20-R10/Develop/field-properties.md b/versioned_docs/version-20-R10/Develop/field-properties.md index 5815691e0f4bc4..09d937dfc69136 100644 --- a/versioned_docs/version-20-R10/Develop/field-properties.md +++ b/versioned_docs/version-20-R10/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Field properties --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/versioned_docs/version-20-R10/FormEditor/formEditor.md b/versioned_docs/version-20-R10/FormEditor/formEditor.md index faa838ac35febc..1ddd5c165b7b8c 100644 --- a/versioned_docs/version-20-R10/FormEditor/formEditor.md +++ b/versioned_docs/version-20-R10/FormEditor/formEditor.md @@ -56,7 +56,7 @@ The toolbar contains the following elements: |Icon |Name|Description | |---|---|---| |![](../assets/en/FormEditor/execute.png)| Execute the form| Used to test the execution of the form. When you click on this button, 4D opens a new window and displays the form in its context (list of records for a list form and current record page for a detail form). The form is executed in the main process.| -|![](../assets/en/FormEditor/selection.png)| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +|![](../assets/en/FormEditor/selection.png)| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.| |![](../assets/en/FormEditor/zOrder.png)| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. | |![](../assets/en/FormEditor/moving.png)| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.| |![](../assets/en/FormEditor/zoom.png)| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.| @@ -148,11 +148,11 @@ Before you can perform any operation on an object (such as changing a line width To select an object using the toolbar: -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Click the object you want to select. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Click the object you want to select. Resizing handles identify the selected object.
    ![](../assets/en/FormEditor/selectResize.png) To select an object using the Property List: @@ -243,13 +243,13 @@ To group objects: 1. Select the objects that you want to group. 2. Choose **Group** from the Object menu. OR -Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    +Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group. To ungroup an object: 1. Select the grouped object that you want to ungroup. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marks the boundaries of the individual objects with handles. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles. ### Aligning objects @@ -277,9 +277,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    The example area displays the results of your selection. + +- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered. -- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:

    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.

    You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment. @@ -316,7 +317,8 @@ To distribute objects with equal spacing: 1. Select three or more objects and click the desired Distribute tool. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. +4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. To distribute objects using the Align and Distribute dialog box: @@ -324,9 +326,9 @@ To distribute objects using the Align and Distribute dialog box: 2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:![](../assets/en/FormEditor/alignmentAssistant.png) -3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Standard horizontal distribution icon)

    The example area displays the results of your selection. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
    - Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects. - Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects. @@ -349,7 +351,13 @@ To move an object to another level, select it and choose: ![](../assets/en/FormEditor/level2.png) ->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. +When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. + +:::note + +In binary databases, use **Ctrl+Click / Command+Click** to perform the same action. + +::: When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form. @@ -381,11 +389,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr To view or change the entry order: -1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
    ![](../assets/en/FormEditor/zOrder.png)
    The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repeat step 2 as many times as necessary to set the data entry order you want. diff --git a/versioned_docs/version-20-R10/FormObjects/listbox_overview.md b/versioned_docs/version-20-R10/FormObjects/listbox_overview.md index 3c1b6e116e8d3b..9657a607cb73bb 100644 --- a/versioned_docs/version-20-R10/FormObjects/listbox_overview.md +++ b/versioned_docs/version-20-R10/FormObjects/listbox_overview.md @@ -291,7 +291,7 @@ You can set standard properties (text, background color, etc.) for each column o ### Column Specific Properties {#column-specific-properties} -[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) +[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) ### Supported Form Events {#supported-form-events-1} diff --git a/versioned_docs/version-20-R10/FormObjects/properties_Action.md b/versioned_docs/version-20-R10/FormObjects/properties_Action.md index 3b80539ec0b30d..10339f95319519 100644 --- a/versioned_docs/version-20-R10/FormObjects/properties_Action.md +++ b/versioned_docs/version-20-R10/FormObjects/properties_Action.md @@ -205,7 +205,7 @@ In other cases (list boxes based on named selections, columns associated with ex --- ## Standard action -Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*. +Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). You can assign both a standard action and a project method to an object. In this case, the standard action is usually executed after the method and 4D uses this action to enable/disable the object according to the current context. When an object is deactivated, the associated project method cannot be executed. @@ -214,7 +214,7 @@ You can assign both a standard action and a project method to an object. In this |Name|Data Type|Possible Values| |---|---|---| -|action|string |The name of a [valid standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html).| +|action|string |The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objects Supported diff --git a/versioned_docs/version-20-R10/FormObjects/properties_Entry.md b/versioned_docs/version-20-R10/FormObjects/properties_Entry.md index 79ec619b26b288..9c9bb60c12b0f7 100644 --- a/versioned_docs/version-20-R10/FormObjects/properties_Entry.md +++ b/versioned_docs/version-20-R10/FormObjects/properties_Entry.md @@ -27,7 +27,7 @@ Allows the user access to a standard context menu in the object when the form is For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display.md#picture-format) using this menu is temporary; it is not saved with the record. -For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands: +For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands: - **Fonts...**: displays the font system dialog box - **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands. diff --git a/versioned_docs/version-20-R10/ORDA/entities.md b/versioned_docs/version-20-R10/ORDA/entities.md index a1c8f8cca61cba..164a77b603b698 100644 --- a/versioned_docs/version-20-R10/ORDA/entities.md +++ b/versioned_docs/version-20-R10/ORDA/entities.md @@ -477,7 +477,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection This function is called whenever an entity selection or an entity of the dataclass is requested. The filter is run once, when the entity selection is created. -The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`], etc. +The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/versioned_docs/version-20-R10/ORDA/orda-events.md b/versioned_docs/version-20-R10/ORDA/orda-events.md index 6a52fdd62757c2..42f09ec34ffe8a 100644 --- a/versioned_docs/version-20-R10/ORDA/orda-events.md +++ b/versioned_docs/version-20-R10/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: ORDA Events +title: Entity Events ---
    History @@ -11,7 +11,7 @@ title: ORDA Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. @@ -21,7 +21,7 @@ You cannot directly trigger event function execution. Events are called automati :::info Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -30,7 +30,7 @@ ORDA events in the datastore are equivalent to triggers in the 4D database. Howe ### Event level -A event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). +A entity event function is always defined in the [Entity class](../ORDA/ordaClasses.md#entity-class). It can be set at the **entity** level and/or the **attribute** level (it includes [**computed attributes**](../ORDA/ordaClasses.md#computed-attributes)). In the first case, it will be triggered for any attributes of the entity; on the other case, it will only be triggered for the targeted attribute. @@ -57,7 +57,7 @@ With other remote configurations (i.e. Qodly applications, [REST API requests](. ### Summary table -The following table lists ORDA events along with their rules. +The following table lists ORDA entity events along with their rules. | Event | Level | Function name | (C/S) Executed on | | :--------------- |:--------------- | :----- | :-----: | diff --git a/versioned_docs/version-20-R10/Project/components.md b/versioned_docs/version-20-R10/Project/components.md index b149e7e1faf406..da352948708c93 100644 --- a/versioned_docs/version-20-R10/Project/components.md +++ b/versioned_docs/version-20-R10/Project/components.md @@ -5,7 +5,7 @@ title: Dependencies A 4D component is a set of 4D code and/or 4D forms representing one or more functionalities that you can add and use in your projects. For example, the [4D SVG](https://github.com/4d/4D-SVG) component adds advanced commands and an integrated rendering engine that can be used to display SVG files. -You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). +You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/topics/4d-component). When developing in 4D, the component files can be transparently stored in your computer or on a Github repository. @@ -363,7 +363,7 @@ When you add or update a component (whether [local](#local-components) or [from The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. :::note diff --git a/versioned_docs/version-20-R10/WebServer/sessions.md b/versioned_docs/version-20-R10/WebServer/sessions.md index 8104420d4d49c1..1bc9097f9490c2 100644 --- a/versioned_docs/version-20-R10/WebServer/sessions.md +++ b/versioned_docs/version-20-R10/WebServer/sessions.md @@ -209,9 +209,9 @@ Else End if ``` -:::note +:::tips Related blog posts -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: diff --git a/versioned_docs/version-20-R10/aikit/Classes/OpenAI.md b/versioned_docs/version-20-R10/aikit/Classes/OpenAI.md index 3d1dcd75409a18..9fded0091c08d7 100644 --- a/versioned_docs/version-20-R10/aikit/Classes/OpenAI.md +++ b/versioned_docs/version-20-R10/aikit/Classes/OpenAI.md @@ -11,8 +11,8 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. | Property Name | Type | Description | Optional | |-------------------|-------|-----------------------------------|----------| -| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | No for OpenAI | -| `baseURL` | Text | Base URL for OpenAI API requests. | Yes | +| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider | +| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI provider)| | `organization` | Text | Your OpenAI Organization ID. | Yes | | `project` | Text | Your OpenAI Project ID. | Yes | diff --git a/versioned_docs/version-20-R10/aikit/compatible-openai.md b/versioned_docs/version-20-R10/aikit/compatible-openai.md index 48db88a10f7216..847aec12b412c1 100644 --- a/versioned_docs/version-20-R10/aikit/compatible-openai.md +++ b/versioned_docs/version-20-R10/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Providers Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +To do so you just have to set the `baseURL` to the provider one and use their api key if needed. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Some of them ## Remote -|Provider|Base url| +|Provider|baseURL| |-|-| |https://mistral.ai/|https://api.mistral.ai/v1| |https://www.deepseek.com/|https://api.deepseek.com| @@ -31,7 +31,7 @@ Some of them ## Local -| Provider | Default base url | Doc | +| Provider | Default baseURL | Doc | |------------------ |---------------------------|-----------------------------------------------| |https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | |https://lmstudio.ai/| http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/versioned_docs/version-20-R10/aikit/overview.md b/versioned_docs/version-20-R10/aikit/overview.md index eb664c46d783e6..e9772f39bc5ba5 100644 --- a/versioned_docs/version-20-R10/aikit/overview.md +++ b/versioned_docs/version-20-R10/aikit/overview.md @@ -22,7 +22,7 @@ First of all, initialize the OpenAI client using your API key var $client:=cs.AIKit.OpenAI.new("your api key") ``` -For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -44,7 +44,7 @@ var $result:=$client..() The `$result` contains the `HTTPRequest`, a `success` status, a collection of `errors` and more. See [OpenAIResult](Classes/OpenAIResult.md) -See some examples bellow. +See some examples below. #### Chat diff --git a/versioned_docs/version-20-R10/commands-legacy/array-to-list.md b/versioned_docs/version-20-R10/commands-legacy/array-to-list.md index d3247a29055ca8..0464e9802e30fd 100644 --- a/versioned_docs/version-20-R10/commands-legacy/array-to-list.md +++ b/versioned_docs/version-20-R10/commands-legacy/array-to-list.md @@ -27,7 +27,7 @@ The optional *itemRefs* parameter, if specified, must be a numeric array synchro * This command only lets you set first-level items of the list. * When you use this command with a choice list, it modifies the structure of the application (lists are saved in the structure file), so any modifications made locally are lost when the structure file is updated in production. -* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project or a component. +* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project (which includes [remote projects](../Desktop/clientServer.md)) or a component. You can use ARRAY TO LIST to build a list based on the elements of an array. However, to free yourself from these restrictions and make full use of the lists of values, we recommend using the commands of the *Hierarchical Lists* theme. diff --git a/versioned_docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md b/versioned_docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md index 5a16cc653a0813..2a254f1ab88314 100644 --- a/versioned_docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md +++ b/versioned_docs/version-20-R10/commands-legacy/on-server-open-connection-database-method.md @@ -125,7 +125,11 @@ The following example prevents any new connection from 2 to 4 A.M.   // On Server Open Connection Database Method  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time**Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +|![](../assets/en/FormEditor/selection.png)| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.| |![](../assets/en/FormEditor/zOrder.png)| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. | |![](../assets/en/FormEditor/moving.png)| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.| |![](../assets/en/FormEditor/zoom.png)| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.| @@ -146,11 +146,11 @@ Before you can perform any operation on an object (such as changing a line width To select an object using the toolbar: -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Click the object you want to select. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Click the object you want to select. Resizing handles identify the selected object.
    ![](../assets/en/FormEditor/selectResize.png) To select an object using the Property List: @@ -241,13 +241,13 @@ To group objects: 1. Select the objects that you want to group. 2. Choose **Group** from the Object menu. OR -Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    +Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group. To ungroup an object: 1. Select the grouped object that you want to ungroup. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marks the boundaries of the individual objects with handles. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles. ### Aligning objects @@ -275,9 +275,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    The example area displays the results of your selection. + +- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered. -- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:

    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.

    You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment. @@ -314,7 +315,8 @@ To distribute objects with equal spacing: 1. Select three or more objects and click the desired Distribute tool. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. +4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. To distribute objects using the Align and Distribute dialog box: @@ -322,9 +324,9 @@ To distribute objects using the Align and Distribute dialog box: 2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:![](../assets/en/FormEditor/alignmentAssistant.png) -3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Standard horizontal distribution icon)

    The example area displays the results of your selection. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
    - Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects. - Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects. @@ -347,7 +349,13 @@ To move an object to another level, select it and choose: ![](../assets/en/FormEditor/level2.png) ->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. +When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. + +:::note + +In binary databases, use **Ctrl+Click / Command+Click** to perform the same action. + +::: When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form. @@ -379,11 +387,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr To view or change the entry order: -1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
    ![](../assets/en/FormEditor/zOrder.png)
    The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repeat step 2 as many times as necessary to set the data entry order you want. diff --git a/versioned_docs/version-20/FormObjects/listbox_overview.md b/versioned_docs/version-20/FormObjects/listbox_overview.md index fea3103a27cdd0..ec77a42d634eed 100644 --- a/versioned_docs/version-20/FormObjects/listbox_overview.md +++ b/versioned_docs/version-20/FormObjects/listbox_overview.md @@ -285,7 +285,7 @@ You can set standard properties (text, background color, etc.) for each column o ### Column Specific Properties {#column-specific-properties} -[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) +[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) ### Supported Form Events diff --git a/versioned_docs/version-20/FormObjects/properties_Entry.md b/versioned_docs/version-20/FormObjects/properties_Entry.md index 0ce9b14c849ef3..51fc31a34c5eb1 100644 --- a/versioned_docs/version-20/FormObjects/properties_Entry.md +++ b/versioned_docs/version-20/FormObjects/properties_Entry.md @@ -27,7 +27,7 @@ Allows the user access to a standard context menu in the object when the form is For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display.md#picture-format) using this menu is temporary; it is not saved with the record. -For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands: +For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands: - **Fonts...**: displays the font system dialog box - **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands. diff --git a/versioned_docs/version-21/API/DataClassClass.md b/versioned_docs/version-21/API/DataClassClass.md index c6d6cb00f6fbbb..edcd003a94a757 100644 --- a/versioned_docs/version-21/API/DataClassClass.md +++ b/versioned_docs/version-21/API/DataClassClass.md @@ -1185,7 +1185,7 @@ In this case, the *value* parameter must be a **comparison vector object** conta |Property|Type|Description| |---|---|---| |vector|[4D.Vector](../API/VectorClass.md)|Mandatory. The vector to be compared| -|metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine distance between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors.| +|metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. You can use one of the following (Text) constants:
  • `mk cosine` (default if omitted): calculates the cosine similarity between vectors.
  • `mk dot`: calculates the dot similarity of vectors.
  • `mk euclidean`: calculates the Euclidean distance between vectors.| |threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.| Only a subset of **comparator** symbols are supported. Note that they compare results to the threshold value: diff --git a/versioned_docs/version-21/API/EntityClass.md b/versioned_docs/version-21/API/EntityClass.md index 13cba5842aa523..2b84626000140f 100644 --- a/versioned_docs/version-21/API/EntityClass.md +++ b/versioned_docs/version-21/API/EntityClass.md @@ -992,7 +992,6 @@ The object returned by `.lock()` contains the following properties: |---|---|---| |`dk status entity does not exist anymore`| 5 |The entity no longer exists in the data. This error can occur in the following cases:
  • the entity has been dropped (the stamp has changed and the memory space is now free)
  • the entity has been dropped and replaced by another one with another primary key (the stamp has changed and a new entity now uses the memory space). When using `.drop()`, this error can be returned when dk force drop if stamp changed option is used. When using `.lock()`, this error can be returned when `dk reload if stamp changed` option is used

  • **Associated statusText**: "Entity does not exist anymore"| |`dk status locked`| 3 |The entity is locked by a pessimistic lock.**Associated statusText**: "Already locked" -|`dk status mild validation error`|7|Can be returned by the developer only in validate events and do not require| |`dk status serious error`| 4 |A serious error is a low-level database error (e.g. duplicated key), a hardware error, etc.
    **Associated statusText**: "Other error"| |`dk status stamp has changed`|2|The internal stamp value of the entity does not match the one of the entity stored in the data (optimistic lock).
  • with `.save()`: error only if the `dk auto merge` option is not used
  • with `.drop()`: error only if the `dk force drop if stamp changed` option is not used
  • with `.lock()`: error only if the `dk reload if stamp changed` option is not used

  • **Associated statusText**: "Stamp has changed"| diff --git a/versioned_docs/version-21/API/SessionClass.md b/versioned_docs/version-21/API/SessionClass.md index 1ad435a7823c29..b7fa2f61dde550 100644 --- a/versioned_docs/version-21/API/SessionClass.md +++ b/versioned_docs/version-21/API/SessionClass.md @@ -103,7 +103,7 @@ This function does not remove **promoted privileges** from the web process, whet ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). #### Example @@ -413,7 +413,7 @@ This function returns True for the *privilege* if called from a function that wa ::: -Regarding remote client sessions, the function only impacts [code accessing the web server](../WebServer/preemptiveWeb.md#writing-thread-safe-web-server-code). +Regarding remote client sessions, the function only concerns the code executed in the context of a [web request sent through a Web area](../Desktop/clientServer.md#sharing-the-session-with-qodly-pages-in-web-areas). With stored procedure sessions and standalone sessions, this function always returns True, whatever the *privilege*. diff --git a/versioned_docs/version-21/Concepts/components.md b/versioned_docs/version-21/Concepts/components.md index 2aff64fb665de5..2295ba0c354992 100644 --- a/versioned_docs/version-21/Concepts/components.md +++ b/versioned_docs/version-21/Concepts/components.md @@ -9,7 +9,7 @@ A 4D component is a set of 4D code and forms representing one or more functional Installation and loading of components in your 4D projects are handled through the [4D Dependency manager](../Project/components.md). -Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). Additionnally, you can [develop your own 4D components](../Extensions/develop-components.md). +Several components are [developed by 4D](../Extensions/overview.md#components-developed-by-4d), but a lot of 4D components from the 4D community [can be found on GitHub](https://github.com/topics/4d-component). Additionnally, you can [develop your own 4D components](../Extensions/develop-components.md). ## Using components diff --git a/versioned_docs/version-21/Develop-legacy/transactions.md b/versioned_docs/version-21/Develop-legacy/transactions.md index ec3fc9d7f4065d..39380e9e23e4a7 100644 --- a/versioned_docs/version-21/Develop-legacy/transactions.md +++ b/versioned_docs/version-21/Develop-legacy/transactions.md @@ -1,6 +1,8 @@ --- id: transactions title: Transactions +slug: /Develop/transactions +displayed_sidebar: docs --- ## Description diff --git a/versioned_docs/version-21/Develop/field-properties.md b/versioned_docs/version-21/Develop/field-properties.md index 5815691e0f4bc4..09d937dfc69136 100644 --- a/versioned_docs/version-21/Develop/field-properties.md +++ b/versioned_docs/version-21/Develop/field-properties.md @@ -3,7 +3,7 @@ id: field-properties title: Field properties --- -For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv20R10/4D/20-R10/Field-properties.300-7543749.en.html#5523008). +For other field properties, please refer to [doc.4d.com](https://doc.4d.com/4Dv21/4D/21/Field-properties.300-7676763.en.html). ## Class diff --git a/versioned_docs/version-21/FormEditor/formEditor.md b/versioned_docs/version-21/FormEditor/formEditor.md index faa838ac35febc..1ddd5c165b7b8c 100644 --- a/versioned_docs/version-21/FormEditor/formEditor.md +++ b/versioned_docs/version-21/FormEditor/formEditor.md @@ -56,7 +56,7 @@ The toolbar contains the following elements: |Icon |Name|Description | |---|---|---| |![](../assets/en/FormEditor/execute.png)| Execute the form| Used to test the execution of the form. When you click on this button, 4D opens a new window and displays the form in its context (list of records for a list form and current record page for a detail form). The form is executed in the main process.| -|![](../assets/en/FormEditor/selection.png)| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.

    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.

    | +|![](../assets/en/FormEditor/selection.png)| [Selection tool](#selecting-objects)|Allows selecting, moving and resizing form objects.
    **Note**: When an object of the Text or Group Box type is selected, pressing the **Enter** key lets you switch to editing mode.| |![](../assets/en/FormEditor/zOrder.png)| [Entry order](#data-entry-order)| Switches to “Entry order” mode, where it is possible to view and change the current entry order of the form. Note that shields allow viewing the current entry order, while still working in the form. | |![](../assets/en/FormEditor/moving.png)| [Moving](#moving-objects)| Switches to “Move” mode, where it is possible to reach any part of the form quickly by using drag and drop in the window. The cursor takes the shape of a hand. This navigation mode is particularly useful when zooming in the form.| |![](../assets/en/FormEditor/zoom.png)| [Zoom](#zoom)| Allows modifying the form display percentage (100% by default). You can switch to “Zoom” mode by clicking on the magnifying glass or by clicking directly on the desired bar. This feature is detailed in previous section.| @@ -148,11 +148,11 @@ Before you can perform any operation on an object (such as changing a line width To select an object using the toolbar: -1. Click the Arrow tool in the toolbar.

    ![](../assets/en/FormEditor/selection.png)

    +1. Click the Arrow tool in the toolbar.
    ![](../assets/en/FormEditor/selection.png) -

    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer

    . +
    When you move the pointer into the form area, it becomes a standard arrow-shaped pointer. -2. Click the object you want to select. Resizing handles identify the selected object.

    ![](../assets/en/FormEditor/selectResize.png)

    +2. Click the object you want to select. Resizing handles identify the selected object.
    ![](../assets/en/FormEditor/selectResize.png) To select an object using the Property List: @@ -243,13 +243,13 @@ To group objects: 1. Select the objects that you want to group. 2. Choose **Group** from the Object menu. OR -Click the Group button in the toolbar of the Form editor:

    ![](../assets/en/FormEditor/group.png)

    +Click the Group button in the toolbar of the Form editor:
    ![](../assets/en/FormEditor/group.png) 4D marks the boundary of the newly grouped objects with handles. No handles mark the boundary of any of the individual objects within the group. Now, when you modify the grouped object, you change all the objects that make up the group. To ungroup an object: 1. Select the grouped object that you want to ungroup. -2. Choose **Ungroup** from the **Object** menu.

    OR

    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.

    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form.

    4D marks the boundaries of the individual objects with handles. +2. Choose **Ungroup** from the **Object** menu.
    OR
    Click the **Ungroup** button (variant of the **Group** button) in the toolbar of the Form editor.
    If **Ungroup** is dimmed, this means that the selected object is already separated into its simplest form. 4D marks the boundaries of the individual objects with handles. ### Aligning objects @@ -277,9 +277,10 @@ The Alignment Assistant allows you to perform any type of alignment and/or distr To display this dialog box, select the objects you want to align then choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. -- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.

    The example area displays the results of your selection.

    +- In the “Left/Right Alignment” and/or “Top/Bottom Alignment” areas, click the icon that corresponds to the alignment you want to perform.
    The example area displays the results of your selection. + +- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:
    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered. -- To perform an alignment that uses the standard anchor scheme, click **Preview** or **Apply**. In this case 4D uses the object that is the furthest in the alignment’s direction as the anchor and aligns the other objects to that object. For instance, if you want to perform a right alignment on a set of objects, the rightmost object will be used as the anchor. OR:

    To align objects to a specific object, select the **Align on** option and select the object to which you want the other objects to be aligned from the object list. In this case, the position of the reference object will not be altered.

    You can preview the results of the alignment by clicking the **Preview** button. The objects are then aligned in the Form editor but since the dialog box does not go away, you can still cancel or apply the alignment. @@ -316,7 +317,8 @@ To distribute objects with equal spacing: 1. Select three or more objects and click the desired Distribute tool. -2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.

    ![](../assets/en/FormEditor/distributionTool.png)

    OR

    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor.

    4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. +2. In the toolbar, click on the distribution tool that corresponds to the distribution you want to apply.
    ![](../assets/en/FormEditor/distributionTool.png)
    OR
    Select a distribution menu command from the **Align** submenu in the **Object** menu or from the context menu of the editor. +4D distributes the objects accordingly. Objects are distributed using the distance to their centers and the largest distance between two consecutive objects is used as a reference. To distribute objects using the Align and Distribute dialog box: @@ -324,9 +326,9 @@ To distribute objects using the Align and Distribute dialog box: 2. Choose the **Alignment** command from the **Align** submenu in the **Object** menu or from the context menu of the editor. The following dialog box appears:![](../assets/en/FormEditor/alignmentAssistant.png) -3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)

    (Standard horizontal distribution icon)

    The example area displays the results of your selection. +3. In the Left/Right Alignment and/or Top/Bottom Alignment areas, click the standard distribution icon: ![](../assets/en/FormEditor/horizontalDistribution.png)
    (Standard horizontal distribution icon)
    The example area displays the results of your selection. -4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.

    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.

    OR:

    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:

    +4. To perform a distribution that uses the standard scheme, click **Preview** or *Apply*.
    In this case 4D will perform a standard distribution, so that the objects are set out with an equal amount of space between them.
    OR:
    To execute a specific distribution, select the **Distribute** option (for example if you want to distribute the objects based on the distance to their right side). This option acts like a switch. If the Distribute check box is selected, the icons located below it perform a different function:
    - Horizontally, the icons correspond to the following distributions: evenly with respect to left sides, centers (hor.) and right sides of the selected objects. - Vertically, the icons correspond to the following distributions: evenly with respect to top edges, centers (vert.) and bottom edges of the selected objects. @@ -349,7 +351,13 @@ To move an object to another level, select it and choose: ![](../assets/en/FormEditor/level2.png) ->When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. +When several objects are superimposed, the **Ctrl+Shift+click** / **Command+Shift+click** shortcut can be used to select each object successively by going down a layer with each click. + +:::note + +In binary databases, use **Ctrl+Click / Command+Click** to perform the same action. + +::: When ordering different levels, 4D always goes from the background to the foreground. As a result, the previous level moves the selection of objects one level towards the background. The next level moves the selection one level towards the foreground of the form. @@ -381,11 +389,11 @@ This paragraph describes viewing and modifying the entry order using the “Entr To view or change the entry order: -1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:

    ![](../assets/en/FormEditor/zOrder.png)

    +1. Choose **Entry Order** from the **Form** menu or click on the Entry Order button in the toolbar of the window:
    ![](../assets/en/FormEditor/zOrder.png)
    The pointer turns into an entry order pointer and 4D draws a line in the form showing the order in which it selects objects during data entry. Viewing and changing the data entry order are the only actions you can perform until you click any tool in the Tools palette. -2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.

    ![](../assets/en/FormEditor/entryOrder3.png)

    4D will adjust the entry order accordingly. +2. To change the data entry order, position the pointer on an object in the form and, while holding down the mouse button, drag the pointer to the object you want next in the data entry order.
    ![](../assets/en/FormEditor/entryOrder3.png)
    4D will adjust the entry order accordingly. 3. Repeat step 2 as many times as necessary to set the data entry order you want. diff --git a/versioned_docs/version-21/FormEditor/forms.md b/versioned_docs/version-21/FormEditor/forms.md index 53565e921469e0..1bb9f5f24bc3ac 100644 --- a/versioned_docs/version-21/FormEditor/forms.md +++ b/versioned_docs/version-21/FormEditor/forms.md @@ -102,6 +102,14 @@ A multi-page form has both a background page and several display pages. Objects On Windows, 4D supports **Fluent UI** form rendering, Microsoft's modern graphical user interface design, based upon **WinUI 3** technology. **WinUI 3** is the foundation of the Windows App SDK and represents the upcoming Windows graphical interfaces. +Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. + +|Light theme|Dark theme| +|---|---| +|![](../assets/en/FormEditor/fluent.png)|![](../assets/en/FormEditor/fluent-dark.png)| + + + :::caution Developer Preview Fluent UI support is currently in the Developer Preview phase. It should not be used in production. @@ -114,21 +122,18 @@ This feature can only be used on Windows. On macOS, it is ignored. ::: +:::tip Related blog post -### Fluent UI rendering availability +[Modernize your 4D interfaces with Fluent UI](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui) -The Fluent UI rendering is available in the following execution environments only: +::: -- Windows with [Windows App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) version 1.7.3 installed (you need to install this SDK on any Windows machine displaying your forms). -- Merged [stand-alone](../Desktop/building.md#build-stand-alone-application) or [client](../Desktop/building.md#build-client-application) 4D application -- [**Test application** feature](../Menus/bars.md#previewing-menu-bars) available from the Run menu. +### Requirements -:::note +The Fluent UI rendering requires that the [**Windows App SDK version 1.7.3**](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) be installed. You need to install this SDK on any Windows machine displaying your forms. If the Windows App SDK is not properly installed, 4D will render all your forms in classic mode with no error. -::: - ### Enabling the Fluent UI rendering You can enable the Fluent UI rendering mode at the application level or at the form level. Form setting has priority over application setting. @@ -152,21 +157,23 @@ Each form can define its own rendering via the **Widget appearance** property. T The corresponding [JSON form property](./properties_JSONref.md) is `fluentUI` with value undefined (i.e. inherited, default value), "true" or "false". -### Features and limitations - -Fluent UI rendering offers modern and attractive controls, support of dark/light system themes, smoother rendering optimized for high-resolution displays, and consistent user experience aligned with recent Microsoft applications. - +### Specific behaviors When using 4D forms with Fluent UI rendering, you need to pay attention to the following points: -- The `FORM Window theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. +- The new `FORM Windows theme` command returns the actual display theme of the current form. Possible values: "Classic" or "FluentUI". If there is no current form or the command is called on macOS, and empty string is returned. - If [`GET STYLE SHEET INFO`](../commands-legacy/get-style-sheet-info.md) is called in the context of a form, the information returned relates to the current appearance of the form (Classic or FluentUI). If the command is called outside the context of a form, the information returned relates to the [global project settings](#application-setting). - [`SET MENU ITEM STYLE`](../commands-legacy/set-menu-item-style.md) with `Underline` *itemStyle* parameter is not supported (ignored) for pop up menus. -- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). - [Stepper](../FormObjects/stepper.md) form object does not support [double-click event](../Events/onDoubleClicked.md). - [Circle buttons](../FormObjects/button_overview.md#circle) are supported (similar as macOS). - The [`WA ZOOM IN`](../commands-legacy/wa-zoom-in.md) / [`WA ZOOM OUT`](../commands-legacy/wa-zoom-out.md) commands are not supported in Web areas with system rendering engine. +- A focus ring can be added to picture and text [inputs](../FormObjects/input_overview.md). + +:::info Limitations +This **Developer preview** includes some limitations, which are [listed in the related blog post](https://blog.4d.com/modernize-your-4d-interfaces-with-fluent-ui). + +::: diff --git a/versioned_docs/version-21/FormObjects/listbox_overview.md b/versioned_docs/version-21/FormObjects/listbox_overview.md index 3c1b6e116e8d3b..9657a607cb73bb 100644 --- a/versioned_docs/version-21/FormObjects/listbox_overview.md +++ b/versioned_docs/version-21/FormObjects/listbox_overview.md @@ -291,7 +291,7 @@ You can set standard properties (text, background color, etc.) for each column o ### Column Specific Properties {#column-specific-properties} -[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) +[Alpha Format](properties_Display.md#alpha-format) - [Alternate Background Color](properties_BackgroundAndBorder.md#alternate-background-color) - [Automatic Row Height](properties_CoordinatesAndSizing.md#automatic-row-height) - [Background Color](properties_BackgroundAndBorder.md#background-color--fill-color) - [Background Color Expression](properties_BackgroundAndBorder.md#background-color-expression) - [Bold](properties_Text.md#bold) - [Choice List](properties_DataSource.md#choice-list) - [Class](properties_Object.md#css-class) - [Context Menu](properties_Entry.md#context-menu) - [Data Type (selection and collection list box column)](properties_DataSource.md#data-type-list) - [Date Format](properties_Display.md#date-format) - [Default Values](properties_DataSource.md#default-list-of-values) - [Display Type](properties_Display.md#display-type) - [Enterable](properties_Entry.md#enterable) - [Entry Filter](properties_Entry.md#entry-filter) - [Excluded List](properties_RangeOfValues.md#excluded-list) - [Expression](properties_DataSource.md#expression) - [Expression Type (array list box column)](properties_Object.md#expression-type) - [Font](properties_Text.md#font) - [Font Color](properties_Text.md#font-color) - [Horizontal Alignment](properties_Text.md#horizontal-alignment) - [Horizontal Padding](properties_CoordinatesAndSizing.md#horizontal-padding) - [Italic](properties_Text.md#italic) - [Invisible](properties_Display.md#visibility) - [Maximum Width](properties_CoordinatesAndSizing.md#maximum-width) - [Method](properties_Action.md#method) - [Minimum Width](properties_CoordinatesAndSizing.md#minimum-width) - [Multi-style](properties_Text.md#multi-style) - [Number Format](properties_Display.md#number-format) - [Object Name](properties_Object.md#object-name) - [Picture Format](properties_Display.md#picture-format) - [Resizable](properties_ResizingOptions.md#resizable) - [Required List](properties_RangeOfValues.md#required-list) - [Row Background Color Array](properties_BackgroundAndBorder.md#row-background-color-array) - [Row Font Color Array](properties_Text.md#row-font-color-array) - [Row Style Array](properties_Text.md#row-style-array) - [Save as](properties_DataSource.md#save-as) - [Style Expression](properties_Text.md#style-expression) - [Text when False/Text when True](properties_Display.md#text-when-falsetext-when-true) - [Time Format](properties_Display.md#time-format) - [Truncate with ellipsis](properties_Display.md#truncate-with-ellipsis) - [Underline](properties_Text.md#underline) - [Variable or Expression](properties_Object.md#variable-or-expression) - [Vertical Alignment](properties_Text.md#vertical-alignment) - [Vertical Padding](properties_CoordinatesAndSizing.md#vertical-padding) - [Width](properties_CoordinatesAndSizing.md#width) - [Wordwrap](properties_Display.md#wordwrap) ### Supported Form Events {#supported-form-events-1} diff --git a/versioned_docs/version-21/FormObjects/properties_Action.md b/versioned_docs/version-21/FormObjects/properties_Action.md index 3b80539ec0b30d..10339f95319519 100644 --- a/versioned_docs/version-21/FormObjects/properties_Action.md +++ b/versioned_docs/version-21/FormObjects/properties_Action.md @@ -205,7 +205,7 @@ In other cases (list boxes based on named selections, columns associated with ex --- ## Standard action -Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*. +Typical activities to be performed by active objects (*e.g.*, letting the user accept, cancel, or delete records, move between records or from page to page in a multi-page form, etc.) have been predefined by 4D as standard actions. They are described in detail in the [Standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) section of the *Design Reference*. There are also [standard actions specific to 4D Write Pro areas](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). You can assign both a standard action and a project method to an object. In this case, the standard action is usually executed after the method and 4D uses this action to enable/disable the object according to the current context. When an object is deactivated, the associated project method cannot be executed. @@ -214,7 +214,7 @@ You can assign both a standard action and a project method to an object. In this |Name|Data Type|Possible Values| |---|---|---| -|action|string |The name of a [valid standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html).| +|action|string |The name of a valid [standard action](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) or [4D Write Pro standard action](../WritePro/user-legacy/defining-a-4d-write-pro-area.md#standard-actions). | #### Objects Supported diff --git a/versioned_docs/version-21/FormObjects/properties_Entry.md b/versioned_docs/version-21/FormObjects/properties_Entry.md index 92f23435d1a346..b1fa931fbd606f 100644 --- a/versioned_docs/version-21/FormObjects/properties_Entry.md +++ b/versioned_docs/version-21/FormObjects/properties_Entry.md @@ -32,7 +32,7 @@ Allows the user access to a standard context menu in the object when the form is For a picture type [input](input_overview.md), in addition to standard editing commands (Cut, Copy, Paste and Clear), the menu contains the **Import...** command, which can be used to import a picture stored in a file, as well as the **Save as...** command, which can be used to save the picture to disk. The menu can also be used to modify the display format of the picture: the **Truncated non-centered**, **Scaled to fit** and **Scaled to fit centered prop.** options are provided. The modification of the [display format](properties_Display.md#picture-format) using this menu is temporary; it is not saved with the record. -For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md), in addition to standard editing commands, the context menu provides the following commands: +For a [multi-style](properties_Text.md#multi-style) text type [input](input_overview.md) or [listbox column](listbox_overview.md#list-box-columns), in addition to standard editing commands, the context menu provides the following commands: - **Fonts...**: displays the font system dialog box - **Recent fonts**: displays the names of recent fonts selected during the session. The list can store up to 10 fonts (beyond that, the last font used replaces the oldest). By default, this list is empty and the option is not displayed. You can manage this list using the `SET RECENT FONTS` and `FONT LIST` commands. diff --git a/versioned_docs/version-21/Notes/updates.md b/versioned_docs/version-21/Notes/updates.md index 98124657dd0b0f..f532793e368d5b 100644 --- a/versioned_docs/version-21/Notes/updates.md +++ b/versioned_docs/version-21/Notes/updates.md @@ -319,7 +319,7 @@ If your 4D applications use TLS connections, it is recommended that you upgrade ## 4D 20.x LTS -See [**Release Notes for 4D 20.x LTS**](../../versioned_docs/version-20/Notes/updates.md). +See [**Release Notes for 4D 20.x LTS**](../20/Notes/updates). diff --git a/versioned_docs/version-21/ORDA/entities.md b/versioned_docs/version-21/ORDA/entities.md index a1c8f8cca61cba..164a77b603b698 100644 --- a/versioned_docs/version-21/ORDA/entities.md +++ b/versioned_docs/version-21/ORDA/entities.md @@ -477,7 +477,7 @@ Function event restrict() -> $result : cs.*DataClassName*Selection This function is called whenever an entity selection or an entity of the dataclass is requested. The filter is run once, when the entity selection is created. -The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`], etc. +The filter must return an entity selection of the dataclass. It can be an entity selection built upon a query, stored in the [`Storage`](../API/SessionClass.md#storage), etc. :::note diff --git a/versioned_docs/version-21/ORDA/orda-events.md b/versioned_docs/version-21/ORDA/orda-events.md index 51552b941fda8c..f661164ca4e23c 100644 --- a/versioned_docs/version-21/ORDA/orda-events.md +++ b/versioned_docs/version-21/ORDA/orda-events.md @@ -1,6 +1,6 @@ --- id: orda-events -title: Events +title: Entity Events ---
    History @@ -12,7 +12,7 @@ title: Events
    -ORDA events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. +Entity events are functions that are automatically invoked by ORDA each time entities and entity attributes are manipulated (added, deleted, or modified). You can write very simple events, and then make them more sophisticated. You cannot directly trigger event function execution. Events are called automatically by ORDA based on user actions or operations performed through code on entities and their attributes. @@ -20,7 +20,7 @@ You cannot directly trigger event function execution. Events are called automati :::tip Related blog post -[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-data-persistence-actions) +[ORDA – Handle an event-driven logic during data persistence actions](https://blog.4d.com/orda-handle-an-event-driven-logic-during-database-operations) ::: @@ -29,7 +29,7 @@ You cannot directly trigger event function execution. Events are called automati :::info Compatibility note -ORDA events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. +ORDA entity events in the datastore are equivalent to triggers in the 4D database. However, actions triggered at the 4D database level using the 4D classic language commands or standard actions do not trigger ORDA events. ::: @@ -60,7 +60,7 @@ ORDA [`constructor()`](./ordaClasses.md#class-constructor) functions are always ::: -With other remote configurations (i.e. Qodly applications, [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). +With other remote configurations (i.e. [Qodly applications](https://developer.4d.com/qodly), [REST API requests](../REST/REST_requests.md), or requests through [`Open datastore`](../commands/open-datastore.md)), the `touched()` event function is always executed **server-side**. It means that you have to make sure the server can "see" that an attribute has been touched to trigger the event (see below). ### Summary table @@ -122,7 +122,7 @@ When an error occurs in an event, the other events are stopped at the first rais |errCode|Integer|Same as for [`Last errors`](../commands/last-errors.md) command|Yes| |message|Text|Same as for [`Last errors`](../commands/last-errors.md) command|Yes| |extraDescription|Object|Free information to set up|Yes| -|seriousError|Boolean|Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • |Yes (default is false)| +|seriousError|Boolean|Used only with validate events (see below).
  • `True`: creates a [serious (unpredictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) and triggers an exception. Adds the `dk status serious validation error` status
  • `False`: creates only a [silent (predictable) error](../Concepts/error-handling.md#predictable-vs-unpredictable-errors). Adds the `dk status validation failed` status
  • |Yes (default is false)| |componentSignature|Text|Always "DBEV"|No| - [Serious errors](../Concepts/error-handling.md#predictable-vs-unpredictable-errors) are stacked in the `errors` collection property of the **Result object** returned by the [`save()`](../API/EntityClass.md#save) or [`drop()`](../API/EntityClass.md#drop) functions. @@ -159,7 +159,7 @@ This event is triggered as soon as the 4D Server / 4D engine can detect a modifi - the user sets a value on a 4D form, - the 4D code makes an assignment with the `:=` operator. The event is also triggered in case of self-assignment (`$entity.attribute:=$entity.attribute`). - in **client/server without the `local` keyword**: some 4D code that makes an assignment with the `:=` operator is [executed on the server](../commands-legacy/execute-on-server.md). -- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.qodly.com/docs)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. +- in **client/server without the `local` keyword**, in **[Qodly application](https://developer.4d.com/qodly)** and **[remote datastore](../commands/open-datastore.md)**: the entity is received on 4D Server while calling an ORDA function (on the entity or with the entity as parameter). It means that you might have to implement a *refresh* or *preview* function on the remote application that sends an ORDA request to the server and triggers the event. - with the REST server: the value is received on the REST server with a [REST request](../REST/$method.md#methodupdate) (`$method=update`) @@ -379,26 +379,21 @@ It is not recommended to update the entity within this function (using `This`). #### Example -In this example, the user is not allowed to save a product with a margin lower than the average. In case of an invalid price attribute, you return an error object and thus, stop the save action. +In this example, it is not allowed to save a product with a margin lower than 50%. In case of an invalid price attribute, you return an error object and thus, stop the save action. ```4d // ProductsEntity class +// +// validateSave event at attribute level Function event validateSave margin($event : Object) : Object var $result : Object -var $marginAverage : Real -$marginAverage:=ds.Products.query("category= :1"; This.category).average("margin") - -If (This.margin<$marginAverage) - $result:={\ - errCode: 1; \ - message: "The margin of this product ("+String(This.margin)+") is under the average"; \ - extraDescription: {\ - info: "For the "+This.category+" category the margin average is: "+String($marginAverage)};\ - fatalError: False} +//The user can't create a product whose margin is < 50% +If (This.margin<50) + $result:={errCode: 1; message: "The validation of this product failed"; \ + extraDescription: {info: "The margin of this product ("+String(This.margin)+") is lower than 50%"}; seriousError: False} End if - return $result ``` @@ -441,32 +436,35 @@ To stop the action, the code of the function must return an [error object](#erro #### Example -When a product is saved, some information is logged to an external system which may be unavailable. +When a file is saved on disk, catch errors related to disk space for example. ```4d -Function event saving($event : Object) : Object +// ProductsEntity class +// saving event at attribute level +Function event saving userManualPath($event : Object) : Object -var $result; $status : Object -var $log : cs.Entity -var $remote : 4D.DataStoreImplementation - -Try - $remote:=Open datastore({hostname: "events@acme.com"}; "logs") - $log:=$remote.Logs.new() - $log.productId:=This.ID - $log.stamp:=Timestamp - $log.event:="Created by "+Current user() - $status:=$log.save() -Catch - $result:={\ - errCode: Last errors.last().errCode;\ - message: Last errors.last().message; \ - extraDescription: {info: "The external Logs can't be reached"}} -End try +var $result : Object +var $userManualFile : 4D.File +var $fileCreated : Boolean + +If (This.userManualPath#"") + $userManualFile:=File(This.userManualPath) + + // The user manual document file is created on the disk + // This may fail if no more space is available + Try + $fileCreated:=$userManualFile.create() + Catch + // No more room on disk for example + $result:={/ + errCode: 1; message: "Error during the save action for this product"; / + extraDescription: {info: "There is no available space on disk to store the user manual"}/ + } + End try +End if return $result - ``` @@ -490,30 +488,25 @@ The function receives an [*event* object](#event-parameter) as parameter. - Throwing an [error object](#error-object) is **not supported** by this function. -#### Example 1 - -If an error occurred in the above saving event, the product is recorded in the ProductsInFailure dataclass so an employee can review it later. +#### Example +If an error occurred in the above saving event, the attribute value is reset accordingly in the `afterSave` event: ```4d // ProductsEntity class Function event afterSave($event : Object) -var $failure : cs.ProductsInFailureEntity -var $status : Object - - // $event.status.errors is filled if the error comes from a validateSave event If (($event.status.success=False) && ($event.status.errors=Null)) - $failure:=ds.ProductsInFailure.new() - $failure.name:=This.name - $failure.category:=This.category - $failure.costPrice:=This.costPrice - $failure.retailPrice:=This.retailPrice - $failure.reason:="Error during the save action" - $failure.stamp:=Timestamp - $status:=$failure.save() -End if - + // $event.status.errors is filled if the error comes from the validateSave event + + // The userManualPath attribute has not been properly saved + // Its value is reset + If ($event.savedAttributes.indexOf("userManualPath")=-1) + This.userManualPath:="" + This.status:="KO" + End if + +End if ``` @@ -546,44 +539,24 @@ This event is triggered **before** the entity is actually dropped, allowing you To stop the action, the code of the function must return an [error object](#error-object). -#### Example 1 +#### Example -Products can be deleted only if they have been flagged TO DELETE. +In this example, it is not allowed to drop a product that is not labelled "TO DELETE". In this case, you return an error object and thus, stop the drop action. ```4d - //ProductsEntity class -Function event validateDrop status($event : Object) : Object - -If (This.status != "TO DELETE") - - var $result:= New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={attribute; $event.attributeName; info: "The status must be TO DELETE"} - $result.fatalError:=False - return $result -End if -``` +// ProductsEntity class -#### Example 2 +Function event validateDrop status($event : Object) : Object -The user can delete products if they are flagged as "TO DELETE" and if their creation year is < current year -3. +var $result : Object -```4d - //ProductsEntity class -Function event validateDrop($event : Object) : Object - -var $yearOffSet : Integer -$yearOffSet:=Year of(Current date)-3 - -If ((This.status != "TO DELETE") || (Year of(This.creationDate) >= $yearOffSet)) - var $result:=New object() - $result.errCode:=1 - $result.message:="The record can't be deleted" - $result.extraDescription:={info: "The status must be TO DELETE and the creation year must be lower than " + String($yearOffSet)} - $result.fatalError:=False - return $result +// Products must be marked as TO DELETE to be dropped +If (This.status#"TO DELETE") + $result:={errCode: 1; message: "You can't drop this product"; \ + extraDescription: {info: "This product must be marked as To Delete"}; seriousError: False} End if + +return $result ``` @@ -620,54 +593,31 @@ The business logic should raise errors which cannot be detected during the `vali To stop the action, the code of the function must return an [error object](#error-object). -#### Example 1 +#### Example -When dropping an order with *totalPrice >= 500*, a log file is updated. +Here is an example of `dropping` event at entity level: ```4d - //OrderEntity class -Function event dropping totalPrice ($event : Object) - -var $log : cs.LogEntity -var $status: Object - -If (This.totalPrice >= 500) - - $log:=ds.Log.new() - $log.orderID:=This.ID - $log.orderPrice:=This.totalPrice - $log.event:="Drop" - $log.creationDate:=Current date() - $status:=$log.save() - - If($status.success=False) - throw ({errCode: 1; message: "Error while updating the log file"}) - End if -End if - -``` - -#### Example 2 - -When a product is dropped, a log file is updated. +// ProductsEntity class +Function event dropping($event : Object) : Object -```4d - //ProductsEntity class -Function event dropping ($event : Object) +var $result : Object +var $userManualFile : 4D.File -var $log : cs.LogEntity -var $status: Object +$userManualFile:=File(This.userManualPath) -$log:=ds.Log.new() -$log.productID:=This.ID -$log.productPrice:=This.price -$log.event:="Drop" -$log.creationDate:=Current date() -$status:=$log.save() + // When dropping a product, its user manual is also deleted on the disk + // This action may fail +Try + If ($userManualFile.exists) + $userManualFile.delete() + End if +Catch + // Dropping the user manual failed + $result:={errCode: 1; message: "Drop failed"; extraDescription: {info: "The user manual can't be dropped"}} +End try -If($status.success=False) - throw ({errCode: 1; message:"Error while updating the log file"}) -End if +return $result ``` ### `Function event afterDrop` @@ -694,50 +644,21 @@ The dropped entity is referenced by `This` and still exists in memory. ::: -#### Example 1 +#### Example -Send a mail to the customer with the details of the dropped order. +If the drop action failed, then the product must be checked manually: ```4d - //OrderEntity class -Function event afterDrop ($event : Object) - -var $oAuth2 : cs.NetKit.OAuth2Provider -var $google : cs.NetKit.Google - - //$param contains clientId, secretId... -$oAuth2:=cs.NetKit.OAuth2Provider.new($param) -$google:=cs.NetKit.Google.new($oAuth2; {mailType: "JMAP"}) - - //Email creation -$email:=New object -$email.from:="youremail@gmail.com" -$email.to:="destinationmail@mail.com" -$email.subject:="Your order is cancelled" -$email.textBody:="Products numbers: " + This.products.number.join("-") - - //Email sending -$status:=$google.mail.send($email) -``` - -#### Example 2 +Function event afterDrop($event : Object) -Create an action to do because there were errors in the [`dropping()`](#function-event-dropping) event. +var $status : Object -```4d - //ProductEntity class -Function event afterDrop ($event : Object) - -var $action: cs.ActionEntity -var $status: Object - - // The drop action failed -If($event.dropStatus = "failed") - $action:=ds.Action.new() - $action.label:=Last errors.first().message //message is "Error while dropping product XXX" - $action.status:="TO CHECK" - $status:=$action.save() -End if +If (($event.status.success=False) && ($event.status.errors=Null)) + //$event.status.errors is filled + //if the error comes from the validateDrop event + This.status:="Check this product - Drop action failed" + $status:=This.save() +End if ``` diff --git a/versioned_docs/version-21/Project/components.md b/versioned_docs/version-21/Project/components.md index fb4b3a96599988..0cfd64f9f98038 100644 --- a/versioned_docs/version-21/Project/components.md +++ b/versioned_docs/version-21/Project/components.md @@ -5,7 +5,7 @@ title: Dependencies The 4D [project architecture](../Project/architecture.md) is modular. You can provide additional functionalities to your 4D projects by installing [**components**](Concepts/components.md) and [**plug-ins**](../Concepts/plug-ins.md). Components are made of 4D code, while plug-ins can be [built using any language](../Extensions/develop-plug-ins.md). -You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/search?q=4d-component&type=Repositories). +You can [develop](../Extensions/develop-components.md) and [build](../Desktop/building.md) your own 4D components, or download public components shared by the 4D community that [can be found on GitHub](https://github.com/topics/4d-component). Once installed in your 4D environment, extensions are handled as **dependencies** with specific properties. @@ -350,7 +350,7 @@ When you add or update a component (whether [local](#local-components) or [from The Dependency manager reads each component's own `dependencies.json` file and recursively installs all required dependencies, respecting version specifications whenever possible. This eliminates the need to manually identify and add nested dependencies one by one. -- **Conflict resolution**: When multiple dependencies require [different versions](#) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. +- **Conflict resolution**: When multiple dependencies require [different versions](#defining-a-github-dependency-version-range) of the same component, the Dependency manager automatically attempts to resolve conflicts by finding a version that satisfies all overlapping version ranges. If a primary dependency conflicts with secondary dependencies, the primary dependency takes precedence. :::note diff --git a/versioned_docs/version-21/REST/$filter.md b/versioned_docs/version-21/REST/$filter.md index 29bf2c20c502e8..50623cde869c9e 100644 --- a/versioned_docs/version-21/REST/$filter.md +++ b/versioned_docs/version-21/REST/$filter.md @@ -101,9 +101,9 @@ The *vectorComparison* parameter is a collection of the following elements: |Property|Type|Description| |---|---|---| -|[].vector|Collection of objects)|Mandatory. A collection that represents the vector to compare| -|[].metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine distance between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors.| -||[].threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.| +|[].vector|Collection of numbers|Mandatory. A collection that represents the vector to compare| +|[].metric|Text|Optional. [Vector computation](../API/VectorClass.md#understanding-the-different-vector-computations) to use for the query. Supported values:
  • "cosine" (default if omitted): calculates the cosine similarity between vectors.
  • "dot": calculates the dot similarity of vectors.
  • "euclidean": calculates the Euclidean distance between vectors.| +|[].threshold|Real|Optional (default: 0.5). A threshold value used to filter vector comparisons based on their cosine, dot or euclidean similarity score according to the selected "metric". It is highly recommended to choose a similarity that best fits your specific use case for optimal results.| Only a subset of **comparator** symbols are supported with vector comparisons. Note that they compare results to the threshold value: diff --git a/versioned_docs/version-21/WebServer/sessions.md b/versioned_docs/version-21/WebServer/sessions.md index 44314a3c4fd8da..d0a2bd033577be 100644 --- a/versioned_docs/version-21/WebServer/sessions.md +++ b/versioned_docs/version-21/WebServer/sessions.md @@ -209,9 +209,9 @@ Else End if ``` -:::note +:::tips Related blog posts -For more examples, please refer to the [Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) bog post. +[Scalable sessions for advanced web applications](https://blog.4d.com/scalable-sessions-for-advanced-web-applications/) ::: diff --git a/versioned_docs/version-21/WritePro/user-legacy/defining-a-4d-write-pro-area.md b/versioned_docs/version-21/WritePro/user-legacy/defining-a-4d-write-pro-area.md index c00f2fc291c7e2..360595e057011e 100644 --- a/versioned_docs/version-21/WritePro/user-legacy/defining-a-4d-write-pro-area.md +++ b/versioned_docs/version-21/WritePro/user-legacy/defining-a-4d-write-pro-area.md @@ -244,7 +244,7 @@ The following standard actions are available with 4D Write Pro areas. ### Other actions -Several other standard actions are available in 4D forms and can be used in 4D Write Pro areas: +[Several other standard actions](https://doc.4d.com/4Dv20/4D/20.2/Standard-actions.300-6750239.en.html) are available in 4D forms and can be used in 4D Write Pro areas: * *Edit actions*, such as copy/paste actions. * *Font* actions, such as fontBold or fontSize. diff --git a/versioned_docs/version-21/aikit/Classes/OpenAI.md b/versioned_docs/version-21/aikit/Classes/OpenAI.md index 3d1dcd75409a18..9fded0091c08d7 100644 --- a/versioned_docs/version-21/aikit/Classes/OpenAI.md +++ b/versioned_docs/version-21/aikit/Classes/OpenAI.md @@ -11,8 +11,8 @@ The `OpenAI` class provides a client for accessing various OpenAI API resources. | Property Name | Type | Description | Optional | |-------------------|-------|-----------------------------------|----------| -| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | No for OpenAI | -| `baseURL` | Text | Base URL for OpenAI API requests. | Yes | +| `apiKey` | Text | Your [OpenAI API Key](https://platform.openai.com/api-keys). | Can be required by the provider | +| `baseURL` | Text | Base URL for OpenAI API requests. | Yes (if omitted = use OpenAI provider)| | `organization` | Text | Your OpenAI Organization ID. | Yes | | `project` | Text | Your OpenAI Project ID. | Yes | diff --git a/versioned_docs/version-21/aikit/compatible-openai.md b/versioned_docs/version-21/aikit/compatible-openai.md index 48db88a10f7216..847aec12b412c1 100644 --- a/versioned_docs/version-21/aikit/compatible-openai.md +++ b/versioned_docs/version-21/aikit/compatible-openai.md @@ -7,7 +7,7 @@ title: Providers Many AI providers propose an OpenAI-like API, so you can use this project to connect to them. -To do so you just have to change the original `baseURL` by the provider one and use their api key if needed. +To do so you just have to set the `baseURL` to the provider one and use their api key if needed. ```4d $client.baseURL:="https://api.mistral.ai/v1" @@ -17,7 +17,7 @@ Some of them ## Remote -|Provider|Base url| +|Provider|baseURL| |-|-| |https://mistral.ai/|https://api.mistral.ai/v1| |https://www.deepseek.com/|https://api.deepseek.com| @@ -31,7 +31,7 @@ Some of them ## Local -| Provider | Default base url | Doc | +| Provider | Default baseURL | Doc | |------------------ |---------------------------|-----------------------------------------------| |https://ollama.com/ | http://127.0.0.1:11434/v1 | https://ollama.com/blog/openai-compatibility | |https://lmstudio.ai/| http://localhost:1234/v1 | https://lmstudio.ai/docs/api/endpoints/openai | diff --git a/versioned_docs/version-21/aikit/overview.md b/versioned_docs/version-21/aikit/overview.md index eb664c46d783e6..e9772f39bc5ba5 100644 --- a/versioned_docs/version-21/aikit/overview.md +++ b/versioned_docs/version-21/aikit/overview.md @@ -22,7 +22,7 @@ First of all, initialize the OpenAI client using your API key var $client:=cs.AIKit.OpenAI.new("your api key") ``` -For a [compatible provider](compatible-openai.md) API, you can configure the server URL by setting the `baseURL` parameter. +For a [compatible provider](compatible-openai.md) API, you need to configure the server URL by setting the `baseURL` parameter. ```4d var $client:=cs.AIKit.OpenAI.new({apiKey: "your api key"; baseURL: "https://your.server.ai"}) @@ -44,7 +44,7 @@ var $result:=$client..() The `$result` contains the `HTTPRequest`, a `success` status, a collection of `errors` and more. See [OpenAIResult](Classes/OpenAIResult.md) -See some examples bellow. +See some examples below. #### Chat diff --git a/versioned_docs/version-21/assets/en/FormEditor/fluent-dark.png b/versioned_docs/version-21/assets/en/FormEditor/fluent-dark.png new file mode 100644 index 00000000000000..fe35b22f4c5438 Binary files /dev/null and b/versioned_docs/version-21/assets/en/FormEditor/fluent-dark.png differ diff --git a/versioned_docs/version-21/assets/en/FormEditor/fluent.png b/versioned_docs/version-21/assets/en/FormEditor/fluent.png new file mode 100644 index 00000000000000..f8ece4b7fb5fbb Binary files /dev/null and b/versioned_docs/version-21/assets/en/FormEditor/fluent.png differ diff --git a/versioned_docs/version-21/commands-legacy/array-to-list.md b/versioned_docs/version-21/commands-legacy/array-to-list.md index d3247a29055ca8..0464e9802e30fd 100644 --- a/versioned_docs/version-21/commands-legacy/array-to-list.md +++ b/versioned_docs/version-21/commands-legacy/array-to-list.md @@ -27,7 +27,7 @@ The optional *itemRefs* parameter, if specified, must be a numeric array synchro * This command only lets you set first-level items of the list. * When you use this command with a choice list, it modifies the structure of the application (lists are saved in the structure file), so any modifications made locally are lost when the structure file is updated in production. -* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project or a component. +* This command cannot be used with a choice list in a structure loaded in **read only**, such as a .4dz project (which includes [remote projects](../Desktop/clientServer.md)) or a component. You can use ARRAY TO LIST to build a list based on the elements of an array. However, to free yourself from these restrictions and make full use of the lists of values, we recommend using the commands of the *Hierarchical Lists* theme. diff --git a/versioned_docs/version-21/commands-legacy/on-server-open-connection-database-method.md b/versioned_docs/version-21/commands-legacy/on-server-open-connection-database-method.md index 5a16cc653a0813..2a254f1ab88314 100644 --- a/versioned_docs/version-21/commands-legacy/on-server-open-connection-database-method.md +++ b/versioned_docs/version-21/commands-legacy/on-server-open-connection-database-method.md @@ -125,7 +125,11 @@ The following example prevents any new connection from 2 to 4 A.M.   // On Server Open Connection Database Method  #DECLARE($user: Integer; $id: Integer; $toIgnore : Integer) -> $result : Integer   - If((?02:00:00?<=Current time)&(Current time + If((?02:00:00?<=Current time)&(Current time