diff --git a/CMakeLists.txt b/CMakeLists.txt index 4cbad4b8b..9154dbd35 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,413 +1,466 @@ if(SAILFISHOS) cmake_minimum_required(VERSION 2.8.11) else(SAILfISHOS) cmake_minimum_required(VERSION 2.8.12) endif() project(gcompris-qt C CXX) # Set c++11 support include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11) set(my_cxx_flags "-std=c++11") elseif(COMPILER_SUPPORTS_CXX0X) set(my_cxx_flags "-std=c++0x") else() message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${my_cxx_flags}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${my_cxx_flags}") # enable qml debugging for DEBUG builds: set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DQT_QML_DEBUG") set(GCOMPRIS_MAJOR_VERSION 0) set(GCOMPRIS_MINOR_VERSION 70) set(GCOMPRIS_PATCH_VERSION 0) # Set the BUILD_DATE string(TIMESTAMP BUILD_DATE %Y%M) # cmake modules setup find_package(ECM 1.4.0 QUIET NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_SOURCE_DIR}/cmake/) set(CMAKE_PREFIX_PATH "${Qt5_DIR}/lib/cmake/Qt5") # KDE po to qm tools if(ECM_FOUND) include(ECMPoQmTools) if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ecm_install_po_files_as_qm(po) endif() endif(ECM_FOUND) if(CMAKE_SYSTEM_NAME STREQUAL Android) find_package(ECM) set(ANDROID 1) # TODO: possibly should be setup by toolchain one day set(QT_QMAKE_EXECUTABLE "${_qt5Core_install_prefix}/bin/qmake") # workaround until this fix is in released ECM if(ECM_VERSION VERSION_LESS "5.15.0") add_definitions(-DANDROID) endif() endif() # Set executable filename if(ANDROID) set(GCOMPRIS_EXECUTABLE_NAME GCompris) if("${ANDROID_ARCHITECTURE}" STREQUAL "x86") # We always want x86 to be a release above to arm one because the play # store want x86 to be pushed after arm. MATH(EXPR GCOMPRIS_MINOR_VERSION "${GCOMPRIS_MINOR_VERSION}+1") endif("${ANDROID_ARCHITECTURE}" STREQUAL "x86") elseif(SAILFISHOS) set(GCOMPRIS_EXECUTABLE_NAME harbour-gcompris-qt) +elseif(WIN32) + set(GCOMPRIS_EXECUTABLE_NAME GCompris) else() set(GCOMPRIS_EXECUTABLE_NAME gcompris-qt) endif() set(GCOMPRIS_VERSION ${GCOMPRIS_MAJOR_VERSION}.${GCOMPRIS_MINOR_VERSION}) # An integer value that represents the version of the application # Increase it at each release math(EXPR GCOMPRIS_VERSION_CODE "${GCOMPRIS_MAJOR_VERSION}*10000 + ${GCOMPRIS_MINOR_VERSION}*100 + ${GCOMPRIS_PATCH_VERSION}") # KDE po to qm tools if(ECM_FOUND) include(ECMPoQmTools) if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ecm_install_po_files_as_qm(po) endif() endif(ECM_FOUND) # prevent build in source directory if("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") message(SEND_ERROR "Building in the source directory is not supported.") message(FATAL_ERROR "Please remove the created \"CMakeCache.txt\" file, the \"CMakeFiles\" directory and create a build directory and call \"${CMAKE_COMMAND} \".") endif("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_SOURCE_DIR}") # Sailfish does not provide a recent Qt version if(SAILFISHOS) set(QT_REQUIRED_VERSION 5.2.2) else() set(QT_REQUIRED_VERSION 5.3.0) endif() find_package(Qt5 ${QT_REQUIRED_VERSION} REQUIRED Qml Quick Gui Multimedia Core Svg Xml XmlPatterns LinguistTools Sensors) find_package (KF5 QUIET COMPONENTS DocTools ) if(KF5_FOUND) include(KDEInstallDirs) if (ECM_VERSION VERSION_GREATER "1.6.0") add_subdirectory(images) install(FILES org.kde.gcompris.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR}) install(FILES org.kde.gcompris.desktop DESTINATION ${KDE_INSTALL_APPDIR}) endif() endif() FIND_PROGRAM(LCONVERT_EXECUTABLE lconvert-qt5 lconvert PATHS ${Qt5_DIR}/../../../bin/ /usr/local/bin /usr/bin/ NO_DEFAULT_PATH ) FIND_PROGRAM(LRELEASE_EXECUTABLE lrelease-qt5 lrelease PATHS ${Qt5_DIR}/../../../bin/ /usr/local/bin /usr/bin/ NO_DEFAULT_PATH ) #get_cmake_property(_variableNames VARIABLES) #foreach (_variableName ${_variableNames}) # message("${_variableName}=${${_variableName}}") #endforeach() set(ACTIVATION_MODE "no" CACHE STRING "Policy for activation [no|inapp|internal]") option(WITH_DEMO_ONLY "Include only demo activities" OFF) option(WITH_DOWNLOAD "Internal download" ON) if(WITH_DOWNLOAD) set(ANDROID_INTERNET_PERMISSION "") set(ANDROID_ACCESS_NETWORK_STATE_PERMISSION "") endif(WITH_DOWNLOAD) # Set output directory if(CMAKE_HOST_APPLE) set(_bundle_bin gcompris-qt.app/Contents/MacOS) set(_data_dest_dir bin/${_bundle_bin}/../Resources) elseif(ANDROID) set(_data_dest_dir android/assets) else() set(_data_dest_dir share/${GCOMPRIS_EXECUTABLE_NAME}) endif() if(ANDROID) # Android .so output set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/android/libs/${ANDROID_ABI}/) set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir} CACHE INTERNAL "" FORCE) set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir} CACHE INTERNAL "" FORCE) if(ACTIVATION_MODE STREQUAL "inapp") set(ANDROID_BILLING_PERMISSION "") set(ANDROID_PACKAGE "net.gcompris") else(ACTIVATION_MODE) set(ANDROID_PACKAGE "net.gcompris.full") endif() add_subdirectory(android) elseif(CMAKE_HOST_APPLE) # MacOSX build set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/translations CACHE INTERNAL "" FORCE) set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/rcc CACHE INTERNAL "" FORCE) else() # Desktop build set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(GCOMPRIS_TRANSLATIONS_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/translations CACHE INTERNAL "" FORCE) set(GCOMPRIS_RCC_DIR ${CMAKE_BINARY_DIR}/${_data_dest_dir}/rcc CACHE INTERNAL "" FORCE) endif(ANDROID) # Always create these folders add_custom_command( OUTPUT shareFolders COMMAND cmake -E make_directory ${GCOMPRIS_TRANSLATIONS_DIR} COMMAND cmake -E make_directory ${GCOMPRIS_RCC_DIR} ) add_custom_target( createShareFolders ALL DEPENDS shareFolders ) include(cmake/rcc.cmake) # Translations handling # Simple command calling the python script add_custom_command( OUTPUT retrievePoFilesFromSvn COMMAND python2 tools/l10n-fetch-po-files.py WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) # Install translations add_custom_target(getSvnTranslations DEPENDS retrievePoFilesFromSvn COMMENT "Re-run cmake after this to be able to run BuildTranslations with the latest files" ) # Get all po files in po/. You can get them doing: python2 tools/l10n-fetch-po-files.py file(GLOB TRANSLATIONS_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "po/*.po") # Set the output dir for the translation files to /bin foreach(PoSource ${TRANSLATIONS_FILES}) # Changes the .po extension to .ts string(REPLACE ".po" ".ts" TsSource ${PoSource}) # Removes the po/ folder string(REPLACE "po/" "" TsSource ${TsSource}) # qm filename string(REPLACE ".ts" ".qm" QmOutput ${TsSource}) set(OutTsFile ${CMAKE_BINARY_DIR}/tmp/${TsSource}) add_custom_command( OUTPUT ${QmOutput} COMMAND cmake -E make_directory ${GCOMPRIS_TRANSLATIONS_DIR} COMMAND cmake -E make_directory ${CMAKE_BINARY_DIR}/tmp # Remove the obsolete translations and set po in the ts output file COMMAND msgattrib --no-obsolete ${CMAKE_CURRENT_SOURCE_DIR}/${PoSource} -o ${OutTsFile} # Convert the po into ts COMMAND ${LCONVERT_EXECUTABLE} -if po -of ts -i ${OutTsFile} -o ${OutTsFile} # Convert the ts in qm removing non finished translations COMMAND ${LRELEASE_EXECUTABLE} -compress -nounfinished ${OutTsFile} -qm ${GCOMPRIS_TRANSLATIONS_DIR}/${QmOutput} ) list(APPEND QM_FILES ${QmOutput}) endforeach() # Install translations add_custom_target(BuildTranslations DEPENDS ${QM_FILES} COMMENT "If you don't have the .po, you need to run make getSvnTranslations first then re-run cmake" ) +add_custom_command( + OUTPUT doBundleTranslations + COMMAND 7z a -w${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME} + ${CMAKE_BINARY_DIR}/translations-${GCOMPRIS_VERSION}.7z + ${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME}/translations + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) +# Bundle translations +add_custom_target(BundleTranslations + DEPENDS doBundleTranslations + COMMENT "If you want to provide a zip of the translations on a server (run make BuildTranslations first)" + ) + +add_custom_command( + OUTPUT doDlAndInstallBundledTranslations + COMMAND curl -fsS -o translations-${GCOMPRIS_VERSION}.7z + http://gcompris.net/download/translations-${GCOMPRIS_VERSION}.7z + COMMAND 7z x -y -o${CMAKE_BINARY_DIR}/share/${GCOMPRIS_EXECUTABLE_NAME} + translations-${GCOMPRIS_VERSION}.7z + WORKING_DIRECTORY ${CMAKE_BINARY_DIR} + ) +# Download and install bundled translations +add_custom_target(DlAndInstallBundledTranslations + DEPENDS doDlAndInstallBundledTranslations + COMMENT "Download the bundled translation and install them in the build dir" + ) + if(CMAKE_HOST_APPLE) install(DIRECTORY ${GCOMPRIS_TRANSLATIONS_DIR} DESTINATION ${_bundle_bin}) else() install(DIRECTORY ${GCOMPRIS_TRANSLATIONS_DIR} DESTINATION ${_data_dest_dir}) endif() # Build standalone package option -> if ON, we will copy the required Qt files in the build package. # If OFF, "make install" will not copy Qt files so only GCompris files will be packaged. # By default, it is true on Windows (as we deliver NSIS package), macOS (bundled), android (apk) and false on linux (to do make install) # If you want to create a STGZ package for linux (auto-extractible), override this variable by typing : cmake -DBUILD_STANDALONE=ON if(UNIX AND NOT ANDROID AND NOT APPLE) option(BUILD_STANDALONE "Build a standalone package when typing 'make package'" OFF) else() option(BUILD_STANDALONE "Build a standalone package when typing 'make package'" ON) endif() option(WITH_KIOSK_MODE "Set the kiosk mode by default" OFF) if(WIN32) set(COMPRESSED_AUDIO "mp3" CACHE STRING "Compressed Audio format [ogg|aac|mp3]") elseif(APPLE) set(COMPRESSED_AUDIO "aac" CACHE STRING "Compressed Audio format [ogg|aac|mp3]") else() set(COMPRESSED_AUDIO "ogg" CACHE STRING "Compressed Audio format [ogg|aac|mp3]") endif() file(GLOB_RECURSE OGG_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/ "*.ogg") foreach(OGG_FILE ${OGG_FILES}) # This should only replace the extension string(REGEX REPLACE "ogg$" "aac" AAC_FILE ${OGG_FILE}) add_custom_command( OUTPUT ${AAC_FILE} # Put the good line depending on your installation COMMAND avconv -v warning -i ${OGG_FILE} -acodec libvo_aacenc ${AAC_FILE} #COMMAND ffmpeg -v warning -i ${OGG_FILE} -acodec aac -strict -2 ${AAC_FILE} ) list(APPEND AAC_FILES ${AAC_FILE}) # This should only replace the extension string(REGEX REPLACE "ogg$" "mp3" MP3_FILE ${OGG_FILE}) add_custom_command( OUTPUT ${MP3_FILE} # Put the good line depending on your installation #COMMAND avconv -v warning -i ${OGG_FILE} -acodec mp3 ${MP3_FILE} COMMAND ffmpeg -v warning -i ${OGG_FILE} -acodec mp3 -strict -2 ${MP3_FILE} ) list(APPEND MP3_FILES ${MP3_FILE}) endforeach() add_custom_target( createAacFromOgg DEPENDS ${AAC_FILES} ) add_custom_target( createMp3FromOgg DEPENDS ${MP3_FILES} ) # predownload assets (voices and images) and install them in the rcc folder set(DOWNLOAD_ASSETS "" CACHE STRING "Download and packages images and voices. use a list like: words,en,fr,pt_BR to retrieve multiple files") add_custom_command( OUTPUT predownloadAssets COMMAND python2 tools/download-assets.py ${DOWNLOAD_ASSETS} ${COMPRESSED_AUDIO} ${GCOMPRIS_RCC_DIR} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} ) add_custom_command( OUTPUT assetsFolders COMMAND cmake -E make_directory "${GCOMPRIS_RCC_DIR}/data2" COMMAND cmake -E make_directory "${GCOMPRIS_RCC_DIR}/data2/voices-${COMPRESSED_AUDIO}" COMMAND cmake -E make_directory "${GCOMPRIS_RCC_DIR}/data2/words" ) # Install assets add_custom_target(getAssets DEPENDS assetsFolders predownloadAssets ) +add_custom_command( + OUTPUT doBundleConvertedOggs + COMMAND 7z a converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z '-ir!src/*${COMPRESSED_AUDIO}' + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) +# Bundle oggs ready to be uploaded on a server. This ease build on system without the appropriate audio +# convertion tools. +add_custom_target(BundleConvertedOggs + DEPENDS doBundleConvertedOggs + COMMENT "Bundle the converted oggs to upload them on a server. First set COMPRESSED_AUDIO appropriately." + ) + +add_custom_command( + OUTPUT doDlAndInstallBundledConvertedOggs + COMMAND curl -fsS -o converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z + http://gcompris.net/download/converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z + COMMAND 7z x -y converted_ogg_to_${COMPRESSED_AUDIO}-${GCOMPRIS_VERSION}.7z + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + ) +# Download and install bundled converted oggs +add_custom_target(DlAndInstallBundledConvertedOggs + DEPENDS doDlAndInstallBundledConvertedOggs + COMMENT "Download the bundled converted oggs and install them in the source dir" + ) set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-${GCOMPRIS_VERSION}) add_custom_target(dist COMMAND git archive --prefix=${ARCHIVE_NAME}/ HEAD | xz > ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.xz WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) if(KF5_FOUND) add_subdirectory(docs/docbook) endif(KF5_FOUND) if(SAILFISHOS) # Need to be done at the end, after src add_subdirectory(platforms/sailfishOS) endif() # # qml-box2d # set(QML_BOX2D_MODULE "auto" CACHE STRING "Policy for qml-box2d module [auto|submodule|system|disabled]") if (${QML_BOX2D_MODULE} STREQUAL "disabled") # disable all activities depending on qml-box2d set(_disabled_activities "balancebox,land_safe") message(STATUS "Disabling qml-box2d module and depending activities: ${_disabled_activities}") else() include(qt_helper) getQtQmlPath(_qt_qml_system_path) set (_box2d_system_dir "${_qt_qml_system_path}/Box2D.2.0") if (${QML_BOX2D_MODULE} STREQUAL "submodule") message(STATUS "Building qml-box2d module from submodule") set(_need_box2d_submodule "TRUE") else() # try to find module in system scope find_library(QML_BOX2D_LIBRARY NAMES Box2D libBox2D PATHS ${_box2d_system_dir} NO_DEFAULT_PATH) if (QML_BOX2D_LIBRARY) message(STATUS "Using system qml-box2d plugin at ${QML_BOX2D_LIBRARY}") # for packaging builds, copy the module manually to the correct location if(SAILFISHOS) file(COPY ${_box2d_system_dir}/qmldir ${QML_BOX2D_LIBRARY} DESTINATION share/harbour-gcompris-qt/lib/qml/Box2D.2.0) elseif(ANDROID) file(COPY ${_box2d_system_dir}/qmldir ${QML_BOX2D_LIBRARY} DESTINATION lib/qml/Box2D.2.0) endif() # FIXME: add others as needed else() if (${QML_BOX2D_MODULE} STREQUAL "auto") message(STATUS "Did not find the qml-box2d module in system scope, falling back to submodule build ...") set (_need_box2d_submodule "TRUE") else() message(FATAL_ERROR "Did not find the qml-box2d module in system scope and submodule build was not requested. Can't continue!") endif() endif() endif() if (_need_box2d_submodule) # build qml-box2d ourselves from submodule include(ExternalProject) get_property(_qmake_program TARGET ${Qt5Core_QMAKE_EXECUTABLE} PROPERTY IMPORT_LOCATION) set (_box2d_source_dir ${CMAKE_CURRENT_SOURCE_DIR}/external/qml-box2d) if(WIN32) set (_box2d_library_dir "release/") set (_box2d_library_file "Box2D.dll") else() set (_box2d_library_dir "") set (_box2d_library_file "libBox2D.so") endif() set (_box2d_install_dir ${CMAKE_CURRENT_BINARY_DIR}/lib/qml/Box2D.2.0) # make sure submodule is up2date find_package(Git) if(GIT_FOUND) execute_process(COMMAND ${GIT_EXECUTABLE} submodule update --init) endif() ExternalProject_Add(qml_box2d DOWNLOAD_COMMAND "" SOURCE_DIR ${_box2d_source_dir} CONFIGURE_COMMAND ${_qmake_program} ${_box2d_source_dir}/box2d.pro BUILD_COMMAND ${CMAKE_MAKE_PROGRAM} INSTALL_DIR ${_box2d_install_dir} INSTALL_COMMAND cp ${_box2d_library_dir}${_box2d_library_file} ${_box2d_source_dir}/qmldir ${_box2d_install_dir} ) add_library(qml-box2d SHARED IMPORTED) set_target_properties(qml-box2d PROPERTIES IMPORTED_LOCATION ${_box2d_install_dir}/${_box2d_library_file}) if(SAILFISHOS) install(DIRECTORY ${_box2d_install_dir} DESTINATION share/harbour-gcompris-qt/lib/qml) else() install(DIRECTORY ${_box2d_install_dir} DESTINATION lib/qml) endif() endif() endif() add_subdirectory(src) diff --git a/cmake/rcc.cmake b/cmake/rcc.cmake index 7df90511d..f5479d815 100644 --- a/cmake/rcc.cmake +++ b/cmake/rcc.cmake @@ -1,63 +1,61 @@ # # GCOMPRIS_ADD_RCC(resource_path ) # function(GCOMPRIS_ADD_RCC resource_path) set(options) set(oneValueArgs) set(multiValueArgs) cmake_parse_arguments(_RCC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN}) set(rcc_files ${_RCC_UNPARSED_ARGUMENTS}) get_filename_component(activity "${resource_path}" NAME) if(Qt5Widgets_VERSION_STRING VERSION_LESS 5.4.2 OR WIN32) # (cannot create it in the build dir because rcc expect local files) # Create this QRC file set(CREATED_QRC "${CMAKE_CURRENT_SOURCE_DIR}/${activity}.qrc") else() set(CREATED_QRC "${CMAKE_CURRENT_BINARY_DIR}/${activity}.qrc") endif() set(ACTIVITY_PATH "/gcompris/src/${resource_path}") file(GLOB QRC_CONTENTS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} ${rcc_files}) file(GLOB QRC_CONTENTS_ABS ${CMAKE_CURRENT_SOURCE_DIR} ${rcc_files}) file(WRITE ${CREATED_QRC} "\n\t") foreach(FILE ${QRC_CONTENTS}) file(APPEND ${CREATED_QRC} "\n\t\t${FILE}") endforeach() file(APPEND ${CREATED_QRC} "\n\t\n\n") list(APPEND QRC_FILES ${CREATED_QRC}) set(CREATED_RCC ${GCOMPRIS_RCC_DIR}/${activity}.rcc) if(Qt5Widgets_VERSION_STRING VERSION_LESS 5.4.2 OR WIN32) set(_RCC_COMMAND ${Qt5Core_RCC_EXECUTABLE} "-binary" -o ${CREATED_RCC} ${CREATED_QRC}) else() set(_RCC_COMMAND ${Qt5Core_RCC_EXECUTABLE} "-binary" -o ${CREATED_RCC} - < ${CREATED_QRC}) endif() add_custom_command(OUTPUT ${CREATED_RCC} COMMAND ${_RCC_COMMAND} DEPENDS ${QRC_CONTENTS} "${out_depends}" VERBATIM WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) if(CMAKE_HOST_APPLE) - install(FILES ${CREATED_RCC} DESTINATION gcompris-qt.app/Contents/MacOS/rcc) - elseif(SAILFISHOS) - install(FILES ${CREATED_RCC} DESTINATION share/harbour-gcompris-qt/rcc) + install(FILES ${CREATED_RCC} DESTINATION ${GCOMPRIS_EXECUTABLE_NAME}.app/Contents/MacOS/rcc) else() - install(FILES ${CREATED_RCC} DESTINATION share/gcompris-qt/rcc) + install(FILES ${CREATED_RCC} DESTINATION share/${GCOMPRIS_EXECUTABLE_NAME}/rcc) endif() add_custom_target( rcc_${activity} ALL DEPENDS createShareFolders ${CREATED_RCC} ${CREATED_QRC} COMMENT "Generate ${activity} RCC" SOURCES ${QRC_CONTENTS} VERBATIM ) endfunction() diff --git a/installer/GCompris-install.ico b/installer/GCompris-install.ico index 056c72faf..65a9a3bae 100644 Binary files a/installer/GCompris-install.ico and b/installer/GCompris-install.ico differ diff --git a/installer/GCompris-uninstall.ico b/installer/GCompris-uninstall.ico index 65eef0142..0ff168492 100644 Binary files a/installer/GCompris-uninstall.ico and b/installer/GCompris-uninstall.ico differ diff --git a/installer/gcompris-header.bmp b/installer/gcompris-header.bmp index 3033bfff7..c2026f41a 100644 Binary files a/installer/gcompris-header.bmp and b/installer/gcompris-header.bmp differ diff --git a/org.kde.gcompris.appdata.xml b/org.kde.gcompris.appdata.xml index fa087ee99..f9abf5a9a 100644 --- a/org.kde.gcompris.appdata.xml +++ b/org.kde.gcompris.appdata.xml @@ -1,829 +1,830 @@ org.kde.gcompris.desktop org.kde.gcompris.desktop + org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop org.kde.gcompris.desktop xxorg.kde.gcompris.desktopxx CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 CC0-1.0 xxCC0-1.0xx CC0-1.0 CC0-1.0 GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ GPL-3.0+ xxGPL-3.0+xx GPL-3.0+ GPL-3.0+ GCompris Educational Game لعبة «فهمت» التّعليميّة Xuegu educativu Gcompris Joc educatiu GCompris Joc educatiu GCompris GCompris-Lernspiel Εκπαιδευτικό παιχνίδι GCompris GCompris Educational Game Juego educativo GCompris GCompris, opettavainen peli Jeu éducatif GCompris Xogo educativo GCompris Gioco didattico GCompris GCompris 교육용 게임 Educatief spel GCompris GCompris leik-og-lær-spel Gra edukacyjna GCompris Jogo Educativo GCompris Jogo educacional GCompris Joc educațional GCompris Набор обучающих игр GCompris Výuková hra GCompris Izobraževalna igra GCompris GCompris pedagogiskt spel Освітня гра GCompris xxGCompris Educational Gamexx GCompris 教育游戏 GCompris 教育遊戲 Multi-Activity Educational game for children 2 to 10 لعبة تعليميّة متعدّدة الأنشطة للأطفال من سنتين إلى 10 سنوات Joc educatiu amb múltiples activitats per a nens dels 2 a 10 anys Joc educatiu amb múltiples activitats per a nens dels 2 a 10 anys Lernspiel mit vielen Aktivitäten für Kinder von 2 bis 10 Jahren Εκπαιδευτικό παιχνίδι πολλαπλών δραστηριοτήτων για ηλικίες 2 έως 10 ετών Multi-Activity Educational game for children 2 to 10 Juego educativo multiactividad para niños de 2 a 10 años Useampitoimintoinen opettavainen peli 2–10-vuotiaille lapsille Jeu éducatif multi-activités pour les enfants de 2 à 10 ans Xogo educativo con varias actividades para nenos de entre 2 e 10 anos. Gioco didattico multi-attività per bambini da 2 a 10 anni 2-10세 어린이를 위한 다양한 활동이 있는 교육용 게임 Educatief spel met meerdere activiteiten voor kinderen van 2 tot 10 Leik-og-lærspel med mange aktivitetar – for barn frå 2 til 10 år Gra edukacyjna z wieloma aktywnościami dla dzieci w wieku od 2 do 10 lat Jogo Educativo Multi-Actividades para crianças dos 2 aos 10 anos Jogo educacional com várias atividades para crianças de 2 a 10 anos Joc educațional cu activități multiple pentru copii între 2 și 10 ani Интерактивные обучающие игры для детей от 2 до 10 лет Viac-aktivitová výuková hra pre deti od 2 do 10 rokov Izobraževalna igra z več dejavnostmi za otroke med drugim in desetim letom starosti Pedagogiskt multiaktivitetsspel för barn från 2 till 10 år Набір освітніх ігор для дітей від 2 до 10 років xxMulti-Activity Educational game for children 2 to 10xx 为 2 到 10 岁儿童准备的多功能教育游戏 為 2-10 歲孩子設計的教育遊戲

GCompris is an educational software suite comprising of numerous activities for children aged 2 to 10.

«فهمت» هو طقم برمجيّات تعليميّة يضمّ مختلف الأنشطة للأطفال من سنتين إلى 10 سنوات.

El GCompris és una suite de programari educatiu que consisteix de nombroses activitats per a nens i nenes entre els 2 i els 10 anys.

El GCompris és una suite de programari educatiu que consisteix de nombroses activitats per a nens i nenes entre els 2 i els 10 anys.

GCompris ist eine Lernsoftware, die verschiedene Aktivitäten für Kinder im Alter von 2 bis 10 Jahren anbietet.

Το GCompris είναι μια σουίτα εκπαιδευτικού λογισμικού με πολυάριθμες δραστηριότητες για παιδιά ηλικίας 2 έως 10 ετών.

GCompris is an educational software suite comprising of numerous activities for children aged 2 to 10.

GCompris es una suite de software educativo que consta de numerosas actividades para niños de 2 a 10 años.

GCompris on useista toiminnoista koostuva opetusohjelmisto 2–10-vuotiaille lapsille.

GCompris est une suite éducative comprenant de nombreuses activités pour les enfants de 2 à 10 ans.

GCompris é unha colección de programas educativos composta por numerosas actividades para nenos de entre 2 e 10 anos.

GCompris è una raccolta di programmi didattici che comprende numerose attività per bambini da 2 a 10 anni.

GCompris는 2-10세 어린이를 위한 활동을 모아 놓은 교육용 소프트웨어 모음입니다.

GCompris is suite met educatieve software die bestaat uit vele activiteiten voor kinderen vanaf twee tot tien jaar.

GCompris er eit leik-og-lær spel med mange ulike aktivitetar, laga for ungar frå 2 til 10 år.

GCompris to pakiet oprogramowania edukacyjnego z licznymi aktywnościami dla dzieci w wieku od 2 do 10 lat.

O GCompris é um pacote de aplicações educativas que é composto por diversas actividades para as crianças dos 2 aos 10 anos de idade.

GCompris é uma suíte de software educacional que apresenta uma série de atividades para crianças com idade entre 2 e 10 anos.

GCompris este un pachet de software educațional compus din numeroase activități pentru copii între 2 și 10 ani.

GCompris — это набор обучающих игр, рассчитанных на детей в возрасте от 2 до 10 лет.

GCompris je balík výukového softvéru zložený z rôznych aktivít pre deti od 2 do 10 rokov.

Program GCompris je visokokakovostna zbirka izobraževalnih dejavnosti, namenjenih otrokom med drugim in desetim letom starosti.

GCompris är en pedagogisk programsvit som består av en mängd olika aktiviteter för barn från 2 till 10 år gamla.

GCompris — комплекс навчального програмного забезпечення, що складається з багатьох вправ для дітей від 2 до 10 років.

xxGCompris is an educational software suite comprising of numerous activities for children aged 2 to 10.xx

GCompris 是一款教育套件,由针对 2 到 10 岁孩子的许多活动组成。

GCompris 是一套教育軟體的集合,它提供適合兩歲到十歲兒童各種不同的活動。

Some of the activities are game orientated, but nonetheless still educational.

Algunes de les activitats estan orientades a joc, però sempre són educatives.

Algunes de les activitats estan orientades a joc, però sempre són educatives.

Některé aktivity jsou v podobě her, ale přesto jsou poučné.

Einige Aktivitäten sind eher spielerisch, aber immer lehrreich.

Ορισμένες από τις δραστηριότητες είναι απλώς παιχνίδια, αλλά οπωσδήποτε με εκπαιδευτικό χαρακτήρα.

Some of the activities are game orientated, but nonetheless still educational.

Algunas de las actividades son juegos, aunque siguen siendo educativas.

Jotkin toiminnoista ovat pelimäisiä mutta silti opettavaisia.

Certaines activités sont ludiques mais ont toujours un intérêt pédagogique.

Algunhas das actividades están orientadas ao xogo, pero son aínda así educativas.

Alcune delle attività sono orientate al gioco, ma comunque didattiche.

일부 활동은 기능성 게임을 지향합니다.

Sommige activiteiten zijn spelletjes, maar toch leerzaam.

Nokre av aktivitetane er mest som spel, men er likevel lærerike.

Niektóre z aktywności są bardziej grą, lecz nadal bardzo pouczającą.

Algumas das actividades são apresentadas como jogos, mas são educativas à mesma.

Algumas das atividades são de orientação lúdica, mas mesmo assim ainda educacional.

Unele activități sunt orientate pe joacă, dar totuși educative.

Некоторые из заданий представлены в игровой форме, но и они являются обучающими.

Niektoré z aktivít sú herne orientované, ale stále výukové.

Nekatere dejavnosti so bolj podobne igram, vendar še vedno poučne.

Vissa av aktiviteterna är spelorienterade, men trots det ändå pedagogiska.

Деякі із вправ є суто ігровими, але містять і елементи навчання.

xxSome of the activities are game orientated, but nonetheless still educational.xx

一些活动是游戏导向的,不过尽管如此仍是教育性的。

有些活動是遊戲性質,但還是有很棒的教育意義。

Below you can find a list of categories with some of the activities available in that category.

يمكنك أن تجد أدناه قائمة بالفئات وبعض الأنشطة الموجودة في كلّ فئة.

Embaxo pues alcontrar un llistáu d'estayes con delles de les actividaes disponibles nesta

A continuació trobareu una llista de les categories amb algunes de les activitats disponibles en cadascuna.

A continuació trobareu una llista de les categories amb algunes de les activitats disponibles en cadascuna.

Sie können Aktivitäten aus folgenden Bereichen in GCompris finden:

Παρακάτω θα βρείτε μια λίστα με κατηγορίες που περιέχουν ορισμένες από το σύνολο των δραστηριοτήτων σε κάθε κατηγορία.

Below you can find a list of categories with some of the activities available in that category.

A continuación puede encontrar una lista de categorías con algunas de las actividades disponibles en cada una de ellas.

Alta löydät luettelot luokista sekä maininnan joistakin kuhunkin luokkaan kuuluvista toiminnoista.

Vous pouvez trouver ci-dessous une liste des catégories avec certaines de leurs activités.

A continuación atopará unha lista de categorías e mailas actividades dispoñíbeis en cada unha desas categorías.

Di seguito puoi trovare un elenco di categorie con alcune delle attività disponibili per categoria.

아래에서 분류 목록과 해당 분류의 활동을 찾을 수 있습니다.

Hieronder vindt u een lijst met categorieën met enige van de activiteiten beschikbaar in die categorie.

Nedanfor finn du ei oversikt over kategoriar, saman med nokre av aktivitetane i kvar kategori.

Poniżej znajdziesz wykaz kategorii z niektórymi aktywnościami dostępnymi w tej kategorii.

Em baixo, poderá encontrar uma lista de categorias, com algumas das actividades disponíveis para essa categoria.

Abaixo está relacionada uma lista de categorias com algumas das atividades disponíveis em cada uma delas.

Dedesubt puteți găsi o listă de categorii cu unele din activitățile disponibile în acea categorie.

Ниже представлен список категорий с доступными в этих категориях заданиями.

Tu môžete nájsť zoznam kategórií s niektorými aktivitami dostupnými v kategórii.

Spodaj lahko najdete seznam kategorij in nekaj dejavnosti, ki so na voljo v tisti kategoriji.

Nedan finns en lista över kategorier med några av aktiviteterna tillgängliga i varje kategori.

Нижче наведено список категорій із деякими вправами у цих категоріях.

xxBelow you can find a list of categories with some of the activities available in that category.xx

下面列出了一些分类和对应分类中的活动。

下方您可以看到該類別的活動清單。

  • computer discovery: keyboard, mouse, different mouse gestures, ...
  • استكشاف الحاسوب: لوحة المفاتيح، الفأرة، مختلف إيماءات الفأرة، وغيرها
  • descobrir l'ordinador: teclat, ratolí, diferents gestos del ratolí...
  • descobrir l'ordinador: teclat, ratolí, diferents gestos del ratolí...
  • Entdeckung des Computers: Tastatur, Maus, verschiedene Mausgesten ...
  • ανακαλύπτω τον υπολογιστή: πληκτρολόγιο, ποντίκι, διάφορες ενδείξεις δείκτη ποντικιού, ...
  • computer discovery: keyboard, mouse, different mouse gestures, ...
  • descubrimiento del ordenador: teclado, ratón, distintos gestos con el ratón...
  • tietokoneen oppiminen: näppäimistö, hiiri, eri hiirieleet…
  • découverte de l'ordinateur : clavier, souris, mouvements de la souris…
  • Descubrimento do computador: teclado, rato, xestos do rato, etc.
  • scoperta del computer: tastiera, mouse, vari gesti con il mouse, ...
  • 컴퓨터와 친해지기: 키보드, 마우스, 마우스 제스처, ...
  • ontdekken van de computer: toetsenbord, muis, verschillende muisbewegingen, ...
  • datamaskin: tastatur, mus, ulike muserørsler, …
  • odkrywanie komputera: klawiatura, mysz, różne ruchy myszą, ...
  • descoberta do computador: teclado, rato, os diferentes gestos com o rato, ...
  • conhecendo o computador: teclado, mouse, diferentes movimentações com o mouse, ...
  • descoperirea calculatorului: tastatura, mausul, diferite gesturi cu mausul, ...
  • знакомство с компьютером: клавиатура, мышь, различные жесты мышью, ...
  • objavovanie počítača: klávesnica, myš, rôzne gestá myši...
  • delo z računalnikom: tipkovnica, miška, kretnje miške, ...
  • upptäcka datorn: tangentbord, mus, olika musgester, ...
  • Знайомство з комп’ютером: клавіатура, миша, керування мишею…
  • xxcomputer discovery: keyboard, mouse, different mouse gestures, ...xx
  • 探索电脑:键盘、鼠标、不同的鼠标手势……
  • 電腦探索:鍵盤、滑鼠、不同的滑鼠手勢等
  • arithmetic: table memory, enumeration, mirror image, balance the scale, change giving, ...
  • aritmètica: memoritzar la taula, enumeració, imatge al mirall, equilibrar la balança, donar el canvi...
  • aritmètica: memoritzar la taula, enumeració, imatge al mirall, equilibrar la balança, donar el canvi...
  • Arithmetik: Kombitabellen, Aufzählungen, Bilder spiegeln, Gewichte ausgleichen, Wechselgeld geben...
  • αριθμητική: μνημονικός πίνακας, απαρίθμηση, κάτοπτρο, ισορροπώ τη ζυγαριά, δίνω ρέστα, ...
  • arithmetic: table memory, enumeration, mirror image, balance the scale, change giving, ...
  • aritmética: memorización de tablas, enumeración, imagen especular, equilibrar la balanza, devolver cambios...
  • aritmetiikka: kertotaulujen opettelu, laskutehtävät, peilikuvan piirtäminen, vaa’an tasapainottaminen, vaihtorahan antaminen, …
  • arithmétique : apprentissage des tables d'opérations mathématiques, l'énumération, de symétrie d'image, équilibrage de la balance, rendre la monnaie…
  • Aritmética: táboas de memoria, enumeración, imaxes espello, equilibrio de balanzas, cálculo do cambio, etc.
  • aritmetica: tabelline, enumerazione, immagine speculare, allineare la bilancia, dare il resto, ...
  • 산술 연산: 표 기억하기, 배열하기, 그림 뒤집기, 저울 맞추기, 거스름돈 계산하기, ...
  • rekenen: tafels oefenen, reeksen, afbeelding spiegelen, de schaal in evenwicht brengen, wijziging gegeven, ...
  • rekning: gongetabellen¸teljing, spegelbilete, måling av vekt, vekslepengar, …
  • arytmetyka: tablice pamięciowe, wyliczanie, obraz lustrzany, wyrównoważanie wagi, wydawanie reszty, ...
  • aritmética: memória da tabuada, enumeração, imagem-espelho, equilíbrio de balanças, trocos, ...
  • matemática: memória matemática, enumeração, imagens espelhadas, balanceamento de escalas, moedas e troco, ...
  • aritmetică: tabla înmulțirii, enumerări, imagini în oglindă, echilibrează balanța, darea restului, ...
  • арифметика: игра «память» с подсчётом, счёт, отражение рисунка, уравновешивание весов, подсчёт сдачи, ...
  • aritmetické: tabuľková pamäť, výpočet, zrkalový obrázok, vyváženie mierky, zmena dávky...
  • računstvo: spomin z računi, štetje, uravnoteži tehtnico, vračanje drobiža, ...
  • aritmetik: tabellminne, uppräkning, spegelbild, balansera vågen, ge växel, ...
  • Арифметика: запам’ятовування таблиць, нумерація, віддзеркалення, балансування масштабу, обчислення решти…
  • xxarithmetic: table memory, enumeration, mirror image, balance the scale, change giving, ...xx
  • 算数:表格记忆、枚举、镜像、天平、找零……
  • 數學運算:表格記憶、列舉、影像映射、平衡、找零計算等
  • science: the canal lock, color mixing, gravity concept, ...
  • ciència: blocar el canal, barreja de colors, el concepte de la gravetat...
  • ciència: blocar el canal, barreja de colors, el concepte de la gravetat...
  • Wissenschaft: Kanalschleuse, Farbmischung, Gravitation,...
  • επιστήμη: σύστημα αλλαγής στάθμης ροής, ανάμειξη χρωμάτων, η έννοια της βαρύτητας, ...
  • science: the canal lock, colour mixing, gravity concept, ...
  • ciencia: la esclusa de un canal, mezcla de colores, concepto de gravedad...
  • tiede: kanavasulku, värien sekoitus, painovoiman käsite…
  • science : fonctionnement d'une écluse, mélange des couleurs, concept de la gravité…
  • Ciencia: o bloqueo da canle, mestura de cores, o concepto de gravidade, etc.
  • scienza: la chiusa del canale, miscelazione dei colori, il concetto di gravità, ...
  • 과학: 운하 갑문, 색 섞기, 중력, ...
  • natuurkunde: de sluis, mengen van kleuren, concept van zwaartekracht, ...
  • vitskap: kanalsluse, blanding av fargar, tyngdekraft, …
  • nauka: śluza na kanale, mieszanie barw, poczucie grawitacji, ...
  • ciência: bloqueio de canais, misturas de cores, conceito de gravidade, ...
  • ciência: comporta de canal, mistura de cores, conceito de gravidade, ...
  • științe: podul mobil, combinarea culorilor, gravitația, ...
  • наука: работа судоходного шлюза, смешивание цветов, представление о гравитации, ...
  • veda: zamknutý kanál, miešanie farieb, koncept grvitácie...
  • znanost: zapornica kanala, mešanje barv, koncept težnosti ...
  • vetenskap: kanalslussen, färgblandning, gravitationskonceptet, ...
  • Наука: шлюзування, змішування кольорів, поняття тяжіння…
  • xxscience: the canal lock, color mixing, gravity concept, ...xx
  • 科学:运河闸门、颜料色彩混合、重力的概念……
  • 科學:顏色混合、重力觀念、運河鎖等等
  • games: memory, connect 4, tic tac toe, sudoku, hanoi tower, ...
  • jocs: memòria, connectar 4, tres en ratlla, sudoku, torre de Hanoi...
  • jocs: memòria, connectar 4, tres en ratlla, sudoku, torre de Hanoi...
  • Spiele: Memory, Vier gewinnt, Tic-Tac-Toe, Sudoku, Türme von Hanoi,...
  • παιχνίδια: μνήμη, τετράδες, τρίλιζα, σουντόκου, πύργος του Ανόι, ...
  • games: memory, connect 4, tic tac toe, sudoku, hanoi tower, ...
  • juegos: memoria, conectar 4, tres en raya, sudoku, torres de hanoi...
  • pelit: muisti, neljän suora, ristinolla, sudoku, Hanoin tornit…
  • jeux: trouve les paires, puissance 4, morpion, sudoku, la tour d'hanoï…
  • Xogos: memoria, conectar 4, pai nai fillo, sudoku, torre de Hanoi, etc.
  • giochi: memory, forza 4, filetto, sudoku, torre di hanoi, ...
  • 게임: 메모리 게임, 4개 연결하기, 삼목, 수도쿠, 하노이 탑, ...
  • spellen: geheugenspel, vier verbinden, tic-tac-toe, sudoku, torens van hanoi, ...
  • spel: hugsespel, fire på rad, bondesjakk, sudoku, tårnet i Hanoi, …
  • gry: na pamięć, łączenie czwórek, tic tac toe, sudoku, wieża hanoi, ...
  • jogos: memória, 4 em linha, jogo do galo, sudoku, torres de Hanói, ...
  • jogos: memória, ligue 4, jogo da velha, sudoku, torre de Hanoi, ...
  • jocuri: memorie, leagă 4, X și 0, sudoku, turnul hanoi, ...
  • игры: память, соедини 4, крестики-нолики, судоку, Ханойская башня, ...
  • hry: pamäť, spojenie 4, tic tac toe, sudoku, hanojská veža...
  • igre: spomin, štiri v vrsto, križci in krožci, sudoku, Hanojski stolpi, ...
  • spel: memory, koppla 4, tre-i-rad, sudoku, tornen i Hanoi, ...
  • Ігри: запам’ятовування, чотири-у-рядок, хрестики-нулики, судоку, ханойські вежі…
  • xxgames: memory, connect 4, tic tac toe, sudoku, hanoi tower, ...xx
  • 游戏:记忆、四子棋、井子棋、数独、汉诺塔……
  • 遊戲:記憶遊戲、四子棋、井字遊戲、數獨、河內塔等等
  • reading: reading practice, ...
  • llectura: práutica de llectura...
  • lectura: practicar la lectura...
  • lectura: practicar la lectura...
  • Lesen: Leseübungen ...
  • ανάγνωση: εξάσκηση στην ανάγνωση, ...
  • reading: reading practice, ...
  • lectura: prácticas de lectura...
  • lukeminen: lukemisen harjoittelu…
  • lecture : entraînement à la lecture…
  • Lectura: práctica de lectura, etc.
  • lettura: esercitare la lettura, ...
  • 읽기: 읽기 연습, ...
  • lezen: lezen oefenen, ...
  • lesing: leseøvingar, …
  • czytanie: nauka czytania, ...
  • leitura: exercícios de leitura, ...
  • leitura: prática de leitura, ...
  • citire: exerciții de citire, ...
  • чтение: упражнение в чтении, ...
  • čítanie: precvičovanie čítania...
  • branje: bralna vaja, ...
  • läsning: läsningsövning, ...
  • Читання: вправи із читання…
  • xxreading: reading practice, ...xx
  • 阅读:阅读练习……
  • 閱讀:閱讀練習等等
  • other: learn to tell time, the braille system, maze, music instruments, ...
  • أخرى: تعلّم الإخبار عن الوقت، نظام بريل، المتاهة، الآلات الموسيقيّة، وغيرها
  • altres: aprendre a dir l'hora, el sistema braille, laberint, instruments musicals...
  • altres: aprendre a dir l'hora, el sistema braille, laberint, instruments musicals...
  • Sonstiges: Uhrzeit, Braille-System, Labyrinthe, Musikinstrumente ...
  • άλλα: μαθαίνω να λέω την ώρα, το σύστημα braille, λαβύρινθος, μουσικά όργανα, ...
  • other: learn to tell time, the braille system, maze, music instruments, ...
  • otras: aprender a decir la hora, el sistema braille, laberintos, instrumentos musicales...
  • muuta: kellonajan kertominen, Braille-järjestelmä, sokkelo, soittimet…
  • autre : apprendre à dire l'heure, le système braille, le labyrinthe, les instruments de musique…
  • Outros: aprender a dicir as horas, o sistema braille, labirinto, instrumentos musicais, etc.
  • altro: impara a leggere l'ora, il sistema braille, labirinto, strumenti musicali, ...
  • 기타: 시간 읽기, 점자, 미로, 악기, ...
  • overig: leren klokkijken, het braille-systeem, doolhof, muziekinstrumenten, ...
  • anna: lær klokka, lær blindeskrift, labyrint, musikkinstrument, …
  • inne: naucz się godzin na zegarze, systemu brajla, labiryntów, instrumentów muzycznych, ...
  • outros: aprender a dizer as horas, o sistema Braille, labirintos, instrumentos musicais, ...
  • outros: aprendendo a ver as horas, o sistema Braille, labirintos, instrumentos musicais, ...
  • altele: învață să citești ceasul, sistemul braille, labirint, instrumente muzicale, ...
  • другое: определение времени по часам, шрифт Брайля, лабиринт, музыкальные инструменты, ...
  • iné: ako povedať čas, braillov systém, bludisko, hudobná nástroje...
  • ostalo: prepoznavanje časa, brajica, blodnjak, glasbila, ...
  • annat: lära sig klockan, punktskrift, labyrint, musikinstrument, ...
  • Інше: навчання позначенням часу, система Брайля, лабіринти, музичні інструменти…
  • xxother: learn to tell time, the braille system, maze, music instruments, ...xx
  • 其他:学认钟表、盲文系统、迷宫、乐器……
  • 其他:看時間、點字系統、迷宮、認識樂器等等

Currently GCompris offers in excess of 100 activities and more are being developed. GCompris is free software, that means that you can adapt it to your own needs, improve it and, most importantly, share it with children everywhere.

توفّر «فهمت» حاليًّا أكثر من 100 نشاط وثمّة غيرها يجري تطويرها. «فهمت» برمجيّة حرّة، هذا يعني أنّك تستطيع تطويعها حسب احتياجك، وكذلك تطويرها، والأهم من ذلك هو مشاركتها مع الأطفال في كلّ مكان.

Actualment el GCompris ofereix més de 100 activitats i encara se'n desenvolupen més. El GCompris és programari lliure, el qual vol dir que podeu adaptar-lo a les vostres pròpies necessitats, millorar-lo i, el més important, compartir-lo amb nens de tot arreu.

Actualment el GCompris ofereix més de 100 activitats i encara se'n desenvolupen més. El GCompris és programari lliure, el qual vol dir que podeu adaptar-lo a les vostres pròpies necessitats, millorar-lo i, el més important, compartir-lo amb nens de tot arreu.

Insgesamt beinhaltet GCompris mehr als 100 Aktivitäten und wird ständig weiterentwickelt. GCompris ist freie Software. Sie haben also die Möglichkeit, sie ihren Bedürfnissen anzupassen und zu verbessern, und gerne auch alle Kinder der Welt von Ihrer Arbeit profitieren zu lassen.

Προς το παρόν το GCompris προσφέρει περισσότερες από 100 δραστηριότητες και αναπτύσσονται και άλλες. Το GCompris είναι ελεύθερο λογισμικό, το οποίο σημαίνει ότι μπορείτε να το προσαρμόσετε στις ανάγκες σας, να το βελτιώσετε, και, το σπουδαιότερο, να το μοιραστείτε με παιδιά από όλον τον κόσμο.

Currently GCompris offers in excess of 100 activities and more are being developed. GCompris is free software, that means that you can adapt it to your own needs, improve it and, most importantly, share it with children everywhere.

En la actualidad, GCompris ofrece más de 100 actividades y hay muchas más en desarrollo. GCompris es software libre, lo que significa que puede adaptarlo a sus necesidades, mejorarlo y, lo que es más importante, compartirlo con los niños de todo el mundo.

GComprisissa on nykyisellään yli sata toimintoa, ja lisää kehitetään. GCompris on vapaata ohjelmistoa, mikä tarkoittaa, että voit muokata sitä tarpeisiisi, parannella sitä ja mikä tärkeintä jakaa sitä lapsille kaikkialla.

Actuellement, GCompris contient plus de 100 activités et d'autres sont en cours de développement. GCompris est un logiciel libre, ce qui veut dire que vous pouvez l'adapter à vos propres besoins, le modifier et, le plus important, le partager avec des enfants où que ce soit.

Actualmente GCompris ofrece máis de 100 actividades e hai máis en progreso. GCompris é software libre, o que significa que pode adaptalo para axustalo ás súas necesidades, melloralo e, o máis importante, compartilo con nenos de todo o mundo.

Attualmente GCompris offre più di 100 attività e altre sono in fase di sviluppo. GCompris è software libero, che significa che puoi adattarlo alle tue necessità, migliorarlo e, cosa più importante, condividerlo con tutti i bambini.

GCompris는 100개 이상의 활동을 포함하고 있으며 더 많은 활동을 개발하고 있습니다. GCompris는 자유 소프트웨어이며, 필요에 따라서 활동을 개선할 수 있으며 전 세계의 사람들과 공유할 수 있습니다.

Op dit moment biedt GCompris meer dan 100 activiteiten en meer zijn er in ontwikkeling. GCompris is vrije software, dat betekent dat u het kunt aanpassen aan uw eigen behoeften, het verbeteren en, meest belangrijk, het met kinderen overal kun delen.

GCompris har over 100 aktivitetar, og fleire vert utvikla. GCompris er fri programvare. Det vil seia at du kan tilpassa spelet slik du ønskjer, forbetra det og dela det med andre ungar i heile verda.

Obecnie GCompris zapewnia ponad 100 aktywności, a jeszcze więcej jest opracowywanych. GCompris jest darmowym oprogramowaniem, co oznacza, że możesz je dopasować do własnych potrzeb, ulepszać je i co najważniejsze udostępniać je dzieciom.

De momento, o GCompris oferece mais de 100 actividades, estando ainda mais em desenvolvimento. O GCompris é uma aplicação de 'software' livre, o que significa que o poderá adaptar às suas próprias necessidades, melhorá-lo e, o mais importante, partilhá-lo com as crianças em todo o lado.

Atualmente o GCompris oferece mais de 100 atividades e outras mais estão sendo desenvolvidas. O GCompris é um software livre, o que significa que você pode adaptá-lo para as suas próprias necessidades, melhorá-lo e, mais importante, compartilhar com as crianças de todo o mundo.

Momentan GCompris oferă peste 100 de activități și multe altele sunt în lucru. GCompris este software liber, ceea ce înseamnă că poate fi adaptat nevoilor dumneavoastră, îmbunătățit, dar mai ales, partajat cu copii de pretutindeni.

В настоящее время GCompris содержит более 100 упражнений, и новые находятся в разработке. GCompris — свободное ПО, и это значит, что вы можете приспособить его для своих нужд, улучшить, а самое главное — поделиться им с детьми во всём мире.

Aktuálne GCompris ponúka vyše 100 aktivít a ďalšie sa vyvíjajú. GCompris je slobodný softvér, čo znamená, že si ho môžete prispôsobiť na vlastné potreby, zlepšiť, a hlavne zdieľať s deťmi všade.

GCompris trenutno ponuja več kot 100 dejavnosti, še več pa jih je v razvoju. GCompris je prosta programska oprema, kar pomeni, da jo lahko prilagodite po svoje, še pomembneje pa je, da jo lahko delite z otroki širom sveta.

För närvarande erbjuder GCompris över 100 aktiviteter och ännu fler håller på att utvecklas. GCompris är fri programvara, vilket betyder att man kan anpassa det till sina egna behov, och viktigast av allt, dela det med barn överallt.

У поточній версії GCompris понад 100 вправ. Розробники постійно працюють над новими вправами. GCompris є вільним програмним забезпеченням, це означає, що ви можете адаптувати програму до власних потреб, покращувати її і, що найважливіше, ділитися вашими творіннями із усіма дітьми.

xxCurrently GCompris offers in excess of 100 activities and more are being developed. GCompris is free software, that means that you can adapt it to your own needs, improve it and, most importantly, share it with children everywhere.xx

当前 GCompris 提供超过100个活动,还有更多的正在开发中。GCompris 是自由软件,这意味着你可以根据你的需要进行调整、改进,以及最重要的一点,和世界各地的孩子们分享。

目前 GCompris 提供超過 100 個活動,還有更多正在開發中。GCompris 是一套自由軟體,表示您可以根據您自己的需求來改進,並分享給所有的孩子們。

http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png xxhttp://gcompris.net/screenshots-qt/middle/canal_lock.pngxx http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/canal_lock.png http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ xxhttp://gcompris.net/screenshots-qt/middle/xx http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/ http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png xxhttp://gcompris.net/screenshots-qt/middle/click_on_letter_up.pngxx http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/click_on_letter_up.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame-nn.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png xxhttp://gcompris.net/screenshots-qt/middle/clockgame.pngxx http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/clockgame.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix-nn.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png xxhttp://gcompris.net/screenshots-qt/middle/color_mix.pngxx http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/color_mix.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors-nn.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png xxhttp://gcompris.net/screenshots-qt/middle/colors.pngxx http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/colors.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png xxhttp://gcompris.net/screenshots-qt/middle/enumerate.pngxx http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/enumerate.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png xxhttp://gcompris.net/screenshots-qt/middle/fifteen.pngxx http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/fifteen.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png xxhttp://gcompris.net/screenshots-qt/middle/hexagon.pngxx http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/hexagon.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png xxhttp://gcompris.net/screenshots-qt/middle/redraw_symmetrical.pngxx http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/redraw_symmetrical.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png xxhttp://gcompris.net/screenshots-qt/middle/scalesboard.pngxx http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/scalesboard.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png xxhttp://gcompris.net/screenshots-qt/middle/traffic.pngxx http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/screenshots-qt/middle/traffic.png http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ http://gcompris.net/ xxhttp://gcompris.net/xx http://gcompris.net/ http://gcompris.net/ https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris xxhttps://bugs.kde.org/enter_bug.cgi?format=guided&product=gcomprisxx https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris https://bugs.kde.org/enter_bug.cgi?format=guided&product=gcompris bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net xxbruno.coudoin@gcompris.netxx bruno.coudoin@gcompris.net bruno.coudoin@gcompris.net
diff --git a/platforms/windows/prepare.sh b/platforms/windows/prepare.sh new file mode 100755 index 000000000..28f243477 --- /dev/null +++ b/platforms/windows/prepare.sh @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Before making a Windows build we must provide the converted mp3 +# and the qm files because this is too annoying to create them on +# windows. + +if [ ! -f CMakeLists.txt ] +then + echo "ERROR: Run me from the top level project dir" + exit 1 +fi +mkdir -p build +cd build +cmake -D COMPRESSED_AUDIO=mp3 .. +make createMp3FromOgg +make BundleConvertedOggs +make getSvnTranslations +make BuildTranslations +make BundleTranslations +rsync -a ../converted_ogg_to_mp3-*.7z translations-*.7z gcompris.net:/var/www/download + +# +# Then on Windows use the targets: +# +# DlAndInstallBundledTranslations +# DlAndInstallBundledConvertedOggs +# diff --git a/src/activities/activities.txt b/src/activities/activities.txt index a2e4412cc..17c84a430 100644 --- a/src/activities/activities.txt +++ b/src/activities/activities.txt @@ -1,127 +1,128 @@ # The list of activities that will be loaded at GCompris start. # Keep it sorted advanced_colors algebra_by algebra_div algebra_minus algebra_plus algorithm align4 align4-2players alphabetical_order alphabet-sequence babymatch babyshapes baby_wordprocessor balancebox ballcatch braille_alphabets braille_fun canal_lock chess chess_2players chess_partyend chronos clickanddraw clickgame click_on_letter click_on_letter_up clockgame color_mix color_mix_light colors details drawnumber enumerate erase erase_2clic erase_clic explore_farm_animals explore_monuments explore_world_animals explore_world_music fifteen followline football geo-country geography gletters gnumch-equality gnumch-factors gnumch-inequality gnumch-multiples gnumch-primes graph-coloring guessnumber hangman hanoi hanoi_real hexagon imagename instruments intro_gravity land_safe lang leftright +letter-in-word lightsoff louis-braille magic-hat-minus magic-hat-plus maze mazeinvisible mazerelative melody memory memory-enumerate memory-math-add memory-math-add-minus memory-math-add-minus-mult-div memory-math-add-minus-mult-div-tux memory-math-add-minus-tux memory-math-add-tux memory-math-div memory-math-div-tux memory-math-minus memory-math-minus-tux memory-math-mult memory-math-mult-div memory-math-mult-div-tux memory-math-mult-tux memory-sound memory-sound-tux memory-tux memory-wordnumber mining missing-letter money money_back money_back_cents money_cents mosaic numbers-odd-even paintings penalty photo_hunter planegame readingh readingv redraw redraw_symmetrical renewable_energy reversecount roman_numerals scalesboard scalesboard_weight scalesboard_weight_avoirdupois simplepaint smallnumbers smallnumbers2 sudoku superbrain tangram target tic_tac_toe tic_tac_toe_2players traffic watercycle wordsgame diff --git a/src/activities/hangman/Hangman.qml b/src/activities/hangman/Hangman.qml index b352e0aa3..e88fb66ef 100644 --- a/src/activities/hangman/Hangman.qml +++ b/src/activities/hangman/Hangman.qml @@ -1,409 +1,409 @@ /* GCompris - hangman.qml * * Copyright (C) 2015 Rajdeep Kaur * * Authors: * Bruno Coudoin (GTK+ version) * Rajdeep kaur (Qt Quick port) * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ import QtQuick 2.1 import GCompris 1.0 import QtGraphicalEffects 1.0 import "../../core" import "hangman.js" as Activity import "qrc:/gcompris/src/core/core.js" as Core ActivityBase { id: activity // Overload this in your activity to change it // Put you default-.json files in it property string dataSetUrl: "qrc:/gcompris/src/activities/hangman/resource/" onStart: focus = true onStop: { } // When going on configuration, it steals the focus and re set it to the activity. // We need to set it back to the textinput item in order to have key events. onFocusChanged: { if(focus) { Activity.focusTextInput() } } pageComponent: Image { id: background source: activity.dataSetUrl+"background.svg" fillMode: Image.PreserveAspectCrop anchors.fill: parent sourceSize.width: Math.max(parent.width, parent.height) // system locale by default property string locale: "system" readonly property string wordsResource: "data2/words/words.rcc" property bool englishFallback: false signal start signal stop Component.onCompleted: { dialogActivityConfig.getInitialConfiguration() activity.start.connect(start) activity.stop.connect(stop) } // Add here the QML items you need to access in javascript QtObject { id: items property Item main: activity.main property alias background: background property Item ourActivity: activity property alias bar: bar property alias bonus: bonus property alias keyboard: keyboard property alias hidden: hidden property alias textinput: textinput property alias wordImage: wordImage property alias score: score property alias parser: parser property alias locale: background.locale property alias ok: ok - property int remainingLife + property int remainingLife property variant goodWord property int goodWordIndex property alias englishFallbackDialog: englishFallbackDialog function playWord() { var locale = ApplicationInfo.getVoicesLocale(items.locale) if(activity.audioVoices.append( ApplicationInfo.getAudioFilePathForLocale(goodWord.voice, locale))) bonus.interval = 2500 else bonus.interval = 500 } onRemainingLifeChanged: { if(remainingLife == 3) { playWord(); } } } onStart: { focus = true Activity.start(items) Activity.focusTextInput() } onStop: { Activity.stop(); } GCText { id: hidden fontSize: largeSize color: "#4d4d4d" font.letterSpacing: 0.5 width: parent.width * 0.9 wrapMode: Text.WordWrap horizontalAlignment: Text.AlignHCenter anchors { horizontalCenter: parent.horizontalCenter bottom: bar.top bottomMargin: 5 * ApplicationInfo.ratio } z: 11 } TextInput { // Helper element to capture composed key events like french ô which // are not available via Keys.onPressed() on linux. Must be // disabled on mobile! id: textinput enabled: !ApplicationInfo.isMobile visible: false focus: true onTextChanged: { if (text != "") { Activity.processKeyPress(text); text = ""; } } onAccepted: if(items.remainingLife === 0) Activity.nextSubLevel() } Item { id: imageframe width: Math.min(300 * ApplicationInfo.ratio, background.width * 0.8, hidden.y) height: width anchors.horizontalCenter: parent.horizontalCenter y: 5 * ApplicationInfo.ratio z: 10 Image { id: wordImage smooth: true visible: false anchors.fill: parent property string nextSource function changeSource(nextSource_) { nextSource = nextSource_ animImage.start() } SequentialAnimation { id: animImage PropertyAnimation { target: wordImage property: "opacity" to: 0 duration: 100 } PropertyAction { target: wordImage property: "source" value: wordImage.nextSource } PropertyAnimation { target: wordImage property: "opacity" to: 1 duration: 100 } } } Image { id: threshmask smooth: true visible: false width: 1.3*parent.width height: 1.2*parent.height source: dataSetUrl + "fog.png" } ThresholdMask { id: thresh anchors.fill: wordImage source: wordImage maskSource: threshmask spread: 0.4 // remainingLife between 0 and 6 => threshold between 0 and 0.9 threshold: 0.15 * items.remainingLife } } DialogActivityConfig { id: dialogActivityConfig currentActivity: activity content: Component { Item { property alias localeBox: localeBox height: column.height property alias availableLangs: langs.languages LanguageList { id: langs } Column { id: column spacing: 10 width: parent.width Flow { spacing: 5 width: dialogActivityConfig.width GCComboBox { id: localeBox model: langs.languages background: dialogActivityConfig label: qsTr("Select your locale") } } } } } onClose: home() onLoadData: { if(dataToSave && dataToSave["locale"]) { background.locale = dataToSave["locale"]; } } onSaveData: { var oldLocale = background.locale; var newLocale = dialogActivityConfig.configItem.availableLangs[dialogActivityConfig.loader.item.localeBox.currentIndex].locale; // Remove .UTF-8 if(newLocale.indexOf('.') != -1) { newLocale = newLocale.substring(0, newLocale.indexOf('.')) } dataToSave = {"locale": newLocale } background.locale = newLocale; // Restart the activity with new information if(oldLocale !== newLocale) { background.stop(); background.start(); } } function setDefaultValues() { var localeUtf8 = background.locale; if(background.locale != "system") { localeUtf8 += ".UTF-8"; } for(var i = 0 ; i < dialogActivityConfig.configItem.availableLangs.length ; i ++) { if(dialogActivityConfig.configItem.availableLangs[i].locale === localeUtf8) { dialogActivityConfig.loader.item.localeBox.currentIndex = i; break; } } } } DialogHelp { id: dialogHelp onClose: home() } Bar { id: bar anchors.bottom: keyboard.top content: BarEnumContent { value: help | home | level | config } onHelpClicked: { displayDialog(dialogHelp) } onPreviousLevelClicked: Activity.previousLevel() onNextLevelClicked: Activity.nextLevel() onHomeClicked: activity.home() onConfigClicked: { dialogActivityConfig.active = true dialogActivityConfig.setDefaultValues() displayDialog(dialogActivityConfig) } } Score { id: score anchors.top: undefined anchors.topMargin: 10 * ApplicationInfo.ratio anchors.right: parent.right anchors.rightMargin: 10 * ApplicationInfo.ratio anchors.bottom: keyboard.top } BarButton { id: ok source: "qrc:/gcompris/src/core/resource/bar_ok.svg"; sourceSize.width: 75 * ApplicationInfo.ratio visible: false anchors { bottom: score.top horizontalCenter: score.horizontalCenter bottomMargin: 10 * ApplicationInfo.ratio } onClicked: Activity.nextSubLevel() } JsonParser { id: parser onError: console.error("Hangman: Error parsing json: " + msg); } Image { id: clock anchors { left: parent.left top: parent.top margins: 10 } sourceSize.width: 66 * bar.barZoom property int remainingLife: items.remainingLife onRemainingLifeChanged: if(remainingLife >= 0) clockAnim.restart() SequentialAnimation { id: clockAnim alwaysRunToEnd: true ParallelAnimation { NumberAnimation { target: clock; properties: "opacity"; to: 0; duration: 800; easing.type: Easing.OutCubic } NumberAnimation { target: clock; properties: "rotation"; from: 0; to: 180; duration: 800; easing.type: Easing.OutCubic } } PropertyAction { target: clock; property: 'source'; value: "qrc:/gcompris/src/activities/reversecount/resource/" + "flower" + items.remainingLife + ".svg" } ParallelAnimation { NumberAnimation { target: clock; properties: "opacity"; to: 1; duration: 800; easing.type: Easing.OutCubic } NumberAnimation { target: clock; properties: "rotation"; from: 180; to: 0; duration: 800; easing.type: Easing.OutCubic } } } } VirtualKeyboard { id: keyboard anchors.bottom: parent.bottom anchors.horizontalCenter: parent.horizontalCenter width: parent.width onKeypress: Activity.processKeyPress(text); onError: console.log("VirtualKeyboard error: " + msg); } Bonus { id: bonus interval: 2000 onLoose: ok.visible = true onWin: Activity.nextSubLevel() } Loader { id: englishFallbackDialog sourceComponent: GCDialog { parent: activity.main message: qsTr("We are sorry, we don't have yet a translation for your language.") + " " + qsTr("GCompris is developed by the KDE community, you can translate GCompris by joining a translation team on %2").arg("http://l10n.kde.org/") + "

" + qsTr("We switched to English for this activity but you can select another language in the configuration dialog.") onClose: background.englishFallback = false } anchors.fill: parent focus: true active: background.englishFallback onStatusChanged: if (status == Loader.Ready) item.start() } } } diff --git a/src/activities/lang/resource/content-ca.json b/src/activities/lang/resource/content-ca.json index d91e3feca..4256834c9 100644 --- a/src/activities/lang/resource/content-ca.json +++ b/src/activities/lang/resource/content-ca.json @@ -1,582 +1,585 @@ { "ate.ogg": "menjar", "bake.ogg": "cuinar", "bark.ogg": "bordar", "beg.ogg": "demanar", "bite.ogg": "mossegar", "blink.ogg": "picada d'ullet", "boil.ogg": "bullir", "break.ogg": "trencar", "call.ogg": "trucada", "catch.ogg": "pescar", "centipede.ogg": "centpeus", "chat.ogg": "parlar", "chop.ogg": "tallar", "clap.ogg": "picar de mans", "clean.ogg": "rentar", "crawl.ogg": "gatejar", "croak.ogg": "raucar", "cry.ogg": "plorar", "cut.ogg": "tallar", "dig.ogg": "cavar", "drank.ogg": "beure", "draw.ogg": "dibuix", "dream.ogg": "somiar", "drive.ogg": "conduir", "drool.ogg": "bavejar", "dry.ogg": "assecar", "eat.ogg": "menjar", "fell.ogg": "caure", "fetch.ogg": "informar", "find.ogg": "trobar", "float.ogg": "flotador", "fly.ogg": "volar", "freeze.ogg": "congelar", "growl.ogg": "grunyir", "hatch.ogg": "sortir de l'ou", "hear.ogg": "sentir", "howl.ogg": "udolar", "hug.ogg": "abraçar", "jump.ogg": "saltar", "kneel.ogg": "agenollar", "knit.ogg": "punt de mitja", "lick.ogg": "llepar", "look.ogg": "mirar-se", "meet.ogg": "trobar-se", "nap.ogg": "migdiada", "peck.ogg": "picotejar", "play.ogg": "jugar", "plow.ogg": "llaurar", "pounce.ogg": "saltar", "quarrel.ogg": "baralla", "read.ogg": "llegir", "rip.ogg": "estripar", "run.ogg": "córrer", "sat.ogg": "seure", "scared.ogg": "espantat", "scratch.ogg": "esgarrapar", "scream.ogg": "cridar", "scribble.ogg": "gargot", "see.ogg": "mirar", "shake.ogg": "sacsejar", "sing.ogg": "cantar", "sip.ogg": "xarrupar", "sit.ogg": "seure", "sleep.ogg": "dormir", "smell.ogg": "olorar", "smooch.ogg": "bessar", "sniff.ogg": "ensumar", "spill.ogg": "vessar", "splash.ogg": "doll d'aigua", "spray.ogg": "ruixar", "spread.ogg": "untar", "spring.ogg": "botar", "squat.ogg": "ajupir", "sting.ogg": "fibló", "stop.ogg": "aturar", "stretch.ogg": "estiraments", "study.ogg": "estudiar", "teach.ogg": "ensenyar", "tear.ogg": "estripar", "think.ogg": "pensar", "touch.ogg": "tocar", "wag.ogg": "moure la cua", "walk.ogg": "caminar", "wash.ogg": "banyar", "whisper.ogg": "xiuxiuejar", "win.ogg": "guanyar", "back.ogg": "esquena", "braid.ogg": "trena", "brain.ogg": "cervell", "bump.ogg": "bony", "chin.ogg": "barbeta", "ear.ogg": "orella", "face.ogg": "cara", "feet.ogg": "peu", "fist.ogg": "puny", "foot.ogg": "peu", "grin.ogg": "somriure", "hair.ogg": "cabell", "hand.ogg": "mà", "head.ogg": "cap", "hip.ogg": "maluc", "knee.ogg": "genoll", "lap.ogg": "a la falda", "lip.ogg": "llavis", "mouth.ogg": "boca", "neck.ogg": "coll", "nose.ogg": "nas", "scar.ogg": "cicatriu", "skin.ogg": "pell", "stare.ogg": "mirar fixament", "sweat.ogg": "suor", "teeth.ogg": "dents", "thigh.ogg": "cuixa", "throat.ogg": "gola", "wrist.ogg": "canell", "bib.ogg": "pitet", "cap.ogg": "gorra", "cape.ogg": "capa", "coat.ogg": "abric", "dress.ogg": "vestit", "glove.ogg": "guants", "hat.ogg": "barret", "patch.ogg": "pedaç", "scarf.ogg": "bufanda", "shirt.ogg": "camisa", "shoe.ogg": "sabata", "short.ogg": "pantalons curts", "skirt.ogg": "faldilla", "sleeve.ogg": "màniga", "smock.ogg": "brusa", "sneaker.ogg": "sabatilla deportiva", "sock.ogg": "mitjó", "suit.ogg": "vestit", "zoo.ogg": "zoològic", "danger.ogg": "perill", "frown.ogg": "envejar", "fun.ogg": "divertit", "mad.ogg": "ira", "rage.ogg": "ràbia", "sad.ogg": "trist", "smile.ogg": "somriure", "whisk.ogg": "batedora", "chief.ogg": "indi", "clown.ogg": "pallasso", "coach.ogg": "entrenador", "cowboy.ogg": "vaquer", "hunter.ogg": "caçador", "judge.ogg": "jutge", "knight.ogg": "cavaller", "lad.ogg": "mosso", "pope.ogg": "papa", "prince.ogg": "príncep", "princess.ogg": "princesa", "queen.ogg": "reina", "teacher.ogg": "professora", "vet.ogg": "veterinari", "boy.ogg": "noi", "bride.ogg": "núvia", "brother.ogg": "germà", "child.ogg": "nen", "dad.ogg": "pare", "friend.ogg": "amics", "girl.ogg": "dona", "gnome.ogg": "gnom", "mate.ogg": "amics", "men.ogg": "multitud", "pal.ogg": "col·legues", "athlete.ogg": "atleta", "ballet.ogg": "ballet", "camp.ogg": "acampar", "cheer.ogg": "animar", "climb.ogg": "escalada", "dance.ogg": "ballar", "dive.ogg": "immersió", "explore.ogg": "exploradors", "hike.ogg": "caminada", "hit.ogg": "pegar", "hop.ogg": "saltar", "jog.ogg": "fúting", "lift.ogg": "aixecar", "ran.ogg": "córrer", "ride.ogg": "anar amb bicicleta", "skate.ogg": "patinar", "ski.ogg": "esquiar", "sport.ogg": "esport", "swim.ogg": "nedar", "write.ogg": "escriure", "alligator.ogg": "caiman", "animal.ogg": "animals", "bait.ogg": "esquer", "bat.ogg": "ratpenat", "bee.ogg": "abella", "beetle.ogg": "escarabat", "bird.ogg": "ocell", "bug.ogg": "insecte", "camel.ogg": "camell", "cat.ogg": "gat", "chick.ogg": "pollet", "chicken.ogg": "pollastre", "chimp.ogg": "ximpanzé", "clam.ogg": "cloïssa", "claw.ogg": "urpa", "cow.ogg": "vaca", "crab.ogg": "cranc", "crocodile.ogg": "cocodril", "crow.ogg": "corb", "den.ogg": "cau", "dog.ogg": "gos", "dragon.ogg": "drac", "duck.ogg": "ànec", "fin.ogg": "aleta", "fish.ogg": "peix", "flies.ogg": "mosca", "fox.ogg": "guineu", "frog.ogg": "granota", "fur.ogg": "pell", "giraffe.ogg": "girafa", "goat.ogg": "cabra", "hen.ogg": "gallina", "herd.ogg": "ramat", "hound.ogg": "empaita", "lamb.ogg": "xai", "mane.ogg": "cabellera", "mice.ogg": "ratolins", "mole.ogg": "talp", "mosquito.ogg": "mosquit", "mule.ogg": "mula", "owl.ogg": "òliba", "ox.ogg": "bou", "paw.ogg": "pota", "pet.ogg": "mascota", "pig.ogg": "porc", "pug.ogg": "carlí", "puppy.ogg": "cadell", "rat.ogg": "rata", "shark.ogg": "tauró", "shell.ogg": "closca", "shrimp.ogg": "gamba", "skunk.ogg": "mofeta", "slime.ogg": "bava", "snail.ogg": "cargol", "snake.ogg": "serp", "spider.ogg": "aranya", "spike.ogg": "eriçó", "squid.ogg": "calamar", "squirrel.ogg": "esquirol", "starfish.ogg": "estrella de mar", "swan.ogg": "cigne", "tick.ogg": "paparra", "wing.ogg": "ala", "yum.ogg": "saborós", "bone.ogg": "os", "bread.ogg": "pans", "bun.ogg": "brioix", "cake.ogg": "pastís", "candy.ogg": "caramel", "cheese.ogg": "formatge", "chocolate.ogg": "xocolata", "cookie.ogg": "galetes", "crumb.ogg": "engrunes", "crust.ogg": "crosta", "drink.ogg": "tassa", "feast.ogg": "banquet", "flour.ogg": "farina", "food.ogg": "hamburguesa", "fudge.ogg": "dolços de xocolata", "gum.ogg": "xiclet", "ice.ogg": "glaçó", "juice.ogg": "suc", "lunch.ogg": "aperitiu", "pop.ogg": "crispetes", "rice.ogg": "arròs", "sandwich.ogg": "sandvitx", "sauce.ogg": "salsa", "snack.ogg": "mos", "spaghetti.ogg": "espagueti", "sprinkle.ogg": "espurnes", "stew.ogg": "guisat", "treat.ogg": "dolços", "cherry.ogg": "cireres", "fruit.ogg": "fruita", "lime.ogg": "llima", "orange.ogg": "taronja", "peach.ogg": "préssecs", "plum.ogg": "prunes", "bay.ogg": "badia", "beach.ogg": "platja", "cave.ogg": "cova", "cliff.ogg": "penya-segat", "cloud.ogg": "núvol", "cold.ogg": "fred", "dirt.ogg": "sòl", "dune.ogg": "duna", "earth.ogg": "la Terra", "fire.ogg": "foc", "flame.ogg": "flama", "garden.ogg": "jardí", "gem.ogg": "joia", "ground.ogg": "el terra", "heat.ogg": "calor", "hole.ogg": "forat", "lake.ogg": "llac", "land.ogg": "terreny", "ledge.ogg": "sortint", "mud.ogg": "fang", "night.ogg": "nit", "ocean.ogg": "oceà", "path.ogg": "camí", "rock.ogg": "roques", "sand.ogg": "sorra", "shore.ogg": "riba", "sky.ogg": "cel", "slope.ogg": "pendent", "smoke.ogg": "fum", "snow.ogg": "neu", "star.ogg": "estel", "stone.ogg": "pedres", "stream.ogg": "riu", "summer.ogg": "estiu", "sun.ogg": "sol", "time.ogg": "temps", "top.ogg": "al cim", "trail.ogg": "sender", "water.ogg": "aigua", "wind.ogg": "vent", "yarn.ogg": "fil", "angel.ogg": "àngel", "bit.ogg": "mica", "class.ogg": "classe", "price.ogg": "preu", "question.ogg": "pregunta", "quiz.ogg": "examen", "science.ogg": "ciència", "splatter.ogg": "esquitxada", "tune.ogg": "melodia", "branch.ogg": "branca", "bud.ogg": "brot", "bush.ogg": "arbust", "flower.ogg": "flor", "grass.ogg": "herba", "hay.ogg": "farratge", "hedge.ogg": "tanca", "lawn.ogg": "gespa", "pine.ogg": "pi", "plant.ogg": "plantes", "rose.ogg": "rosa", "seed.ogg": "llavors", "shrub.ogg": "arbust", "stem.ogg": "tija", "stick.ogg": "branca", "stump.ogg": "tronc", "tree.ogg": "arbre", "carrot.ogg": "pastanaga", "corn.ogg": "blat de moro", "cucumber.ogg": "cogombre", "mushroom.ogg": "bolet", "nut.ogg": "cacauet", "squash.ogg": "carbassó", "bank.ogg": "banc", "barn.ogg": "graner", "bridge.ogg": "pont", "cabin.ogg": "cabana", "cage.ogg": "gàbia", "castle.ogg": "castell", "door.ogg": "porta", "fair.ogg": "atracció", "fountain.ogg": "font", "grave.ogg": "tomba", "home.ogg": "casa", "hut.ogg": "cabana", "lane.ogg": "carrils", "pool.ogg": "piscina", "ramp.ogg": "rampa", "roof.ogg": "sostre", "school.ogg": "col·legi", "shed.ogg": "cobert", "shop.ogg": "botiga", "stage.ogg": "escenari", "store.ogg": "botiga", "street.ogg": "carrer", "strawberry.ogg": "maduixa", "bath.ogg": "banyera", "bed.ogg": "llit", "bench.ogg": "banc", "chair.ogg": "cadira", "chest.ogg": "bagul", "couch.ogg": "sofà", "crib.ogg": "bressols", "desk.ogg": "escriptori", "fan.ogg": "ventilador", "lamp.ogg": "el llum", "light.ogg": "la llum", "mat.ogg": "estora", "quilt.ogg": "edredó", "rug.ogg": "catifa", "seat.ogg": "seient", "shelf.ogg": "prestatge", "shower.ogg": "dutxa", "sink.ogg": "pica", "stove.ogg": "cuina", "toilet.ogg": "vàter", "balance.ogg": "balança", "can.ogg": "llaunes", "clock.ogg": "despertador", "dish.ogg": "font", "fork.ogg": "forquilla", "glass.ogg": "got", "knife.ogg": "ganivet", "lid.ogg": "tapa", "mop.ogg": "fregona", "mug.ogg": "tassa", "pan.ogg": "paella", "plate.ogg": "plat", "pot.ogg": "olla", "scale.ogg": "balança", "sponge.ogg": "esponja", "spoon.ogg": "cullera", "trash.ogg": "escombraries", "tray.ogg": "safata", "farm.ogg": "granja", "anchor.ogg": "àncora", "badge.ogg": "insígnia", "bag.ogg": "bossa", "ball.ogg": "bola", "bead.ogg": "bombolla", "block.ogg": "bloc", "board.ogg": "tauló", "bomb.ogg": "bomba", "book.ogg": "llibre", "box.ogg": "caixa", "candle.ogg": "espelma", "cane.ogg": "bastó", "card.ogg": "tarjeta", "cart.ogg": "carro", "cash.ogg": "diners", "chalk.ogg": "guix", "clay.ogg": "argila", "cloth.ogg": "drap", "coin.ogg": "monedes", "comb.ogg": "pinta", "cone.ogg": "con", "crown.ogg": "corona", "cube.ogg": "cub", "drum.ogg": "tambor", "flag.ogg": "bandera", "flute.ogg": "flauta", "game.ogg": "joc", "gift.ogg": "regal", "glue.ogg": "cola", "hook.ogg": "ham", "hose.ogg": "mànega", "ink.ogg": "tinta", "jewel.ogg": "joia", "kite.ogg": "estel", "knot.ogg": "nus", "log.ogg": "troncs", "map.ogg": "mapa", "mask.ogg": "màscara", "match.ogg": "llumins", "nest.ogg": "niu", "net.ogg": "xarxa", "oar.ogg": "rems", "page.ogg": "pàgina", "pair.ogg": "parell", "pen.ogg": "bolígraf", "pencil.ogg": "llapis", "picture.ogg": "pintura", "pole.ogg": "pal", "prize.ogg": "trofeu", "rag.ogg": "drap", "rope.ogg": "corda", "sign.ogg": "el senyal", "sleigh.ogg": "trineu", "slide.ogg": "tobogan", "squirt.ogg": "pulveritzador", "stack.ogg": "apilar", "stamp.ogg": "segell", "straw.ogg": "palles", "string.ogg": "cordill", "tag.ogg": "etiqueta", "thread.ogg": "bobina", "torch.ogg": "torxa", "towel.ogg": "tovallola", "toy.ogg": "joguina", "trap.ogg": "parany", "tube.ogg": "llapis de llavis", "watch.ogg": "rellotge", "wheel.ogg": "roda", "wig.ogg": "perruca", "wood.ogg": "fusta", "link.ogg": "enllaç", "dirty.ogg": "brut", "throw.ogg": "llançar", "brick.ogg": "maons", "brush.ogg": "brotxa", "flash.ogg": "llanterna", "rake.ogg": "rasclet", "screw.ogg": "vis", "spear.ogg": "la llança", "tool.ogg": "eines", "wedge.ogg": "falca", "wrench.ogg": "clau anglesa", "bike.ogg": "bicicleta", "boat.ogg": "barca", "canoe.ogg": "canoa", "car.ogg": "cotxe", "plane.ogg": "avió", "sail.ogg": "veler", "ship.ogg": "vaixell", "sled.ogg": "trineu", "train.ogg": "tren", "truck.ogg": "camió", "black.ogg": "negre", "blue.ogg": "blau", "brown.ogg": "marró", "color.ogg": "colors", "gray.ogg": "gris", "green.ogg": "verd", "orange-color.ogg": "taronja", "pink.ogg": "rosa", "red.ogg": "vermell", "white.ogg": "blanc", "five.ogg": "cinc", "one.ogg": "un", "ten.ogg": "deu", "three.ogg": "tres", "two.ogg": "dos", "van.ogg": "furgoneta", "big.ogg": "gran", "blind.ogg": "cec", "blond.ogg": "rossa", "bright.ogg": "brillant", "crazy.ogg": "ximple", "cute.ogg": "bufona", "dot.ogg": "punt", "empty.ogg": "buida", "fat.ogg": "gras", "flat.ogg": "pisos", "front.ogg": "davant", "full.ogg": "ple", "giant.ogg": "gegant", "happy.ogg": "feliç", "high.ogg": "a gran altura", "hot.ogg": "calent", "huge.ogg": "enorme", "left.ogg": "esquerra", "line.ogg": "codi de barres", "liquid.ogg": "líquid", "magic.ogg": "mag", "on.ogg": "sobre", "pretty.ogg": "bella", "right.ogg": "dreta", "round.ogg": "circular", "royal.ogg": "reial", "shut.ogg": "tancat", "sick.ogg": "malalt", "small.ogg": "petit", "spot.ogg": "taca", "square.ogg": "quadrat", "stand.ogg": "dret", "straight.ogg": "recte", "stripe.ogg": "ratlles", "strong.ogg": "fortalesa", "tall.ogg": "alt", "thick.ogg": "gruixut", "tired.ogg": "cansat", "under.ogg": "sota", "wet.ogg": "mullat", "wheat.ogg": "blat", "U0030.ogg": "zero", "U0031.ogg": "un", "U0032.ogg": "dos", "U0033.ogg": "tres", "U0034.ogg": "quatre", "U0035.ogg": "cinc", "U0036.ogg": "sis", "U0037.ogg": "set", "U0038.ogg": "vuit", "U0039.ogg": "nou", - "10.ogg": "deu" + "10.ogg": "deu", + "11.ogg": "onze", + "12.ogg": "dotze", + "16.ogg": "setze" } diff --git a/src/activities/lang/resource/content-gd.json b/src/activities/lang/resource/content-gd.json index e88954f44..b97b7f7bd 100644 --- a/src/activities/lang/resource/content-gd.json +++ b/src/activities/lang/resource/content-gd.json @@ -1,576 +1,590 @@ { "bee.ogg": "seillean beag", "alligator.ogg": "ailigeutair mòr", "anchor.ogg": "acair mhòr", "angel.ogg": "aingeal bheag", "animal.ogg": "beathaichean fiadhaich", "ate.ogg": "dh'ith i a leòr", "athlete.ogg": "ruithear math", "back.ogg": "druim goirt", "badge.ogg": "bonn-cuimhne mòr", "badge.ogg": "saighdear mòr", "bag.ogg": "baga mòr", "bait.ogg": "baoit bheò", "bake.ogg": "fuineadh", "balance.ogg": "meidh bheag", "ball.ogg": "bàla mòr", "ballet.ogg": "dannsair math", "bank.ogg": "banca mòr", "banker.ogg": "bancair mòr", "bark.ogg": "a' tabhann", "barn.ogg": "sabhal mòr", "bat.ogg": "ialtag bheag", "bath.ogg": "amar teth", "bay.ogg": "bàgh beag", "beach.ogg": "tràigh mhòr", "bead.ogg": "builgean mòr", "bed.ogg": "leabaidh bheag", "beetle.ogg": "daolag mhòr", "beg.ogg": "a' guidhe", "bench.ogg": "being bheag", "bib.ogg": "uchdan gorm", "big.ogg": "mòr", "bike.ogg": "baidhsagal beag", "bird.ogg": "eun donn", "bit.ogg": "balgam beag", "bite.ogg": "a' toirt greim às", "black.ogg": "dath dubh", "blind.ogg": "fear dall", "blink.ogg": "priobadh na sùla", "block.ogg": "bloca gorm", "blond.ogg": "falt bàn", "blue.ogg": "dath gorm", "board.ogg": "bòrd beag", "boat.ogg": "ràmhach beag", "boil.ogg": "a' goil", "bomb.ogg": "boma mòr", "bone.ogg": "cnàimh mòr", "book.ogg": "leabhar mòr", "box.ogg": "bogsa beag", "boy.ogg": "fireannach beag", "braid.ogg": "dual fada", "brain.ogg": "eanchainn mhòr", "branch.ogg": "geug bheag", "bread.ogg": "aran math", "break.ogg": "cridhe briste", "brick.ogg": "breigean mòra", "bride.ogg": "bean bainnse", "bridge.ogg": "drochaid bheag", "bright.ogg": "rionnag shoilleir", "brother.ogg": "bràthair beag", "brown.ogg": "dath donn", "brush.ogg": "bruis mhòr", "bud.ogg": "gucag bheag", "bug.ogg": "biastag bheag", "bump.ogg": "cnap mòr", "bun.ogg": "rola beag", "bush.ogg": "preas mòr", "cabin.ogg": "bothan beag", "cage.ogg": "cèidse mhòr", "cake.ogg": "cèic mhòr", "call.ogg": "a' cur fòn", "camel.ogg": "càmhal mòr", "camp.ogg": "a' campadh", "can.ogg": "canaichean beaga", "candle.ogg": "coinneal bheag", "candy.ogg": "siùcar beag ", "cane.ogg": "bata mòr", "canoe.ogg": "curach bheag", "cap.ogg": "bonaid bheag", "cape.ogg": "guailleachan beag", "car.ogg": "càr beag", "card.ogg": "cairt mhòr", "carrot.ogg": "curran mòr", "cart.ogg": "troilidh", "cash.ogg": "airgead mòr", "castle.ogg": "caisteal mòr", "cat.ogg": "cat beag", "catch.ogg": "ag iasgach", "cave.ogg": "uamh mhòr", "centipede.ogg": "ceud-chasach fada", "chair.ogg": "sèithear beag", "chalk.ogg": "cailc gheal", "chat.ogg": "a' cabadaich", "cheer.ogg": "a' toirt misneachd", "cheese.ogg": "càise mhath", "cherry.ogg": "siris mhath", "chest.ogg": "ciste mhòr", "chick.ogg": "isean beag", "chicken.ogg": "cearc bheag", "chief.ogg": "ceannard mòr", "child.ogg": "duine-cloinne beag", "chimp.ogg": "muncaidh beag", "chin.ogg": "smiogaid mòr", "chocolate.ogg": "seòclaid mhath", "chop.ogg": "a' gearradh", "clam.ogg": "creachann mòr", "clap.ogg": "a' bualadh basan", "class.ogg": "clas math", "claw.ogg": "cròg mòr", "clay.ogg": "criadh dhonn", "clean.ogg": "a' nighe d' fhalt", "cliff.ogg": "bearradh mòr", "climb.ogg": "a' streap", "clock.ogg": "cleoc mòr", "cloth.ogg": "aodach buidhe", "cloud.ogg": "neul beag", "clown.ogg": "amadan mòr", "coach.ogg": "còidse mhath", "coat.ogg": "còta mòr", "coin.ogg": "bonn beag", "cold.ogg": "fuar", "color.ogg": "dathan", "comb.ogg": "cìr mhòr", "cone.ogg": "còn mòr", "cook.ogg": "còcaire math", "cookie.ogg": "briosgaid mhòr", "corn.ogg": "dias mhòr", "couch.ogg": "langasaid mhòr", "cow.ogg": "bò bheag", "cowboy.ogg": "gille-cruidh beag", "crab.ogg": "crùbag mhòr", "crawl.ogg": "falbh air mhàgaran", "crazy.ogg": "duine craicte", "crib.ogg": "cot mhòr", "croak.ogg": "a' gnàgail", "crocodile.ogg": "crogall mòr", "crow.ogg": "feannag bheag", "crown.ogg": "crùn mòr", "crumb.ogg": "criomag bheag", "crust.ogg": "cùlan donn", "cry.ogg": "a' gal", "cube.ogg": "ciùb beag", "cucumber.ogg": "cularan beag", "cut.ogg": "siosar beag", "cute.ogg": "snog", "cyclist.ogg": "rothaiche mòr", "dad.ogg": "dadaidh mòr", "dance.ogg": "a' dannsadh", "danger.ogg": "cunnart mòr", "den.ogg": "saobhaidh mòr", "desk.ogg": "deasg beag", "dig.ogg": "a' cladhach", "dirt.ogg": "ùir dhorch", "dirty.ogg": "balach salach", "dish.ogg": "soitheach beag", "dive.ogg": "a' daoibhigeadh", "dog.ogg": "cù beag", "door.ogg": "doras mòr", "dot.ogg": "dotag bheag", "dragon.ogg": "dràgon mòr", "drank.ogg": "ag òl", "draw.ogg": "a' dèanamh dealbh", "dream.ogg": "aisling mhath", "dress.ogg": "dreasa bheag", "drink.ogg": "deoch bhlàth", "drive.ogg": "a' draibheadh", "drool.ogg": "a' sileadh sglongaid", "drum.ogg": "druma mhòr", "dry.ogg": "aodach tioram", "duck.ogg": "tunnag bheag", "dune.ogg": "dùn-gainmhich mòr", "ear.ogg": "cluas bheag", "earth.ogg": "an talamh", "eat.ogg": "ag ithe", "empty.ogg": "cana falamh", "explore.ogg": "a' rannsachadh", "face.ogg": "aodann cruinn", "fair.ogg": "faidhir bheag", "fan.ogg": "gaotharan beag", "farm.ogg": "tuathanas beag", "fat.ogg": "gille reamhar", "feast.ogg": "biadh math", "feet.ogg": "cas bheag", "fell.ogg": "thuit e", "fetch.ogg": "faigh am pàipear", "fin.ogg": "ite mhòr", "find.ogg": "a' lorg", "fire.ogg": "teine mòr", "fish.ogg": "iasg beag", "fisher.ogg": "iasgair math", "fist.ogg": "dòrn mòr", "five.ogg": "a còig", "flag.ogg": "bratach bheag", "flame.ogg": "lasair mhòr", "flash.ogg": "leus mòr", "flat.ogg": "flataichean beaga", "flies.ogg": "cuileag bheag", "float.ogg": "air fleòd", "flour.ogg": "flùr geal", "flower.ogg": "flùr beag", "flute.ogg": "fìdeag bheag", "fly.ogg": "ag itealaich", "food.ogg": "biadh luath", "foot.ogg": "cas mhòr", "fork.ogg": "forca bheag", "fountain.ogg": "fuaran beag", "fox.ogg": "madadh-ruadh beag", "freeze.ogg": "reòthadh mòr", "friend.ogg": "caraid math", "frog.ogg": "losgann beag", "front.ogg": "air a bheulaibh", "frown.ogg": "tha drèin oirre", "fruit.ogg": "measan milis", "fudge.ogg": "tofaidh math", "full.ogg": "gloine làn", "fun.ogg": "tha plòigh a' dol", "fur.ogg": "bian blàth", "game.ogg": "geama beag", "garden.ogg": "gàrradh beag", "gem.ogg": "seud mòr", "giant.ogg": "famhair mòr", "gift.ogg": "prèasant beag", "giraffe.ogg": "sioraf mòr", "girl.ogg": "caileag bheag", "glass.ogg": "gloine mhòr", "glove.ogg": "miotagan blàtha", "glue.ogg": "glaodh math", "gnome.ogg": "luchraban beag", "goat.ogg": "gobhar bàn", "grass.ogg": "feur fada", "grave.ogg": "uaigh bheag", "gray.ogg": "dath liath", "green.ogg": "dath uaine", "grin.ogg": "fiamh-ghàire mòr", "ground.ogg": "geadag bheag", "growl.ogg": "a' toirt gnòdhan", "gum.ogg": "bìth milis", "hair.ogg": "falt ruadh", "hand.ogg": "làmh mhòr", "happy.ogg": "toilichte", "hat.ogg": "ad mhòr", "hatch.ogg": "isean 'ga ghur", "hay.ogg": "feur tioram", "head.ogg": "ceann beag", "hear.ogg": "a' cluinntinn", "heat.ogg": "blàth", "hedge.ogg": "callaid bheag", "hen.ogg": "cearc mhòr", "herd.ogg": "treud de chaoraich", "high.ogg": "àrd", "hike.ogg": "a' coiseachd", "hip.ogg": "cruachann mhòr", "hit.ogg": "a' bualadh a chèile", "hole.ogg": "toll beag", "home.ogg": "dachaigh bheag", "hook.ogg": "dubhan mòr", "hop.ogg": "a' bocadaich", "hose.ogg": "pìob-uisge mhòr", "hot.ogg": "teth", "hound.ogg": "cù-seilg beag", "howl.ogg": "ag ulfhairt", "hug.ogg": "a' glacadh a chèile gu teann", "huge.ogg": "anabarrach mòr", "hunter.ogg": "sealgair mòr", "hut.ogg": "bothan mòr", "ice.ogg": "deigh fhuar", "ink.ogg": "inc phurpaidh", "jewel.ogg": "seud beag", "jog.ogg": "a' jogadh", "judge.ogg": "britheamh mòr", "juice.ogg": "sùgh fuar", "jump.ogg": "a' leumadh", "kite.ogg": "itealag bheag", "knee.ogg": "glùn bheag", "kneel.ogg": "tha e a' cromadh air a ghlùinean", "knife.ogg": "sgian bheag", "knight.ogg": "ridir mòr", "knit.ogg": "a' fighe", "knot.ogg": "snaidhm mòr", "lad.ogg": "balach beag", "lake.ogg": "loch beag", "lamb.ogg": "uan beag", "lamp.ogg": "lampa mòr", "land.ogg": "talamh fliuch", "lane.ogg": "rathad beag", "lap.ogg": "ann an uchd na seanmhar", "lawn.ogg": "faiche bheag", "ledge.ogg": "stalla beag", "left.ogg": "clì", "lick.ogg": "ag imlich", "lid.ogg": "failcean mòr", "lift.ogg": "a' togail", "light.ogg": "solas math", "lime.ogg": "liomaideag shearbh", "line.ogg": "loidhne ghorm", "link.ogg": "dul beag", "lip.ogg": "bilean pinc", "liquid.ogg": "boinne beag", "log.ogg": "connadh tioram", "look.ogg": "a' coimhead", "lunch.ogg": "lòn math", "mad.ogg": "air a' chaothach", "magic.ogg": "draoidheachd mhath", "mane.ogg": "muing mhòr", "map.ogg": "mapa beag", "mask.ogg": "aodannan beag", "mat.ogg": "plàta beag", "match.ogg": "lasadan beag", "mate.ogg": "companach math", "meet.ogg": "a' coinneachadh ri chèile", "men.ogg": "daoine", "mice.ogg": "dà luchag bheag", "mole.ogg": "famh dhubh", "mop.ogg": "mapaid mhòr", "mosquito.ogg": "meanbh-chuileag mhòr", "mouth.ogg": "beul mòr", "mud.ogg": "poll salach", "mug.ogg": "muga mòr", "mule.ogg": "leth-asal beag", "mushroom.ogg": "agairg nan cuileagan", "nap.ogg": "norrag bheag", "neck.ogg": "amhaich thana", "nest.ogg": "nead beag", "net.ogg": "lìon beag", "night.ogg": "oidhche dhorch", "nose.ogg": "sròn mhòr", "nut.ogg": "cnò mhòr", "oar.ogg": "dà ràmh mòr", "ocean.ogg": "cuan mòr", "on.ogg": "air", "one.ogg": "a h-aon", "orange.ogg": "dath orains", "orange-color.ogg": "orainsear mòr", "owl.ogg": "cailleach-oidhche bheag", "ox.ogg": "tarbh mòr", "page.ogg": "duilleag bheag", "pair.ogg": "paidhir bhrògan", "pal.ogg": "clann bheaga", "pan.ogg": "aghann bheag", "patch.ogg": "tuthag bheag", "path.ogg": "slighe bheag", "paw.ogg": "spòg mhòr", "peach.ogg": "peitseag mhòr", "peck.ogg": "a' sgobadh", "pen.ogg": "peann beag", "pencil.ogg": "peansail mòr", "pet.ogg": "peata beag", "picture.ogg": "dealbh beag", "pig.ogg": "muc bheag", "pine.ogg": "giuthas mòr", "pink.ogg": "dath pinc", "plane.ogg": "plèana beag", "plant.ogg": "lus beag", "plate.ogg": "truinnsear mòr", "play.ogg": "a' cluich", "plow.ogg": "a' treabhadh", "plum.ogg": "plumas milis", "pole.ogg": "pòla beag", "pool.ogg": "amar-snàimh beag", "pop.ogg": "popcorn", "pope.ogg": "am pàpa", "pot.ogg": "poit bheag", "pounce.ogg": "a' teumadh", "pretty.ogg": "bòidheach", "price.ogg": "prìs mhòr", "prince.ogg": "prionnsa beag", "princess.ogg": "bana-phrionnsa bheag", "prize.ogg": "duais mhòr", "pug.ogg": "cù-smutach", "puppy.ogg": "cuilean beag", "quarrel.ogg": "ag argamaid", "queen.ogg": "bànrigh mhòr", "question.ogg": "ceist mhòr", "quilt.ogg": "cuibhrig mhòr", "quiz.ogg": "co-fharpais cheist", "rag.ogg": "luideag bheag", "rage.ogg": "tha fearg air", "rake.ogg": "ràcan mòr", "ramp.ogg": "rampa beag", "ran.ogg": "a' ruith", "rat.ogg": "radan mòr", "read.ogg": "a' leughadh", "red.ogg": "dath dearg", "rice.ogg": "rìs geal", "ride.ogg": "a' falbh air baidhsagal", "right.ogg": "deas", "rip.ogg": "a' sracadh", "rock.ogg": "clach bheag", "roof.ogg": "mullach mòr", "rope.ogg": "ròpa fada", "rose.ogg": "ròs mòr", "round.ogg": "cruinn", "royal.ogg": "rìgh mòr", "rug.ogg": "ruga beag", "run.ogg": "a' rèiseadh", "sad.ogg": "brònach", "sail.ogg": "seòl beag", "sand.ogg": "gainmheach bog", "sandwich.ogg": "ceapaire mòr", "sat.ogg": "casruisgte", "sauce.ogg": "sabhs dearg", "scale.ogg": "sgèile beag", "scar.ogg": "eàrra mhòr", "scared.ogg": "tha an t-eagal air", "scarf.ogg": "sgarfa mhòr", "school.ogg": "sgoil mhòr", "science.ogg": "saidheans mòr", "scratch.ogg": "a' sgrìobadh", "scream.ogg": "a' leigeil èigh", "screw.ogg": "sgriubha mhòr", "scribble.ogg": "a' sgrochladh", "seat.ogg": "suidheachan mòr", "see.ogg": "a' faicinn", "seed.ogg": "sìol beag", "shake.ogg": "a' crathadh", "shark.ogg": "cearban mòr", "shed.ogg": "seada beag", "shelf.ogg": "sgeilp bheag", "shell.ogg": "slige mhòr", "ship.ogg": "bàta beag", "shirt.ogg": "lèine bheag", "shoe.ogg": "bròg mhòr", "shop.ogg": "bùth beag nan dèideagan", "shore.ogg": "tràigh bheag", "short.ogg": "goirid", "shower.ogg": "frasair mòr", "shrimp.ogg": "muasgan-caol", "shrub.ogg": "tuba bheag", "shut.ogg": "dùinte", "sick.ogg": "tinn", "sign.ogg": "sanas mòr", "sing.ogg": "a' seinn", "sink.ogg": "dòirteal beag", "sip.ogg": "a' gabhail drùthag", "sit.ogg": "na shuidhe", "skate.ogg": "a' falbh air spèileabord ", "ski.ogg": "a' sgìtheadh", "skin.ogg": "craiceann bog", "skirt.ogg": "sgiort bheag", "skunk.ogg": "tùdair beag", "sky.ogg": "turadh beag", "sled.ogg": "càrn beag", "sleep.ogg": "na chadal", "sleeve.ogg": "muilcheann goirid", "sleigh.ogg": "slaodan mòr", "slide.ogg": "sleamhnag bheag", "slime.ogg": "snàmhas", "slope.ogg": "leathad mòr", "small.ogg": "beag", "smell.ogg": "fàileadh math", "smile.ogg": "gàire mhòr", "smock.ogg": "na luideagan", "smoke.ogg": "ceò beag", "smooch.ogg": "a' pògadh", "snack.ogg": "biadh beag", "snail.ogg": "seilcheag bheag", "snake.ogg": "nathair mhòr", "sneaker.ogg": "bròg-spòrs", "sniff.ogg": "a' snòtadh", "snow.ogg": "sneachd mòr", "sock.ogg": "stocainn gheal", "spaghetti.ogg": "spaghetti", "spear.ogg": "sleagh mhòr", "spider.ogg": "damhan-allaidh mòr", "spike.ogg": "gràineag bheag", "spill.ogg": "a' dòrtadh", "splash.ogg": "a' plubadaich", "splatter.ogg": "steall beag", "sponge.ogg": "spong mòr", "spoon.ogg": "spàin mhòr", "sport.ogg": "spòrs", "spot.ogg": "aodach breac", "spray.ogg": "a' stealladh", "spread.ogg": "a' liacradh", "spring.ogg": "sprionga mòr", "sprinkle.ogg": "craiteachan beag", "square.ogg": "ceàrnagach", "squash.ogg": "peapag chrom", "squat.ogg": "a' dèanamh gurraban", "squid.ogg": "gibearnach beag", "squirrel.ogg": "feòrag bheag", "squirt.ogg": "botal-steallaidh", "stack.ogg": "cruach mhòr", "stage.ogg": "àrd-ùrlar beag", "stamp.ogg": "stampa beag", "stand.ogg": "na sheasamh", "star.ogg": "rionnag bheag", "stare.ogg": "a' dùr-choimhead", "starfish.ogg": "crosgag bheag", "stem.ogg": "gas bheag", "stew.ogg": "stiubha math", "stick.ogg": "maide beag", "sting.ogg": "gath beag", "stone.ogg": "dòirneag bheag", "stop.ogg": "stad ort", "store.ogg": "bùth beag", "stove.ogg": "stòbha beag", "straight.ogg": "dìreach", "straw.ogg": "stràbh beag", "strawberry.ogg": "sùbh-làir milis", "stream.ogg": "allt beag", "street.ogg": "sràid mhòr", "stretch.ogg": "a' sìneadh", "string.ogg": "sreang fhada", "stripe.ogg": "stiall ghorm", "strong.ogg": "làidir", "study.ogg": "ag ionnsachadh", "stump.ogg": "stoc mòr", "suit.ogg": "deise ghorm", "summer.ogg": "samhradh math", "sun.ogg": "grian bhlàth", "swan.ogg": "eala bhàn", "sweat.ogg": "a' cur fallas", "swim.ogg": "a' snàmh", "tag.ogg": "taga beag", "tall.ogg": "àrd", "teach.ogg": "a' teagasg", "teacher.ogg": "tidsear math", "tear.ogg": "a' reubadh", "teeth.ogg": "fiaclan geala", "ten.ogg": "a deich", "thick.ogg": "tiugh", "thigh.ogg": "leis thana", "think.ogg": "a' smaoineachadh", "thread.ogg": "snàithlean pinc", "three.ogg": "a trì", "throat.ogg": "sgòrnan goirt", "throw.ogg": "a' tilgeil", "tick.ogg": "feursad beag", "time.ogg": "an t-àm", "tired.ogg": "sgìth", "toilet.ogg": "an taigh-beag", "tool.ogg": "acainnean", "top.ogg": "am mullach", "torch.ogg": "leus gorm", "touch.ogg": "a' beantainn", "towel.ogg": "searbhadair buidhe", "toy.ogg": "dèideag bheag", "trail.ogg": "slighe thana", "train.ogg": "trèan beag", "trap.ogg": "ribe beag", "trash.ogg": "sgudal salach", "tray.ogg": "treidhe bheag", "treat.ogg": "siùcaran", "tree.ogg": "craobh mhòr", "truck.ogg": "làraidh dhearg", "tube.ogg": "beul-dath dearg", "tune.ogg": "fonn math", "two.ogg": "a dhà", "under.ogg": "foidhe", "van.ogg": "bhana beag", "vet.ogg": "dotair math", "wag.ogg": "a' crathadh earball", "walk.ogg": "a' seasamh air leth-chas", "wash.ogg": "a' gabhail amar", "watch.ogg": "uaireadair beag", "water.ogg": "uisge fuar", "wedge.ogg": "gèinn mòr", "wet.ogg": "fliuch", "wheat.ogg": "cruithneachd mhath", "wheel.ogg": "cuibhle chruinn", "whisk.ogg": "sguabag bheag", "whisper.ogg": "a' cagair", "white.ogg": "dath geal", "wig.ogg": "falt fuadain", "win.ogg": "a' buannachadh", "wind.ogg": "gaoth mhòr", "wing.ogg": "sgiath bheag", "wood.ogg": "dèile fhada", "wrench.ogg": "toinnear beag", "wrist.ogg": "caol an dùirn", "write.ogg": "a' sgrìobhadh", "yarn.ogg": "iarna bheag", "yum.ogg": "blasta", - "zoo.ogg": "sutha beag" + "zoo.ogg": "sutha beag", + "U0030.ogg": "neoni", + "U0031.ogg": "aon", + "U0032.ogg": "dhà", + "U0033.ogg": "trì", + "U0034.ogg": "ceithir", + "U0035.ogg": "còig", + "U0036.ogg": "sia", + "U0037.ogg": "seachd", + "U0038.ogg": "ochd", + "U0039.ogg": "naoidh", + "10.ogg": "", + "11.ogg": "", + "12.ogg": "", + "16.ogg": "" } diff --git a/src/activities/lang/resource/content-it.json b/src/activities/lang/resource/content-it.json index 247cea85d..f235ea1cb 100644 --- a/src/activities/lang/resource/content-it.json +++ b/src/activities/lang/resource/content-it.json @@ -1,582 +1,585 @@ { "ate.ogg": "", "bake.ogg": "cucinare", "bark.ogg": "abbaiare", "beg.ogg": "pregare", "bite.ogg": "mordere", "blink.ogg": "", "boil.ogg": "bollire", "break.ogg": "", "call.ogg": "chiamare", "catch.ogg": "pescare", "centipede.ogg": "il centipede", "chat.ogg": "bisbigliare", "chop.ogg": "affettare", "clap.ogg": "", "clean.ogg": "", "crawl.ogg": "gattonare", "croak.ogg": "gracidare", "cry.ogg": "piangere", "cut.ogg": "tagliare", "dig.ogg": "scavare", "drank.ogg": "bere", "draw.ogg": "disegnare", "dream.ogg": "sognare", "drive.ogg": "guida", "drool.ogg": "sbava", "dry.ogg": "", "eat.ogg": "mangiare", "fell.ogg": "", "fetch.ogg": "riportare", "find.ogg": "trovare", "float.ogg": "galleggiare", "fly.ogg": "volare", "freeze.ogg": "congelare", "growl.ogg": "ringhiare", "hatch.ogg": "schiudere", "hear.ogg": "ascoltare", "howl.ogg": "ululare", "hug.ogg": "abbracciare", "jump.ogg": "saltare", "kneel.ogg": "", "knit.ogg": "lavorare ai ferri", "lick.ogg": "leccare", "look.ogg": "guardare", "meet.ogg": "incontrare", "nap.ogg": "pisolare", "peck.ogg": "beccare", "play.ogg": "giocare", "plow.ogg": "dissodare", "pounce.ogg": "", "quarrel.ogg": "litigare", "read.ogg": "leggere", "rip.ogg": "strappato", "run.ogg": "corre", "sat.ogg": "", "scared.ogg": "", "scratch.ogg": "", "scream.ogg": "urlare", "scribble.ogg": "lo scarabocchio", "see.ogg": "vedere", "shake.ogg": "", "sing.ogg": "cantare", "sip.ogg": "succhiare", "sit.ogg": "sedere", "sleep.ogg": "dormire", "smell.ogg": "", "smooch.ogg": "", "sniff.ogg": "annusare", "spill.ogg": "", "splash.ogg": "", "spray.ogg": "spruzzare", "spread.ogg": "spalmare", "spring.ogg": "", "squat.ogg": "", "sting.ogg": "pungere", "stop.ogg": "", "stretch.ogg": "", "study.ogg": "studiare", "teach.ogg": "insegnare", "tear.ogg": "strappare", "think.ogg": "pensare", "touch.ogg": "toccare", "wag.ogg": "", "walk.ogg": "camminare", "wash.ogg": "", "whisper.ogg": "sussurrare", "win.ogg": "", "back.ogg": "la schiena", "braid.ogg": "la treccia", "brain.ogg": "il cervello", "bump.ogg": "il bernoccolo", "chin.ogg": "il mento", "ear.ogg": "l'orecchio", "face.ogg": "la faccia", "feet.ogg": "i piedi", "fist.ogg": "il pugno", "foot.ogg": "il piede", "grin.ogg": "il ghigno", "hair.ogg": "i capelli", "hand.ogg": "la mano", "head.ogg": "la testa", "hip.ogg": "i fianchi", "knee.ogg": "il ginocchio", "lap.ogg": "il grembo", "lip.ogg": "le labbra", "mouth.ogg": "la bocca", "neck.ogg": "il collo", "nose.ogg": "il naso", "scar.ogg": "la cicatrice", "skin.ogg": "la pelle", "stare.ogg": "lo sguardo", "sweat.ogg": "il sudore", "teeth.ogg": "i denti", "thigh.ogg": "la coscia", "throat.ogg": "la gola", "wrist.ogg": "il polso", "bib.ogg": "il bavaglino", "cap.ogg": "il cappellino", "cape.ogg": "il mantello", "coat.ogg": "il cappotto", "dress.ogg": "il vestito", "glove.ogg": "i guanti", "hat.ogg": "il cappello", "patch.ogg": "la toppa", "scarf.ogg": "la sciarpa", "shirt.ogg": "la camicia", "shoe.ogg": "la scarpa", "short.ogg": "i pantaloni corti", "skirt.ogg": "la gonna", "sleeve.ogg": "la manica", "smock.ogg": "", "sneaker.ogg": "la scarpa da tennis", "sock.ogg": "il calzino", "suit.ogg": "l'abito", "zoo.ogg": "lo zoo", "danger.ogg": "", "frown.ogg": "", "fun.ogg": "il divertimento", "mad.ogg": "la follia", "rage.ogg": "la rabbia", "sad.ogg": "la tristezza", "smile.ogg": "il sorriso", "whisk.ogg": "", "chief.ogg": "", "clown.ogg": "il pagliaccio", "coach.ogg": "l'allenatrice", "cowboy.ogg": "il cowboy", "hunter.ogg": "il cacciatore", "judge.ogg": "il giudice", "knight.ogg": "il cavaliere", "lad.ogg": "", "pope.ogg": "il papa", "prince.ogg": "il principe", "princess.ogg": "la principessa", "queen.ogg": "la regina", "teacher.ogg": "la maestra", "vet.ogg": "il veterinario", "boy.ogg": "il ragazzo", "bride.ogg": "la sposa", "brother.ogg": "il fratello", "child.ogg": "il bambino", "dad.ogg": "il papà", "friend.ogg": "gli amici", "girl.ogg": "la ragazza", "gnome.ogg": "lo gnomo", "mate.ogg": "", "men.ogg": "gli uomini", "pal.ogg": "", "athlete.ogg": "l'atleta", "ballet.ogg": "il balletto", "camp.ogg": "", "cheer.ogg": "", "climb.ogg": "", "dance.ogg": "", "dive.ogg": "", "explore.ogg": "", "hike.ogg": "", "hit.ogg": "", "hop.ogg": "", "jog.ogg": "correre", "lift.ogg": "sollevare i pesi", "ran.ogg": "", "ride.ogg": "andare in bicicletta", "skate.ogg": "pattinare", "ski.ogg": "sciare", "sport.ogg": "sport", "swim.ogg": "nuotare", "write.ogg": "", "alligator.ogg": "l'alligatore", "animal.ogg": "gli animali", "bait.ogg": "", "bat.ogg": "il pipistrello", "bee.ogg": "l'ape", "beetle.ogg": "lo scarabeo", "bird.ogg": "l'uccello", "bug.ogg": "l'insetto", "camel.ogg": "il cammello", "cat.ogg": "il gatto", "chick.ogg": "il pulcino", "chicken.ogg": "la gallina", "chimp.ogg": "la scimmia", "clam.ogg": "la conchiglia", "claw.ogg": "gli artigli", "cow.ogg": "la mucca", "crab.ogg": "il granchio", "crocodile.ogg": "il coccodrillo", "crow.ogg": "il corvo", "den.ogg": "la tana", "dog.ogg": "il cane", "dragon.ogg": "il drago", "duck.ogg": "l'anatra", "fin.ogg": "la pinna", "fish.ogg": "il pesce", "flies.ogg": "la mosca", "fox.ogg": "la volpe", "frog.ogg": "la rana", "fur.ogg": "la pelliccia", "giraffe.ogg": "la giraffa", "goat.ogg": "la capra", "hen.ogg": "la gallina", "herd.ogg": "il gregge", "hound.ogg": "il segugio", "lamb.ogg": "l'agnello", "mane.ogg": "la criniera", "mice.ogg": "i topi", "mole.ogg": "la talpa", "mosquito.ogg": "la zanzara", "mule.ogg": "il mulo", "owl.ogg": "il gufo", "ox.ogg": "il bue", "paw.ogg": "", "pet.ogg": "", "pig.ogg": "il maiale", "pug.ogg": "", "puppy.ogg": "il cucciolo", "rat.ogg": "il ratto", "shark.ogg": "il pescecane", "shell.ogg": "la conchiglia", "shrimp.ogg": "il gambero", "skunk.ogg": "la puzzola", "slime.ogg": "la bava", "snail.ogg": "la lumaca", "snake.ogg": "il serpente", "spider.ogg": "il ragno", "spike.ogg": "gli aculei", "squid.ogg": "il calamaro", "squirrel.ogg": "lo scoiattolo", "starfish.ogg": "la stella di mare", "swan.ogg": "il cigno", "tick.ogg": "la zecca", "wing.ogg": "l'ala", "yum.ogg": "", "bone.ogg": "l'osso", "bread.ogg": "il pane", "bun.ogg": "il panino", "cake.ogg": "il dolce", "candy.ogg": "la caramella", "cheese.ogg": "il formaggio", "chocolate.ogg": "il cioccolato", "cookie.ogg": "i biscotti", "crumb.ogg": "la briciola", "crust.ogg": "la crosta", "drink.ogg": "il caffè", "feast.ogg": "", "flour.ogg": "la farina", "food.ogg": "", "fudge.ogg": "", "gum.ogg": "la gomma da masticare", "ice.ogg": "il ghiaccio", "juice.ogg": "il succo d'arancia", "lunch.ogg": "la merenda", "pop.ogg": "", "rice.ogg": "il riso", "sandwich.ogg": "il panino", "sauce.ogg": "la salsa", "snack.ogg": "", "spaghetti.ogg": "gli spaghetti", "sprinkle.ogg": "", "stew.ogg": "lo stufato", "treat.ogg": "", "cherry.ogg": "le ciliegie", "fruit.ogg": "la frutta", "lime.ogg": "il lime", "orange.ogg": "l'arancio", "peach.ogg": "la pesca", "plum.ogg": "la prugna", "bay.ogg": "la baia", "beach.ogg": "la spiaggia", "cave.ogg": "la grotta", "cliff.ogg": "il burrone", "cloud.ogg": "la nuvola", "cold.ogg": "", "dirt.ogg": "", "dune.ogg": "la duna", "earth.ogg": "la terra", "fire.ogg": "il fuoco", "flame.ogg": "la fiamma", "garden.ogg": "il giardino", "gem.ogg": "", "ground.ogg": "la terra", "heat.ogg": "il caldo", "hole.ogg": "il buco", "lake.ogg": "il lago", "land.ogg": "la terra", "ledge.ogg": "", "mud.ogg": "il fango", "night.ogg": "la notte", "ocean.ogg": "l'oceano", "path.ogg": "il sentiero", "rock.ogg": "la roccia", "sand.ogg": "la sabbia", "shore.ogg": "il bagnasciuga", "sky.ogg": "il cielo", "slope.ogg": "", "smoke.ogg": "il fumo", "snow.ogg": "la neve", "star.ogg": "la stella", "stone.ogg": "la pietra", "stream.ogg": "il vapore", "summer.ogg": "l'estate", "sun.ogg": "il sole", "time.ogg": "il tempo", "top.ogg": "la cima", "trail.ogg": "", "water.ogg": "l'acqua", "wind.ogg": "il vento", "yarn.ogg": "", "angel.ogg": "", "bit.ogg": "il bocconcino", "class.ogg": "i compiti", "price.ogg": "il prezzo", "question.ogg": "la domanda", "quiz.ogg": "quiz", "science.ogg": "la scienza", "splatter.ogg": "", "tune.ogg": "le note", "branch.ogg": "il ramo", "bud.ogg": "la gemma", "bush.ogg": "il cespuglio", "flower.ogg": "il fiore", "grass.ogg": "l'erba", "hay.ogg": "la paglia", "hedge.ogg": "la siepe", "lawn.ogg": "il prato", "pine.ogg": "il pino", "plant.ogg": "la pianta", "rose.ogg": "la rosa", "seed.ogg": "il seme", "shrub.ogg": "", "stem.ogg": "lo stelo", "stick.ogg": "", "stump.ogg": "il ceppo", "tree.ogg": "l'albero", "carrot.ogg": "la carota", "corn.ogg": "la pannocchia", "cucumber.ogg": "il cetriolo", "mushroom.ogg": "il fungo", "nut.ogg": "l'arachide", "squash.ogg": "la zucca", "bank.ogg": "la banca", "barn.ogg": "il fienile", "bridge.ogg": "il ponte", "cabin.ogg": "", "cage.ogg": "la gabbia", "castle.ogg": "il castello", "door.ogg": "la porta", "fair.ogg": "", "fountain.ogg": "la fontana", "grave.ogg": "la tomba", "home.ogg": "la casa", "hut.ogg": "la capanna", "lane.ogg": "la strada", "pool.ogg": "la piscina", "ramp.ogg": "la rampa", "roof.ogg": "il tetto", "school.ogg": "la scuola", "shed.ogg": "", "shop.ogg": "il negozio", "stage.ogg": "il palco", "store.ogg": "il negozio", "street.ogg": "la via", "strawberry.ogg": "la fragola", "bath.ogg": "la vasca da bagno", "bed.ogg": "il letto", "bench.ogg": "la panchina", "chair.ogg": "la sedia", "chest.ogg": "il forziere", "couch.ogg": "il divano", "crib.ogg": "la culla", "desk.ogg": "la scrivania", "fan.ogg": "il ventilatore", "lamp.ogg": "la lampada", "light.ogg": "la luce", "mat.ogg": "il tappetino", "quilt.ogg": "la trapunta", "rug.ogg": "il tappeto", "seat.ogg": "la sedia a dondolo", "shelf.ogg": "lo scaffale", "shower.ogg": "la doccia", "sink.ogg": "il lavandino", "stove.ogg": "la cucina", "toilet.ogg": "il gabinetto", "balance.ogg": "la bilancia", "can.ogg": "i barattoli", "clock.ogg": "la sveglia", "dish.ogg": "la zuppiera", "fork.ogg": "la forchetta", "glass.ogg": "il bicchiere", "knife.ogg": "il coltello", "lid.ogg": "il coperchio", "mop.ogg": "", "mug.ogg": "la tazza", "pan.ogg": "la padella", "plate.ogg": "il piatto", "pot.ogg": "la pentola", "scale.ogg": "la bilancia", "sponge.ogg": "la spugna", "spoon.ogg": "il cucchiaio", "trash.ogg": "la spazzatura", "tray.ogg": "il vassoio", "farm.ogg": "la fattoria", "anchor.ogg": "l'ancora", "badge.ogg": "la medaglia", "bag.ogg": "lo zaino", "ball.ogg": "la palla", "bead.ogg": "la perlina", "block.ogg": "il cubo", "board.ogg": "il cartello", "bomb.ogg": "la bomba", "book.ogg": "il libro", "box.ogg": "la scatola", "candle.ogg": "la candela", "cane.ogg": "il bastone", "card.ogg": "la cartolina", "cart.ogg": "il carrello", "cash.ogg": "i soldi", "chalk.ogg": "il gesso", "clay.ogg": "l'argilla", "cloth.ogg": "il tessuto", "coin.ogg": "le monete", "comb.ogg": "il pettine", "cone.ogg": "", "crown.ogg": "la corona", "cube.ogg": "il cubo", "drum.ogg": "il tamburo", "flag.ogg": "la bandiera", "flute.ogg": "il flauto", "game.ogg": "il giocattolo", "gift.ogg": "il regalo", "glue.ogg": "la colla", "hook.ogg": "l'amo", "hose.ogg": "", "ink.ogg": "l'inchiostro", "jewel.ogg": "il gioiello", "kite.ogg": "l'aquilone", "knot.ogg": "il nodo", "log.ogg": "i ceppi", "map.ogg": "la mappa", "mask.ogg": "la maschera da sub", "match.ogg": "i fiammiferi", "nest.ogg": "il nido", "net.ogg": "la rete", "oar.ogg": "i remi", "page.ogg": "la pagina", "pair.ogg": "un paio", "pen.ogg": "la penna", "pencil.ogg": "la matita", "picture.ogg": "il quadro", "pole.ogg": "il palo", "prize.ogg": "il premio", "rag.ogg": "lo strofinaccio", "rope.ogg": "la corda", "sign.ogg": "il cartello", "sleigh.ogg": "la slitta", "slide.ogg": "lo scivolo", "squirt.ogg": "", "stack.ogg": "una pila", "stamp.ogg": "il francobollo", "straw.ogg": "la cannuccia", "string.ogg": "lo spago", "tag.ogg": "il cartellino", "thread.ogg": "il filo", "torch.ogg": "la torcia", "towel.ogg": "l'asciugamano", "toy.ogg": "il giocattolo", "trap.ogg": "la trappola", "tube.ogg": "il rossetto", "watch.ogg": "l'orologio da polso", "wheel.ogg": "la ruota", "wig.ogg": "la parrucca", "wood.ogg": "il legno", "link.ogg": "l'anello", "dirty.ogg": "sporco", "throw.ogg": "lanciare", "brick.ogg": "i mattoni", "brush.ogg": "il pennello", "flash.ogg": "la torcia elettrica", "rake.ogg": "il rastrello", "screw.ogg": "la vite", "spear.ogg": "la lancia", "tool.ogg": "gli attrezzi", "wedge.ogg": "il cuneo", "wrench.ogg": "la chiave inglese", "bike.ogg": "la bicicletta", "boat.ogg": "la barca", "canoe.ogg": "la canoa", "car.ogg": "l'automobile", "plane.ogg": "l'aeroplano", "sail.ogg": "la vela", "ship.ogg": "la nave", "sled.ogg": "la slitta", "train.ogg": "il treno", "truck.ogg": "il camion", "black.ogg": "nero", "blue.ogg": "blu", "brown.ogg": "marrone", "color.ogg": "", "gray.ogg": "grigio", "green.ogg": "verde", "orange-color.ogg": "arancione", "pink.ogg": "rosa", "red.ogg": "rosso", "white.ogg": "bianco", "five.ogg": "cinque", "one.ogg": "uno", "ten.ogg": "dieci", "three.ogg": "tre", "two.ogg": "due", "van.ogg": "", "big.ogg": "", "blind.ogg": "", "blond.ogg": "", "bright.ogg": "", "crazy.ogg": "", "cute.ogg": "", "dot.ogg": "", "empty.ogg": "", "fat.ogg": "", "flat.ogg": "", "front.ogg": "", "full.ogg": "", "giant.ogg": "", "happy.ogg": "", "high.ogg": "", "hot.ogg": "", "huge.ogg": "", "left.ogg": "", "line.ogg": "", "liquid.ogg": "", "magic.ogg": "", "on.ogg": "", "pretty.ogg": "", "right.ogg": "", "round.ogg": "", "royal.ogg": "", "shut.ogg": "", "sick.ogg": "", "small.ogg": "", "spot.ogg": "", "square.ogg": "", "stand.ogg": "", "straight.ogg": "", "stripe.ogg": "", "strong.ogg": "", "tall.ogg": "", "thick.ogg": "", "tired.ogg": "", "under.ogg": "", "wet.ogg": "", "wheat.ogg": "", "U0030.ogg": "zero", "U0031.ogg": "uno", "U0032.ogg": "due", "U0033.ogg": "tre", "U0034.ogg": "quattro", "U0035.ogg": "cinque", "U0036.ogg": "sei", "U0037.ogg": "sette", "U0038.ogg": "otto", "U0039.ogg": "nove", - "10.ogg": "dieci" + "10.ogg": "dieci", + "11.ogg": "undici", + "12.ogg": "dodici", + "16.ogg": "sedici" } diff --git a/src/activities/lang/resource/content-pt_BR.json b/src/activities/lang/resource/content-pt_BR.json index 20355d920..a535aeb00 100644 --- a/src/activities/lang/resource/content-pt_BR.json +++ b/src/activities/lang/resource/content-pt_BR.json @@ -1,572 +1,586 @@ { "ate.ogg": "comer", "bake.ogg": "cozinhar", "bark.ogg": "latir", "beg.ogg": "implorar", "bite.ogg": "morder", "blink.ogg": "piscar", "boil.ogg": "ferver", "break.ogg": "partir", "call.ogg": "ligar", "catch.ogg": "pegar", "centipede.ogg": "centopeia", "chat.ogg": "conversar", "chop.ogg": "cortar", "clap.ogg": "palma", "clean.ogg": "limpar", "crawl.ogg": "engatinhar", "croak.ogg": "coaxar", "cry.ogg": "chorar", "cut.ogg": "cortar", "dig.ogg": "escavar", "drank.ogg": "beber", "draw.ogg": "desenhar", "dream.ogg": "sonhar", "drive.ogg": "dirigir", "drool.ogg": "babar", "dry.ogg": "secar", "eat.ogg": "comer", "fell.ogg": "cair", "fetch.ogg": "buscar", "find.ogg": "encontrar", "float.ogg": "boiar", "fly.ogg": "voar", "freeze.ogg": "congelar", "growl.ogg": "rosnar", "hatch.ogg": "chocar", "hear.ogg": "escutar", "howl.ogg": "uivar", "hug.ogg": "abraçar", "jump.ogg": "pular", "kneel.ogg": "ajoelhar", "knit.ogg": "tricotar", "lick.ogg": "lamber", "look.ogg": "olhar", "meet.ogg": "encontrar", "nap.ogg": "cochilar", "peck.ogg": "bicar", "play.ogg": "brincar", "plow.ogg": "arar", "pounce.ogg": "atacar", "quarrel.ogg": "discutir", "read.ogg": "ler", "rip.ogg": "arrancar", "run.ogg": "correr", "sat.ogg": "sentar", "scared.ogg": "assustar", "scratch.ogg": "arranhar", "scream.ogg": "gritar", "scribble.ogg": "rabiscar", "see.ogg": "observar", "shake.ogg": "sacudir", "sing.ogg": "cantar", "sip.ogg": "sorver", "sit.ogg": "sentar", "sleep.ogg": "dormir", "smell.ogg": "cheirar", "smooch.ogg": "beijar", "sniff.ogg": "farejar", "spill.ogg": "derramar", "splash.ogg": "respingar", "spray.ogg": "borrifar", "spread.ogg": "espalhar", "spring.ogg": "pular", "squat.ogg": "agachar", "sting.ogg": "ferroar", "stop.ogg": "parar", "stretch.ogg": "alongar", "study.ogg": "estudar", "teach.ogg": "ensinar", "tear.ogg": "rasgar", "think.ogg": "pensar", "touch.ogg": "tocar", "wag.ogg": "abanar", "walk.ogg": "andar", "wash.ogg": "lavar", "whisper.ogg": "cochichar", "win.ogg": "ganhar", "back.ogg": "costas", "braid.ogg": "trança", "brain.ogg": "cérebro", "bump.ogg": "batida", "chin.ogg": "queixo", "ear.ogg": "orelha", "face.ogg": "face", "feet.ogg": "pés", "fist.ogg": "punho", "foot.ogg": "pé", "grin.ogg": "sorriso", "hair.ogg": "cabelo", "hand.ogg": "mão", "head.ogg": "cabeça", "hip.ogg": "quadril", "knee.ogg": "joelho", "lap.ogg": "colo", "lip.ogg": "lábio", "mouth.ogg": "boca", "neck.ogg": "pescoço", "nose.ogg": "nariz", "scar.ogg": "cicatriz", "skin.ogg": "pele", "stare.ogg": "olhar", "sweat.ogg": "suor", "teeth.ogg": "dentes", "thigh.ogg": "coxa", "throat.ogg": "garganta", "wrist.ogg": "pulso", "bib.ogg": "babador", "cap.ogg": "boné", "cape.ogg": "capa", "coat.ogg": "casaco", "dress.ogg": "vestido", "glove.ogg": "luva", "hat.ogg": "chapéu", "patch.ogg": "remendo", "scarf.ogg": "cachecol", "shirt.ogg": "camisa", "shoe.ogg": "sapato", "short.ogg": "short", "skirt.ogg": "saia", "sleeve.ogg": "manga", "smock.ogg": "jaleco", "sneaker.ogg": "tênis", "sock.ogg": "meia", "suit.ogg": "terno", "zoo.ogg": "zoológico", "danger.ogg": "perigo", "frown.ogg": "franzida", "fun.ogg": "diversão", "mad.ogg": "furioso", "rage.ogg": "raiva", "sad.ogg": "tristeza", "smile.ogg": "sorriso", "whisk.ogg": "batedor", "chief.ogg": "cacique", "clown.ogg": "palhaço", "coach.ogg": "treinador", "cowboy.ogg": "vaqueiro", "hunter.ogg": "caçador", "judge.ogg": "juiz", "knight.ogg": "cavaleiro", "lad.ogg": "rapaz", "pope.ogg": "papa", "prince.ogg": "príncipe", "princess.ogg": "princesa", "queen.ogg": "rainha", "teacher.ogg": "professor", "vet.ogg": "veterinário", "boy.ogg": "menino", "bride.ogg": "noiva", "brother.ogg": "irmão", "child.ogg": "criança", "dad.ogg": "pai", "friend.ogg": "amigo", "girl.ogg": "menina", "gnome.ogg": "gnomo", "mate.ogg": "colega", "men.ogg": "homens", "pal.ogg": "camarada", "athlete.ogg": "atleta", "ballet.ogg": "balé", "camp.ogg": "acampamento", "cheer.ogg": "torcer", "climb.ogg": "escalar", "dance.ogg": "dança", "dive.ogg": "mergulho", "explore.ogg": "explorar", "hike.ogg": "caminhar", "hit.ogg": "golpear", "hop.ogg": "saltar", "jog.ogg": "correr", "lift.ogg": "levantar", "ran.ogg": "chegada", "ride.ogg": "pedalar", "skate.ogg": "patinar", "ski.ogg": "esquiar", "sport.ogg": "esporte", "swim.ogg": "nadar", "write.ogg": "escrever", "alligator.ogg": "jacaré", "animal.ogg": "animais", "bait.ogg": "isca", "bat.ogg": "morcego", "bee.ogg": "abelha", "beetle.ogg": "besouro", "bird.ogg": "pássaro", "bug.ogg": "inseto", "camel.ogg": "camelo", "cat.ogg": "gato", "chick.ogg": "pintinho", "chicken.ogg": "frango", "chimp.ogg": "chimpanzé", "clam.ogg": "molusco", "claw.ogg": "garra", "cow.ogg": "vaca", "crab.ogg": "caranguejo", "crocodile.ogg": "crocodilo", "crow.ogg": "corvo", "den.ogg": "toca", "dog.ogg": "cachorro", "dragon.ogg": "dragão", "duck.ogg": "pato", "fin.ogg": "barbatana", "fish.ogg": "peixe", "flies.ogg": "mosca", "fox.ogg": "raposa", "frog.ogg": "sapo", "fur.ogg": "pêlo", "giraffe.ogg": "girafa", "goat.ogg": "cabra", "hen.ogg": "galinha", "herd.ogg": "rebanho", "hound.ogg": "cão de caça", "lamb.ogg": "cordeiro", "mane.ogg": "juba", "mice.ogg": "ratas", "mole.ogg": "toupeira", "mosquito.ogg": "mosquito", "mule.ogg": "mula", "owl.ogg": "coruja", "ox.ogg": "boi", "paw.ogg": "pegada", "pet.ogg": "animal de estimação", "pig.ogg": "porco", "pug.ogg": "pug", "puppy.ogg": "cachorro", "rat.ogg": "rato", "shark.ogg": "tubarão", "shell.ogg": "concha", "shrimp.ogg": "camarão", "skunk.ogg": "gambá", "slime.ogg": "muco", "snail.ogg": "caracol", "snake.ogg": "cobra", "spider.ogg": "aranha", "spike.ogg": "porco-espinho", "squid.ogg": "lula", "squirrel.ogg": "esquilo", "starfish.ogg": "estrela do mar", "swan.ogg": "cisne", "tick.ogg": "carrapato", "wing.ogg": "asa", "yum.ogg": "delícia", "bone.ogg": "osso", "bread.ogg": "pão", "bun.ogg": "brioche", "cake.ogg": "bolo", "candy.ogg": "doce", "cheese.ogg": "queijo", "chocolate.ogg": "chocolate", "cookie.ogg": "biscoito", "crumb.ogg": "migalha", "crust.ogg": "casca", "drink.ogg": "bebida", "feast.ogg": "banquete", "flour.ogg": "farinha", "food.ogg": "comida", "fudge.ogg": "doce de chocolate", "gum.ogg": "chiclete", "ice.ogg": "gelo", "juice.ogg": "suco", "lunch.ogg": "lanche", "pop.ogg": "pipoca", "rice.ogg": "arroz", "sandwich.ogg": "sanduíche", "sauce.ogg": "molho", "snack.ogg": "aperitivo", "spaghetti.ogg": "espaguete", "sprinkle.ogg": "granulado", "stew.ogg": "ensopado", "treat.ogg": "doces", "cherry.ogg": "cereja", "fruit.ogg": "fruta", "lime.ogg": "limão", "orange.ogg": "laranja", "peach.ogg": "pêssego", "plum.ogg": "ameixa", "bay.ogg": "baía", "beach.ogg": "praia", "cave.ogg": "caverna", "cliff.ogg": "penhasco", "cloud.ogg": "nuvem", "cold.ogg": "frio", "dirt.ogg": "terra", "dune.ogg": "duna", "earth.ogg": "mundo", "fire.ogg": "fogo", "flame.ogg": "flama", "garden.ogg": "jardim", "gem.ogg": "joia", "ground.ogg": "solo", "heat.ogg": "calor", "hole.ogg": "buraco", "lake.ogg": "lago", "land.ogg": "terreno", "ledge.ogg": "borda", "mud.ogg": "lama", "night.ogg": "noite", "ocean.ogg": "oceano", "path.ogg": "caminho", "rock.ogg": "rocha", "sand.ogg": "areia", "shore.ogg": "costa", "sky.ogg": "céu", "slope.ogg": "declive", "smoke.ogg": "fumaça", "snow.ogg": "neve", "star.ogg": "estrela", "stone.ogg": "pedra", "stream.ogg": "córrego", "summer.ogg": "verão", "sun.ogg": "sol", "time.ogg": "hora", "top.ogg": "topo", "trail.ogg": "trilha", "water.ogg": "água", "wind.ogg": "vento", "yarn.ogg": "fio", "angel.ogg": "anjo", "bit.ogg": "mordida", "class.ogg": "aula", "price.ogg": "preço", "question.ogg": "pergunta", "quiz.ogg": "enigma", "science.ogg": "ciência", "splatter.ogg": "mancha", "tune.ogg": "melodia", "branch.ogg": "ramo", "bud.ogg": "broto", "bush.ogg": "arbusto", "flower.ogg": "flor", "grass.ogg": "grama", "hay.ogg": "feno", "hedge.ogg": "cerca viva", "lawn.ogg": "gramado", "pine.ogg": "pinheiro", "plant.ogg": "planta", "rose.ogg": "rosa", "seed.ogg": "semente", "shrub.ogg": "arbusto", "stem.ogg": "caule", "stick.ogg": "galho", "stump.ogg": "tronco", "tree.ogg": "árvore", "carrot.ogg": "cenoura", "corn.ogg": "milho", "cucumber.ogg": "pepino", "mushroom.ogg": "cogumelo", "nut.ogg": "noz", "squash.ogg": "abóbora", "bank.ogg": "banco", "barn.ogg": "celeiro", "bridge.ogg": "ponte", "cabin.ogg": "cabana", "cage.ogg": "gaiola", "castle.ogg": "castelo", "door.ogg": "porta", "fair.ogg": "parque ambulante", "fountain.ogg": "fonte", "grave.ogg": "lápide", "home.ogg": "lar", "hut.ogg": "oca", "lane.ogg": "pista", "pool.ogg": "piscina", "ramp.ogg": "rampa", "roof.ogg": "telhado", "school.ogg": "escola", "shed.ogg": "celeiro", "shop.ogg": "loja", "stage.ogg": "palco", "store.ogg": "mercearia", "street.ogg": "rua", "strawberry.ogg": "morango", "bath.ogg": "banheira", "bed.ogg": "cama", "bench.ogg": "banco", "chair.ogg": "cadeira", "chest.ogg": "baú", "couch.ogg": "sofá", "crib.ogg": "berço", "desk.ogg": "escrivaninha", "fan.ogg": "ventilador", "lamp.ogg": "abajur", "light.ogg": "luz", "mat.ogg": "capacho", "quilt.ogg": "colcha", "rug.ogg": "tapete", "seat.ogg": "assento", "shelf.ogg": "prateleira", "shower.ogg": "chuveiro", "sink.ogg": "pia", "stove.ogg": "fogão", "toilet.ogg": "banheiro", "balance.ogg": "balança", "can.ogg": "lata", "clock.ogg": "relógio", "dish.ogg": "prato", "fork.ogg": "garfo", "glass.ogg": "copo", "knife.ogg": "faca", "lid.ogg": "tampa", "mop.ogg": "esfregão", "mug.ogg": "caneca", "pan.ogg": "frigideira", "plate.ogg": "prato", "pot.ogg": "pote", "scale.ogg": "balança de cozinha", "sponge.ogg": "esponja", "spoon.ogg": "colher", "trash.ogg": "pá de lixo", "tray.ogg": "bandeja", "farm.ogg": "fazenda", "anchor.ogg": "âncora", "badge.ogg": "insígnia", "bag.ogg": "mochila", "ball.ogg": "bola", "bead.ogg": "bolha", "block.ogg": "bloco", "board.ogg": "placa", "bomb.ogg": "bomba", "book.ogg": "livro", "box.ogg": "caixa", "candle.ogg": "vela", "cane.ogg": "bengala", "card.ogg": "cartão", "cart.ogg": "carrinho", "cash.ogg": "dinheiro", "chalk.ogg": "giz", "clay.ogg": "argila", "cloth.ogg": "tecido", "coin.ogg": "moeda", "comb.ogg": "pente", "cone.ogg": "cone", "crown.ogg": "coroa", "cube.ogg": "cubo", "drum.ogg": "tambor", "flag.ogg": "bandeira", "flute.ogg": "flauta", "game.ogg": "jogo", "gift.ogg": "presente", "glue.ogg": "cola", "hook.ogg": "gancho", "hose.ogg": "mangueira", "ink.ogg": "tinta", "jewel.ogg": "jóia", "kite.ogg": "pipa", "knot.ogg": "nó", "log.ogg": "tora", "map.ogg": "mapa", "mask.ogg": "máscara", "match.ogg": "fósforo", "nest.ogg": "ninho", "net.ogg": "rede", "oar.ogg": "remo", "page.ogg": "página", "pair.ogg": "par", "pen.ogg": "caneta", "pencil.ogg": "lápis", "picture.ogg": "foto", "pole.ogg": "pau", "prize.ogg": "prêmio", "rag.ogg": "flanela", "rope.ogg": "corda", "sign.ogg": "placa", "sleigh.ogg": "trenó", "slide.ogg": "escorregador", "squirt.ogg": "borrifador", "stack.ogg": "pilha de pratos", "stamp.ogg": "selo", "straw.ogg": "canudo", "string.ogg": "fio", "tag.ogg": "etiqueta", "thread.ogg": "linha", "torch.ogg": "tocha", "towel.ogg": "toalha", "toy.ogg": "brinquedo", "trap.ogg": "ratoeira", "tube.ogg": "batom", "watch.ogg": "relógio", "wheel.ogg": "roda", "wig.ogg": "peruca", "wood.ogg": "madeira", "link.ogg": "argola", "dirty.ogg": "sujo", "throw.ogg": "arremessar", "brick.ogg": "tijolo", "brush.ogg": "pincel", "flash.ogg": "lanterna", "rake.ogg": "ciscador", "screw.ogg": "parafuso", "spear.ogg": "lança", "tool.ogg": "ferramenta", "wedge.ogg": "cunha", "wrench.ogg": "chave inglesa", "bike.ogg": "bicicleta", "boat.ogg": "barco", "canoe.ogg": "canoa", "car.ogg": "carro", "plane.ogg": "avião", "sail.ogg": "veleiro", "ship.ogg": "barco", "sled.ogg": "trenó", "train.ogg": "trem", "truck.ogg": "caminhão", "black.ogg": "preta", "blue.ogg": "azul", "brown.ogg": "marrom", "color.ogg": "cor", "gray.ogg": "cinza", "green.ogg": "verde", "orange-color.ogg": "laranja", "pink.ogg": "rosa", "red.ogg": "vermelha", "white.ogg": "branca", "five.ogg": "cinco", "one.ogg": "um", "ten.ogg": "dez", "three.ogg": "três", "two.ogg": "dois", "van.ogg": "van", "big.ogg": "grande", "blind.ogg": "cego", "blond.ogg": "loira", "bright.ogg": "brilhante", "crazy.ogg": "doido", "cute.ogg": "fofa", "dark.ogg": "negra", "dot.ogg": "ponto", "empty.ogg": "vazia", "fat.ogg": "gordo", "flat.ogg": "achatado", "front.ogg": "frente", "full.ogg": "cheio", "giant.ogg": "gigante", "happy.ogg": "feliz", "high.ogg": "alto", "hot.ogg": "quente", "huge.ogg": "enorme", "left.ogg": "esquerdo", "line.ogg": "listrado", "liquid.ogg": "líquido", "magic.ogg": "mágica", "on.ogg": "sobre", "pretty.ogg": "bonita", "right.ogg": "direita", "round.ogg": "redondo", "royal.ogg": "real", "shut.ogg": "fechado", "sick.ogg": "doente", "small.ogg": "pequeno", "spot.ogg": "manchado", "square.ogg": "quadrado", "stand.ogg": "de pé", "straight.ogg": "reto", "stripe.ogg": "listrado", "strong.ogg": "forte", "tall.ogg": "alto", "thick.ogg": "grosso", "tired.ogg": "cansado", "under.ogg": "embaixo", "wet.ogg": "encharcado", - "wheat.ogg": "trigo" + "wheat.ogg": "trigo", + "U0030.ogg": "zero", + "U0031.ogg": "um", + "U0032.ogg": "dois", + "U0033.ogg": "três", + "U0034.ogg": "quatro", + "U0035.ogg": "cinco", + "U0036.ogg": "seis", + "U0037.ogg": "sete", + "U0038.ogg": "oito", + "U0039.ogg": "nove", + "10.ogg": "dez", + "11.ogg": "onze", + "12.ogg": "doze", + "16.ogg": "dezesseis" } diff --git a/src/activities/letter-in-word/ActivityInfo.qml b/src/activities/letter-in-word/ActivityInfo.qml new file mode 100755 index 000000000..9b2b90f9c --- /dev/null +++ b/src/activities/letter-in-word/ActivityInfo.qml @@ -0,0 +1,35 @@ +/* GCompris - ActivityInfo.qml + * + * Copyright (C) 2016 Akshat Tandon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ +import GCompris 1.0 + +ActivityInfo { + name: "letter-in-word/LetterInWord.qml" + difficulty: 2 + icon: "letter-in-word/letter-in-word.svg" + author: "Akshat Tandon <akshat.tandon@research.iiit.ac.ins>" + demo: true + title: qsTr("Letter in which word") + description: qsTr("A letter is written and/or spoken. Some words are displayed, the children must find the word or the words in which this letter appears.") + //intro: "put here in comment the text for the intro voice" + goal: qsTr("Select all the words which contain the spoken letter.") + prerequisite: qsTr("spellings, letter recognition") + manual: "" + credit: "" + section: "reading" + createdInVersion: 7000 +} diff --git a/src/activities/letter-in-word/CMakeLists.txt b/src/activities/letter-in-word/CMakeLists.txt new file mode 100644 index 000000000..ee96cb47f --- /dev/null +++ b/src/activities/letter-in-word/CMakeLists.txt @@ -0,0 +1 @@ +GCOMPRIS_ADD_RCC(activities/letter-in-word *.qml *.svg *.js resource/*) diff --git a/src/activities/letter-in-word/Card.qml b/src/activities/letter-in-word/Card.qml new file mode 100755 index 000000000..0d97ac7bc --- /dev/null +++ b/src/activities/letter-in-word/Card.qml @@ -0,0 +1,178 @@ +/* GCompris - Card.qml + * + * Copyright (C) 2016 Akshat Tandon + * + * Authors: + * Akshat Tandon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +import QtQuick 2.1 +import GCompris 1.0 +import QtGraphicalEffects 1.0 +import "../../core" +import "letter-in-word.js" as Activity + +Item { + id: cardItem + //width: cardImage.width + height: wordPic.height + cardImage.height - 30 * ApplicationInfo.ratio + property bool mouseActive: true + + Image { + id: wordPic + sourceSize.width: cardItem.width -6 + sourceSize.height: cardItem.width -5 + fillMode: Image.PreserveAspectFit + source: imgurl + z: -5 + //visible: index % 2 != 0 ? false : true + } + + Image { + id: cardImage + anchors.top: wordPic.bottom + anchors.topMargin: -30 * ApplicationInfo.ratio + sourceSize.width: cardItem.width - 10 + fillMode: Image.PreserveAspectFit + source: Activity.resUrl2 + "cloud.svg" + z: (state == 'scaled') ? 1 : -1 + //visible: index % 2 != 0 ? false : true + + GCText { + id: textItem + z: 11 + // textFound is the rich text with letter found, spelling is the text in the dataset + text:"" + (selected ? textFound : spelling) + "" + property string textFound: spelling + textFormat: Text.RichText + font.pointSize: NaN // need to clear font.pointSize explicitly + font.pixelSize: spelling.length > 5 ? (spelling.length > 7 ? cardImage.width * 0.19 : cardImage.width * 0.25): cardImage.width * 0.30 + font.bold: true + style: Text.Outline + width: cardImage.width + height: cardImage.height + wrapMode: spelling.indexOf(' ') === -1 ? Text.WrapAnywhere : Text.WordWrap + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + styleColor: "#2a2a2a" + } + + ParticleSystemStarLoader { + id: particle + clip: false + } + + states: + State { + name: "scaled"; when: mouseArea.containsMouse && mouseActive + PropertyChanges { + target: cardItem + scale: /*carriageImage.scale * */ 1.2 + z: 2 + } + } + + transitions: Transition { + NumberAnimation { properties: "scale"; easing.type: Easing.OutCubic } + } + + SequentialAnimation { + id: successAnimation + running: selected + loops: 2 + NumberAnimation { + target: cardImage + easing.type: Easing.InOutQuad + property: "rotation" + to: 20; duration: 500 + } + NumberAnimation { + target: cardImage + easing.type: Easing.InOutQuad + property: "rotation"; to: -20 + duration: 500 + } + onRunningChanged: { + if(!running && selected) { + rotationStop.restart() + } + } + } + + SequentialAnimation { + id: failureAnimation + NumberAnimation { + target: colorCardImage + property: "opacity" + to: 1; duration: 400 + } + NumberAnimation { + target: colorCardImage + property: "opacity" + to: 0; duration: 200 + } + } + + NumberAnimation { + id: rotationStop + running: !selected + target: cardImage + property: "rotation" + to: 0 + duration: 500 + easing.type: Easing.InOutQuad + } + } + + Colorize { + id: colorCardImage + z: 5 + anchors.fill: cardImage + source: cardImage + hue: 0.0 + saturation: 1 + opacity: 0 + } + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: ApplicationInfo.isMobile ? false : true + onClicked: { + select(); + } + } + + function playWord() { + var locale = ApplicationInfo.getVoicesLocale(items.locale) + activity.audioVoices.append( + ApplicationInfo.getAudioFilePathForLocale(voice, locale)) + } + + function select() { + if(mouseActive && !successAnimation.running) { + if (Activity.checkWord(index)) { + successAnimation.restart(); + particle.burst(30); + textItem.textFound = spelling.replace(RegExp(Activity.currentLetter, "g"), ""+Activity.currentLetter+""); + playWord(); + } + else { + failureAnimation.restart() + } + } + } +} diff --git a/src/activities/letter-in-word/LetterInWord.qml b/src/activities/letter-in-word/LetterInWord.qml new file mode 100755 index 000000000..1074c0ed6 --- /dev/null +++ b/src/activities/letter-in-word/LetterInWord.qml @@ -0,0 +1,331 @@ +/* GCompris - LetterInWord.qml + * + * Copyright (C) 2014 Holger Kaelberer + * 2016 Akshat Tandon + * + * Authors: + * Holger Kaelberer (Click on Letter - Qt Quick port) + * Akshat Tandon (Modifications to Click on Letter code + * to make Letter in which word activity) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +import QtQuick 2.1 +import QtGraphicalEffects 1.0 +import GCompris 1.0 +import "../../core" +import "letter-in-word.js" as Activity +import "qrc:/gcompris/src/core/core.js" as Core + +ActivityBase { + id: activity + focus: true + + onStart: focus = true + + pageComponent: Image { + id: background + source: Activity.resUrl + "hillside.svg" + sourceSize.width: parent.width + fillMode: Image.PreserveAspectCrop + focus: true + + // system locale by default + property string locale: "system" + + property bool keyboardMode: false + + signal start + signal stop + signal voiceError + + Component.onCompleted: { + dialogActivityConfig.getInitialConfiguration() + activity.start.connect(start) + activity.stop.connect(stop) + } + + QtObject { + id: items + property Item main: activity.main + property alias bar: bar + property alias wordsModel: wordsModel + property GCAudio audioVoices: activity.audioVoices + property alias parser: parser + property alias animateX: animateX + property alias repeatItem: repeatItem + property alias score: score + property alias bonus: bonus + property alias locale: background.locale + property string question + } + + onStart: { + activity.audioVoices.error.connect(voiceError) + Activity.start(items); + } + + onStop: Activity.stop() + + onWidthChanged: { + animateX.restart(); + } + + onHeightChanged: { + animateX.restart(); + } + + DialogActivityConfig { + id: dialogActivityConfig + currentActivity: activity + content: Component { + Item { + property alias localeBox: localeBox + height: column.height + + property alias availableLangs: langs.languages + LanguageList { + id: langs + } + + Column { + id: column + spacing: 10 + width: parent.width + + Flow { + spacing: 5 + width: dialogActivityConfig.width + GCComboBox { + id: localeBox + model: langs.languages + background: dialogActivityConfig + label: qsTr("Select your locale") + } + } + } + } + } + + onClose: home() + onLoadData: { + if(dataToSave && dataToSave["locale"]) { + background.locale = dataToSave["locale"]; + } + } + onSaveData: { + var oldLocale = background.locale; + var newLocale = + dialogActivityConfig.configItem.availableLangs[dialogActivityConfig.loader.item.localeBox.currentIndex].locale; + // Remove .UTF-8 + if(newLocale.indexOf('.') != -1) { + newLocale = newLocale.substring(0, newLocale.indexOf('.')) + } + dataToSave = {"locale": newLocale } + + background.locale = newLocale; + + // Restart the activity with new information + if(oldLocale !== newLocale) { + background.stop(); + background.start(); + } + } + + function setDefaultValues() { + var localeUtf8 = background.locale; + if(background.locale != "system") { + localeUtf8 += ".UTF-8"; + } + + for(var i = 0 ; i < dialogActivityConfig.configItem.availableLangs.length ; i ++) { + if(dialogActivityConfig.configItem.availableLangs[i].locale === localeUtf8) { + dialogActivityConfig.loader.item.localeBox.currentIndex = i; + break; + } + } + } + } + + DialogHelp { + id: dialogHelpLeftRight + onClose: home() + } + + Bar { + id: bar + content: BarEnumContent { value: help | home | level | config } + onHelpClicked: { + displayDialog(dialogHelpLeftRight) + } + onPreviousLevelClicked: Activity.previousLevel() + onNextLevelClicked: Activity.nextLevel() + onHomeClicked: home() + onConfigClicked: { + dialogActivityConfig.active = true + dialogActivityConfig.setDefaultValues() + displayDialog(dialogActivityConfig) + } + } + + Score { + id: score + anchors.top: parent.top + anchors.topMargin: 10 * ApplicationInfo.ratio + anchors.left: parent.left + anchors.leftMargin: 10 * ApplicationInfo.ratio + anchors.bottom: undefined + anchors.right: undefined + } + + Bonus { + id: bonus + interval: 100 + Component.onCompleted: { + win.connect(Activity.nextSubLevel); + loose.connect(Activity.incorrectSelection); + } + } + + Item { + id: planeText + width: plane.width + height: plane.height + x: -width + anchors.top: parent.top + anchors.topMargin: 5 * ApplicationInfo.ratio + + Image { + id: plane + anchors.centerIn: planeText + anchors.top: parent.top + source: Activity.resUrl + "plane.svg" + sourceSize.height: itemHeight + } + + GCText { + id: questionItem + anchors.right: planeText.right + anchors.rightMargin: 2 * plane.width / 3 + anchors.verticalCenter: planeText.verticalCenter + anchors.bottomMargin: 10 * ApplicationInfo.ratio + fontSize: hugeSize + font.weight: Font.DemiBold + color: "#2a2a2a" + text: items.question + } + + PropertyAnimation { + id: animateX + target: planeText + properties: "x" + from: -planeText.width + //to:background.width/2 - planeText.width/2 + to: bar.level <= 2 ? background.width/3.7 : background.width + duration: bar.level <= 2 ? 5500: 11000 + //easing.type: Easing.OutQuad + easing.type: bar.level <= 2 ? Easing.OutQuad: Easing.OutInCirc + } + } + + BarButton { + id: repeatItem + source: "qrc:/gcompris/src/core/resource/bar_repeat.svg" + sourceSize.width: 80 * ApplicationInfo.ratio + anchors { + top: parent.top + right: parent.right + margins: 10 + } + onClicked:{ + Activity.playLetter(Activity.currentLetter); + animateX.restart(); + } + } + + Keys.onPressed: { + if(event.key === Qt.Key_Space) { + wordsView.currentItem.select() + } + } + Keys.onReleased: { + keyboardMode = true + event.accepted = false + } + Keys.onEnterPressed: wordsView.currentItem.select(); + Keys.onReturnPressed: wordsView.currentItem.select(); + Keys.onRightPressed: wordsView.moveCurrentIndexRight(); + Keys.onLeftPressed: wordsView.moveCurrentIndexLeft(); + Keys.onDownPressed: wordsView.moveCurrentIndexDown(); + Keys.onUpPressed: wordsView.moveCurrentIndexUp(); + + ListModel { + id: wordsModel + } + + property int itemWidth: Math.min(parent.width / 7.5, parent.height / 6.5) + property int itemHeight: itemWidth * 1.11 + + GridView { + id: wordsView + anchors.bottom: bar.top + anchors.left: parent.left + anchors.right: parent.right + anchors.top: planeText.bottom + anchors.topMargin: 10 * ApplicationInfo.ratio + anchors.leftMargin: 15 * ApplicationInfo.ratio + anchors.rightMargin: 15 * ApplicationInfo.ratio + anchors.bottomMargin: 10 * ApplicationInfo.ratio + cellWidth: itemWidth + 25*ApplicationInfo.ratio + cellHeight: itemHeight + 15*ApplicationInfo.ratio + clip: false + interactive: false + //verticalLayoutDirection: GridView.BottomToTop + layoutDirection: Qt.LeftToRight + + keyNavigationWraps: true + model: wordsModel + delegate: Card { + width: background.itemWidth + Connections { + target: bonus + onStart: { + mouseActive = false; + } + onStop: { + mouseActive = true; + } + } + } + + highlight: Rectangle { + width: wordsView.cellWidth - wordsView.spacing + height: wordsView.cellHeight - wordsView.spacing + color: "#AAFFFFFF" + border.width: 3 + border.color: "black" + visible: background.keyboardMode + Behavior on x { SpringAnimation { spring: 2; damping: 0.2 } } + Behavior on y { SpringAnimation { spring: 2; damping: 0.2 } } + } + } + + JsonParser { + id: parser + onError: console.error("Click_on_letter: Error parsing JSON: " + msg); + } + + } +} diff --git a/src/activities/letter-in-word/letter-in-word.js b/src/activities/letter-in-word/letter-in-word.js new file mode 100755 index 000000000..6f99c9ec3 --- /dev/null +++ b/src/activities/letter-in-word/letter-in-word.js @@ -0,0 +1,260 @@ +/* GCompris - letter-in-word.js + * + * Copyright (C) 2014 Holger Kaelberer + * 2016 Akshat Tandon + * + * Authors: + * Holger Kaelberer (Qt Quick port of click-on-letter) + * Akshat Tandon + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see . + */ + +.pragma library +.import QtQuick 2.0 as Quick +.import GCompris 1.0 as GCompris //for ApplicationInfo +.import "qrc:/gcompris/src/core/core.js" as Core +.import "qrc:/gcompris/src/activities/lang/lang_api.js" as Lang + +var url = "qrc:/gcompris/src/activities/letter-in-word/resource/" +var resUrl = "qrc:/gcompris/src/activities/braille_fun/resource/" +var resUrl2 = "qrc:/gcompris/src/activities/click_on_letter/resource/" + +var levels; +var currentLevel; +var maxLevel; +var currentSubLevel; +var currentLetter; +var maxSubLevel; +var questions; +var words; +var items; +var dataset = null; +var frequency; +var incorrectFlag = false; +var locale; + +function start(_items) { + Core.checkForVoices(_items.main); + items = _items; + // register the voices for the locale + locale = GCompris.ApplicationInfo.getVoicesLocale(items.locale) + GCompris.DownloadManager.updateResource(GCompris.DownloadManager.getVoicesResourceForLocale(locale)) + loadDataset(); + levels = Lang.getAllLessons(dataset) + currentLevel = 0; + currentSubLevel = 0; + maxLevel = levels.length; + initLevel(); +} + +function loadDataset() { + var resourceUrl = "qrc:/gcompris/src/activities/lang/resource/" + dataset = Lang.load(items.parser, resourceUrl, + GCompris.ApplicationSettings.wordset ? "words.json" : "words_sample.json", + "content-"+ locale +".json") + // If dataset is empty, we try to load from short locale + // and if not present again, we switch to default one + var localeUnderscoreIndex = locale.indexOf('_') + if(!dataset) { + var localeShort; + // We will first look again for locale xx (without _XX if exist) + if(localeUnderscoreIndex > 0) { + localeShort = locale.substring(0, localeUnderscoreIndex) + } + else { + localeShort = locale; + } + dataset = Lang.load(items.parser, resourceUrl, + GCompris.ApplicationSettings.wordset ? "words.json" : "words_sample.json", + "content-"+localeShort+ ".json") + } + + if(!dataset) { + // English fallback + dataset = Lang.load(items.parser, resourceUrl, + GCompris.ApplicationSettings.wordset ? "words.json" : "words_sample.json", + "content-en.json") + } + +} + +function stop() { + items.animateX.stop() +} + +function shuffleString(s) { + var a = s; + var n = a.length; + + for(var i = n-1; i > 0; --i) { + var j = Math.floor(Math.random() * (i + 1)); + var tmp = a[i]; + a[i] = a[j]; + a[j] = tmp; + } + return a.join(""); +} + +function initLevel() { + items.bar.level = currentLevel + 1; + if (currentSubLevel == 0 && !incorrectFlag) { + var level = levels[currentLevel]; + words = Lang.getLessonWords(dataset, level); + Core.shuffle(words); + var limit = Math.min(11, words.length) + words = words.slice(0, limit) + frequency = calculateFrequency(); + var tempQuestions = generateQuestions(); + maxSubLevel = tempQuestions.length; + items.score.numberOfSubLevels = maxSubLevel; + items.score.currentSubLevel = 1; + questions = shuffleString(tempQuestions); + items.wordsModel.clear(); + for (var i = 0; i < words.length; i++) { + items.wordsModel.append({ + "spelling": words[i].translatedTxt, + "imgurl": words[i].image, + "selected": false, + "voice": words[i].voice + }); + } + } + else { + items.score.currentSubLevel = currentSubLevel + 1; + } + + incorrectFlag = false; + + for(var i = 0; i < words.length; i++) { + items.wordsModel.setProperty(i, "selected", false); + } + + currentLetter = questions[currentSubLevel]; + items.question = currentLetter + items.animateX.restart(); + + if (GCompris.ApplicationSettings.isAudioVoicesEnabled && + GCompris.DownloadManager.haveLocalResource( + GCompris.DownloadManager.getVoicesResourceForLocale(locale))) { + items.audioVoices.silence(100) + playLetter(currentLetter) + } +} + +function calculateFrequency() { + var freq = []; + //regex pattern to detect whether the character is an english alphabet or some accented latin chacarcter + var pattern = /[A-Za-z\u00C0-\u017F]/; + for(var i = 0; i < words.length; i++) { + var currentWord = words[i].translatedTxt; + for(var j = 0; j < currentWord.length; j++) { + var character = currentWord.charAt(j); + //consider the character if and only if it is an alphabet or an accented latin character + if(pattern.test(character)) { + if(freq[character]) { + freq[character]++; + } + else { + freq[character] = 1; + } + } + } + } + return freq; +} + +function generateQuestions() { + var freqArr = []; + var ques = []; + + for(var character in frequency) { + freqArr.push([character, frequency[character]]); + } + + freqArr.sort(function(a, b) {return b[1] - a[1]}); + + var limit = Math.min(10, freqArr.length); + for(var i = 0; i < limit; i++) { + ques.push(freqArr[i][0]) + } + return ques; +} + +function playLetter(letter) { + items.audioVoices.append(GCompris.ApplicationInfo.getAudioFilePath("voices-$CA/"+locale+"/alphabet/" + + Core.getSoundFilenamForChar(letter))) +} + +function nextLevel() { + items.audioVoices.clearQueue() + if(maxLevel <= ++currentLevel) { + currentLevel = 0 + } + currentSubLevel = 0; + initLevel(); +} + +function previousLevel() { + items.audioVoices.clearQueue() + if(--currentLevel < 0) { + currentLevel = maxLevel - 1 + } + currentSubLevel = 0; + initLevel(); +} + +function nextSubLevel() { + if( ++currentSubLevel >= maxSubLevel) { + currentSubLevel = 0 + nextLevel() + } + initLevel(); +} + +function checkAnswer() { + var hasWordNotFound = false; + var modelEntry; + for(var i = 0; i < words.length; i++) { + modelEntry = items.wordsModel.get(i); + if(modelEntry.spelling.indexOf(currentLetter) != -1 && modelEntry.selected == false) { + hasWordNotFound = true; + break; + } + } + if(hasWordNotFound == false) { + items.bonus.good("flower"); + } +} + +function checkWord(index) { + var modelEntry = items.wordsModel.get(index); + if(modelEntry.spelling.indexOf(currentLetter) != -1) { + items.wordsModel.setProperty(index, "selected", true); + checkAnswer(); + return true; + } + else { + items.bonus.bad("flower"); + return false; + } +} + +function incorrectSelection() { + incorrectFlag = true; + var quesLen = questions.length; + questions = questions.slice(0, currentSubLevel) + questions.slice(currentSubLevel+1, quesLen) + questions.charAt(currentSubLevel); + currentSubLevel--; + nextSubLevel(); +} diff --git a/src/activities/letter-in-word/letter-in-word.svg b/src/activities/letter-in-word/letter-in-word.svg new file mode 100644 index 000000000..dc532e48a --- /dev/null +++ b/src/activities/letter-in-word/letter-in-word.svg @@ -0,0 +1,257 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 1965323f9..b161c5e93 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -1,294 +1,302 @@ include(qt_helper) configure_file(config.h.in "${CMAKE_CURRENT_BINARY_DIR}/config.h" @ONLY) if(WITH_KIOSK_MODE) add_definitions(-DWITH_KIOSK_MODE) endif() if(SAILFISHOS) add_definitions(-DSAILFISHOS) endif() # Note: put .cpp files before .h files in the following or cmake messes up # moc generation -- WTF! set(gcompris_SRCS ActivityInfo.cpp ActivityInfo.h ActivityInfoTree.cpp ActivityInfoTree.h ApplicationInfo.cpp ApplicationInfo.h ApplicationSettings.cpp ApplicationSettings.h File.cpp File.h DownloadManager.cpp DownloadManager.h ) qt5_wrap_cpp(gcompris_MOC ${gcompris_SRCS}) # Add files that do no need to pass through the moc processor set(gcompris_SRCS ${gcompris_SRCS} main.cpp config.h.in ) if(ANDROID) list(APPEND gcompris_SRCS ApplicationAndroid.cpp) else() list(APPEND gcompris_SRCS ApplicationSettingsDefault.cpp ApplicationInfoDefault.cpp) endif() include_directories( "${CMAKE_CURRENT_BINARY_DIR}" # to find config.h ) # Resources set(GCOMPRIS_RESOURCES "${PROJECT_SOURCE_DIR}/installer") if(CMAKE_HOST_WIN32) set(gcompris_icon GCompris.ico) set(gcompris_RES ${GCOMPRIS_RESOURCES}/${gcompris_icon} GCompris.rc ) elseif(CMAKE_HOST_APPLE) set(gcompris_icon GCompris.icns) set(gcompris_RES ${GCOMPRIS_RESOURCES}/${gcompris_icon}) set_source_files_properties(${gcompris_RES} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") endif() if(ANDROID) add_library(${GCOMPRIS_EXECUTABLE_NAME} SHARED ${gcompris_SRCS} ${gcompris_MOC}) qt5_use_modules(${GCOMPRIS_EXECUTABLE_NAME} Qml Quick Gui Multimedia Core Svg Xml XmlPatterns Sensors AndroidExtras) -else() +elseif(CMAKE_HOST_APPLE) add_executable(${GCOMPRIS_EXECUTABLE_NAME} MACOSX_BUNDLE ${gcompris_SRCS} ${gcompris_MOC} ${gcompris_RES}) qt5_use_modules(${GCOMPRIS_EXECUTABLE_NAME} Qml Quick Gui Multimedia Network XmlPatterns Svg Xml Sensors Core) -endif() - -if(CMAKE_HOST_WIN32) - # Remove the console for windows - set_target_properties(${GCOMPRIS_EXECUTABLE_NAME} PROPERTIES LINK_FLAGS -Wl,-subsystem,windows) +elseif(CMAKE_HOST_WIN32) + add_executable(${GCOMPRIS_EXECUTABLE_NAME} WIN32 ${gcompris_SRCS} ${gcompris_MOC} ${gcompris_RES}) + qt5_use_modules(${GCOMPRIS_EXECUTABLE_NAME} Qml Quick Gui Multimedia Network XmlPatterns Svg Xml Sensors Core) +else() + add_executable(${GCOMPRIS_EXECUTABLE_NAME} ${gcompris_SRCS} ${gcompris_MOC} ${gcompris_RES}) + qt5_use_modules(${GCOMPRIS_EXECUTABLE_NAME} Qml Quick Gui Multimedia Network XmlPatterns Svg Xml Sensors Core) endif() GCOMPRIS_ADD_RCC(core *.qml *.js resource/*.${COMPRESSED_AUDIO} resource/*.gif resource/*.png resource/*.svg resource/bonus/* resource/sounds/* resource/fonts/* qmldir) # Installation # ============ install(TARGETS ${GCOMPRIS_EXECUTABLE_NAME} ARCHIVE DESTINATION bin RUNTIME DESTINATION bin LIBRARY DESTINATION lib BUNDLE DESTINATION .) if(BUILD_STANDALONE) # Qt plugins to install set(_qt_plugins "") if(NOT SAILFISHOS) list(APPEND _qt_plugins Qt5::QJpegPlugin) endif() if(APPLE) list(APPEND _qt_plugins Qt5::QTgaPlugin Qt5::QTiffPlugin) elseif(WIN32) list(APPEND _qt_plugins Qt5::QWindowsIntegrationPlugin Qt5::QWindowsAudioPlugin Qt5::AudioCaptureServicePlugin Qt5::DSServicePlugin) elseif(UNIX AND NOT ANDROID AND NOT SAILFISHOS) list(APPEND _qt_plugins Qt5::QXcbIntegrationPlugin) endif() list(APPEND _qt_plugins Qt5::genericSensorPlugin Qt5::QtSensorGesturePlugin Qt5::QShakeSensorGesturePlugin) # Qml plugins to install if(WIN32) set(_lib_prefix "") else() set(_lib_prefix "lib") endif() set(_qt_plugins2 imageformats/${_lib_prefix}qsvg) if(UNIX AND NOT ANDROID AND NOT APPLE AND NOT SAILFISHOS) list(APPEND _qt_plugins2 mediaservice/${_lib_prefix}gstaudiodecoder mediaservice/${_lib_prefix}gstcamerabin mediaservice/${_lib_prefix}gstmediacapture mediaservice/${_lib_prefix}gstmediaplayer) elseif(APPLE) list(APPEND _qt_plugins2 mediaservice/${_lib_prefix}qavfmediaplayer mediaservice/${_lib_prefix}qtmedia_audioengine mediaservice/${_lib_prefix}qavfcamera) endif() set(_qml_plugins QtQuick/Window.2/${_lib_prefix}windowplugin QtQuick/Particles.2/${_lib_prefix}particlesplugin QtQuick.2/${_lib_prefix}qtquick2plugin QtMultimedia/${_lib_prefix}declarative_multimedia QtSensors/${_lib_prefix}declarative_sensors) if(NOT SAILFISHOS) list(APPEND _qml_plugins QtQuick/Controls/${_lib_prefix}qtquickcontrolsplugin QtQuick/Layouts/${_lib_prefix}qquicklayoutsplugin) endif() if(NOT WIN32 AND NOT SAILFISHOS) list(APPEND _qml_plugins QtAudioEngine/${_lib_prefix}declarative_audioengine) if (NOT "${QML_BOX2D_MODULE}" STREQUAL "submodule") list(APPEND _qml_plugins Box2D.2.0/${_lib_prefix}Box2D) endif() endif() set(GCOMPRIS_OTHER_LIBS) if(APPLE) set(_app gcompris-qt.app) set(_qtconf_destdir ${_app}/Contents/Resources) set(_qt_plugins_destdir ${_app}/Contents/plugins) set(_qt_qml_destdir ${_app}/Contents/qml) set(GCOMPRIS_BUNDLE "\${CMAKE_INSTALL_PREFIX}/${_app}") set_target_properties(gcompris-qt PROPERTIES MACOSX_BUNDLE_INFO_STRING "GCompris, Educational game for children 2 to 10" MACOSX_BUNDLE_ICON_FILE "${gcompris_icon}" MACOSX_BUNDLE_GUI_IDENTIFIER "net.gcompris" MACOSX_BUNDLE_LONG_VERSION_STRING "${GCOMPRIS_MAJOR_VERSION}.${GCOMPRIS_MINOR_VERSION}.${GCOMPRIS_PATCH_VERSION}" MACOSX_BUNDLE_BUNDLE_NAME "gcompris-qt" MACOSX_BUNDLE_SHORT_VERSION_STRING "${GCOMPRIS_VERSION}" MACOSX_BUNDLE_BUNDLE_VERSION "${GCOMPRIS_VERSION}" MACOSX_BUNDLE_COPYRIGHT "GPL License, Copyright 2000-2015 Bruno Coudoin and Others.") set_source_files_properties(${GCOMPRIS_RESOURCES}/${gcompris_icon} PROPERTIES MACOSX_PACKAGE_LOCATION "Resources") else() set(_qtconf_destdir bin) set(_qt_plugins_destdir bin/plugins) set(_qt_qml_destdir bin/qml) if(CMAKE_HOST_WIN32) set(GCOMPRIS_BUNDLE "\${CMAKE_INSTALL_PREFIX}/bin/${GCOMPRIS_EXECUTABLE_NAME}.exe") else() set(GCOMPRIS_BUNDLE "\${CMAKE_INSTALL_PREFIX}/bin/${GCOMPRIS_EXECUTABLE_NAME}") endif() endif() # install qt.conf file install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/qt.conf DESTINATION ${_qtconf_destdir}) # install qt plugins foreach(_plugin ${_qt_plugins}) installQtPlugin(${_plugin} ${_qt_plugins_destdir} _lib) list(APPEND GCOMPRIS_OTHER_LIBS ${_lib}) endforeach() foreach(_plugin ${_qt_plugins2}) installQtPlugin2(${_plugin} ${_qt_plugins_destdir} _lib) list(APPEND GCOMPRIS_OTHER_LIBS ${_lib}) endforeach() # install qml plugins foreach(_plugin ${_qml_plugins}) installQmlPlugin(${_plugin} ${_qt_qml_destdir} _lib) list(APPEND GCOMPRIS_OTHER_LIBS ${_lib}) endforeach() # install QtGraphicalEffects (which is not a lib but only qml files) set(_qml_subdir QtGraphicalEffects) getQtQmlPath(_qt_qml_path) install(DIRECTORY ${_qt_qml_path}/QtGraphicalEffects DESTINATION ${_qt_qml_destdir}) # Fix for Linux 'make package' that fails to link with libicu if(UNIX AND NOT APPLE AND NOT SAILFISHOS AND NOT ANDROID) add_library( libicudata SHARED IMPORTED ) FILE(GLOB LIBICUDATA_SO "${Qt5_DIR}/../../libicudata.so.[0-9][0-9]") if ("${LIBICUDATA_SO}" STREQUAL "") FILE(GLOB LIBICUDATA_SO "/usr/lib/*/libicudata.so.[0-9][0-9]") endif() set_target_properties( libicudata PROPERTIES IMPORTED_LOCATION ${LIBICUDATA_SO} ) add_library( libicui18n SHARED IMPORTED ) FILE(GLOB LIBICUI18N_SO "${Qt5_DIR}/../../libicui18n.so.[0-9][0-9]") if ("${LIBICUI18N_SO}" STREQUAL "") FILE(GLOB LIBICUI18N_SO "/usr/lib/*/libicui18n.so.[0-9][0-9]") endif() set_target_properties( libicui18n PROPERTIES IMPORTED_LOCATION ${LIBICUI18N_SO} ) add_library( libicuuc SHARED IMPORTED ) FILE(GLOB LIBICUUC_SO "${Qt5_DIR}/../../libicuuc.so.[0-9][0-9]") if ("${LIBICUUC_SO}" STREQUAL "") FILE(GLOB LIBICUUC_SO "/usr/lib/*/libicuuc.so.[0-9][0-9]") endif() set_target_properties( libicuuc PROPERTIES IMPORTED_LOCATION ${LIBICUUC_SO} ) TARGET_LINK_LIBRARIES(${GCOMPRIS_EXECUTABLE_NAME} libicudata libicui18n libicuuc) endif() endif(BUILD_STANDALONE) # Hack: do not fixup Qt and Qml plugins on Windows because fixup_bundle takes ages (cmake bug ?) -> Johnny : we need this even if it takes time because some required dependencies are pulled here #if(WIN32) set(GCOMPRIS_OTHER_LIBS "") endif() # install fixup_bundle script to resolve and fixup runtime dependencies if(BUILD_STANDALONE) configure_file(${CMAKE_SOURCE_DIR}/cmake/FixBundle.cmake.in FixBundle.cmake) install(SCRIPT ${CMAKE_CURRENT_BINARY_DIR}/FixBundle.cmake) # install a startup script for linux bundle if(UNIX AND NOT APPLE AND NOT SAILFISHOS) install(PROGRAMS ../../tools/gcompris-qt.sh DESTINATION bin) endif() endif() if(WIN32) + set(VCREDIST_DIR "" CACHE PATH "Path to vcredist dlls") # install libEGL.dll, libGLESv2.dll, d3dcompiler_47.dll from Qt installation. Not sure if there is a clean way to get them... - # Qt5_Dir is like C:/Qt/Qt5.5.1/5.5/mingw492_32/lib/cmake/Qt5 - install(FILES ${Qt5_DIR}/../../../bin/icudt54.dll DESTINATION bin) - install(FILES ${Qt5_DIR}/../../../bin/icuin54.dll DESTINATION bin) - install(FILES ${Qt5_DIR}/../../../bin/icuuc54.dll DESTINATION bin) - install(FILES ${Qt5_DIR}/../../../bin/libEGL.dll DESTINATION bin) - install(FILES ${Qt5_DIR}/../../../bin/libGLESv2.dll DESTINATION bin) - install(FILES ${Qt5_DIR}/../../../../../Tools/QtCreator/bin/d3dcompiler_47.dll DESTINATION bin) +# Qt5_Dir is like C:/Qt/Qt5.5.1/5.5/mingw492_32/lib/cmake/Qt5 + install(FILES ${Qt5_DIR}/../../../bin/icudt54.dll DESTINATION bin) + install(FILES ${Qt5_DIR}/../../../bin/icuin54.dll DESTINATION bin) + install(FILES ${Qt5_DIR}/../../../bin/icuuc54.dll DESTINATION bin) + install(FILES ${Qt5_DIR}/../../../bin/libEGL.dll DESTINATION bin) + install(FILES ${Qt5_DIR}/../../../bin/libGLESv2.dll DESTINATION bin) + install(FILES ${Qt5_DIR}/../../../../../Tools/QtCreator/bin/d3dcompiler_47.dll DESTINATION bin) + install(FILES ${VCREDIST_DIR}/msvcp140.dll DESTINATION bin) + install(FILES ${VCREDIST_DIR}/vcruntime140.dll DESTINATION bin) endif() # Packaging # ========= set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "GCompris is a high quality educational software suite comprising of numerous activities for children aged 2 to 10.") set(CPACK_PACKAGE_VERSION_MAJOR ${GCOMPRIS_MAJOR_VERSION}) set(CPACK_PACKAGE_VERSION_MINOR ${GCOMPRIS_MINOR_VERSION}) set(CPACK_PACKAGE_VERSION_PATCH ${GCOMPRIS_PATCH_VERSION}) set(CPACK_PACKAGE_VERSION ${GCOMPRIS_VERSION}) set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING") set(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README") if(WIN32) - set(CPACK_PACKAGE_INSTALL_DIRECTORY "${GCOMPRIS_EXECUTABLE_NAME}") - set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${GCOMPRIS_EXECUTABLE_NAME}") + set(CPACK_PACKAGE_INSTALL_DIRECTORY "${GCOMPRIS_EXECUTABLE_NAME}-Qt") + set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "${GCOMPRIS_EXECUTABLE_NAME}-Qt") set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/installer\\\\gcompris-header.bmp") set(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}/installer\\\\GCompris-install.ico") set(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}/installer\\\\GCompris-uninstall.ico") set(CPACK_NSIS_EXECUTABLES_DIRECTORY "bin") - set(CPACK_PACKAGE_EXECUTABLES "${GCOMPRIS_EXECUTABLE_NAME}" "${GCOMPRIS_EXECUTABLE_NAME}") + set(CPACK_PACKAGE_EXECUTABLES "${GCOMPRIS_EXECUTABLE_NAME};GCompris") + set(CPACK_CREATE_DESKTOP_LINKS "${GCOMPRIS_EXECUTABLE_NAME};GCompris") + set(CPACK_NSIS_URL_INFO_ABOUT "http:\\\\\\\\gcompris.net") + set(CPACK_NSIS_DISPLAY_NAME "GCompris Educational Software") + set(CPACK_NSIS_MUI_FINISHPAGE_RUN "${GCOMPRIS_EXECUTABLE_NAME}") else(WIN32) set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}/GCompris64.png") endif() if(APPLE) set(CPACK_GENERATOR "DragNDrop") set(CPACK_DMG_DS_STORE "${GCOMPRIS_RESOURCES}/dmg_DS_Store") set(CPACK_DMG_BACKGROUND_IMAGE "${GCOMPRIS_RESOURCES}/dmg_background.png") elseif(WIN32) set(CPACK_GENERATOR "NSIS") elseif(SAILFISHOS) configure_file(${PROJECT_SOURCE_DIR}/platforms/sailfishOS/harbour-gcompris-qt.spec.cmake ${CMAKE_BINARY_DIR}/harbour-gcompris-qt.spec @ONLY) install(FILES ${PROJECT_SOURCE_DIR}/platforms/sailfishOS/harbour-gcompris-qt.desktop DESTINATION share/applications) install(FILES ${PROJECT_SOURCE_DIR}/platforms/sailfishOS/harbour-gcompris-qt.png DESTINATION share/icons/hicolor/86x86/apps) set(CPACK_RPM_PACKAGE_SUMMARY "gcompris-qt") # BUILD_ARCH is either armv7hl or i486 set(CPACK_RPM_PACKAGE_ARCHITECTURE "${BUILD_ARCH}") set(CPACK_RPM_PACKAGE_NAME "${GCOMPRIS_EXECUTABLE_NAME}") set(CPACK_RPM_PACKAGE_VERSION "${GCOMPRIS_VERSION}") set(CPACK_RPM_PACKAGE_LICENSED "GPLv3") set(CPACK_RPM_PACKAGE_URL "https://www.gcompris.org") set(CPACK_RPM_PACKAGE_DESCRIPTION "GCompris is a high quality educational software suite comprising of numerous activities for children aged 2 to 10.") set(CPACK_RPM_USER_BINARY_SPECFILE "${CMAKE_BINARY_DIR}/harbour-gcompris-qt.spec") set(CMAKE_INSTALL_PREFIX "/usr") set(CPACK_PACKAGING_INSTALL_PREFIX "/usr") set(CPACK_GENERATOR "RPM") else() set(CPACK_GENERATOR "STGZ") endif() include(CPack)