LFDocumentContentBuilder에 대한 스크립트 도우미 함수 읽기

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기7분
  • LFDocumentContentBuilder는 문서 콘텐츠를 빌드하는 유틸리티 함수를 제공합니다. 이러한 함수를 사용하면 표준 테이블을 사용하든 그렇지 않든 관계없이 모든 아티팩트에서 번역 가능한 콘텐츠를 추출하는 논리를 작성할 수 있습니다.

    initialize (version, targetLanguage, sys_id, tableName)

    이 함수를 LFDocumentContentBuilder 의 생성자로 사용하고 다음 매개 변수를 포함합니다.
    이름 유형 설명
    버전 문자열 작성할 문서 컨텐츠의 버전 유형입니다. 의 경우 Xanadu이 값은 v1입니다.
    targetLanguage 문자열 현지화 작업 문서 콘텐츠의 대상 언어입니다.

    대상 언어는 읽기 스크립트 함수 인수에서 사용할 수 있는 언어와 같습니다.

    Sys_id 문자열 아티팩트 기록의 sys_id입니다.
    tableName 문자열 아티팩트 기록의 테이블 이름입니다.

    processString(문자열, 그룹 이름, 레이블)

    이 함수를 사용하여 지정된 문자열에 대한 문서 콘텐츠에 LFDocumentContentElement를 추가하고 다음 매개 변수를 포함합니다.
    이름 유형 설명
    문자열 문자열 문서 컨텐츠 항목이 작성되는 값입니다.
    groupName 문자열 요소가 속해야 하는 그룹의 이름입니다.
    레이블 문자열 작성된 요소의 고유 레이블 식별자입니다.

    processStringArray(문자열 배열, 그룹 이름, 레이블)

    이 함수를 사용하여 지정된 문자열에 대한 문서 콘텐츠에 요소(LFDocumentContentElement의 개체)를 추가하고 다음 매개 변수를 포함합니다.
    이름 유형 설명
    문자열 배열 문자열 목록 문서 컨텐츠 항목이 생성되는 값의 목록입니다.
    groupName 문자열 이 문자열이 속한 그룹의 이름입니다.
    레이블 문자열 이러한 문자열의 고유 레이블 식별자입니다.

    processScript(scriptContent, groupName, 레이블)

    이 함수를 사용하여 제공된 스크립트에서 getMessage, gs.getMessage 또는 gs.getMessageLang의 입력으로 존재하는 문자열에 대한 문서 컨텐츠의 요소를 추가합니다. 여기에는 다음과 같은 매개 변수가 있습니다.
    이름 유형 설명
    스크립트 콘텐츠 문자열 getMessage, gs.getMessage 또는 gs.getMessageLang의 입력으로 존재하는 문자열을 가져오기 위해 처리할 스크립트입니다.
    groupName 문자열 이 입력의 그룹 이름입니다.
    레이블 문자열 이 입력에 대한 고유 레이블 식별자입니다.
    예:
    var documentContentBuilder = new LFDocumentContentBuilder("v1", language, sysId, tableName);
    Var name = "name";
    documentContentBuilder .processScript("gs.getMessage('Hello {0}, How are you', name)", "Script_Group", "Script_Label");

    processTranslatableFieldsForSingleRecord(glideRecord, 그룹 이름)

    이 함수를 사용하여 모든 번역 가능 필드에 대한 문서 컨텐츠에서 지정된 glideRecord 객체에 대한 요소를 작성합니다. 번역 가능한 필드는 translated_field, translated_text 또는 translated_html 유형일 수 있습니다. 여기에는 다음 매개 변수가 포함됩니다.
    이름 유형 설명
    glideRecord GlideRecord 번역 가능 필드에 대해 처리할 GlideRecord 객체입니다. GlideRecord는 유효한 테이블 기록을 가리켜야 합니다.
    groupName 문자열 이 입력의 그룹 이름입니다.

    processTranslatableFieldsForMultipleRecords(tableName, encodedQuery, groupName)

    이 함수를 사용하여 지정된 tableName 및 encodedQuery에 대해 정규화된 모든 레코드를 가져오고 번역 가능한 모든 필드에 대한 문서 콘텐츠에 요소(LFDocumentContentElement의 개체)를 추가합니다. 여기에는 다음 매개 변수가 포함됩니다.
    이름 유형 설명
    tableName 문자열 기록을 가져올 테이블입니다.
    encodedQuery 문자열 processTranslatableFieldsForSingleRecord 테이블의 기록을 필터링하기 위한 인코딩된 쿼리입니다.
    groupName 문자열 이 입력의 그룹 이름입니다.

    processElement()를 호출합니다.

    이 함수를 사용하여 LFDocumentContent 개체에 요소(LFDocumentContentElement의 개체)를 추가합니다.
    요소 LFDocument콘텐츠 요소 문서 컨텐츠에 추가할 요소입니다.

    빌드()

    LFDocumentContent 개체를 반환합니다.

    주:
    getFinalJSON 함수는 릴리스에서 Xanadu 더 이상 사용되지 않으며 build() 함수를 사용하는 것이 좋습니다.
    문서 콘텐츠를 빌드하는 샘플 스크립트입니다.
    getTranslatableContent: function(params) {
        var tableName = params.tableName;
        var sysId = params.sysId;
        var language = params.language;
        var lfDocumentContentBuilder = new global.LFDocumentContentBuilder("v1", language, sysId, tableName);
        // This will create a new object of LFDocumentContent and stores it internally
        lfDocumentContentBuilder.processTranslatableFieldsForSingleRecord(gr, "Basic Info");
        var field = LFDocumentContentHelper.createField(originalValue, translatedValue);
        field.setTextType(LFDocumentContentHelper.PLAIN_TEXT_TYPE);
        // All the other relevant attributes can be set
        var element = LFDocumentContentHelper.createElement(groupName, label);
        element.addField(field);
        lfDocumentContentBuilder.processElement(element); // Adds element to the LFDocumentContent object
        return lfDocumentContentBuilder.build(); // return the LFDocumentContent object
    }
    

    LFDocumentContent에서 데이터를 추출하는 샘플 스크립트

    saveTranslatedContent: function(documentContent) {
        // LFDocumentContent object is passed as an argument to the saveTranslatedContent 
        var targetLanguage = documentContent.getLanguage();
        var version = documentContent.getVersion();
        var elements = documentContent.getElements(); // Array of LFDocumentContentElement objects
        for (var idx = 0; idx < elements.length; idx++) {
            var element = elements[idx];
            var groupName = element.getGroupName();
            var fields = element.getFields(); // Array of LFDocumentContentField objects
            for (var fieldIdx = 0; fieldIdx < fields.length; fieldIdx++) {
                var field = fields[fieldIdx];
                var originalValue = field.getOriginalValue();
                var translatedValue = field.getTranslatedValue();
                // Get all the other required members and process them appropriately
            }
        }
    }