C

Qt Quick Ultralite translation Example

cmake_minimum_required (VERSION 3.15)

project(translation VERSION 0.0.1 LANGUAGES C CXX ASM)
if (NOT TARGET Qul::Core)
    find_package(Qul)
endif()

#
# Setup qml modules.
#
qul_add_qml_module(translation_fontconfig_static
    URI fontconfiguration
    OUTPUT_DIRECTORY
        ${CMAKE_CURRENT_BINARY_DIR}/translation_fontconfig_static
    QML_FILES
        "imports/fontconfigs/static/FontConfiguration.qml"
)
if(TARGET Qul::MonotypeSpark)
    qul_add_qml_module(translation_fontconfig_spark
        URI fontconfiguration
        OUTPUT_DIRECTORY
            ${CMAKE_CURRENT_BINARY_DIR}/translation_fontconfig_spark
        QML_FILES
            "imports/fontconfigs/spark/FontConfiguration.qml"
        )
endif()

# Set up a target that includes all bundled languages
qul_add_target(translation_all)

qul_add_resource(translation_all
    FILES
        japan-flag-small.png
        saudi-arabia-flag-small.png
        thai-flag-small.png
        latvia-flag-small.png
        usa-flag-small.png
        norway-flag-small.png
)

qul_target_qml_sources(translation_all translation.qml)
target_link_libraries(translation_all PRIVATE Qul::Controls translation_fontconfig_static)
app_target_setup_os(translation_all)
app_target_default_entrypoint(translation_all translation)
qul_target_embed_translations(translation_all translation.nb_NO.ts translation.lv_LV.ts translation.ja_JP.ts translation.ar_SA.ts translation.th_TH.ts)

# Set up a lv_LV-only target
qul_add_target(translation_lv)
qul_add_resource(translation_lv
    FILES
        japan-flag-small.png
        saudi-arabia-flag-small.png
        thai-flag-small.png
        latvia-flag-small.png
        usa-flag-small.png
        norway-flag-small.png
)

qul_target_qml_sources(translation_lv translation.qml)
target_link_libraries(translation_lv PRIVATE Qul::Controls translation_fontconfig_static)
app_target_setup_os(translation_lv)
app_target_default_entrypoint(translation_lv translation)
target_compile_definitions(translation_lv PRIVATE APP_DEFAULT_UILANGUAGE="lv_LV")
qul_target_embed_translations(translation_lv translation.lv_LV.ts OMIT_SOURCE_LANGUAGE)

# Qul ships some default fonts. Since they don't contain glyphs for
# all the characters that are needed for this application, set the
# QUL_FONT_FILES target property to add some fonts.
set(FONT_FILES
    "${CMAKE_CURRENT_SOURCE_DIR}/fonts/kosugi/Kosugi-Regular.ttf"
    "${CMAKE_CURRENT_SOURCE_DIR}/fonts/sarabun/Sarabun-Regular.ttf"
)
set_property(TARGET translation_all translation_lv APPEND PROPERTY QUL_FONT_FILES "${FONT_FILES}")

if(TARGET Qul::MonotypeSpark)
    # Set up Spark target
    qul_add_target(translation_spark)
    qul_add_resource(translation_spark
        FILES
            japan-flag-small.png
            saudi-arabia-flag-small.png
            thai-flag-small.png
            latvia-flag-small.png
            usa-flag-small.png
            norway-flag-small.png
    )

    set_target_properties(translation_spark
                          PROPERTIES
                              QUL_FONT_ENGINE "Spark"
                              QUL_DEFAULT_FONT_FAMILY "arabic-style-font"
                              QUL_FONT_CACHE_SIZE 1 # Disable the cache
                              QUL_FONT_FILES "${CMAKE_CURRENT_SOURCE_DIR}/fonts/monotype/TranslationsSampleFontmap.fmp")

    qul_target_qml_sources(translation_spark translation.qml)
    target_link_libraries(translation_spark PRIVATE Qul::Controls translation_fontconfig_spark)
    app_target_setup_os(translation_spark)
    app_target_default_entrypoint(translation_spark translation)
    qul_target_embed_translations(translation_spark translation.nb_NO.ts translation.lv_LV.ts translation.ja_JP.ts translation.ar_SA.ts translation.th_TH.ts)
endif()

if (QUL_BUILD_QMLPROJECT_EXAMPLES)
    # Set up a target that includes all bundled languages
    qul_add_target(translation_all_qmlproject QML_PROJECT translation_all.qmlproject)

    app_target_setup_os(translation_all_qmlproject)
    app_target_default_entrypoint(translation_all_qmlproject translation)

    # Set up a lv_LV-only target
    qul_add_target(translation_lv_qmlproject QML_PROJECT translation_lv.qmlproject)
    app_target_setup_os(translation_lv_qmlproject)
    app_target_default_entrypoint(translation_lv_qmlproject translation)
    target_compile_definitions(translation_lv_qmlproject PRIVATE APP_DEFAULT_UILANGUAGE="lv_LV")

    if(TARGET Qul::MonotypeSpark)
        # Set up Spark target
        qul_add_target(translation_spark_qmlproject QML_PROJECT translation_spark.qmlproject)
        app_target_setup_os(translation_spark_qmlproject)
        app_target_default_entrypoint(translation_spark_qmlproject translation)
    endif()
endif()