Crear un informe en el idioma del destinatario
Además de considerar el idioma del usuario que ejecuta el informe, también debe considerar el idioma del destinatario. Por ejemplo, si está ejecutando un informe de Factura de venta y no es necesario que se genere en el idioma del usuario que está ejecutando el informe, en su lugar lo generaría en el idioma de la persona (o empresa) a quien se enviará el informe.
En el caso un informe de Factura de venta y muchos otros informes de documentos, es probable que este idioma sea el del cliente del documento. Este idioma puede ser diferente, según el cliente. Por lo tanto, si imprime varias facturas a la vez, el informe debe cambiar su idioma, según el registro que se recupere actualmente del conjunto de datos. El informe debe generar un conjunto de datos multilingüe.
Por esta razón, en este caso, no puede usar IncludeCaption o la sección Etiquetas, porque las etiquetas son fijas y no se pueden cambiar durante la generación del conjunto de datos. En lugar de eso, deberá añadir manualmente títulos de tabla y campo en el conjunto de datos y, luego, agregar etiquetas como variables dentro del conjunto de datos.
Esta técnica aumentará el tamaño del conjunto de datos, porque, por cada campo que deba ser multilingüe, se agregará un campo al conjunto de datos. El conjunto de datos constará de más columnas, por lo que este factor podría tener un impacto en el rendimiento del informe.
Los métodos disponibles para ayudarle a generar un conjunto de datos multilingüe son:
FieldCaption(): obtiene el título actual del campo especificado como una cadena.
Caption := Record.FieldCaption(Field: Any);
TableCaption(): obtiene el título actual de una tabla como una cadena.
Caption := Record.TableCaption();
Para declarar una etiqueta como variable, puede utilizar la siguiente sintaxis:
var
a: Label 'Label Text', Comment = 'Foo', MaxLength = 999, Locked = true;
El tipo de datos de Etiqueta se usa en archivos .XLF para traducciones.
Normalmente, en un informe de documento, el siguiente código se mostrará en el desencadenador OnAfterGetRecord() en la tabla de encabezado:
CurrReport.Language := Language.GetLanguageIdOrDefault("Language Code");
La tabla de encabezado debe incluir el campo Código de idioma, que contiene el código de idioma del destinatario del documento. La función GetLanguageIdOrDefault() obtiene el id. de idioma en función del código, o utilizará de forma predeterminada el idioma del usuario actual.
El método CurrReport.Language() obtiene o establece la configuración de idioma actual para el informe.
Revise el siguiente ejemplo de un informe que genera una lista de clientes. El informe tiene la siguiente sintaxis:
report 50107 CustomerListLangRecReport
{
UsageCategory = ReportsAndAnalysis;
ApplicationArea = All;
Caption = 'Customer List Report Language Recipient';
AdditionalSearchTerms = 'Customer List Report Language Recipient';
RDLCLayout = 'CustomerListReportLangRep.rdl';
WordLayout = 'CustomerListReportLangRep.docx';
DefaultLayout = RDLC;
dataset
{
dataitem(Customer; Customer)
{
column(CustomerNo; "No.")
{
}
column(CustomerNoCptn; fieldcaption("No."))
{
}
column(CustomerName; Name)
{
}
column(CustomerNameCptn; fieldcaption(Name))
{
}
column(CustomerLanguageCode; "Language Code")
{
}
column(CustomerLanguageCodeCptn; fieldcaption("Language Code"))
{
}
column(City; City)
{
}
column(CityCptn; fieldcaption(City))
{
}
column(BalanceLCY; "Balance (LCY)")
{
}
column(BalanceLCYCptn; fieldcaption("Balance (LCY)"))
{
}
trigger OnAfterGetRecord()
begin
CurrReport.Language := Language.GetLanguageIdOrDefault("Language Code");
end;
}
}
var
Language: Codeunit Language;
ReportTitle: Label 'Report Title', Comment = 'Foo', MaxLength = 999, Locked = true;
}
Después de recuperar el registro del cliente de la tabla Cliente, el informe verifica el código de idioma del cliente y luego lo usa para establecer el idioma del informe. Esta acción cambia el resultado de la función fieldcaption. En los campos del conjunto de datos, se han agregado columnas separadas para los subtítulos.
El diseño del informe debe parecerse al de la siguiente imagen.
En el diseño del informe, en el encabezado, se usan expresiones para obtener los valores Cptn. Las filas de detalles muestran que está obteniendo los valores normales. Para asegurarse de que puede agrupar a los clientes por número, la tabla se ha colocado en un contenedor de lista.
Al ejecutar el informe, será similar al mostrado en el siguiente ejemplo.