From c858f18b24c1205c8eb7bf1dde3491f3ca3d560e Mon Sep 17 00:00:00 2001 From: Julien Marrec Date: Tue, 2 Jun 2026 05:00:23 +0200 Subject: [PATCH 1/5] Future proof pinging bcl.nlr.gov instead of bcl.nrel.gov (#856) Update NREL to NLR --- .github/workflows/app_build.yml | 6 +++--- .github/workflows/export_standards_data.yml | 4 ++-- BUILDING.md | 2 +- CMakeLists.txt | 2 +- FindOpenStudioSDK.cmake | 2 +- Jenkinsfile_linux | 14 -------------- Jenkinsfile_osx | 10 ---------- Jenkinsfile_windows | 10 ---------- README.md | 6 +++--- developer/doc/AddingHVACComponentsToGUI.md | 2 +- src/openstudio_app/OpenStudioApp.cpp | 2 +- src/openstudio_lib/ApplyMeasureNowDialog.cpp | 2 +- src/openstudio_lib/HVACSystemsView.cpp | 2 +- src/openstudio_lib/RunTabView.cpp | 9 +++------ src/openstudio_lib/ScheduleDayView.cpp | 2 +- src/openstudio_lib/ScheduleFileInspectorView.cpp | 2 +- .../library/geometry_editor_start.html | 2 +- src/shared_gui_components/NetworkProxyDialog.cpp | 2 +- 18 files changed, 22 insertions(+), 59 deletions(-) delete mode 100644 Jenkinsfile_linux delete mode 100644 Jenkinsfile_osx delete mode 100644 Jenkinsfile_windows diff --git a/.github/workflows/app_build.yml b/.github/workflows/app_build.yml index 04df44fd8..81dfe7f4b 100644 --- a/.github/workflows/app_build.yml +++ b/.github/workflows/app_build.yml @@ -776,9 +776,9 @@ jobs: begin_group "Running a simulation with python" ./test_install/EnergyPlus/energyplus --help cur_v=$(python -c "import sys; sys.path.insert(0, './test_install/EnergyPlus'); from pyenergyplus.func import EnergyPlusVersion; v = EnergyPlusVersion(); print(f'{v.ep_version_major}.{v.ep_version_minor}.{v.ep_version_patch}')") - aria2c https://raw.githubusercontent.com/NREL/EnergyPlus/v${cur_v}/testfiles/PythonPluginCustomSchedule.py - aria2c https://raw.githubusercontent.com/NREL/EnergyPlus/v${cur_v}/testfiles/PythonPluginCustomSchedule.idf - aria2c https://raw.githubusercontent.com/NREL/EnergyPlus/v${cur_v}/weather/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw + aria2c https://raw.githubusercontent.com/NatLabRockies/EnergyPlus/v${cur_v}/testfiles/PythonPluginCustomSchedule.py + aria2c https://raw.githubusercontent.com/NatLabRockies/EnergyPlus/v${cur_v}/testfiles/PythonPluginCustomSchedule.idf + aria2c https://raw.githubusercontent.com/NatLabRockies/EnergyPlus/v${cur_v}/weather/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw ./test_install/EnergyPlus/energyplus -w USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw -d out PythonPluginCustomSchedule.idf echo "::endgroup::" diff --git a/.github/workflows/export_standards_data.yml b/.github/workflows/export_standards_data.yml index cd5a1809c..3e1e0e4a8 100644 --- a/.github/workflows/export_standards_data.yml +++ b/.github/workflows/export_standards_data.yml @@ -103,7 +103,7 @@ jobs: else: print("Unable to find OPENSTUDIO_BASELINK_RELEASE") - OS_SDK_BASELINK = f"https://github.com/NREL/OpenStudio/releases/download/v{sdk_version}{OS_SDK_VERSION_SHA.split('+')[0]}" + OS_SDK_BASELINK = f"https://github.com/NatLabRockies/OpenStudio/releases/download/v{sdk_version}{OS_SDK_VERSION_SHA.split('+')[0]}" with open(os.environ['GITHUB_ENV'], 'a') as f: f.write(f"\nOS_SDK_BASELINK={OS_SDK_BASELINK}") print(f"Defaulted baselink '{OS_SDK_BASELINK=}'") @@ -142,7 +142,7 @@ jobs: echo -e "${Yellow}Not found at baselink. Trying with alternate link: $installer_link${Color_Off}" if ! wget -q "$installer_link"; then echo -e "${Yellow}Cannot find the OS SDK installer. Defaulting to latest release (pre-release included)${Color_Off}" - installer_link=$(curl -s https://api.github.com/repos/NREL/OpenStudio/releases | jq -r '. [0] | .assets | .[] | select(.name | contains("Linux")) | select(.name | contains("deb")) | .browser_download_url') + installer_link=$(curl -s https://api.github.com/repos/NatLabRockies/OpenStudio/releases | jq -r '. [0] | .assets | .[] | select(.name | contains("Linux")) | select(.name | contains("deb")) | .browser_download_url') if [ -z "$installer_link" ]; then echo -e "${Red}Could not locate the latest OpenStudio deb from the release page.${Color_Off}" exit 1 diff --git a/BUILDING.md b/BUILDING.md index ca476c508..31d226ded 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -116,7 +116,7 @@ call deactivate_conanbuild.bat # Full Example ``` -git clone git@github.com/NREL/OpenStudio.git +git clone git@github.com/NatLabRockies/OpenStudio.git cd OpenStudio conan install . --output-folder=../OSApp-build-release --build=missing -c tools.cmake.cmaketoolchain:generator=Ninja -s compiler.cppstd=20 -s build_type=Release cmake --preset conan-release diff --git a/CMakeLists.txt b/CMakeLists.txt index 817dc8b5e..23c7ac889 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -388,7 +388,7 @@ if(UNIX) if(APPLE) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-overloaded-virtual -ftemplate-depth=1024") - # TODO: remove when bumping Boost to 1.81+, cf https://github.com/NREL/OpenStudio/issues/4978 + # TODO: remove when bumping Boost to 1.81+, cf https://github.com/NatLabRockies/OpenStudio/issues/4978 add_definitions(-DBOOST_NO_CXX98_FUNCTION_BASE) add_definitions(-D_HAS_AUTO_PTR_ETC=0) else() diff --git a/FindOpenStudioSDK.cmake b/FindOpenStudioSDK.cmake index 8110aa3de..a838253a9 100644 --- a/FindOpenStudioSDK.cmake +++ b/FindOpenStudioSDK.cmake @@ -73,7 +73,7 @@ else() # Not found: no problem, we download it # base link for release builds set(OPENSTUDIO_BASELINK_RELEASE - "https://github.com/NREL/OpenStudio/releases/download/v${OPENSTUDIO_VERSION}${OPENSTUDIO_VERSION_PRERELEASE}/" + "https://github.com/NatLabRockies/OpenStudio/releases/download/v${OPENSTUDIO_VERSION}${OPENSTUDIO_VERSION_PRERELEASE}/" CACHE STRING "Base link to where the openstudio archives are hosted" FORCE) if (WIN32) diff --git a/Jenkinsfile_linux b/Jenkinsfile_linux deleted file mode 100644 index fc9a69e94..000000000 --- a/Jenkinsfile_linux +++ /dev/null @@ -1,14 +0,0 @@ -//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs - -// To test you can target a branch in cbci_shared_libs. -// e.g. @Library('cbci_shared_libs@develop') _ - - -@Library('cbci_shared_libs@updateLibs') _ - -// Build for PR to develop branch only. -if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { - - openstudio_app_incr_linux() - -} diff --git a/Jenkinsfile_osx b/Jenkinsfile_osx deleted file mode 100644 index 67f9de6dc..000000000 --- a/Jenkinsfile_osx +++ /dev/null @@ -1,10 +0,0 @@ -//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs - -@Library('cbci_shared_libs') _ - -// Build for PR to develop branch only. -if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { - - openstudio_app_incr_osx() - -} diff --git a/Jenkinsfile_windows b/Jenkinsfile_windows deleted file mode 100644 index 2e8dd7489..000000000 --- a/Jenkinsfile_windows +++ /dev/null @@ -1,10 +0,0 @@ -//Jenkins pipelines are stored in shared libaries. Please see: https://github.com/NREL/cbci_jenkins_libs - -@Library('cbci_shared_libs') _ - -// Build for PR to develop branch only. -if ((env.CHANGE_ID) && (env.CHANGE_TARGET) ) { - - openstudio_app_incr_windows() - -} diff --git a/README.md b/README.md index b8b6bdfde..333614b17 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ For more information about the OpenStudio Coalition, including tutorials and doc # OpenStudio Application -The **OpenStudio Application** is a fully featured graphical interface to OpenStudio models including envelope, loads, schedules, geometry, HVAC, and OpenStudio Measures. The **OpenStudio Application** is open source software and is free to use. The **OpenStudio Application** is built on top of the **[OpenStudio SDK](https://github.com/NREL/OpenStudio)**. +The **OpenStudio Application** is a fully featured graphical interface to OpenStudio models including envelope, loads, schedules, geometry, HVAC, and OpenStudio Measures. The **OpenStudio Application** is open source software and is free to use. The **OpenStudio Application** is built on top of the **[OpenStudio SDK](https://github.com/NatLabRockies/OpenStudio)**. ## Downloading the OpenStudio Application @@ -21,8 +21,8 @@ The **OpenStudio Application** can be downloaded for Mac, Linux, and Windows by ## What is the OpenStudio Software Development Kit (SDK)? -The **[OpenStudio SDK](https://github.com/NREL/OpenStudio)** is a cross-platform (Windows, Mac, and Linux) collection of software tools to support whole building energy modeling -using [EnergyPlus](https://github.com/NREL/EnergyPlus) and advanced daylight analysis using [Radiance](https://github.com/NREL/Radiance/). +The **[OpenStudio SDK](https://github.com/NatLabRockies/OpenStudio)** is a cross-platform (Windows, Mac, and Linux) collection of software tools to support whole building energy modeling +using [EnergyPlus](https://github.com/NatLabRockies/EnergyPlus) and advanced daylight analysis using [Radiance](https://github.com/NatLabRockies/Radiance/). The **OpenStudio SDK** is an open source project to facilitate community development, extension, and private sector adoption. The **OpenStudio SDK** allows building researchers and software developers to quickly get started through its multiple entry levels, including access through C++, Ruby, and C#. More information and documentation is available at the [OpenStudio](https://www.openstudio.net) website. diff --git a/developer/doc/AddingHVACComponentsToGUI.md b/developer/doc/AddingHVACComponentsToGUI.md index 038f211d9..0c2354f6a 100644 --- a/developer/doc/AddingHVACComponentsToGUI.md +++ b/developer/doc/AddingHVACComponentsToGUI.md @@ -2,7 +2,7 @@ This documents the process for adding HVAC components to the GUI. -This assumes that the model object(s) already exist NREL/OpenStudio (core SDK) +This assumes that the model object(s) already exist in the OpenStudio SDK ## Add icon: diff --git a/src/openstudio_app/OpenStudioApp.cpp b/src/openstudio_app/OpenStudioApp.cpp index 6b8e813bb..274d902da 100644 --- a/src/openstudio_app/OpenStudioApp.cpp +++ b/src/openstudio_app/OpenStudioApp.cpp @@ -1328,7 +1328,7 @@ void OpenStudioApp::startMeasureManagerProcess() { const QString program = toQString(openstudioCLIPath()); QStringList arguments; - // MeasureManager does not work in classic CLI https://github.com/NREL/OpenStudio/issues/5212 + // MeasureManager does not work in classic CLI https://github.com/NatLabRockies/OpenStudio/issues/5212 arguments << "measure"; arguments << "-s"; arguments << portString; diff --git a/src/openstudio_lib/ApplyMeasureNowDialog.cpp b/src/openstudio_lib/ApplyMeasureNowDialog.cpp index 0f9f9fb12..7d57ba0d2 100644 --- a/src/openstudio_lib/ApplyMeasureNowDialog.cpp +++ b/src/openstudio_lib/ApplyMeasureNowDialog.cpp @@ -104,7 +104,7 @@ ApplyMeasureNowDialog::ApplyMeasureNowDialog(QWidget* parent) } // The openstudio-workflow gem will prepend the "generated_files" directory to the workflowJSON.filePaths, so match that - // cf: https://github.com/NREL/OpenStudio-workflow-gem/blob/e569f910be364d33c3ddb1a655570c85f1b24bfa/lib/openstudio/workflow/jobs/run_initialization.rb#L99 + // cf: https://github.com/NatLabRockies/OpenStudio-workflow-gem/blob/e569f910be364d33c3ddb1a655570c85f1b24bfa/lib/openstudio/workflow/jobs/run_initialization.rb#L99 // in requestReload, this directory gets copied over to the first filePath of m_modelWorkflowJSON, which is typically the files/ directory m_workingFilesDir = m_workingDir / openstudio::toPath("generated_files"); // add the WorkingFiles directory as files files path, measures writing output files should be written here diff --git a/src/openstudio_lib/HVACSystemsView.cpp b/src/openstudio_lib/HVACSystemsView.cpp index 2ff14535f..9e34854f1 100644 --- a/src/openstudio_lib/HVACSystemsView.cpp +++ b/src/openstudio_lib/HVACSystemsView.cpp @@ -613,7 +613,7 @@ MechanicalVentilationView::MechanicalVentilationView() { ventilationCalcMethodComboBox->addItem("Standard 62.1 Ventilation Rate Procedure", "Standard62.1VentilationRateProcedure"); ventilationCalcMethodComboBox->addItem("Standard 62.1 Ventilation Rate Procedure With Limit", "Standard62.1VentilationRateProcedureWithLimit"); ventilationCalcMethodComboBox->addItem("Indoor Air Quality Procedure", "IndoorAirQualityProcedure"); - // TODO: OS 3.7.0 is missing some choices that E+ 23.2.0 has, pending https://github.com/NREL/OpenStudio/issues/5060 + // TODO: OS 3.7.0 is missing some choices that E+ 23.2.0 has, pending https://github.com/NatLabRockies/OpenStudio/issues/5060 // ventilationCalcMethodComboBox->addItem("Indoor Air Quality Procedure Generic Contaminant", "IndoorAirQualityProcedureGenericContaminant"); // ventilationCalcMethodComboBox->addItem("Indoor Air Quality Procedure Combined", "IndoorAirQualityProcedureCombined"); ventilationCalcMethodComboBox->addItem("Proportional Control Bseed On Design Occupancy", "ProportionalControlBasedOnDesignOccupancy"); diff --git a/src/openstudio_lib/RunTabView.cpp b/src/openstudio_lib/RunTabView.cpp index 584268add..949f958fa 100644 --- a/src/openstudio_lib/RunTabView.cpp +++ b/src/openstudio_lib/RunTabView.cpp @@ -269,12 +269,12 @@ void RunView::playButtonClicked(bool t_checked) { if (m_verboseOutputBox->isChecked()) { arguments << "--verbose"; } else if (!m_useClassicCLIBox->isChecked()) { - // https://github.com/NREL/OpenStudio/issues/5069 + // https://github.com/NatLabRockies/OpenStudio/issues/5069 arguments << "--verbose"; } arguments << "run"; - // C++ CLI doesn't have working socket connection yet: https://github.com/NREL/OpenStudio/issues/5073 + // C++ CLI doesn't have working socket connection yet: https://github.com/NatLabRockies/OpenStudio/issues/5073 m_hasSocketConnection = false; if (m_useClassicCLIBox->isChecked()) { const unsigned port = m_runTcpServer->serverPort(); @@ -286,10 +286,7 @@ void RunView::playButtonClicked(bool t_checked) { } arguments << "-w" << workflowJSONPath; } else { - arguments << "run" - << "--show-stdout" - << "--style-stdout" - << "-w" << workflowJSONPath; + arguments << "run" << "--show-stdout" << "--style-stdout" << "-w" << workflowJSONPath; } LOG(Debug, "openstudioExePath='" << toString(openstudioExePath) << "'"); LOG(Debug, "run arguments = " << arguments.join(";").toStdString()); diff --git a/src/openstudio_lib/ScheduleDayView.cpp b/src/openstudio_lib/ScheduleDayView.cpp index 94702e9bc..6d594e595 100644 --- a/src/openstudio_lib/ScheduleDayView.cpp +++ b/src/openstudio_lib/ScheduleDayView.cpp @@ -1653,7 +1653,7 @@ void DaySchedulePlotArea::keyPressEvent(QKeyEvent* event) { if (m_currentHoverItem) { if (auto* calendarItem = dynamic_cast(m_currentHoverItem)) { // Only allow entering numbers if you're not already dragging with the mouse... - // Fix for https://github.com/NREL/OpenStudio/issues/2357 + // Fix for https://github.com/NatLabRockies/OpenStudio/issues/2357 if ((event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) && !calendarItem->isMouseDown()) { bool ok = false; double value = m_keyboardInputValue.toDouble(&ok); diff --git a/src/openstudio_lib/ScheduleFileInspectorView.cpp b/src/openstudio_lib/ScheduleFileInspectorView.cpp index 746d5d236..300331983 100644 --- a/src/openstudio_lib/ScheduleFileInspectorView.cpp +++ b/src/openstudio_lib/ScheduleFileInspectorView.cpp @@ -322,7 +322,7 @@ void ScheduleFileInspectorView::attach(openstudio::model::ScheduleFile& sch) { m_columnSeparator->bind( *m_sch, static_cast(&openstudio::toString), - // ScheduleFile::columnSeparatorValues does not exist: https://github.com/NREL/OpenStudio/issues/5246 + // ScheduleFile::columnSeparatorValues does not exist: https://github.com/NatLabRockies/OpenStudio/issues/5246 []() { return std::vector{"Comma", "Tab", "Space", "Semicolon"}; }, std::bind(&model::ScheduleFile::columnSeparator, m_sch.get_ptr()), [this](const std::string& value) -> bool { diff --git a/src/openstudio_lib/library/geometry_editor_start.html b/src/openstudio_lib/library/geometry_editor_start.html index f6a87aef4..360e77d1f 100644 --- a/src/openstudio_lib/library/geometry_editor_start.html +++ b/src/openstudio_lib/library/geometry_editor_start.html @@ -13,7 +13,7 @@

Overview

FloorspaceJS

-FloorspaceJS is an open source software module that developers can leverage to produce building energy modeling UIs which include geometry creation. FloorspaceJS is meant to cover simple building geometry use cases only. More complex building geometry is best developed in a full featured CAD tool and exported to gbXML or other formats for building energy modeling. FloorspaceJS is implemented in JavaScript with minimal dependencies, allowing it to be integrated into a wide range of applications, including the OpenStudio Application. +FloorspaceJS is an open source software module that developers can leverage to produce building energy modeling UIs which include geometry creation. FloorspaceJS is meant to cover simple building geometry use cases only. More complex building geometry is best developed in a full featured CAD tool and exported to gbXML or other formats for building energy modeling. FloorspaceJS is implemented in JavaScript with minimal dependencies, allowing it to be integrated into a wide range of applications, including the OpenStudio Application.

gbXML

diff --git a/src/shared_gui_components/NetworkProxyDialog.cpp b/src/shared_gui_components/NetworkProxyDialog.cpp index 716ab5f00..f0dac48dc 100644 --- a/src/shared_gui_components/NetworkProxyDialog.cpp +++ b/src/shared_gui_components/NetworkProxyDialog.cpp @@ -128,8 +128,8 @@ std::pair NetworkProxyDialog::testProxyCon QNetworkAccessManager nam; nam.setProxy(t_proxy); - QNetworkReply* head = nam.head(QNetworkRequest(QUrl("https://bcl.nrel.gov/"))); + QNetworkReply* head = nam.head(QNetworkRequest(QUrl("https://bcl.nlr.gov/"))); if (!head) { return std::make_pair(QNetworkReply::UnknownNetworkError, QString("Unknown error creating connection to proxy.")); } From b42ee99219d54079b20b4eb4bd43e491807d09b2 Mon Sep 17 00:00:00 2001 From: Dan Macumber Date: Mon, 15 Jun 2026 20:59:08 -0600 Subject: [PATCH 2/5] Bump version to 1.11.1 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 23c7ac889..f42a6b381 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ if(CCACHE_PROGRAM) set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM} CACHE FILEPATH "C compiler cache used") endif() -project(OpenStudioApplication VERSION 1.11.0) +project(OpenStudioApplication VERSION 1.11.1) # Check system info globally so we can use it everywhere after: Has to be done before FindOpenStudioSDK.cmake if(APPLE) From 1d18221dc8f78841bdb6551e22b34301379e8bdb Mon Sep 17 00:00:00 2001 From: Dan Macumber Date: Mon, 15 Jun 2026 22:55:52 -0600 Subject: [PATCH 3/5] Add a temporary patch to RemoteBCL --- src/openstudio_lib/GeometryEditorView.cpp | 4 +- src/openstudio_lib/OSDocument.cpp | 6 +- .../BuildingComponentDialogCentralWidget.cpp | 12 +- .../BuildingComponentDialogCentralWidget.hpp | 4 +- src/shared_gui_components/MeasureManager.cpp | 4 +- src/utilities/CMakeLists.txt | 2 + src/utilities/RemoteBCLNLR.cpp | 959 ++++++++++++++++++ src/utilities/RemoteBCLNLR.hpp | 304 ++++++ translations/OpenStudioApp_ar.ts | 214 ++-- translations/OpenStudioApp_ca.ts | 228 +++-- translations/OpenStudioApp_de.ts | 228 +++-- translations/OpenStudioApp_el.ts | 228 +++-- translations/OpenStudioApp_es.ts | 228 +++-- translations/OpenStudioApp_fa.ts | 228 +++-- translations/OpenStudioApp_fr.ts | 228 +++-- translations/OpenStudioApp_he.ts | 228 +++-- translations/OpenStudioApp_hi.ts | 228 +++-- translations/OpenStudioApp_it.ts | 228 +++-- translations/OpenStudioApp_ja.ts | 228 +++-- translations/OpenStudioApp_pl.ts | 228 +++-- translations/OpenStudioApp_vi.ts | 228 +++-- translations/OpenStudioApp_zh_CN.ts | 228 +++-- 22 files changed, 3043 insertions(+), 1430 deletions(-) create mode 100644 src/utilities/RemoteBCLNLR.cpp create mode 100644 src/utilities/RemoteBCLNLR.hpp diff --git a/src/openstudio_lib/GeometryEditorView.cpp b/src/openstudio_lib/GeometryEditorView.cpp index 48671da38..3004f3a2e 100644 --- a/src/openstudio_lib/GeometryEditorView.cpp +++ b/src/openstudio_lib/GeometryEditorView.cpp @@ -48,7 +48,7 @@ #include #include -#include +#include "../utilities/RemoteBCLNLR.hpp" #include #include @@ -256,7 +256,7 @@ void FloorspaceEditor::loadEditor() { } // DLM: need a better check here - if (openstudio::RemoteBCL::isOnline()) { + if (openstudio::RemoteBCLNLR::isOnline()) { config["online"] = true; } else { config["online"] = false; diff --git a/src/openstudio_lib/OSDocument.cpp b/src/openstudio_lib/OSDocument.cpp index c8bd04539..e082ded96 100644 --- a/src/openstudio_lib/OSDocument.cpp +++ b/src/openstudio_lib/OSDocument.cpp @@ -58,7 +58,7 @@ #include #include -#include +#include "../utilities/RemoteBCLNLR.hpp" #include #include #include @@ -1757,7 +1757,7 @@ void OSDocument::openBclDlg() { return; } - if (!RemoteBCL::isOnline()) { + if (!RemoteBCLNLR::isOnline()) { QMessageBox::information(this->mainWindow(), "Offline", "You appear to be offline, please connect to the internet to access the BCL.", QMessageBox::Ok); return; @@ -1807,7 +1807,7 @@ void OSDocument::openMeasuresBclDlg() { return; } - if (!RemoteBCL::isOnline()) { + if (!RemoteBCLNLR::isOnline()) { QMessageBox::information(this->mainWindow(), "Offline", "You appear to be offline, please connect to the internet to access the BCL.", QMessageBox::Ok); return; diff --git a/src/shared_gui_components/BuildingComponentDialogCentralWidget.cpp b/src/shared_gui_components/BuildingComponentDialogCentralWidget.cpp index ade6236e9..61fff04de 100644 --- a/src/shared_gui_components/BuildingComponentDialogCentralWidget.cpp +++ b/src/shared_gui_components/BuildingComponentDialogCentralWidget.cpp @@ -18,7 +18,7 @@ #include #include -#include +#include "../utilities/RemoteBCLNLR.hpp" #include #include "../model_editor/Application.hpp" @@ -190,7 +190,7 @@ void BuildingComponentDialogCentralWidget::setTid(const std::string& filterType, delete comp; } - RemoteBCL remoteBCL; + RemoteBCLNLR remoteBCL; remoteBCL.setTimeOutSeconds(m_timeoutSeconds); std::vector responses; if (filterType == "components") { @@ -330,7 +330,7 @@ void BuildingComponentDialogCentralWidget::downloadNextComponent() { if (m_remoteBCL) { // currently doing a download if (m_downloadTimer.isValid()) { - // RemoteBCL does not always call the call back for us if we timeout + // RemoteBCLNLR does not always call the call back for us if we timeout if (m_downloadTimer.elapsed() > static_cast(1000) * m_timeoutSeconds) { m_timer->stop(); @@ -344,7 +344,7 @@ void BuildingComponentDialogCentralWidget::downloadNextComponent() { m_downloadTimer.invalidate(); m_currentDownload.reset(); - if (!RemoteBCL::isOnline()) { + if (!RemoteBCLNLR::isOnline()) { // if we have gone offline cancel the remaining pending downloads clearPendingDownloads(true); } @@ -372,7 +372,7 @@ void BuildingComponentDialogCentralWidget::downloadNextComponent() { m_progressBar->setVisible(true); if (m_currentDownload->second == "components") { - m_remoteBCL = std::make_shared(); + m_remoteBCL = std::make_shared(); m_remoteBCL->setTimeOutSeconds(m_timeoutSeconds); // Connect to Nano Signal @@ -388,7 +388,7 @@ void BuildingComponentDialogCentralWidget::downloadNextComponent() { } } else if (m_currentDownload->second == "measures") { - m_remoteBCL = std::make_shared(); + m_remoteBCL = std::make_shared(); m_remoteBCL->setTimeOutSeconds(m_timeoutSeconds); // Connect to Nano Signal diff --git a/src/shared_gui_components/BuildingComponentDialogCentralWidget.hpp b/src/shared_gui_components/BuildingComponentDialogCentralWidget.hpp index b1e1cc2d5..9b7d41dd8 100644 --- a/src/shared_gui_components/BuildingComponentDialogCentralWidget.hpp +++ b/src/shared_gui_components/BuildingComponentDialogCentralWidget.hpp @@ -28,7 +28,7 @@ namespace openstudio { class Component; class ComponentList; class CollapsibleComponentList; -class RemoteBCL; +class RemoteBCLNLR; class BuildingComponentDialogCentralWidget : public QWidget @@ -64,7 +64,7 @@ class BuildingComponentDialogCentralWidget int m_pageIdx; QString m_searchString; bool m_showNewComponents; - std::shared_ptr m_remoteBCL; + std::shared_ptr m_remoteBCL; QTimer* m_timer; QElapsedTimer m_downloadTimer; std::optional> m_currentDownload; diff --git a/src/shared_gui_components/MeasureManager.cpp b/src/shared_gui_components/MeasureManager.cpp index 3e01f67dc..3481ce194 100644 --- a/src/shared_gui_components/MeasureManager.cpp +++ b/src/shared_gui_components/MeasureManager.cpp @@ -25,7 +25,7 @@ #include #include #include -#include +#include "../utilities/RemoteBCLNLR.hpp" #include #include #include @@ -953,7 +953,7 @@ bool MeasureManager::checkForUpdates(const openstudio::path& measureDir, bool fo } void MeasureManager::checkForRemoteBCLUpdates() { - RemoteBCL remoteBCL; + RemoteBCLNLR remoteBCL; remoteBCL.checkForMeasureUpdates(); std::vector updates = remoteBCL.measuresWithUpdates(); diff --git a/src/utilities/CMakeLists.txt b/src/utilities/CMakeLists.txt index 52754708e..042db0bb7 100644 --- a/src/utilities/CMakeLists.txt +++ b/src/utilities/CMakeLists.txt @@ -8,6 +8,8 @@ CONFIGURE_FILE_WITH_CHECKSUM("OpenStudioApplicationPathHelpers.cxx.in" "${CMAKE_ set(${target_name}_src OpenStudioApplicationPathHelpers.hpp ${CMAKE_CURRENT_BINARY_DIR}/OpenStudioApplicationPathHelpers.cxx + RemoteBCLNLR.hpp + RemoteBCLNLR.cpp ) # set up groups of source files for Visual Studio diff --git a/src/utilities/RemoteBCLNLR.cpp b/src/utilities/RemoteBCLNLR.cpp new file mode 100644 index 000000000..ae8e5e47b --- /dev/null +++ b/src/utilities/RemoteBCLNLR.cpp @@ -0,0 +1,959 @@ +/*********************************************************************************************************************** +* OpenStudio(R), Copyright (c) Alliance for Energy Innovation, LLC. +* See also https://openstudio.net/license +***********************************************************************************************************************/ + +#include +#include "RemoteBCLNLR.hpp" +#include +#include +#include +#include +#include +#include + +#include + +#define REMOTE_PRODUCTION_SERVER "https://bcl.nlr.gov" +#define REMOTE_DEVELOPMENT_SERVER "https://bcl2.nlr.gov" + +using namespace utility::conversions; + +namespace openstudio { + +std::ostream& operator<<(std::ostream& os, const pugi::xml_document& element) { + element.save(os, " "); + return os; +} + +RemoteQueryResponse::RemoteQueryResponse(std::shared_ptr& domDocument) : m_domDocument(domDocument) {} + +pugi::xml_node RemoteQueryResponse::root() const { + return m_domDocument->document_element(); +} + +// TODO: please note that you should use getClient everywhere after instead of instantiating your own http_client_config +// as it will allow us to change http_client_config (SSL settings etc) in only one place +web::http::client::http_client RemoteBCLNLR::getClient(const std::string& url, unsigned timeOutSeconds) { + web::http::client::http_client_config config; + // bcl.nrel.gov can be slow to respond to client requests so bump the default of 30 seconds to 60 to account for lengthy response time. + // this is timeout is for each send and receive operation on the client and not the entire client session. + config.set_timeout(std::chrono::seconds(timeOutSeconds)); + config.set_validate_certificates(false); + + return web::http::client::http_client(utility::conversions::to_string_t(url), config); +} + +unsigned RemoteBCLNLR::timeOutSeconds() const { + return m_timeOutSeconds; +} +bool RemoteBCLNLR::setTimeOutSeconds(unsigned timeOutSeconds) { + if (timeOutSeconds < 10) { + LOG(Error, "Setting a timeout of " << timeOutSeconds << " is too low."); + return false; + } else if (timeOutSeconds < 60) { + LOG(Warn, "Setting a timeout of " << timeOutSeconds << " appears low and you risk failures to download components and measures"); + } + m_timeOutSeconds = timeOutSeconds; + return true; +} + +bool RemoteBCLNLR::DownloadFile::open() { + OS_ASSERT(!m_fileName.empty()); + m_ofs.open(toString(m_fileName).c_str(), std::ios_base::trunc | std::ios_base::out | std::ios_base::binary); + return m_ofs.good(); +} + +RemoteBCLNLR::DownloadFile::DownloadFile(openstudio::path t_path) : m_fileName(std::move(t_path)) {} + +void RemoteBCLNLR::DownloadFile::flush() { + if (m_ofs.good()) { + m_ofs.flush(); + } +} + +const openstudio::path& RemoteBCLNLR::DownloadFile::fileName() const noexcept { + return m_fileName; +} + +void RemoteBCLNLR::DownloadFile::close() { + m_ofs.close(); +} + +void RemoteBCLNLR::DownloadFile::write(const std::vector& data) { + m_ofs.write(reinterpret_cast(data.data()), data.size()); +} + +RemoteBCLNLR::RemoteBCLNLR() + : m_prodAuthKey(LocalBCL::instance().prodAuthKey()), + m_devAuthKey(LocalBCL::instance().devAuthKey()), + m_numResultsPerQuery(10), + m_lastTotalResults(0), + m_apiVersion("2.0"), + validProdAuthKey(false), + validDevAuthKey(false), + m_timeOutSeconds(120) { + useRemoteProductionUrl(); +} + +/////////////////////////////////////////////////////////////////////////// +/// Inherited members +/////////////////////////////////////////////////////////////////////////// + +boost::optional RemoteBCLNLR::getComponent(const std::string& uid, const std::string& /*versionId*/) const { + bool downloadStarted = const_cast(this)->downloadComponent(uid); + if (downloadStarted) { + return waitForComponentDownload(); + } + return boost::none; +} + +boost::optional RemoteBCLNLR::getMeasure(const std::string& uid, const std::string& /*versionId*/) const { + bool downloadStarted = const_cast(this)->downloadMeasure(uid); + if (downloadStarted) { + return waitForMeasureDownload(); + } + return boost::none; +} + +boost::optional RemoteBCLNLR::metaSearchComponentLibrary(const std::string& searchTerm, const std::string& componentType, + const std::string& filterType) const { + bool searchStarted = const_cast(this)->startComponentLibraryMetaSearch(searchTerm, componentType, filterType); + if (searchStarted) { + return waitForMetaSearch(); + } + return boost::none; +} + +boost::optional RemoteBCLNLR::metaSearchComponentLibrary(const std::string& searchTerm, const unsigned componentTypeTID, + const std::string& filterType) const { + bool searchStarted = const_cast(this)->startComponentLibraryMetaSearch(searchTerm, componentTypeTID, filterType); + if (searchStarted) { + return waitForMetaSearch(); + } + return boost::none; +} + +std::vector RemoteBCLNLR::searchComponentLibrary(const std::string& searchTerm, const std::string& componentType, + const unsigned page) const { + // Perform metaSearch first + metaSearchComponentLibrary(searchTerm, componentType, "nrel_component"); + if (lastTotalResults() == 0) { + return {}; + } + + bool searchStarted = const_cast(this)->startComponentLibrarySearch(searchTerm, componentType, "nrel_component", page); + if (searchStarted) { + return waitForSearch(); + } + return {}; +} + +std::vector RemoteBCLNLR::searchComponentLibrary(const std::string& searchTerm, const unsigned componentTypeTID, + const unsigned page) const { + // Perform metaSearch first + metaSearchComponentLibrary(searchTerm, componentTypeTID, "nrel_component"); + if (lastTotalResults() == 0) { + return {}; + } + + bool searchStarted = const_cast(this)->startComponentLibrarySearch(searchTerm, componentTypeTID, "nrel_component", page); + if (searchStarted) { + return waitForSearch(); + } + return {}; +} + +std::vector RemoteBCLNLR::searchMeasureLibrary(const std::string& searchTerm, const std::string& componentType, + const unsigned page) const { + // Perform metaSearch first + metaSearchComponentLibrary(searchTerm, componentType, "nrel_measure"); + if (lastTotalResults() == 0) { + return {}; + } + + bool searchStarted = const_cast(this)->startComponentLibrarySearch(searchTerm, componentType, "nrel_measure", page); + if (searchStarted) { + return waitForSearch(); + } + return {}; +} + +std::vector RemoteBCLNLR::searchMeasureLibrary(const std::string& searchTerm, const unsigned componentTypeTID, + const unsigned page) const { + // Perform metaSearch first + metaSearchComponentLibrary(searchTerm, componentTypeTID, "nrel_measure"); + if (lastTotalResults() == 0) { + return {}; + } + + bool searchStarted = const_cast(this)->startComponentLibrarySearch(searchTerm, componentTypeTID, "nrel_measure", page); + if (searchStarted) { + return waitForSearch(); + } + return {}; +} + +int RemoteBCLNLR::checkForComponentUpdates() { + m_componentsWithUpdates.clear(); + + for (const BCLComponent& component : LocalBCL::instance().components()) { + // can't start another request until last one is done + if (m_httpResponse && !m_httpResponse->is_done()) { + return 0; + } + + m_lastSearch.clear(); + + auto client = getClient(remoteUrl(), m_timeOutSeconds); + web::uri_builder builder(to_string_t("/api/search/")); + + builder.append_path(to_string_t("*.xml")); + + builder.append_query(to_string_t("fq[]"), to_string_t("ss_uuid:" + component.uid())); + + builder.append_query(to_string_t("api_version"), to_string_t(m_apiVersion)); + + // LOG(Debug, m_remoteUrl << builder.to_string()); + + m_httpResponse = client.request(web::http::methods::GET, builder.to_string()) + .then([](web::http::http_response resp) { return resp.extract_utf8string(); }) + .then([this](const std::string& xml) { + auto remoteQueryResponse = processReply(xml); + + if (remoteQueryResponse) { + m_lastSearch = processSearchResponse(*remoteQueryResponse); + } + }); + + std::vector result = waitForSearch(); + if (!result.empty() && result[0].versionId() != component.versionId()) { + m_componentsWithUpdates.push_back(result[0]); + } + } + + return m_componentsWithUpdates.size(); +} + +int RemoteBCLNLR::checkForMeasureUpdates() { + m_measuresWithUpdates.clear(); + + for (const BCLMeasure& measure : LocalBCL::instance().measures()) { + // can't start another request until last one is done + if (m_httpResponse && !m_httpResponse->is_done()) { + return 0; + } + + m_lastSearch.clear(); + + auto client = getClient(remoteUrl(), m_timeOutSeconds); + web::uri_builder builder(to_string_t("/api/search/")); + + builder.append_path(to_string_t("*.xml")); + + builder.append_query(to_string_t("fq[]"), to_string_t("ss_uuid:" + measure.uid())); + + builder.append_query(to_string_t("api_version"), to_string_t(m_apiVersion)); + + // LOG(Debug, m_remoteUrl << builder.to_string()); + + m_httpResponse = client.request(web::http::methods::GET, builder.to_string()) + .then([](web::http::http_response resp) { return resp.extract_utf8string(); }) + .then([this](const std::string& xml) { + auto remoteQueryResponse = processReply(xml); + + if (remoteQueryResponse) { + m_lastSearch = processSearchResponse(*remoteQueryResponse); + } + }); + + std::vector result = waitForSearch(); + if (!result.empty() && result[0].versionId() != measure.versionId()) { + m_measuresWithUpdates.push_back(result[0]); + } + } + + return m_measuresWithUpdates.size(); +} + +std::vector RemoteBCLNLR::componentsWithUpdates() const { + return m_componentsWithUpdates; +} + +std::vector RemoteBCLNLR::measuresWithUpdates() const { + return m_measuresWithUpdates; +} + +void RemoteBCLNLR::updateComponents() { + if (m_componentsWithUpdates.empty()) { + checkForComponentUpdates(); + } + + for (const BCLSearchResult& component : m_componentsWithUpdates) { + downloadComponent(component.uid()); + boost::optional newComponent = waitForComponentDownload(); + + if (newComponent) { + LocalBCL::instance().removeOutdatedLocalComponents(newComponent->uid(), newComponent->versionId()); + } + } +} + +void RemoteBCLNLR::updateMeasures() { + if (m_measuresWithUpdates.empty()) { + checkForMeasureUpdates(); + } + + for (const BCLSearchResult& measure : m_measuresWithUpdates) { + downloadMeasure(measure.uid()); + boost::optional newMeasure = waitForMeasureDownload(); + + if (newMeasure) { + LocalBCL::instance().removeOutdatedLocalMeasures(newMeasure->uid(), newMeasure->versionId()); + } + } +} + +/////////////////////////////////////////////////////////////////////////// +/// Blocking class members +/////////////////////////////////////////////////////////////////////////// + +bool RemoteBCLNLR::isOnline() { + try { + auto ip = getClient("https://checkip.amazonaws.com/") + .request(web::http::methods::GET) + .then([](web::http::http_response response) { + auto statusCode = response.status_code(); + if (statusCode != 200) { + std::stringstream ss; + ss << "Error: response code was " << statusCode; + return ss.str(); + } + + auto body = response.extract_utf8string(true).get(); + // Remove trailing line ending + return body.erase(body.find_last_not_of("\n") + 1); + }) + .get(); + + std::regex ipRegex("^\\d{1,3}(?:\\.\\d{1,3}){3}$"); + return std::regex_search(ip, ipRegex); + } catch (const std::exception&) { + // not online + } + return false; +} + +boost::optional RemoteBCLNLR::lastComponentDownload() const { + return m_lastComponentDownload; +} + +boost::optional RemoteBCLNLR::lastMeasureDownload() const { + return m_lastMeasureDownload; +} + +boost::optional RemoteBCLNLR::lastMetaSearch() const { + return m_lastMetaSearch; +} + +std::vector RemoteBCLNLR::lastSearch() const { + return m_lastSearch; +} + +std::string RemoteBCLNLR::remoteUrl() const { + return m_remoteUrl; +} + +std::string RemoteBCLNLR::remoteProductionUrl() { + return {REMOTE_PRODUCTION_SERVER}; +} + +std::string RemoteBCLNLR::remoteDevelopmentUrl() { + return {REMOTE_DEVELOPMENT_SERVER}; +} + +void RemoteBCLNLR::useRemoteDevelopmentUrl() { + m_useRemoteDevelopmentUrl = true; + m_remoteUrl = remoteDevelopmentUrl(); + m_authKey = m_devAuthKey; +} + +void RemoteBCLNLR::useRemoteProductionUrl() { + m_useRemoteDevelopmentUrl = false; + m_remoteUrl = remoteProductionUrl(); + m_authKey = m_prodAuthKey; +} + +std::string RemoteBCLNLR::authKey() const { + return m_authKey; +} + +std::string RemoteBCLNLR::prodAuthKey() const { + return m_prodAuthKey; +} + +bool RemoteBCLNLR::setProdAuthKey(const std::string& prodAuthKey) { + bool previousValidity = validProdAuthKey; + if (validateAuthKey(prodAuthKey, remoteProductionUrl())) { + m_prodAuthKey = prodAuthKey; + if (!m_useRemoteDevelopmentUrl) { + m_authKey = prodAuthKey; + } + return true; + } + validProdAuthKey = previousValidity; + return false; +} + +std::string RemoteBCLNLR::devAuthKey() const { + return m_devAuthKey; +} + +bool RemoteBCLNLR::setDevAuthKey(const std::string& devAuthKey) { + bool previousValidity = validDevAuthKey; + if (validateAuthKey(devAuthKey, remoteDevelopmentUrl())) { + m_devAuthKey = devAuthKey; + if (m_useRemoteDevelopmentUrl) { + m_authKey = devAuthKey; + } + return true; + } + validDevAuthKey = previousValidity; + return false; +} + +int RemoteBCLNLR::resultsPerQuery() const { + return m_numResultsPerQuery; +} + +int RemoteBCLNLR::lastTotalResults() const { + return m_lastTotalResults; +} + +int RemoteBCLNLR::numResultPages() const { + double numerator(lastTotalResults()); + double denominator(resultsPerQuery()); + return int(std::ceil(numerator / denominator)); +} + +bool RemoteBCLNLR::validateAuthKey(const std::string& authKey, const std::string& remoteUrl) { + if (authKey.length() == 32) { + std::string previousUrl = this->remoteUrl(); + + // Check if validation has already run for the given key + if (remoteUrl == remoteProductionUrl() && authKey == prodAuthKey() && validProdAuthKey) { + return true; + } else if (remoteUrl == remoteDevelopmentUrl() && authKey == devAuthKey() && validDevAuthKey) { + return true; + } + + // Temporarily set url + if (remoteUrl == remoteDevelopmentUrl()) { + useRemoteDevelopmentUrl(); + } else { + useRemoteProductionUrl(); + } + + // can't start another request until last one is done + if (m_httpResponse && !m_httpResponse->is_done()) { + return false; + } + + m_lastSearch.clear(); + + auto client = getClient(remoteUrl, m_timeOutSeconds); + web::uri_builder builder(to_string_t("/api/search/")); + + builder.append_path(to_string_t("*.xml")); + + builder.append_query(to_string_t("api_version"), to_string_t(m_apiVersion)); + builder.append_query(to_string_t("show_rows"), to_string_t("0")); + + // LOG(Debug, m_remoteUrl << builder.to_string()); + + m_httpResponse = client.request(web::http::methods::GET, builder.to_string()) + .then([](web::http::http_response resp) { return resp.extract_utf8string(); }) + .then([this](const std::string& xml) { + auto remoteQueryResponse = processReply(xml); + + if (remoteQueryResponse) { + m_lastSearch = processSearchResponse(*remoteQueryResponse); + } + }); + + waitForSearch(); + + // Restore url + if (previousUrl == remoteDevelopmentUrl()) { + useRemoteDevelopmentUrl(); + } else { + useRemoteProductionUrl(); + } + + if (remoteUrl == remoteDevelopmentUrl()) { + return validDevAuthKey; + } else { + return validProdAuthKey; + } + } + return false; +} + +boost::optional RemoteBCLNLR::waitForComponentDownload() const { + if (waitForLock()) { + return m_lastComponentDownload; + } + return boost::none; +} + +boost::optional RemoteBCLNLR::waitForComponentDownload(int) const { + DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForComponentDownload() instead"); + return waitForComponentDownload(); +} + +boost::optional RemoteBCLNLR::waitForMeasureDownload() const { + if (waitForLock()) { + return m_lastMeasureDownload; + } + return boost::none; +} + +boost::optional RemoteBCLNLR::waitForMeasureDownload(int) const { + DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForMeasureDownload() instead"); + return waitForMeasureDownload(); +} + +boost::optional RemoteBCLNLR::waitForMetaSearch() const { + if (waitForLock()) { + return m_lastMetaSearch; + } + return boost::none; +} + +boost::optional RemoteBCLNLR::waitForMetaSearch(int) const { + DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForMetaSearch() instead"); + return waitForMetaSearch(); +} + +std::vector RemoteBCLNLR::waitForSearch() const { + if (waitForLock()) { + return m_lastSearch; + } + return {}; +} + +std::vector RemoteBCLNLR::waitForSearch(int) const { + DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForSearch() instead"); + return waitForSearch(); +} + +/////////////////////////////////////////////////////////////////////////// +/// Non-blocking class members +/////////////////////////////////////////////////////////////////////////// + +bool RemoteBCLNLR::downloadComponent(const std::string& uid) { + // Check for empty uid + if (uid.empty()) { + LOG(Error, "Error: No uid provided"); + return false; + } + + // can't start another request until last one is done + if (m_httpResponse && !m_httpResponse->is_done()) { + LOG(Debug, "Cannot get mutex lock"); + return false; + } + + m_downloadFile = std::make_unique(openstudio::filesystem::temp_directory_path() / toPath(uid + ".bcl")); + if (!m_downloadFile->open()) { + return false; + } + + m_downloadUid = uid; + // request.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17"); + auto client = getClient(remoteUrl(), m_timeOutSeconds); + web::uri_builder builder(to_string_t("/api/component/download")); + + builder.append_query(to_string_t("uids"), to_string_t(uid)); + + web::http::http_request msg(web::http::methods::GET); + msg.headers().add(to_string_t("User-Agent"), + to_string_t("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.56 Safari/537.17")); + msg.set_request_uri(builder.to_string()); + + // LOG(Debug, m_remoteUrl << builder.to_string()); + + m_httpResponse = client.request(web::http::methods::GET, builder.to_string()) + .then([](web::http::http_response resp) { return resp.extract_vector(); }) + .then([this](const std::vector& zip) { + m_downloadFile->write(zip); + m_downloadFile->flush(); + m_downloadFile->close(); + }) + .then([this]() { onDownloadComplete(); }); + + return true; +} + +bool RemoteBCLNLR::downloadMeasure(const std::string& uid) { + return downloadComponent(uid); +} + +bool RemoteBCLNLR::startComponentLibraryMetaSearch(const std::string& searchTerm, const std::string& componentType, const std::string& filterType) { + // can't start another request until last one is done + if (m_httpResponse && !m_httpResponse->is_done()) { + return false; + } + + m_lastMetaSearch.reset(); + + auto client = getClient(remoteUrl(), m_timeOutSeconds); + web::uri_builder builder(to_string_t("/api/metasearch/")); + + // web::uri::encode_data_string will Encodes a string by converting all characters + // except for RFC 3986 unreserved characters to their hexadecimal representation. (eg: '+' => %2B, ' ' => %20) + std::string query = searchTerm.empty() ? "*" : searchTerm; + builder.append_path(web::uri::encode_data_string(utility::conversions::to_string_t(query + ".xml"))); + + builder.append_query(to_string_t("fq[]"), to_string_t("bundle:" + filterType)); + + if (!componentType.empty() && componentType != "*") { + std::string filter = (filterType == "nrel_component") ? "sm_vid_Component_Tags" : "sm_vid_Measure_Tags"; + filter += ":\"" + componentType + "\""; + builder.append_query(to_string_t("fq[]"), to_string_t(filter)); + } + + builder.append_query(to_string_t("api_version"), to_string_t(m_apiVersion)); + + m_httpResponse = client.request(web::http::methods::GET, builder.to_string()) + .then([](web::http::http_response resp) { return resp.extract_utf8string(); }) + .then([this](const std::string& xml) { + auto remoteQueryResponse = processReply(xml); + + if (remoteQueryResponse) { + m_lastMetaSearch = processMetaSearchResponse(*remoteQueryResponse); + } + + if (m_lastMetaSearch) { + setLastTotalResults(m_lastMetaSearch->numResults()); + } else { + setLastTotalResults(0); + } + }); + + // LOG(Debug, m_remoteUrl << builder.to_string()); + + return true; +} + +bool RemoteBCLNLR::startComponentLibraryMetaSearch(const std::string& searchTerm, const unsigned componentTypeTID, const std::string& filterType) { + // can't start another request until last one is done + if (m_httpResponse && !m_httpResponse->is_done()) { + return false; + } + + m_lastMetaSearch.reset(); + + auto client = getClient(remoteUrl(), m_timeOutSeconds); + web::uri_builder builder(to_string_t("/api/metasearch/")); + + std::string query = searchTerm.empty() ? "*" : searchTerm; + builder.append_path(web::uri::encode_data_string(utility::conversions::to_string_t(query + ".xml"))); + + builder.append_query(to_string_t("fq[]"), to_string_t("bundle:" + filterType)); + + if (componentTypeTID != 0) { + std::string filter = "tid:" + openstudio::string_conversions::number(componentTypeTID); + builder.append_query(to_string_t("fq[]"), to_string_t(filter)); + } + + builder.append_query(to_string_t("api_version"), to_string_t(m_apiVersion)); + + m_httpResponse = client.request(web::http::methods::GET, builder.to_string()) + .then([](web::http::http_response resp) { return resp.extract_utf8string(); }) + .then([this](const std::string& xml) { + auto remoteQueryResponse = processReply(xml); + + if (remoteQueryResponse) { + m_lastMetaSearch = processMetaSearchResponse(*remoteQueryResponse); + } + + if (m_lastMetaSearch) { + setLastTotalResults(m_lastMetaSearch->numResults()); + } else { + setLastTotalResults(0); + } + }); + + // LOG(Debug, m_remoteUrl << builder.to_string()); + + return true; +} + +bool RemoteBCLNLR::startComponentLibrarySearch(const std::string& searchTerm, const std::string& componentType, const std::string& filterType, + const unsigned page) { + // can't start another request until last one is done + if (m_httpResponse && !m_httpResponse->is_done()) { + return false; + } + + m_lastSearch.clear(); + + auto client = getClient(remoteUrl(), m_timeOutSeconds); + web::uri_builder builder(to_string_t("/api/search/")); + + std::string query = searchTerm.empty() ? "*" : searchTerm; + builder.append_path(web::uri::encode_data_string(utility::conversions::to_string_t(query + ".xml"))); + + builder.append_query(to_string_t("fq[]"), to_string_t("bundle:" + filterType)); + + if (!componentType.empty() && componentType != "*") { + std::string filter = (filterType == "nrel_component") ? "sm_vid_Component_Tags" : "sm_vid_Measure_Tags"; + filter += ":\"" + componentType + "\""; + builder.append_query(to_string_t("fq[]"), to_string_t(filter)); + } + + builder.append_query(to_string_t("api_version"), to_string_t(m_apiVersion)); + builder.append_query(to_string_t("show_rows"), to_string_t(openstudio::string_conversions::number(m_numResultsPerQuery))); + builder.append_query(to_string_t("page"), to_string_t(openstudio::string_conversions::number(page))); + + m_httpResponse = client.request(web::http::methods::GET, builder.to_string()) + .then([](web::http::http_response resp) { return resp.extract_utf8string(); }) + .then([this](const std::string& xml) { + auto remoteQueryResponse = processReply(xml); + + if (remoteQueryResponse) { + m_lastSearch = processSearchResponse(*remoteQueryResponse); + } + }); + + // LOG(Debug, m_remoteUrl << builder.to_string()); + + return true; +} + +bool RemoteBCLNLR::startComponentLibrarySearch(const std::string& searchTerm, const unsigned componentTypeTID, const std::string& filterType, + const unsigned page) { + // can't start another request until last one is done + if (m_httpResponse && !m_httpResponse->is_done()) { + return false; + } + + m_lastSearch.clear(); + + auto client = getClient(remoteUrl(), m_timeOutSeconds); + web::uri_builder builder(to_string_t("/api/search/")); + + std::string query = searchTerm.empty() ? "*" : searchTerm; + builder.append_path(web::uri::encode_data_string(utility::conversions::to_string_t(query + ".xml"))); + + builder.append_query(to_string_t("fq[]"), to_string_t("bundle:" + filterType)); + + if (componentTypeTID != 0) { + std::string filter = "tid:" + openstudio::string_conversions::number(componentTypeTID); + builder.append_query(to_string_t("fq[]"), to_string_t(filter)); + } + builder.append_query(to_string_t("api_version"), to_string_t(m_apiVersion)); + builder.append_query(to_string_t("show_rows"), to_string_t(openstudio::string_conversions::number(m_numResultsPerQuery))); + builder.append_query(to_string_t("page"), to_string_t(openstudio::string_conversions::number(page))); + + m_httpResponse = client.request(web::http::methods::GET, builder.to_string()) + .then([](web::http::http_response resp) { return resp.extract_utf8string(); }) + .then([this](const std::string& xml) { + auto remoteQueryResponse = processReply(xml); + + if (remoteQueryResponse) { + m_lastSearch = processSearchResponse(*remoteQueryResponse); + } + }); + + // LOG(Debug, m_remoteUrl << builder.to_string()); + + return true; +} + +bool RemoteBCLNLR::waitForLock() const { + + if (!m_httpResponse) { + return false; + } + + try { + m_httpResponse->wait(); + return true; + } catch (const std::exception& e) { + LOG(Error, "Request to url '" << m_remoteUrl << " 'failed with message: " << e.what()); + } + + return false; +} + +boost::optional RemoteBCLNLR::processReply(const std::string& reply) { + std::shared_ptr document = std::make_shared(); + auto result = document->load_string(reply.c_str()); + if (!result) { + LOG(Error, "Bad XML Response: " << result.description()); + } else { + if (!m_useRemoteDevelopmentUrl) { + validProdAuthKey = true; + } else { + validDevAuthKey = true; + } + return RemoteQueryResponse(document); + } + + return boost::none; +} + +boost::optional RemoteBCLNLR::processMetaSearchResponse(const RemoteQueryResponse& remoteQueryResponse) { + auto root = remoteQueryResponse.root(); + + if (root) { + if (std::string(root.name()).compare(0, 6, "result") == 0) { // C++20: std::string(root.name()).starts_with("result") + auto numResultsElement = root.child("result_count"); + if (numResultsElement) { + return BCLMetaSearchResult(root); + } + } + } + + return boost::none; +} + +std::vector RemoteBCLNLR::processSearchResponse(const RemoteQueryResponse& remoteQueryResponse) { + std::vector searchResults; + + auto root = remoteQueryResponse.root(); + auto result = root.child("result"); + if (result) { + auto componentElement = result.first_child(); + + //Basic check to see if it's non-empty + while (componentElement.child("name") != nullptr) { + //Skip components without a uid or version_id + if ((componentElement.child("uuid") != nullptr) && (componentElement.child("vuuid") != nullptr)) { + BCLSearchResult searchResult(componentElement); + searchResults.push_back(searchResult); + } + result = result.next_sibling("result"); + componentElement = result.first_child(); + } + } + + return searchResults; +} + +void RemoteBCLNLR::onDownloadComplete() { + const auto src = m_downloadFile->fileName(); + std::string componentType; + + // Extract the files to a temp location + openstudio::path tempDest = openstudio::filesystem::temp_directory_path() / toPath(m_downloadUid + '/'); + + if (openstudio::filesystem::is_directory(tempDest)) { + removeDirectory(tempDest); + } + openstudio::filesystem::create_directories(tempDest); + + std::vector createdFiles; + try { + openstudio::UnzipFile uf(src); + createdFiles = uf.extractAllFiles(tempDest); + } catch (const std::exception& e) { + LOG(Error, "Cannot unzip file: " << e.what()); + } + openstudio::filesystem::remove(src); + + // search for component.xml or measure.xml file + boost::optional xmlPath; + + for (const auto& path : createdFiles) { + if (path.filename() == toPath("component.xml")) { + componentType = "component"; + m_lastComponentDownload.reset(); + xmlPath = path; + break; + } else if (path.filename() == toPath("measure.xml")) { + componentType = "measure"; + m_lastMeasureDownload.reset(); + xmlPath = path; + break; + } + } + + if (xmlPath) { + // cppcheck-suppress shadowVariable + path src = xmlPath->parent_path(); + path dest = src.parent_path(); + openstudio::filesystem::remove(dest / toPath("DISCLAIMER.txt")); + openstudio::filesystem::remove(dest / toPath("README.txt")); + openstudio::filesystem::remove(dest / toPath("output.xml")); + copyDirectory(src, dest); + removeDirectory(src); + + if (componentType == "component") { + path componentXmlPath = dest / toPath("component.xml"); + // open the component to figure out uid and vid + BCLComponent component(toString(componentXmlPath.parent_path())); + std::string uid = component.uid(); + std::string versionId = component.versionId(); + + // check if component has proper uid and vid + if (!uid.empty() && !versionId.empty()) { + dest = LocalBCL::instance().libraryPath() / uid / versionId; + + removeDirectory(dest); + if (copyDirectory(componentXmlPath.parent_path(), dest)) { + // Add to LocalBCL + m_lastComponentDownload = BCLComponent(toString(dest)); + LocalBCL::instance().addComponent(*m_lastComponentDownload); + } + } + } else if (componentType == "measure") { + path measureXmlPath = dest / toPath("measure.xml"); + // open the measure to figure out uid and vid + boost::optional measure; + try { + measure = BCLMeasure(measureXmlPath.parent_path()); + + std::string uid = measure->uid(); + std::string versionId = measure->versionId(); + + // check if component has proper uid and vid + if (!uid.empty() && !versionId.empty()) { + dest = LocalBCL::instance().libraryPath() / uid / versionId; + removeDirectory(dest); + if (copyDirectory(measureXmlPath.parent_path(), dest)) { + // Add to LocalBCL + m_lastMeasureDownload = BCLMeasure(dest); + LocalBCL::instance().addMeasure(*m_lastMeasureDownload); + } + } + } catch (const std::exception&) { + LOG(Error, "Unable to create measure from download: " + toString(measureXmlPath.parent_path())); + } + } + } else { + LOG(Error, "No component.xml or measure.xml file found in downloaded contents"); + } + + // delete the temp unzip directory + removeDirectory(tempDest); + + if (componentType == "measure") { + this->measureDownloaded.nano_emit(m_downloadUid, m_lastMeasureDownload); + } else { + this->componentDownloaded.nano_emit(m_downloadUid, m_lastComponentDownload); + } +} + +int RemoteBCLNLR::setResultsPerQuery(const int numResults) { + m_numResultsPerQuery = numResults <= 0 ? 10 : numResults > 100 ? 100 : numResults; + return m_numResultsPerQuery; +} + +void RemoteBCLNLR::setLastTotalResults(const int lastTotalResults) { + m_lastTotalResults = lastTotalResults; +} + +} // namespace openstudio diff --git a/src/utilities/RemoteBCLNLR.hpp b/src/utilities/RemoteBCLNLR.hpp new file mode 100644 index 000000000..f4d4fdefb --- /dev/null +++ b/src/utilities/RemoteBCLNLR.hpp @@ -0,0 +1,304 @@ +/*********************************************************************************************************************** +* OpenStudio(R), Copyright (c) Alliance for Energy Innovation, LLC. +* See also https://openstudio.net/license +***********************************************************************************************************************/ + +#ifndef UTILITIES_BCL_REMOTEBCL_HPP +#define UTILITIES_BCL_REMOTEBCL_HPP + +#include "OpenStudioApplicationUtilitiesAPI.hpp" + +#include +#include +#include + +#if (defined(__GNUC__)) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wnon-virtual-dtor" +#endif +#if __APPLE__ +# include // OpenStudio/dependencies/cpprestsdk_char_traits_workaround.hpp +#endif +// Macro U from cpprestsdk is clashing with (cf boost https://github.com/microsoft/cpprestsdk/issues/1214) +#define _TURN_OFF_PLATFORM_STRING +#include +#if (defined(__GNUC__)) +# pragma GCC diagnostic pop +#endif + +#include +#include + +#include + +namespace openstudio { + +/// This class is used to capture the xml response of a query and store it for later processing. +class OSAPP_UTILITIES_API RemoteQueryResponse +{ + public: + RemoteQueryResponse(std::shared_ptr& domDocument); + + pugi::xml_node root() const; + + private: + std::shared_ptr m_domDocument; +}; + +/// Class for accessing the remote BCL. +class OSAPP_UTILITIES_API RemoteBCLNLR : public BCL +{ + public: + /** @name Constructor */ + //@{ + + /// Default constructor + RemoteBCLNLR(); + + //@} + /** @name Destructor */ + //@{ + + /// Virtual destructor + virtual ~RemoteBCLNLR() override = default; + + //@} + /** @name Inherited members */ + //@{ + + /// Get the component by uid + virtual boost::optional getComponent(const std::string& uid, const std::string& versionId = "") const override; + + /// Get the measure by uid + virtual boost::optional getMeasure(const std::string& uid, const std::string& versionId = "") const override; + + /// Perform a meta search on the library to identify number and types of results available. + /// The total number of search results available can be used in the search method which requires a page number. + boost::optional metaSearchComponentLibrary(const std::string& searchTerm, const std::string& componentType, + const std::string& filterType = "nrel_component") const; + boost::optional metaSearchComponentLibrary(const std::string& searchTerm, const unsigned componentTypeTID, + const std::string& filterType = "nrel_component") const; + + /// Perform a component search of the library, results are returned in 'pages', + /// the number of results per page is configurable and a metasearch should be performed + /// to determine the total number of results pages available + std::vector searchComponentLibrary(const std::string& searchTerm, const std::string& componentType, const unsigned page = 0) const; + std::vector searchComponentLibrary(const std::string& searchTerm, const unsigned componentTypeTID, const unsigned page = 0) const; + + /// Perform a measure search of the library, results are returned in 'pages', + /// the number of results per page is configurable and a metasearch should be performed + /// to determine the total number of results pages available + std::vector searchMeasureLibrary(const std::string& searchTerm, const std::string& componentType, const unsigned page = 0) const; + std::vector searchMeasureLibrary(const std::string& searchTerm, const unsigned componentTypeTID, const unsigned page = 0) const; + + /// Compare the versionIds of all downloaded components/measures to the published version online + /// and return the number that have updates + int checkForComponentUpdates(); + int checkForMeasureUpdates(); + + /// Return the uids for components and measures respectively that have updates available + std::vector componentsWithUpdates() const; + std::vector measuresWithUpdates() const; + + /// Replace local components and measures with the latest versions + void updateComponents(); + void updateMeasures(); + + //@} + /** @name Blocking class members */ + //@{ + + /// Returns true if there is an internet connection + static bool isOnline(); + + /// Returns the last downloaded component if there is one + boost::optional lastComponentDownload() const; + + /// Returns the last downloaded measure if there is one + boost::optional lastMeasureDownload() const; + + /// Returns the last meta search result if there is one + boost::optional lastMetaSearch() const; + + /// Returns the last search results if there are any + std::vector lastSearch() const; + + /// Get the current remote url + std::string remoteUrl() const; + + /// Get the remote production url + static std::string remoteProductionUrl(); + + /// Get the remote development url + static std::string remoteDevelopmentUrl(); + + /// Use the development production server url + void useRemoteDevelopmentUrl(); + + /// Use the development production server url + void useRemoteProductionUrl(); + + /// Get the current OAuth key + std::string authKey() const; + + /// Return production OAuth key + std::string prodAuthKey() const; + + /// Set the production OAuth key + bool setProdAuthKey(const std::string& prodAuthKey); + + /// Return development OAuth key + std::string devAuthKey() const; + + /// Set the development OAuth key + bool setDevAuthKey(const std::string& devAuthKey); + + /// Return the number of results per query + int resultsPerQuery() const; + + /// Return the total number of results + int lastTotalResults() const; + + /// Return the number of pages of results + int numResultPages() const; + + unsigned timeOutSeconds() const; + bool setTimeOutSeconds(unsigned timeOutSeconds); + + /// Wait number of milliseconds for download to complete + /// Returns the download if it completed in the allowable time + boost::optional waitForComponentDownload() const; + OS_DEPRECATED(3, 2, 1) boost::optional waitForComponentDownload(int) const; + + /// Wait number of milliseconds for download to complete + /// Returns the download if it completed in the allowable time + boost::optional waitForMeasureDownload() const; + OS_DEPRECATED(3, 2, 1) boost::optional waitForMeasureDownload(int) const; + + /// Wait number of milliseconds for download to complete + /// Returns the download if it completed in the allowable time + boost::optional waitForMetaSearch() const; + OS_DEPRECATED(3, 2, 1) boost::optional waitForMetaSearch(int) const; + + /// Wait number of milliseconds for download to complete + /// Returns the download if it completed in the allowable time + std::vector waitForSearch() const; + OS_DEPRECATED(3, 2, 1) std::vector waitForSearch(int) const; + + //@} + /** @name Non-blocking class members */ + //@{ + + /// Starts downloading an individual component by uid, if successful this will start a download + bool downloadComponent(const std::string& uid); + + /// Starts downloading an individual measure by uid, if successful this will start a download + bool downloadMeasure(const std::string& uid); + + /// Start a meta search, if successful this will start a download + bool startComponentLibraryMetaSearch(const std::string& searchTerm, const std::string& componentType, const std::string& filterType); + bool startComponentLibraryMetaSearch(const std::string& searchTerm, const unsigned componentTypeTID, const std::string& filterType); + + /// Start a search, if successful this will start a download + bool startComponentLibrarySearch(const std::string& searchTerm, const std::string& componentType, const std::string& filterType, + const unsigned page = 0); + bool startComponentLibrarySearch(const std::string& searchTerm, const unsigned componentTypeTID, const std::string& filterType, + const unsigned page = 0); + + //@} + // signals: + + /// Emitted when a component download completes + Nano::Signal& component)> componentDownloaded; + + /// Emitted when a measure download completes + Nano::Signal& measure)> measureDownloaded; + + private: + REGISTER_LOGGER("openstudio.RemoteBCLNLR"); + + // explicitly deleted copy constructor + RemoteBCLNLR(const RemoteBCLNLR& other) = delete; + + // DLM: once this actually uses the website it will need a non-blocking implementation + /// Validate an OAuth key + bool validateAuthKey(const std::string& authKey, const std::string& remoteUrl); + + bool waitForLock() const; + + boost::optional processReply(const std::string& reply); + + static boost::optional processMetaSearchResponse(const RemoteQueryResponse& remoteQueryResponse); + + static std::vector processSearchResponse(const RemoteQueryResponse& remoteQueryResponse); + + void onDownloadComplete(); + + int setResultsPerQuery(const int numResults); + + void setLastTotalResults(const int lastTotalResults); + + // members + + // A helper function to prepare a client, allowing us to change the http_client_config in one place only + static web::http::client::http_client getClient(const std::string& url, unsigned timeOutSeconds = 60); + + boost::optional> m_httpResponse; + + struct DownloadFile + { + DownloadFile(const DownloadFile&) = delete; + explicit DownloadFile(openstudio::path); + void flush(); + void close(); + const openstudio::path& fileName() const noexcept; + void write(const std::vector& data); + bool open(); + + private: + openstudio::path m_fileName; + std::ofstream m_ofs; + }; + + std::unique_ptr m_downloadFile; + + std::string m_downloadUid; + + boost::optional m_lastComponentDownload; + + boost::optional m_lastMeasureDownload; + + boost::optional m_lastMetaSearch; + + std::vector m_lastSearch; + + std::string m_authKey; + + std::string m_prodAuthKey; + + std::string m_devAuthKey; + + bool m_useRemoteDevelopmentUrl; + + std::string m_remoteUrl; + + int m_numResultsPerQuery; + + int m_lastTotalResults; + + std::string m_apiVersion; + + bool validProdAuthKey; + + bool validDevAuthKey; + + std::vector m_componentsWithUpdates; + + std::vector m_measuresWithUpdates; + + unsigned m_timeOutSeconds; +}; + +} // namespace openstudio + +#endif // UTILITIES_BCL_REMOTEBCL_HPP diff --git a/translations/OpenStudioApp_ar.ts b/translations/OpenStudioApp_ar.ts index 23c02b418..70b4f2627 100644 --- a/translations/OpenStudioApp_ar.ts +++ b/translations/OpenStudioApp_ar.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -325,7 +325,7 @@ Zone openstudio::LocationTabView - + Site @@ -333,145 +333,155 @@ Zone openstudio::LocationView - + Weather File - + Name: - - Latitude: + + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - - Longitude: + + Site Information: - - Elevation: + + Keep Site Location Information - - Time Zone: + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. - - Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation - + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): - + ASHRAE Climate Zone - + CEC Climate Zone - - - + + + Design Days - + Import From DDY - + Change Weather File - - + + Set Weather File - + EPW Files (*.epw);; All Files (*.*) - + Open Weather File - + Failed To Set Weather File - + Failed To Set Weather File To - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK - + Cancel - + Import all - + Open DDY File - + No Design Days in DDY File - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. @@ -810,45 +820,45 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OSDocument - + Export Idf - + (*.idf) - + (*.xml) - - + + Failed to save model - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. - + Save - + (*.osm) - - + + Select My Measures Directory @@ -856,261 +866,261 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OpenStudioApp - + Timeout - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files - + (Manage library files in Preferences->Change default libraries) - + Translation From version - - + + to - + Unknown starting version - + Import Idf - + (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' - + '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( - + ) and that all fields are valid against Energy+.idd. - + <br/><br/>The ValidityReport follows. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. - + IDF Import Failed - + =============== Errors =============== - + ============== Warnings ============== - + ==== The following idf objects were not imported ==== - + named - + Unnamed - + <strong>Some portions of the IDF file were not imported.</strong> - + IDF Import - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. - + Import - + (*.xml) - + Errors or warnings occurred on import of - + Could not import SDD file. - + Could not import - + file at - + Save Changes? - + The document has been modified. - + Do you want to save your changes? - + Open - + (*.osm) - + A new version is available at <a href=" - + Currently using the most recent version - + Check for Updates - + Measure Manager Server: - + Chrome Debugger: http://localhost: - + Temp Directory: - + Failed to load model - + Opening future version - + using - + Model updated from - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. - + Failed to open file at @@ -1176,14 +1186,14 @@ Would you like to restart now? - + Failed to load the following libraries... - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_ca.ts b/translations/OpenStudioApp_ca.ts index c5724b1c1..0ab74b480 100644 --- a/translations/OpenStudioApp_ca.ts +++ b/translations/OpenStudioApp_ca.ts @@ -58,7 +58,7 @@ LocationView - + Import Design Days @@ -329,7 +329,7 @@ Zona openstudio::LocationTabView - + Site Lloc @@ -337,145 +337,171 @@ Zona openstudio::LocationView - + Weather File Fitxer Climàtic - + Name: Nom: - Latitude: - Latitud: + Latitud: - Longitude: - Longitud: + Longitud: - Elevation: - Altitud: + Altitud: - Time Zone: - Zona Horària: + Zona Horària: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> Descarregar fitxers climàtics a <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): Etiqueta per les Mesures (Opcional): - + ASHRAE Climate Zone Zona Climàtica d'ASHRAE - + CEC Climate Zone Zona Climàtica CEC - - - + + + Design Days Dies de Disseny - + Import From DDY Importar des de DDY - + Change Weather File Canviar el Fitxer Climàtic - - + + Set Weather File Definir el Fitxer Climàtic - + EPW Files (*.epw);; All Files (*.*) EPW Files (*.epw);; All Files (*.*) - + Open Weather File Obrir Fitxer Climàtic - + Failed To Set Weather File Error al Definir el Fitxer Climàtic - + Failed To Set Weather File To Error al Definir el Fitxer Climàtic a - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK OK - + Cancel Cancel·lar - + Import all - + Open DDY File Obrir Fitxer DDY - + No Design Days in DDY File No hi ha Dies de Disseny al fitxer DDY - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. Aquest fitxer DDY no conté cap dia de disseny vàlid. Comproveu el fitxer DDY. @@ -902,45 +928,45 @@ Si voleu que OpeStudioApplication estigui a la vostra llengua, esperem la vostra openstudio::OSDocument - + Export Idf Exportar idf - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model Error al desar el model - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. Error al desar el model, comprova que no tinguis el fitxer obert i que tens privilegis d'accés d'escriptura. - + Save Desar - + (*.osm) - - + + Select My Measures Directory Seleccionar la Carpeta "My Measures" @@ -952,7 +978,7 @@ Si voleu que OpeStudioApplication estigui a la vostra llengua, esperem la vostra openstudio::OpenStudioApp - + Timeout Ha caducat @@ -961,99 +987,99 @@ Si voleu que OpeStudioApplication estigui a la vostra llengua, esperem la vostra Error al començar l'Administrador de Mesures. Voleu tornar-ho a provar? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files Carregant els Fitxers de la Llibreria - + (Manage library files in Preferences->Change default libraries) (Gestioneu el fitxers de les llibreries a Preferències->Canviar llibreries per defecte) - + Translation From version Traducció de la versió - - + + to a - + Unknown starting version Versió inicial desconeguda - + Import Idf Importar Idf - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' mentre OpenStudio utilitza un EnergyPlus <strong>més recent</strong> ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. '. Considera utilitzar el programa auxiliar d'EnergyPlus IDFVersionUpdate per tal d'actualitzar el fitxer IDF. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' mentre OpenStudio utilitza un Energylus <strong>més vell</strong> ' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ' que és la <strong>mateixa</strong> versió d'EnergyPlus que utilitza OpenStudio ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>L'IDF no té un VersionObject</strong>. Verifiqueu que és la versió correcta ( - + ) and that all fields are valid against Energy+.idd. ) i que tots els camps són vàlids segons Energy+.idd. - + <br/><br/>The ValidityReport follows. <br/><br/>A continuació hi ha el report de validació. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. I don't know what "drat strictness" is. <strong>El fitxer no és vàlid</strong>. Verifiqueu que tots els camps són vàlids segns el fitxer Energy+.idd. - + IDF Import Failed Error a l'Importar l'IDF - + =============== Errors =============== @@ -1062,7 +1088,7 @@ Si voleu que OpeStudioApplication estigui a la vostra llengua, esperem la vostra - + ============== Warnings ============== @@ -1071,7 +1097,7 @@ Si voleu que OpeStudioApplication estigui a la vostra llengua, esperem la vostra - + ==== The following idf objects were not imported ==== @@ -1080,113 +1106,113 @@ Si voleu que OpeStudioApplication estigui a la vostra llengua, esperem la vostra - + named anomenat - + Unnamed Sense nom - + <strong>Some portions of the IDF file were not imported.</strong> <strong>Algunes parts de l'IDF no s'han importat.</strong> - + IDF Import Importar IDF - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. OpenStudio només importa de l'IDF la geometria, les solucions constructives, les càrregues internes, les zones tèrmiques i els horaris. - + Import Importar - + (*.xml) (*.xml) - + Errors or warnings occurred on import of Errors o avisos de la importació de - + Could not import SDD file. No s'ha pogut importar el fitxer SDD. - + Could not import No s'ha pogut importar - + file at el fitxer que es troba a - + Save Changes? Desar els canvis? - + The document has been modified. S'ha modificat el document. - + Do you want to save your changes? Vols desar els canvis? - + Open Obrir - + (*.osm) (*.osm) - + A new version is available at <a href=" Hi ha una nova versió disponible a <a href=" - + Currently using the most recent version S'està utilitzant la versió més recent - + Check for Updates Cercar Actualitzacions - + Measure Manager Server: Servidor per la gestió de mesures: - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: Carpeta temporal: @@ -1205,34 +1231,34 @@ Si voleu que OpeStudioApplication estigui a la vostra llengua, esperem la vostra Sobre - + Failed to load model Error al carregar el model - + Opening future version Obrint una versió futura - + using utilitzant - + Model updated from Model acutalitzat des de - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. S'han esborrat els scripts de Ruby existents. Els scripts de Ruby ja no són compatibles i 'shan substituït per Mesures. - + Failed to open file at Error a l'intentar obrir el fitxer a @@ -1302,7 +1328,7 @@ Vols reiniciar ara? Seleccionar llibreria - + Failed to load the following libraries... @@ -1311,7 +1337,7 @@ Vols reiniciar ara? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_de.ts b/translations/OpenStudioApp_de.ts index 7de666add..d62d31ada 100644 --- a/translations/OpenStudioApp_de.ts +++ b/translations/OpenStudioApp_de.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -334,7 +334,7 @@ Zone openstudio::LocationTabView - + Site Standort @@ -342,145 +342,171 @@ Zone openstudio::LocationView - + Weather File Wetterdatei - + Name: Name: - Latitude: - Breitengrad: + Breitengrad: - Longitude: - Längengrad: + Längengrad: - Elevation: - Höhe über Meer: + Höhe über Meer: - Time Zone: - Zeitzone: + Zeitzone: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> Hier Wetterdaten herunterladen - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): Kennzeichnung (optional): - + ASHRAE Climate Zone ASHRAE Klimazone - + CEC Climate Zone CEC Klimazone - - - + + + Design Days Auslegungstage - + Import From DDY Von DDY importieren - + Change Weather File Wetterdatei ändern - - + + Set Weather File Ausgewählte Wetterdatei - + EPW Files (*.epw);; All Files (*.*) EPW Datei (*.epw);; Alle Dateien (*.*) - + Open Weather File Wetterdatei öffnen - + Failed To Set Weather File Wetterdatei konnte nicht geladen werden - + Failed To Set Weather File To Wetterdatei konnte nicht geladen werden als - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK OK - + Cancel Abbrechen - + Import all - + Open DDY File DDY Datei öffnen - + No Design Days in DDY File Keine Auslegungstage in DDY Datei vorhanden - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. Die DDY Datei beinhaltet keine gültigen Auslegungstage. Überprüfen Sie die DDY Datei auf Fehler. @@ -910,45 +936,45 @@ Wenn Sie möchten, dass die OpenStudio-Applikation in die Sprache Ihrer Wahl üb openstudio::OSDocument - + Export Idf IDF exportieren - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model Modell konnte nicht gespeichert werden - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. Modell konnte nicht gespeichert werden. Vergewissern Sie sich, dass der Speicherort nicht geöffnet ist und dass Sie korrekte Schreibrechte haben. - + Save Speichern - + (*.osm) (*.osm) - - + + Select My Measures Directory Verzeichnis für Meine Measures auswählen @@ -960,7 +986,7 @@ Wenn Sie möchten, dass die OpenStudio-Applikation in die Sprache Ihrer Wahl üb openstudio::OpenStudioApp - + Timeout Zeitüberschreitung @@ -969,101 +995,101 @@ Wenn Sie möchten, dass die OpenStudio-Applikation in die Sprache Ihrer Wahl üb Der Measure Manager konnte nicht gestartet werden. Möchten Sie es erneut versuchen? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files Bibliothekdatei wird geladen - + (Manage library files in Preferences->Change default libraries) (Verwalten von Bibliotheksdateien in Einstellungen->Standardbibliotheken ändern) - + Translation From version Übersetzung von Version - - + + to prepositions are hard to translate without context zu - + Unknown starting version Unbekannte Startversion - + Import Idf IDF importieren - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' hard to translate without context ', während OpenStudio ein <strong>neueres</strong> EnergyPlus 'verwendet - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. I did not translate key words like "measures" and references to files which never will be translated (at least I will not translate all EnergyPlus documentations :-)) '. Erwägen Sie die Verwendung des "IDF-Version-Updater" von EneryPlus um Ihre IDF-Datei zu aktualliseren. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ', während OpenStudio ein <strong>älteres</strong> EnergyPlus ' verwendet - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ', welches die <strong>gleiche</strong> Version von EnergyPlus ist, die OpenStudio verwendet ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>Die IDF-Datei hat kein Versionierung</strong>. Prüfen Sie, ob es sich um die richtige Version handelt ( - + ) and that all fields are valid against Energy+.idd. ) und dass alle Felder mit Energy+.idd kompatibel sind. - + <br/><br/>The ValidityReport follows. <br/><br/>Der Validierungsbericht folgt. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>Die Datei entspricht nicht den Vorgaben</strong>. Prüfen Sie, ob alle Felder zu Energy+.idd kompatibel sind. - + IDF Import Failed IDF-Import fehlgeschlagen - + =============== Errors =============== @@ -1072,7 +1098,7 @@ Wenn Sie möchten, dass die OpenStudio-Applikation in die Sprache Ihrer Wahl üb - + ============== Warnings ============== @@ -1081,7 +1107,7 @@ Wenn Sie möchten, dass die OpenStudio-Applikation in die Sprache Ihrer Wahl üb - + ==== The following idf objects were not imported ==== @@ -1090,113 +1116,113 @@ Wenn Sie möchten, dass die OpenStudio-Applikation in die Sprache Ihrer Wahl üb - + named Benannt - + Unnamed Unbenannt - + <strong>Some portions of the IDF file were not imported.</strong> <strong>Einige Teile der IDF-Datei wurden nicht importiert.</strong> - + IDF Import IDF-Import - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. Nur Geometrie, Konstruktionen, interne Lasten, thermische Zonen und Zeitpläne werden von der OpenStudio-IDF-Importfunktion unterstützt. - + Import Import - + (*.xml) (*.xml) - + Errors or warnings occurred on import of Während des Imports sind Fehler aufgetreten - + Could not import SDD file. SDD-Datei konnte nicht importiert werden. - + Could not import Konnte nicht importiert werden - + file at Datei unter - + Save Changes? Änderungen speichern? - + The document has been modified. Das Dokument wurde verändert. - + Do you want to save your changes? Möchten Sie Ihre Änderungen speichern? - + Open Öffnen - + (*.osm) (*.osm) - + A new version is available at <a href=" Eine neue Version ist verfügbar unter <a href=" - + Currently using the most recent version Derzeit wird die aktuellste Version verwendet - + Check for Updates Auf Aktualisierungen prüfen - + Measure Manager Server: Measure Manager Server: - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: Temp-Verzeichnis: @@ -1215,35 +1241,35 @@ Wenn Sie möchten, dass die OpenStudio-Applikation in die Sprache Ihrer Wahl üb Über - + Failed to load model Modell konnte nicht geladen werden - + Opening future version Öffnen der zukünftigen Version - + using hard to translate without context nutzen - + Model updated from Modell aktualisiert von - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. Vorhandene Ruby-Skripte wurden entfernt. Ruby-Skripte werden nicht mehr unterstützt und wurden durch Measures ersetzt. - + Failed to open file at Datei konnte nicht geöffnet werden bei @@ -1312,7 +1338,7 @@ Would you like to restart now? Bibliothek auswählen - + Failed to load the following libraries... @@ -1321,7 +1347,7 @@ Would you like to restart now? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_el.ts b/translations/OpenStudioApp_el.ts index 403a8a771..2a72b31df 100644 --- a/translations/OpenStudioApp_el.ts +++ b/translations/OpenStudioApp_el.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -327,7 +327,7 @@ Zone openstudio::LocationTabView - + Site Τοποθεσία @@ -335,145 +335,171 @@ Zone openstudio::LocationView - + Weather File Αρχείο καιρού - + Name: Όνομα: - Latitude: - Γεωγραφικό πλάτος: + Γεωγραφικό πλάτος: - Longitude: - Γεωγραφικό μήκος: + Γεωγραφικό μήκος: - Elevation: - Υψόμετρο: + Υψόμετρο: - Time Zone: - Ζώνη ώρας: + Ζώνη ώρας: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> Λήψη αρχείων καιρού στη διεύθυνση <a href="http://www.energyplus.net/weather"> www.energyplus.net/weather </a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): Ενεργειακά Μέτρα σημείωση (προαιρετικός): - + ASHRAE Climate Zone Κλιματική ζώνη ASHRAE - + CEC Climate Zone Κλιματική ζώνη CEC - - - + + + Design Days Ημέρες σχεδιασμού/αξιολόγησης - + Import From DDY Εισαγωγή από DDY - + Change Weather File Αλλαγή αρχείου καιρού - - + + Set Weather File Ορισμός αρχείου καιρού - + EPW Files (*.epw);; All Files (*.*) EPW Files (*.epw);; All Files (*.*) - + Open Weather File Άνοιγμα αρχείου καιρού - + Failed To Set Weather File Αποτυχία ορισμού αρχείου καιρού - + Failed To Set Weather File To Αποτυχία ορισμού αρχείου καιρού σε - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK Εντάξει - + Cancel Ακύρωση - + Import all - + Open DDY File Άνοιγμα αρχείου DDY - + No Design Days in DDY File Δεν υπάρχουν ημέρες αξιολόγησης στο αρχείο DDY - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. Αυτό το αρχείο DDY δεν περιέχει έγκυρες ημέρες σχεδιασμού/αξιολόγησης. Ελέγξτε το ίδιο το αρχείο DDY για σφάλματα ή παραλείψεις. @@ -900,45 +926,45 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OSDocument - + Export Idf Εξαγωγή Idf - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model Αποτυχία αποθήκευσης μοντέλου - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. Αποτυχία αποθήκευσης μοντέλου, βεβαιωθείτε ότι δεν έχετε ανοιχτή την τοποθεσία και ότι έχετε σωστή πρόσβαση εγγραφής. - + Save Αποθήκευση - + (*.osm) (*.osm) - - + + Select My Measures Directory Επιλέξτε τον κατάλογο των Ενεργειακών Μέτρων μου @@ -950,7 +976,7 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OpenStudioApp - + Timeout Τέλος χρόνου @@ -959,98 +985,98 @@ If you would like to see the OpenStudioApplication translated in your language o Αποτυχία εκκίνησης της Διαχείρισης Ενεργειακών Μέτρων. Θέλετε να δοκιμάσετε ξανά; - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files Φόρτωση αρχείων βιβλιοθήκης - + (Manage library files in Preferences->Change default libraries) (Διαχείριση αρχείων βιβλιοθήκης στις Προτιμήσεις-> Αλλαγή προεπιλεγμένων βιβλιοθηκών) - + Translation From version Μετάφραση από την έκδοση - - + + to Σε - + Unknown starting version Άγνωστη αρχική έκδοση - + Import Idf Εισαγωγή Idf - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. ". Εξετάστε το ενδεχόμενο να χρησιμοποιήσετε το πρόγραμμα EnergyPlus Auxiliary IDFVersionUpdater για να ενημερώσετε το αρχείο IDF. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' - + '. . - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( - + ) and that all fields are valid against Energy+.idd. ) and that all fields are valid against Energy+.idd. - + <br/><br/>The ValidityReport follows. <br/><br/>The ValidityReport follows. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. - + IDF Import Failed Η εισαγωγή IDF απέτυχε - + =============== Errors =============== @@ -1059,7 +1085,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ============== Warnings ============== @@ -1068,7 +1094,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ==== The following idf objects were not imported ==== @@ -1077,113 +1103,113 @@ If you would like to see the OpenStudioApplication translated in your language o - + named Ονομασμένα - + Unnamed Χωρίς όνομα - + <strong>Some portions of the IDF file were not imported.</strong> <strong>Some portions of the IDF file were not imported.</strong> - + IDF Import IDF Εισαγωγή - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. Μόνο η γεωμετρία, οι κατασκευές, τα φορτία, οι θερμικές ζώνες και τα προγράμματα υποστηρίζονται από τη δυνατότητα εισαγωγής OpenStudio IDF. - + Import Εισαγωγή - + (*.xml) (*.xml) - + Errors or warnings occurred on import of Παρουσιάστηκαν σφάλματα ή προειδοποιήσεις κατά την εισαγωγή του - + Could not import SDD file. Δεν ήταν δυνατή η εισαγωγή αρχείου SDD. - + Could not import Δεν ήταν δυνατή η εισαγωγή - + file at Αρχείο στο - + Save Changes? Αποθήκευσε τις αλλαγές? - + The document has been modified. Το έγγραφο έχει τροποποιηθεί. - + Do you want to save your changes? Θέλετε να αποθηκεύσετε τις αλλαγές σας; - + Open Άνοιγμα - + (*.osm) (*.osm) - + A new version is available at <a href=" Μια νέα έκδοση είναι διαθέσιμη στο <a href = " - + Currently using the most recent version Αυτήν τη στιγμή χρησιμοποιείται η πιο πρόσφατη έκδοση - + Check for Updates Ελεγχος για ενημερώσεις - + Measure Manager Server: Διαχείριση Ενεργειακών Μέτρων Διακομιστής: - + Chrome Debugger: http://localhost: Chrome Debugger: http: // localhost: - + Temp Directory: Κατάλογος Temp: @@ -1202,34 +1228,34 @@ If you would like to see the OpenStudioApplication translated in your language o Σχετικά με - + Failed to load model Αποτυχία φόρτωσης μοντέλου - + Opening future version Άνοιγμα μελλοντικής έκδοσης - + using χρησιμοποιώντας - + Model updated from Το μοντέλο ενημερώθηκε από - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. Οι υπάρχοντες Ruby κώδικες έχουν αφαιρεθεί. Οι κώδικες Ruby δεν υποστηρίζονται πλέον και έχουν αντικατασταθεί από τα Ενεργειακά Μέτρα. - + Failed to open file at Αποτυχία ανοίγματος αρχείου στο @@ -1299,7 +1325,7 @@ Would you like to restart now? Επιλέξτε Βιβλιοθήκη - + Failed to load the following libraries... @@ -1308,7 +1334,7 @@ Would you like to restart now? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_es.ts b/translations/OpenStudioApp_es.ts index 4a1004ee6..34a9e6b8a 100644 --- a/translations/OpenStudioApp_es.ts +++ b/translations/OpenStudioApp_es.ts @@ -58,7 +58,7 @@ LocationView - + Import Design Days @@ -328,7 +328,7 @@ Zone openstudio::LocationTabView - + Site Sitio @@ -336,145 +336,171 @@ Zone openstudio::LocationView - + Weather File Archivo de Clima - + Name: Nombre: - Latitude: - Latitud: + Latitud: - Longitude: - Longitud: + Longitud: - Elevation: - Elevación: + Elevación: - Time Zone: - Zona Horaria: + Zona Horaria: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> Descarga Archivos de Clima en<a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): Etiquetas de Medida (Opcional): - + ASHRAE Climate Zone Zona Climática de ASHRAE - + CEC Climate Zone Zona Climática de CEC - - - + + + Design Days Dias de Diseño - + Import From DDY Importar de DDY - + Change Weather File Cambiar Archivo de Clima - - + + Set Weather File Especificar Archivo de Clima - + EPW Files (*.epw);; All Files (*.*) Archivos EPW (*.epw);; Todos los Archivos (*.*) - + Open Weather File Abrir Archivo de Clima - + Failed To Set Weather File Error al Especificar el Archivo de Clima - + Failed To Set Weather File To Error al Especificar el Archivo de Clima a - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK OK - + Cancel Cancelar - + Import all - + Open DDY File Abrir Archivo DDY - + No Design Days in DDY File No hay Dias de Diseño en el Archivo DDY - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. Este Archivo DDY no contiene dias de diseño válidos. Revise el Archivo DDY en busca de errores u omisiones. @@ -901,45 +927,45 @@ Si le gustaría ver la AplicaciónOpenStudio traducido a algun otro lenguaje, le openstudio::OSDocument - + Export Idf Exportar Idf - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model Fallo al guardar modelo - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. Fallo al guardar modelo, asegurece de que no tiene la locación abierta y que tiene acceso correcto para modificar. - + Save Guardar - + (*.osm) (*.osm) - - + + Select My Measures Directory Seleccionar Directorio de Mis Medidas @@ -951,7 +977,7 @@ Si le gustaría ver la AplicaciónOpenStudio traducido a algun otro lenguaje, le openstudio::OpenStudioApp - + Timeout Caducó @@ -960,98 +986,98 @@ Si le gustaría ver la AplicaciónOpenStudio traducido a algun otro lenguaje, le Fallo al comenzar el Administrador de Medidas. Desea reintentar? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files Cargando Archivos de Librería - + (Manage library files in Preferences->Change default libraries) (Administre los archivos de librerías en Preferencias->Cambiar librerías estándar) - + Translation From version Traducción De versión - - + + to a - + Unknown starting version Versión inicial desconocida - + Import Idf Importar Idf - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' mientras que OpenStudio utiliza un EnergyPlus <strong>más nuevo</strong> ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. '. Considere utilizar el programa Auxiliar de EnergyPlus IDFVersionUpdater para actualizar su archivo IDF. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' mientras que OpenStudio utiliza un EnergyPlus <strong>más antigua</strong> ' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ' cual es la <strong>misma</strong> versión de EnergyPlus que OpenStudio utiliza( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>El archivo no contiene un VersionObject</strong>. Revise si es la versión correcta ( - + ) and that all fields are valid against Energy+.idd. ) y todos los campos son validos contra el Energy+.idd. - + <br/><br/>The ValidityReport follows. <br/><br/>Sigue el ReportedeValidación. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>El archivo no es válido para ensayar rigor</strong>. Revise que todos los campos son válidos contra el Energy+.idd. - + IDF Import Failed La Importación de IDF falló - + =============== Errors =============== @@ -1060,7 +1086,7 @@ Si le gustaría ver la AplicaciónOpenStudio traducido a algun otro lenguaje, le - + ============== Warnings ============== @@ -1069,7 +1095,7 @@ Si le gustaría ver la AplicaciónOpenStudio traducido a algun otro lenguaje, le - + ==== The following idf objects were not imported ==== @@ -1078,113 +1104,113 @@ Si le gustaría ver la AplicaciónOpenStudio traducido a algun otro lenguaje, le - + named llamado - + Unnamed Sin nombre - + <strong>Some portions of the IDF file were not imported.</strong> <strong>Algunas porciones del archivo de IDF no se importaron.</strong> - + IDF Import Importación de IDF - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. Solamente geometría, construcciones, cargas, zonas térmicas, y programas son soportados por la herramienta de importación de IDF de OpenStudio. - + Import Importar - + (*.xml) (*.xml) - + Errors or warnings occurred on import of Errores o advertencias occurieron al importar - + Could not import SDD file. No se pudo importar el archivo SDD. - + Could not import No se pudo importar - + file at archivo en - + Save Changes? ¿Guardar Cambios? - + The document has been modified. El documento ha sido modificado. - + Do you want to save your changes? ¿Quisiera guardar sus cambios? - + Open Abrir - + (*.osm) (*.osm) - + A new version is available at <a href=" Una nueva versión está disponible en <a href=" - + Currently using the most recent version La versión actual es la mas reciente - + Check for Updates Buscar Actualizaciones - + Measure Manager Server: Servidor de Administrador de Medidas: - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: Directorio Temporal: @@ -1203,34 +1229,34 @@ Si le gustaría ver la AplicaciónOpenStudio traducido a algun otro lenguaje, le Acerca - + Failed to load model Fallo al cargar el modelo - + Opening future version Abrir versión futura - + using utilizando - + Model updated from Modelo actualizado de - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. Los scripts de Ruby han sido removidos. Los scripts de Ruby ya no son compatibles y se han remplazado por medidas. - + Failed to open file at Fallo al abrir archivo en @@ -1300,7 +1326,7 @@ Quisiera reiniciar ahora? Seleccionar Librería - + Failed to load the following libraries... @@ -1309,7 +1335,7 @@ Quisiera reiniciar ahora? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_fa.ts b/translations/OpenStudioApp_fa.ts index a49a0d86f..bcbc20ea6 100644 --- a/translations/OpenStudioApp_fa.ts +++ b/translations/OpenStudioApp_fa.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -327,7 +327,7 @@ Zone openstudio::LocationTabView - + Site سایت @@ -335,145 +335,171 @@ Zone openstudio::LocationView - + Weather File فایل آب و هوایی - + Name: نام: - Latitude: - عرض جغرافیایی: + عرض جغرافیایی: - Longitude: - طول جغرافیایی: + طول جغرافیایی: - Elevation: - ارتفاع: + ارتفاع: - Time Zone: - منطقه زمانی: + منطقه زمانی: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> دانلود فایل آب و هوایی از <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): برچسب های تمهیدی (اختیاری): - + ASHRAE Climate Zone ASHRAEمنطقه اقلیمی - + CEC Climate Zone CEC منطقه اقلیمی - - - + + + Design Days روزهای طراحی - + Import From DDY وارد کردن از DDY - + Change Weather File تغییر فایل آب و هوایی - - + + Set Weather File تنظیم فایل آب و هوایی - + EPW Files (*.epw);; All Files (*.*) فایل های EPW (*.epw)؛ تمام فایل ها (*.*) - + Open Weather File باز کردن فایل آب و هوایی - + Failed To Set Weather File ناموفق در تنظیم فایل آب و هوایی - + Failed To Set Weather File To ناموفق در تنظیم فایل آب و هوایی برای - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK تایید - + Cancel لغو - + Import all - + Open DDY File باز کردن فایل DDY - + No Design Days in DDY File در فایل DDY روزهای طراحی وجود ندارد - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. در فایل DDY روزهای طراحی معتبر وجود ندارد. @@ -900,40 +926,40 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OSDocument - + (*.idf) (*.idf) - + Export Idf خارج کردن idf - + (*.xml) (*.xml) - - + + Failed to save model ناموفق در ذخیره مدل - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. مدل ذخیره نشد، مطمئن شوید فایل را باز ندارید و دسترسی صحیحی به نوشتن دارید. - + Save ذخیره - - + + Select My Measures Directory انتخاب مسیر تمهیدات من @@ -942,7 +968,7 @@ If you would like to see the OpenStudioApplication translated in your language o کتابخانه آنلاین اجزاء ساختمان (BCL) - + (*.osm) (*.osm) @@ -950,7 +976,7 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OpenStudioApp - + Timeout وقفه @@ -959,98 +985,98 @@ If you would like to see the OpenStudioApplication translated in your language o مدیریت تمهیدات شروع نشد. آیا دوست دارید دوباره امتحان کنید؟ - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files بارگذاری فایل های کتابخانه - + (Manage library files in Preferences->Change default libraries) (مدیریت پرونده های کتابخانه در تنظیمات برگزیده -> تغییر کتابخانه های پیش فرض) - + Translation From version ترجمه از نسخه - - + + to به - + Unknown starting version نسخه ناشناخته شروع - + (*.idf) (*.idf) - + Import Idf وارد کردن Idf - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' درحالیکه اپن استودیو از انرژی پلاس <strong>جدیدتر</strong> استفاده می کند - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. برای به روزرسانی فایل IDF خود، از برنامه کمکی EnergyPlus IDFVersionUpdater استفاده کنید. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' درحالیکه اپن استودیو از انرژی پلاس <strong>قدیمری تر</strong> استفاده می کند - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( که همان نسخه <strong>مشابه</strong> انرژی پلاس است که اپن استودیو استفاده می کند - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( فایل IDF فاقد ورژن می باشد. نسخه آن را بررسی کنید. ( - + ) and that all fields are valid against Energy+.idd. و اینکه همه فیلدها در مقابل فایل Energy+.idd معتبر هستند. - + <br/><br/>The ValidityReport follows. <br/><br/>گزارش اعتبار به شرح زیر است. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>فایل برای دقت پیش نویس معتبر نیست.</strong> فایل برای دقت پیش نویس معتبر نیست. بررسی کنید که تمام فیلدها در برابر Energy+.idd معتبر باشند. - + IDF Import Failed وارد کردن فایل IDF انجام نشد - + =============== Errors =============== @@ -1059,7 +1085,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ============== Warnings ============== @@ -1068,7 +1094,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ==== The following idf objects were not imported ==== @@ -1077,113 +1103,113 @@ If you would like to see the OpenStudioApplication translated in your language o - + named نامگذاری شده - + Unnamed نامگذاری نشده - + <strong>Some portions of the IDF file were not imported.</strong> <strong>برخی از بخش های فایل IDF وارد نشده است.</strong> - + IDF Import وارد کردن IDF - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. فقط هندسه ، ساختارها ، بارها ، مناطق گرمایی و برنامه ها توسط ویژگی وارد کردن IDF در اپن استودیو پشتیبانی می شوند. - + Import وارد کردن - + (*.xml) (*.xml) - + Errors or warnings occurred on import of هنگام وارد کردن فایل، خظا یا هشدار رخ داده است - + Could not import SDD file. وارد کردن فایل SDD امکانپذیر نیست. - + Could not import وارد کردن امکانپذیر نیست - + file at فایل در - + Save Changes? تغییرات ذخیره شوند؟ - + The document has been modified. سند اصلاح شده است. - + Do you want to save your changes? آیا می خواهید تغییرات خود را ذخیره کنید؟ - + Open باز کردن - + (*.osm) (*.osm) - + A new version is available at <a href=" نسخه جدید موجود است در <a href=" - + Currently using the most recent version در حال حاضر از جدیدترین نسخه استفاده می شود - + Check for Updates بررسی بروزرسانی - + Measure Manager Server: سرور مدیریت تمهیدات: - + Chrome Debugger: http://localhost: رفع اشکال کروم: http://localhost: - + Temp Directory: مسر موقت: @@ -1202,33 +1228,33 @@ If you would like to see the OpenStudioApplication translated in your language o درباره - + Failed to load model مدل بارگیری نشد - + Opening future version در حال باز کردن نسخه آینده - + using استفاده - + Model updated from مدل به روز شده از - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. متن های روبی دیگر پشتیبانی نمی شوند و با تمهیدات جایگزین شده اند. - + Failed to open file at فایل باز نشد @@ -1298,7 +1324,7 @@ Would you like to restart now? انتخاب کتابخانه - + Failed to load the following libraries... @@ -1307,7 +1333,7 @@ Would you like to restart now? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_fr.ts b/translations/OpenStudioApp_fr.ts index a23443fb0..6ba85cca4 100644 --- a/translations/OpenStudioApp_fr.ts +++ b/translations/OpenStudioApp_fr.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days Importer des jours de dimensionnement @@ -327,7 +327,7 @@ Zone openstudio::LocationTabView - + Site Site @@ -335,145 +335,171 @@ Zone openstudio::LocationView - + Weather File Fichier météo - + Name: Nom : - Latitude: - Latitude : + Latitude : - Longitude: - Longitude : + Longitude : - Elevation: - Elévation : + Elévation : - Time Zone: - Fuseau horaire : + Fuseau horaire : - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> Fichiers météo téléchargeables sur <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): Tags de Mesures (Optionnel) : - + ASHRAE Climate Zone Zone Climate ASHRAE - + CEC Climate Zone Zone Climatique CEC - - - + + + Design Days Jours de dimensionnement - + Import From DDY Importer depuis fichier DDY - + Change Weather File Changer fichier météo - - + + Set Weather File Attributer fichier météo - + EPW Files (*.epw);; All Files (*.*) Fichiers EPW (*.epw);; Tous (*.*) - + Open Weather File Ouvrir fichier météo - + Failed To Set Weather File Impossible d'attribuer le fichier météo - + Failed To Set Weather File To Impossible d'attribuer le fichier météo suivant : - + There are <span style="font-weight:bold;">%1</span> Design Days available for import Il y a <span style="font-weight:bold;">%1</span> Jours de dimensionnement importables - + , %1 of which are unknown type , dont %1 de type inconnu - + Heating Chauffage - + Cooling Refroidissement - + OK OK - + Cancel Annuler - + Import all Importer tous - + Open DDY File Ouvrir fichier DDY - + No Design Days in DDY File Aucun jours de dimensionnement dans le fichier DDY - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. Ce fichier DDY ne contient aucun jours de dimensionnement valides. Vérifiez le fichier DDY. @@ -814,45 +840,45 @@ Si vous voulez voir l'Application OpenStudio traduite dans la langue de vot openstudio::OSDocument - + Export Idf Exporter un IDF - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model Impossible de sauvegarder le Modèle - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. Impossible de sauvegarde le Modèle, assurez-vous que vous n'avez pas le dossier ouvert et que vous avez les droits suffisant en écriture. - + Save Enregistrer - + (*.osm) (*.osm) - - + + Select My Measures Directory Selectionner le dossier "My Measures" @@ -860,103 +886,103 @@ Si vous voulez voir l'Application OpenStudio traduite dans la langue de vot openstudio::OpenStudioApp - + Timeout Délai expiré - + Failed to start the Measure Manager. Would you like to keep waiting? Impossible de démarrer le Manager de Measure. Voulez-vous attendre ? - + Loading Library Files Chargement des Bibliothèques OSM - + (Manage library files in Preferences->Change default libraries) (Gérer les fichiers Bibliothèques dans Préférences-> Modifier les Bibliothèques par défaut) - + Translation From version Translation depuis la version - - + + to vers - + Unknown starting version Version de départ inconnue - + Import Idf Importer un IDF - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' tandis qu'OpenStudio utilise une version <strong>plus récente</strong> d'EnergyPlus ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. '. Vous pouvez utiliser le program axuliaire d'EnergyPlus appelé IDFVersionUpdater pour mettre à jour votre fichier IDF. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' tandis qu'OpenStudio utilise une version <strong>plus ancienne</strong> d'EnergyPlus ' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ' qui est la <strong>même</strong> version d'EnergyPlus qu'OpenStudio utilise ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>Le fichier IDF n'a pas de VersionObject</strong>. Vérifiez qu'il utilise bien la bonne version ( - + ) and that all fields are valid against Energy+.idd. ) et que tous les champs sont valides par rapport à Energy+.idd. - + <br/><br/>The ValidityReport follows. <br/><br/>The rapport de validité (ValidityReport) suit. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>Le fichier n'est pas valide au niveau Draft</strong>. Vérifiez que tous les champs sont valides par rapport à Energy+.idd. - + IDF Import Failed Import de l'IDF raté - + =============== Errors =============== @@ -965,7 +991,7 @@ Si vous voulez voir l'Application OpenStudio traduite dans la langue de vot - + ============== Warnings ============== @@ -974,7 +1000,7 @@ Si vous voulez voir l'Application OpenStudio traduite dans la langue de vot - + ==== The following idf objects were not imported ==== @@ -983,113 +1009,113 @@ Si vous voulez voir l'Application OpenStudio traduite dans la langue de vot - + named nommé - + Unnamed Sans nom - + <strong>Some portions of the IDF file were not imported.</strong> <strong>Certaines portions de l'IDF n'ont pas été importées.</strong> - + IDF Import Import IDF - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. Seules les informations de géométrie, constructions, gains, zone thermiques, et calendriers sont supportés par l'import IDF d'OpenStudio. - + Import Import - + (*.xml) (*.xml) - + Errors or warnings occurred on import of Des erreurs or avertissements ont été émis pendant l'import du - + Could not import SDD file. Impossible d'importer le fichier SDD. - + Could not import Impossible d'importer - + file at au chemin - + Save Changes? Sauvegarder les changements ? - + The document has been modified. Le document a été modifié. - + Do you want to save your changes? Voulez-vous sauvegarder les changements ? - + Open Ouvrir - + (*.osm) (*.osm) - + A new version is available at <a href=" Une ouvelle version est disponible à <a href=" - + Currently using the most recent version Vous utilisez la version la plus récente. - + Check for Updates Rechercher les mises à jour - + Measure Manager Server: Serveur du Manager des Mesures : - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: Dossier temporaire : @@ -1104,34 +1130,34 @@ Si vous voulez voir l'Application OpenStudio traduite dans la langue de vot Le Manager des Mesures a planté - + Failed to load model Impossible de charger le modèle - + Opening future version Ouverture d'une version future - + using avec la version - + Model updated from Modèle mis à jour depuis - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. Les scripts Ruby ont été supprimés. Les scrips Ruby sont désormais obsolètes et ont été remplacés par les Mesures. - + Failed to open file at Impossible de charger le fichier @@ -1189,7 +1215,7 @@ Souhaitez-vous redémarrer maintenant ? Selectionner la Bibliothèque - + Failed to load the following libraries... @@ -1198,7 +1224,7 @@ Souhaitez-vous redémarrer maintenant ? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_he.ts b/translations/OpenStudioApp_he.ts index 66ac9d9bc..74e7e1a38 100644 --- a/translations/OpenStudioApp_he.ts +++ b/translations/OpenStudioApp_he.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -325,7 +325,7 @@ Zone openstudio::LocationTabView - + Site אתר @@ -333,145 +333,171 @@ Zone openstudio::LocationView - + Weather File קובץ אקלימי - + Name: שם: - Latitude: - קו רוחב: + קו רוחב: - Longitude: - קו אורך: + קו אורך: - Elevation: - חזית: + חזית: - Time Zone: - אזור זמן: + אזור זמן: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> קובצי מזג אוויר להורדה בכתובת <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): תגי מדידה (אופציונלי): - + ASHRAE Climate Zone אזור אקלים ASHRAE - + CEC Climate Zone אזור האקלים של CEC - - - + + + Design Days ימי תכנון - + Import From DDY ייבוא מ-DDY - + Change Weather File החלף קובץ אקלימי - - + + Set Weather File הגדר קובץ אקלימי - + EPW Files (*.epw);; All Files (*.*) קבצי EPW (*.epw);; הכל (*.*) - + Open Weather File פתח קובץ אקלימי - + Failed To Set Weather File לא ניתן להקצות קובץ אקלימי - + Failed To Set Weather File To לא ניתן להקצות את הקובץ אקלימי הבא: - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK אוקיי - + Cancel ביטול - + Import all - + Open DDY File פתח קובץ DDY - + No Design Days in DDY File אין ימי תכנון בקובץ DDY - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. קובץ DDY זה אינו מכיל ימי תכנון תקפים. בדוק את קובץ ה-DDY עצמו עבור שגיאות או השמטות. @@ -898,45 +924,45 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OSDocument - + Export Idf ייצוא IDF - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model שמירת הקובץ נכשלה - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. אין אפשרות לשמור את הקובץ, ודא שאין לך את התיקיה פתוחה ושיש לך מספיק הרשאות כתיבה. - + Save שמור - + (*.osm) (*.osm) - - + + Select My Measures Directory בחר בתיקייה "הפעולות שלי". @@ -948,7 +974,7 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OpenStudioApp - + Timeout הזמן פג @@ -957,225 +983,225 @@ If you would like to see the OpenStudioApplication translated in your language o לא ניתן להפעיל את Measure Manager האם ברצונך לנסות שוב? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files טוען ספריות OSM - + (Manage library files in Preferences->Change default libraries) (נהל קבצי ספרייה בהעדפות->שנה ספריות ברירת מחדל) - + Translation From version תרגום מגרסה - - + + to אל - + Unknown starting version גרסת התחלה לא ידועה - + Import Idf ייבוא IDF - + (*.idf) (*.osm) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' בעוד ש-OpenStudio משתמש ב<strong>חדש</strong> EnergyPlus ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. '. שקול להשתמש בתוכנת העזר של EnergyPlus IDFVersionUpdater כדי לעדכן את קובץ ה-IDF שלך. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' בעוד OpenStudio משתמש ב<strong>ישן</strong> EnergyPlus ' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ' שהיא הגרסה ה<strong>אותה</strong> של EnergyPlus שבה משתמש OpenStudio ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>ל-IDF אין VersionObject</strong>. בדוק שזה בגרסה נכונה ( - + ) and that all fields are valid against Energy+.idd. ) ושכל השדות תקפים כנגד Energy+.idd. - + <br/><br/>The ValidityReport follows. <br/><br/>דוח התוקף להלן. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>הקובץ אינו תקין לקפדנות הטיוטה</strong>. בדוק שכל השדות תקפים כנגד Energy+.idd. - + IDF Import Failed ייבוא IDF נכשל - + =============== Errors =============== =============== שגיאות =============== - + ============== Warnings ============== =============== אזהרות =============== - + ==== The following idf objects were not imported ==== ==== אובייקטי ה-IDF הבאים לא יובאו ==== - + named בשם - + Unnamed ללא שם - + <strong>Some portions of the IDF file were not imported.</strong> <strong>חלקים מסוימים מקובץ IDF לא יובאו.</strong> - + IDF Import IDF ייבוא - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. רק מידע על גיאומטריה, קונסטרוקציות, עומסם, אזורים תרמים ולוחות זמנים נתמכים על ידי ייבוא IDF של OpenStudio. - + Import ייבוא - + (*.xml) (*.xml) - + Errors or warnings occurred on import of הונפקו שגיאות או אזהרות בעת ייבוא ​​ה- - + Could not import SDD file. לא ניתן לייבא קובץ SDD. - + Could not import לא ניתן לייבא - + file at בדרך - + Save Changes? שמור שינויים? - + The document has been modified. הקובץ השתנה - + Do you want to save your changes? האם אתה רוצה לשמור את השינויים? - + Open פתח - + (*.osm) (*.osm) - + A new version is available at <a href=" גרסה חדשה זמינה ב-<a href=" - + Currently using the most recent version משתמש כרגע בגרסה העדכנית ביותר - + Check for Updates בדוק עדכונים - + Measure Manager Server: שרת מנהל פעולות: - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: תקיה זמנית: @@ -1194,34 +1220,34 @@ If you would like to see the OpenStudioApplication translated in your language o אודות - + Failed to load model לא ניתן לטעון את הקובץ - + Opening future version פתיחת גרסה עתידית - + using עם גרסה - + Model updated from קובץ מעודכן מאז - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. סקריפטים של Ruby הוסרו. סקריפטים של Ruby הוצאו משימוש והוחלפו בפעולות - + Failed to open file at לא ניתן לטעון את הקובץ @@ -1290,14 +1316,14 @@ Would you like to restart now? בחר ספרייה - + Failed to load the following libraries... לא ניתן לטעון את הספריות הבאות... - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_hi.ts b/translations/OpenStudioApp_hi.ts index b2247088a..c6c5f5b57 100644 --- a/translations/OpenStudioApp_hi.ts +++ b/translations/OpenStudioApp_hi.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -326,7 +326,7 @@ Zone openstudio::LocationTabView - + Site स्थल @@ -334,145 +334,171 @@ Zone openstudio::LocationView - + Weather File मौसम फ़ाइल - + Name: नाम: - Latitude: - अक्षांश: + अक्षांश: - Longitude: - देशान्तर: + देशान्तर: - Elevation: - ऊंचाई: + ऊंचाई: - Time Zone: - समय क्षेत्र: + समय क्षेत्र: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> मौसम फ़ाइल डाउनलोड करें <a href="http://www.energyplus.net/weather">www.energyplus.net - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): उपाय टैग(ऐच्छिक): - + ASHRAE Climate Zone ASHRAE जलवायु क्षेत्र - + CEC Climate Zone CEC जलवायु क्षेत्र - - - + + + Design Days डिजाइन के दिन - + Import From DDY डीडीवाई से आयात करें - + Change Weather File मौसम फ़ाइल बदलें - - + + Set Weather File मौसम फ़ाइल सेट करें - + EPW Files (*.epw);; All Files (*.*) ईपीडब्ल्यू फाइलें (*.epw);; सब फाइलें (*.*) - + Open Weather File मौसम फ़ाइल खोले - + Failed To Set Weather File मौसम फ़ाइल सेट करने में विफल - + Failed To Set Weather File To निम्लिखित मौसम फ़ाइल सेट करने में विफल - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK ठीक है - + Cancel रद्द करें - + Import all - + Open DDY File डीडीवाई फ़ाइल खोलें - + No Design Days in DDY File डीडीवाई फ़ाइल में कोई डिज़ाइन दिवस नहीं - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. इस डीडीवाई फ़ाइल में कोई मान्य डिज़ाइन दिवस नहीं है। त्रुटियों या चूक के लिए स्वयं डीडीवाई फ़ाइल की जाँच करें. @@ -901,45 +927,45 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OSDocument - + Export Idf निर्यात ईडफ - + (*.idf) (*.ईडफ) - + (*.xml) (*एक्सएमएल) - - + + Failed to save model मॉडल सहेजने में विफल - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. मॉडल को सहेजने में विफल, सुनिश्चित करें कि आपके पास स्थान खुला नहीं है और आपके पास सही लेखन पहुंच है. - + Save सहेजें - + (*.osm) (*.ओएसएम) - - + + Select My Measures Directory मेरी उपाय निर्देशिका का चयन करें @@ -951,7 +977,7 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OpenStudioApp - + Timeout टाइम-आउट @@ -960,98 +986,98 @@ If you would like to see the OpenStudioApplication translated in your language o उपाय प्रबंधक प्रारंभ करने में विफल। क्या आप पुनः प्रयास करना चाहेंगे? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files लाइब्रेरी फ़ाइलें लोड हो रही हैं - + (Manage library files in Preferences->Change default libraries) (वरीयताओं में लाइब्रेरी फ़ाइलों को प्रबंधित करें-> डिफ़ॉल्ट लाइब्रेरी बदलें) - + Translation From version संस्करण - - + + to से - + Unknown starting version अज्ञात संस्करण में अनुवाद - + Import Idf आयात ईडफ - + (*.idf) (*.ईडफ) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' जबकि ओपेनस्टूडियो एक <strong>नए</strong> एनर्जीप्लस ' का उपयोग करता है - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. अपनी ईडफ फ़ाइल को अद्यतन करने के लिए एनर्जीप्लस सहायक प्रोग्राम ईडफसंस्करणअपडेटर का उपयोग करने पर विचार करें. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' जबकि ओपेनस्टूडियो एक <strong>पुराने</strong> एनर्जीप्लस ' का उपयोग करता है' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( जो ओपेनस्टूडियो द्वारा उपयोग किए जाने वाले एनर्जीप्लस का <strong>समान</strong> संस्करण है ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>आईडीएफ में वर्जनऑब्जेक्ट नहीं है</strong>। जांचें कि यह सही संस्करण का है ( - + ) and that all fields are valid against Energy+.idd. ) और यह कि सभी फ़ील्ड एनर्जी+.idd के अनुरूप मान्य हैं. - + <br/><br/>The ValidityReport follows. <br/><br/>वैधता रिपोर्ट इस प्रकार है. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>ड्राफ़्ट स्ट्रिक्टनेस के लिए फ़ाइल मान्य नहीं है</strong>. जांचें कि सभी फ़ील्ड एनर्जी+.idd के विरुद्ध मान्य हैं. - + IDF Import Failed आईडीएफ आयात विफल - + =============== Errors =============== @@ -1060,7 +1086,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ============== Warnings ============== @@ -1069,7 +1095,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ==== The following idf objects were not imported ==== @@ -1078,113 +1104,113 @@ If you would like to see the OpenStudioApplication translated in your language o - + named नामांकित - + Unnamed अज्ञात - + <strong>Some portions of the IDF file were not imported.</strong> <strong>IDF फ़ाइल के कुछ भाग आयात नहीं किए गए थे।</strong> - + IDF Import आईडीएफ आयात - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. ओपेनस्टूडियो आईडीएफ आयात सुविधा द्वारा केवल भवन, कंस्ट्रक्शन, भार, थर्मल ज़ोन और शेड्यूल समर्थित हैं. - + Import आयात - + (*.xml) (*.एक्सएमएल) - + Errors or warnings occurred on import of निम्न फ़ाइल के आयात पर त्रुटियाँ या चेतावनियाँ हुईं- - + Could not import SDD file. एसडीडी फ़ाइल आयात नहीं कर पाए. - + Could not import आयात नहीं कर पाए - + file at इस जगह पर - + Save Changes? परिवर्तनों को सहेजें? - + The document has been modified. दस्तावेज़ को संशोधित किया गया है. - + Do you want to save your changes? क्या आप अपने परिवर्तनों को सहेजना चाहते हैं? - + Open खोलें - + (*.osm) (*.ओएसएम) - + A new version is available at <a href=" एक नया संस्करण <a href=" पर उपलब्ध है - + Currently using the most recent version वर्तमान में नवीनतम संस्करण का उपयोग कर रहे हैं - + Check for Updates अद्यतन के लिए जांचें - + Measure Manager Server: उपाय प्रबंधक सर्वर: - + Chrome Debugger: http://localhost: क्रोम डीबगर: http://localhost: - + Temp Directory: अस्थायी डायरेक्टरी: @@ -1203,34 +1229,34 @@ If you would like to see the OpenStudioApplication translated in your language o बारे में - + Failed to load model मॉडल लोड करने में विफल - + Opening future version भविष्य का संस्करण खोलना - + using का उपयोग करते हुए - + Model updated from मॉडल से अपडेट किया गया - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. मौजूदा रूबी स्क्रिप्ट को हटा दिया गया है। रूबी स्क्रिप्ट अब समर्थित नहीं हैं और उन्हें उपायों द्वारा बदल दिया गया है. - + Failed to open file at इस जगह पर फ़ाइल खोलने में विफल @@ -1300,7 +1326,7 @@ Would you like to restart now? लाइब्रेरी का चयन करें - + Failed to load the following libraries... @@ -1309,7 +1335,7 @@ Would you like to restart now? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_it.ts b/translations/OpenStudioApp_it.ts index 0b1905b8b..3bc3cc41d 100644 --- a/translations/OpenStudioApp_it.ts +++ b/translations/OpenStudioApp_it.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -328,7 +328,7 @@ Entità openstudio::LocationTabView - + Site Sito @@ -336,145 +336,171 @@ Entità openstudio::LocationView - + Weather File Weather File - + Name: Nome: - Latitude: - Latitudine: + Latitudine: - Longitude: - Longitudine: + Longitudine: - Elevation: - Quota: + Quota: - Time Zone: - TimeZone: + TimeZone: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> Scarica I Weather Files Presso <a href=\"http://www.energyplus.net/weather\">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): Etichette Per Misure (Facoltativo): - + ASHRAE Climate Zone Zona Climatica ASHRAE - + CEC Climate Zone Zona Climatica CEC - - - + + + Design Days Giorni di Simulazione - + Import From DDY Importa Da DDY - + Change Weather File Cambia Weather File - - + + Set Weather File Stabilisci Weather File - + EPW Files (*.epw);; All Files (*.*) EPW Files (*.epw);; All Files (*.*) - + Open Weather File Apri Weather File - + Failed To Set Weather File Errore Nel Settaggio Del Weather File - + Failed To Set Weather File To Errore Nell' Allocazione Del Weather File - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK OK - + Cancel Annulla - + Import all - + Open DDY File Apri File DDY - + No Design Days in DDY File Nessun Giorno Impostato Nel File DDY - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. Questo File DDY non contiene alcun giorno valido. Controlla il File DDY per errori od omissioni. @@ -902,45 +928,45 @@ Se vuoi vedere OpenStudioApplication tradotto nel tuo linguaggio preferito, appr openstudio::OSDocument - + Export Idf Esporta Idf - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model Errore Nel Salvataggio Modello - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. Errore nel salvataggio modello, assicurati di non avere il file aperto e/o di avere il giusto permesso di scrittura. - + Save Salva - + (*.osm) (*.osm) - - + + Select My Measures Directory Seleziona La Mia Cartella Di Misurazioni @@ -952,7 +978,7 @@ Se vuoi vedere OpenStudioApplication tradotto nel tuo linguaggio preferito, appr openstudio::OpenStudioApp - + Timeout Timeout @@ -961,98 +987,98 @@ Se vuoi vedere OpenStudioApplication tradotto nel tuo linguaggio preferito, appr Impossibile avviare il Manager di Misure. Riprovare? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files Caricamento File di Libreria - + (Manage library files in Preferences->Change default libraries) (Gestisci i file di libreria da Preferenze->Cambia Librerie Predefinite) - + Translation From version Traduzione Da Versione - - + + to A - + Unknown starting version Versione di partenza sconosciuta - + Import Idf Importare Idf - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' OpenStudio utilizza un <strong>nuovo</strong> EnergyPlus ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. ' Valuta l'utilizzo del EnergyPlus Auxiliary program IDFVersionUpdater per aggiornare il tuo file IDF. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' OpenStudio utlizza un <strong>vecchio</strong> EnergyPlus ' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ' OpenStudio utlizza la <strong>stessa</strong> versione di EnergyPlus ' - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>Il File IDF non ha un VersionObject</strong>. Controllare che sia la versione corretta ( - + ) and that all fields are valid against Energy+.idd. ) e che tutti i campi siano validi per Energy+.idd. - + <br/><br/>The ValidityReport follows. <br/><br/>Il ValidityReport è successivo. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>Il file non è valido a causa di incongruenze nel template</strong>. Controllare che tutt i campi siano validi in Energy+.idd. - + IDF Import Failed Import dell'IDF Fallito - + =============== Errors =============== @@ -1061,7 +1087,7 @@ Se vuoi vedere OpenStudioApplication tradotto nel tuo linguaggio preferito, appr - + ============== Warnings ============== @@ -1070,7 +1096,7 @@ Se vuoi vedere OpenStudioApplication tradotto nel tuo linguaggio preferito, appr - + ==== The following idf objects were not imported ==== @@ -1079,113 +1105,113 @@ Se vuoi vedere OpenStudioApplication tradotto nel tuo linguaggio preferito, appr - + named nominato - + Unnamed Senza Nome - + <strong>Some portions of the IDF file were not imported.</strong> <strong>Alcune parti del file IDF non sono state importate</strong> - + IDF Import IDF Import - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. Solo Geometrie, Construzioni, Carichi, Zone Termiche e tabelle sono supportate dalla funzione OpenStudio IDF Import. - + Import Importare - + (*.xml) (*.xml) - + Errors or warnings occurred on import of Errori e/o avvisi riscontrati durante l'import - + Could not import SDD file. Impossibile Importare File SDD. - + Could not import Impossibile importare - + file at file presso - + Save Changes? Salva Modifiche? - + The document has been modified. Il documento è stato modificato. - + Do you want to save your changes? Vuoi salvare le modifiche? - + Open Apri - + (*.osm) (*.osm) - + A new version is available at <a href=" Una nuova versione disponibile a <a href=" - + Currently using the most recent version Al momento utilizzi la versione più recente - + Check for Updates Controlla Aggiornamenti - + Measure Manager Server: Server Gestore di Misure: - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: Cartella Temporanea: @@ -1204,34 +1230,34 @@ Se vuoi vedere OpenStudioApplication tradotto nel tuo linguaggio preferito, appr A proposito di - + Failed to load model Impossibile Caricare Modello - + Opening future version Apertura versione futura - + using utilizzando - + Model updated from Modello aggiornato da - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. Gli Scripts Ruby sono stati rimossi. Ruby Scripts non sono più supportati e sono stati sostituiti da misure. - + Failed to open file at Impossibile aprire il file @@ -1301,7 +1327,7 @@ Vuoi riavviare ora? Selezionare Libreria - + Failed to load the following libraries... @@ -1310,7 +1336,7 @@ Vuoi riavviare ora? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_ja.ts b/translations/OpenStudioApp_ja.ts index 021394026..0d6cfd91c 100644 --- a/translations/OpenStudioApp_ja.ts +++ b/translations/OpenStudioApp_ja.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -328,7 +328,7 @@ Zone openstudio::LocationTabView - + Site 敷地 @@ -336,145 +336,171 @@ Zone openstudio::LocationView - + Weather File 気象データ - + Name: ファイル名: - Latitude: - 緯度: + 緯度: - Longitude: - 経度: + 経度: - Elevation: - 標高: + 標高: - Time Zone: - タイムゾーン: + タイムゾーン: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> 気象データをダウンロード: <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): メジャータブ(任意): - + ASHRAE Climate Zone ASHRAE気候帯 - + CEC Climate Zone CEC気候帯 - - - + + + Design Days 気象条件 - + Import From DDY DDYからインポート - + Change Weather File 気象データの変更 - - + + Set Weather File 気象データの選択 - + EPW Files (*.epw);; All Files (*.*) EPW (*.epw);; すべてのファイル形式(*.*) - + Open Weather File 気象データを開く - + Failed To Set Weather File 気象データの選択に失敗しました - + Failed To Set Weather File To 気象データの選択に失敗しました - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK OK - + Cancel キャンセル - + Import all - + Open DDY File DDYファイルを開く - + No Design Days in DDY File DDYファイルに気象条件がありません - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. DDYファイルに有効な気象条件がありません。ファイルにエラーや欠損がないか確認してください。 @@ -901,45 +927,45 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OSDocument - + Export Idf IDFをエキスポート - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model モデルの保存に失敗しました - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. モデルの保存に失敗しました。ファイルが開いてないこととアクセス許可があることを確認してください。 - + Save 保存 - + (*.osm) (*.osm) - - + + Select My Measures Directory メジャーディレクトリを選択 @@ -951,7 +977,7 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OpenStudioApp - + Timeout タイムアウト @@ -960,101 +986,101 @@ If you would like to see the OpenStudioApplication translated in your language o メジャーマネージャーの開始に失敗しました。もう一度試みますか? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files ライブラリーファイルをロード中 - + (Manage library files in Preferences->Change default libraries) (ライブラリーファイルの管理はプレファレンス→デフォルトライブラリーの変更から行います) - + Translation From version バージョン変更 - - + + to から - + Unknown starting version 元のバージョンが不明です - + Import Idf IDFをインポート - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' The line above saying "The IDF is at version" is not getting translated (missing the tr()) ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. '.EnergyPlus補助プログラムのIDFVersionUpdaterを使いIDFファイルをアップデートしてください。 - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' The line above saying "The IDF is at version" is not getting translated (missing the tr()) ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( The line above saying "The IDF is at version" is not getting translated (missing the tr()) ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>IDFファイルにVersionObjectがありません。</strong> 正しいバージョン( - + ) and that all fields are valid against Energy+.idd. )であることを確認し、すべてのフィールドがEnergyPlusの.iddファイルに対して正しく入力されていることをご確認ください。 - + <br/><br/>The ValidityReport follows. <br/><br/>ValidityReport. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>ファイルはドラフトの厳密さに対して無効です</strong>。 すべてのフィールドがEnergyPlusの.iddファイルに対して正しく入力されていることをご確認ください。 - + IDF Import Failed IDFファイルのインポートに失敗 - + =============== Errors =============== @@ -1063,7 +1089,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ============== Warnings ============== @@ -1072,7 +1098,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ==== The following idf objects were not imported ==== @@ -1081,113 +1107,113 @@ If you would like to see the OpenStudioApplication translated in your language o - + named named - + Unnamed Unamed - + <strong>Some portions of the IDF file were not imported.</strong> <strong>IDFファイルの一部がインポートされませんでした。</strong> - + IDF Import IDFをインポート - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. OpenStudioのIDFインポート機能は形状、材質、負荷、ゾーン、スケジュールのみをインポートできます。 - + Import インポート - + (*.xml) (*.xml) - + Errors or warnings occurred on import of インポート時に起こったエラーや警告 - + Could not import SDD file. SDDファイルをインポート出来ません。 - + Could not import ファイル種 - + file at のインポートにしっぱいしました。 ファイル名 - + Save Changes? 変更を保存しますか? - + The document has been modified. このドキュメントは変更されています。 - + Do you want to save your changes? 変更を保存しますか? - + Open 開く - + (*.osm) (*.osm) - + A new version is available at <a href=" 新しいバージョンをご利用いただけます <a href=" - + Currently using the most recent version 最新版を利用しています - + Check for Updates 更新を確認 - + Measure Manager Server: メジャーマネージャーサーバー: - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: Temp Directory: @@ -1206,34 +1232,34 @@ If you would like to see the OpenStudioApplication translated in your language o About - + Failed to load model モデルをロード出来ませんでした - + Opening future version バージョン - + using を次のバージョンでひらきます - + Model updated from モデルが更新されました - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. 既存のRubyスクリプトが削除されました。 Rubyスクリプトはサポートされなくなり、メジャーに置き換わりました。 - + Failed to open file at 次のファイルが開けません @@ -1303,7 +1329,7 @@ Would you like to restart now? ライブラリーを選択 - + Failed to load the following libraries... @@ -1312,7 +1338,7 @@ Would you like to restart now? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_pl.ts b/translations/OpenStudioApp_pl.ts index db509dc98..ba4c63843 100644 --- a/translations/OpenStudioApp_pl.ts +++ b/translations/OpenStudioApp_pl.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -328,7 +328,7 @@ Pomieszczenie openstudio::LocationTabView - + Site Teren @@ -336,145 +336,171 @@ Pomieszczenie openstudio::LocationView - + Weather File Plik pogodowy - + Name: Nazwa: - Latitude: - Szerokość geograficzna: + Szerokość geograficzna: - Longitude: - Długość geograficzna: + Długość geograficzna: - Elevation: - Przewyższenie: + Przewyższenie: - Time Zone: - Strefa czasowa: + Strefa czasowa: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> Pobierz pliki pogodowe z <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): Tagi pomiaru (opcjonalnie): - + ASHRAE Climate Zone Strefa klimatyczna ASHRAE - + CEC Climate Zone Strefa klimatyczna CEC - - - + + + Design Days Dni projektowe - + Import From DDY Importuj z DDY - + Change Weather File Zmień plik pogodowy - - + + Set Weather File Ustaw plik pogodowy - + EPW Files (*.epw);; All Files (*.*) Pliki EPW (*.epw);; Wszystkie pliki (*.*) - + Open Weather File Otwórz plik pogodowy - + Failed To Set Weather File Nie udało się ustawić pliku pogody - + Failed To Set Weather File To Nie udało się ustawić pliku pogody na - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK Dobrze - + Cancel Anuluj - + Import all - + Open DDY File - + No Design Days in DDY File Brak dni projektowych w pliku DDY - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. Ten plik DDY nie zawiera poprawnych dni projektowych. Sprawdź plik DDY pod kątem błędów. @@ -901,45 +927,45 @@ Jeśli chcesz zobaczyć aplikację OpenStudio przetłumaczoną na wybrany przez openstudio::OSDocument - + Export Idf Eksportuj IDF - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model Nie udało się zapisać modelu - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. Nie udało się zapisać modelu, upewnij się, że nie masz otwartej lokalizacji i czy masz odpowiednie uprawnienia do zapisu. - + Save Zapisz - + (*.osm) (*.osm) - - + + Select My Measures Directory Wybierz folder dla moich miar @@ -951,7 +977,7 @@ Jeśli chcesz zobaczyć aplikację OpenStudio przetłumaczoną na wybrany przez openstudio::OpenStudioApp - + Timeout Koniec czasu @@ -960,98 +986,98 @@ Jeśli chcesz zobaczyć aplikację OpenStudio przetłumaczoną na wybrany przez Nie udało się uruchomić menedżera miar. Czy chcesz spróbować ponownie? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files Wczytywanie plików biblioteki - + (Manage library files in Preferences->Change default libraries) (Zarządzaj plikami bibliotek w Preferencje->Zmień domyślne biblioteki) - + Translation From version Tłumaczenie z wersji - - + + to na - + Unknown starting version Nieznana wersja początkowa - + Import Idf Importuj IDF - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' podczas gdy OpenStudio używa<strong>nowszą wersję</strong> EnergyPlus ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. '. Rozważ użycie programu pomocniczego EnergyPlus IDFVersionUpdater do aktualizacji pliku IDF. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' podczas gdy OpenStudio używa <strong>starszą wersję</strong> EnergyPlus ' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ', czyli <strong>ta sama</strong> wersja EnergyPlus, z której korzysta OpenStudio ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>IDF nie ma obiektu wersji</strong>. Sprawdź, czy ma poprawną wersję ( - + ) and that all fields are valid against Energy+.idd. ) oraz że wszystkie pola są prawidłowe w odniesieniu do Energy+.idd. - + <br/><br/>The ValidityReport follows. <br/><br/>Następuje raport walidacyjny. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>Plik nie jest prawidłowy</strong>. Sprawdź, czy wszystkie pola są prawidłowe względem Energy+.idd. - + IDF Import Failed Import IDF nie powiódł się - + =============== Errors =============== @@ -1060,7 +1086,7 @@ Jeśli chcesz zobaczyć aplikację OpenStudio przetłumaczoną na wybrany przez - + ============== Warnings ============== @@ -1069,7 +1095,7 @@ Jeśli chcesz zobaczyć aplikację OpenStudio przetłumaczoną na wybrany przez - + ==== The following idf objects were not imported ==== @@ -1078,113 +1104,113 @@ Jeśli chcesz zobaczyć aplikację OpenStudio przetłumaczoną na wybrany przez - + named nazwany - + Unnamed Nie nazwany - + <strong>Some portions of the IDF file were not imported.</strong> <strong>Fragmenty pliku IDF nie zostały zaimportowane.</strong> - + IDF Import Import IDF - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. Tylko geometria, konstrukcje, obciążenia, strefy termiczne i harmonogramy są obsługiwane przez funkcję importu OpenStudio IDF. - + Import Import - + (*.xml) (*.xml) - + Errors or warnings occurred on import of Podczas importu wystąpiły błędy lub ostrzeżenia dla - + Could not import SDD file. Nie można zaimportować pliku SDD. - + Could not import Nie można zaimportować - + file at plik w - + Save Changes? Zapisać zmiany? - + The document has been modified. Dokument został zmieniony. - + Do you want to save your changes? Czy chcesz zapisać zmiany? - + Open Otwórz - + (*.osm) (*.osm) - + A new version is available at <a href=" Nowa wersja jest dostępna na stronie <a href=" - + Currently using the most recent version Obecnie korzystasz z najnowszej wersji - + Check for Updates Sprawdź aktualizacje - + Measure Manager Server: Serwer menedżera miar: - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: Katalog tymczasowy: @@ -1203,34 +1229,34 @@ Jeśli chcesz zobaczyć aplikację OpenStudio przetłumaczoną na wybrany przez O - + Failed to load model Nie udało się wczytać modelu - + Opening future version Otwieram nowszą wersję - + using z wersją - + Model updated from Zaktualizowano model z - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. Istniejące skrypty Ruby zostały usunięte. Skrypty Ruby nie są już obsługiwane i zostały zastąpione miarami. - + Failed to open file at Nie udało się otworzyć pliku @@ -1300,7 +1326,7 @@ Czy chcesz teraz ponownie uruchomić? Wybierz bibliotekę - + Failed to load the following libraries... @@ -1309,7 +1335,7 @@ Czy chcesz teraz ponownie uruchomić? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_vi.ts b/translations/OpenStudioApp_vi.ts index b4342122c..56bb49a9d 100644 --- a/translations/OpenStudioApp_vi.ts +++ b/translations/OpenStudioApp_vi.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -325,7 +325,7 @@ Zone openstudio::LocationTabView - + Site Khu đất @@ -333,145 +333,171 @@ Zone openstudio::LocationView - + Weather File File thời tiết - + Name: Tên: - Latitude: - Vĩ độ: + Vĩ độ: - Longitude: - Kinh độ: + Kinh độ: - Elevation: - Cao độ : + Cao độ : - Time Zone: - Múi giờ: + Múi giờ: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> Tải file thời tiết - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): Tags tính toán bổ sung (tuỳ chọn): - + ASHRAE Climate Zone Vùng khí hậu theo ASHRAE - + CEC Climate Zone Vùng khí hậu theo CEC - - - + + + Design Days Ngày thiết kế - + Import From DDY Nhập từ file DDY - + Change Weather File Thay đổi file thời tiết - - + + Set Weather File Thiết lập file thời tiết - + EPW Files (*.epw);; All Files (*.*) File EPW (*.epw);; Tất cả file (*.) - + Open Weather File Mở file thời tiết - + Failed To Set Weather File Lỗi khi thiết lập file thời tiết - + Failed To Set Weather File To Lỗi khi thiết lập file thời tiết tới - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK OK - + Cancel Huỷ - + Import all - + Open DDY File Mở file DDY - + No Design Days in DDY File Không có Ngày thiết kế trong file DDY - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. File DDY này không chứa dữ liệu đúng cho ngày thiết kế. Kiểm tra file DDY để soát lỗi. @@ -898,45 +924,45 @@ Nếu bạn muốn thấy OpenStudioApplication được dịch sang ngôn ngữ openstudio::OSDocument - + Export Idf Xuất ra Idf - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model Lỗi khi lưu mô hình - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. Không lưu được mô hình, hãy đảm bảo rằng bạn đang không mở fileí và bạn có quyền được ghi. - + Save Lưu file - + (*.osm) (*.osm) - - + + Select My Measures Directory Chọn thư mục Measures @@ -948,7 +974,7 @@ Nếu bạn muốn thấy OpenStudioApplication được dịch sang ngôn ngữ openstudio::OpenStudioApp - + Timeout Hết thời gian @@ -957,98 +983,98 @@ Nếu bạn muốn thấy OpenStudioApplication được dịch sang ngôn ngữ Không khởi động được Trình quản lý Measure. Bạn có muốn thử lại không? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files Đang nạp các file thư viện - + (Manage library files in Preferences->Change default libraries) Quản lý các file thư viện trong mục tuỳ biến->Thay đổi các thư viện mặc định) - + Translation From version Dịch từ phiên bản - - + + to tới - + Unknown starting version Không biết phiên bản bắt đầu - + Import Idf Nhập file Idf - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' 'trong khi OpenStudio sử dụng <strong> mới hơn </strong> EnergyPlus' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. '. Cân nhắc sử dụng chương trình Phụ trợ EnergyPlus IDFVersionUpdater để cập nhật file IDF của bạn. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' 'trong khi OpenStudio sử dụng EnergyPlus <strong> cũ hơn </strong>' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( 'là phiên bản <strong> giống </strong> của EnergyPlus mà OpenStudio sử dụng ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong> IDF không có VersionObject </strong>. Kiểm tra xem nó có đúng phiên bản không ( - + ) and that all fields are valid against Energy+.idd. ) và tất cả các trường đều hợp lệ với Energy + .idd. - + <br/><br/>The ValidityReport follows. Sau đây là <br/> <br/> ValidityReport. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong> File không hợp lệ về tính nghiêm ngặt của bản nháp </strong>. Kiểm tra xem tất cả các trường có hợp lệ với Energy + .idd hay không. - + IDF Import Failed Nhập file IDF không thành công - + =============== Errors =============== @@ -1057,7 +1083,7 @@ Nếu bạn muốn thấy OpenStudioApplication được dịch sang ngôn ngữ - + ============== Warnings ============== @@ -1066,7 +1092,7 @@ Nếu bạn muốn thấy OpenStudioApplication được dịch sang ngôn ngữ - + ==== The following idf objects were not imported ==== @@ -1075,113 +1101,113 @@ Nếu bạn muốn thấy OpenStudioApplication được dịch sang ngôn ngữ - + named đã đặt tên - + Unnamed Chưa đặt tên - + <strong>Some portions of the IDF file were not imported.</strong> <strong> Một số phần của tệp IDF không được nhập. </strong> - + IDF Import Nhập file IDF - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. Chỉ hình học, cấu tạo, tải trọng, vùng nhiệt và lịch trình được hỗ trợ bởi tính năng nhập OpenStudio IDF. - + Import Nhập file - + (*.xml) (*.xml) - + Errors or warnings occurred on import of Đã xảy ra lỗi hoặc cảnh báo khi nhập - + Could not import SDD file. Không thể nhập file SDD. - + Could not import Không thể nhập - + file at file tại - + Save Changes? Lưu thay đổi? - + The document has been modified. Tài liệu đã bị thay đổi. - + Do you want to save your changes? Bạn có muốn lưu thay đổi không? - + Open Mở file - + (*.osm) (*.osm) - + A new version is available at <a href=" Đã có phiên bản mới tại <a href = " - + Currently using the most recent version Hiện đang sử dụng phiên bản mới nhất - + Check for Updates Kiểm tra cập nhật - + Measure Manager Server: Máy chủ quản lý Measure: - + Chrome Debugger: http://localhost: Chrome Debugger: http://localhost: - + Temp Directory: Thư mục tạm thời: @@ -1200,34 +1226,34 @@ Nếu bạn muốn thấy OpenStudioApplication được dịch sang ngôn ngữ Giới thiệu - + Failed to load model Không tải được mô hình - + Opening future version Mở phiên bản tương lai - + using đang sử dụng - + Model updated from Mô hình được cập nhật từ - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. Các tập lệnh Ruby hiện có đã bị xóa. Các tập lệnh Ruby không còn được hỗ trợ và đã được thay thế bằng các measures. - + Failed to open file at Không mở được tệp tại @@ -1297,7 +1323,7 @@ Bạn có muốn khởi động lại ngay bây giờ? Chọn thư viện - + Failed to load the following libraries... @@ -1306,7 +1332,7 @@ Bạn có muốn khởi động lại ngay bây giờ? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? diff --git a/translations/OpenStudioApp_zh_CN.ts b/translations/OpenStudioApp_zh_CN.ts index 3f0b4c83c..ed19ee963 100644 --- a/translations/OpenStudioApp_zh_CN.ts +++ b/translations/OpenStudioApp_zh_CN.ts @@ -57,7 +57,7 @@ LocationView - + Import Design Days @@ -328,7 +328,7 @@ Zone openstudio::LocationTabView - + Site 场地 @@ -336,145 +336,171 @@ Zone openstudio::LocationView - + Weather File 气候文件 - + Name: 名字: - Latitude: - 纬度: + 纬度: - Longitude: - 经度: + 经度: - Elevation: - 高度: + 高度: - Time Zone: - 时区: + 时区: - + Download weather files at <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> 下载气候文件从: <a href="http://www.energyplus.net/weather">www.energyplus.net/weather</a> - + + Site Information: + + + + + Keep Site Location Information + + + + + If enabled, this will write the Site:Location object that will keep the Elevation change for example. + + + + + Elevation affects the wind speed at the site, and is defaulted to the Weather File's elevation + + + + + Terrain + + + + + Terrain affects the wind speed at the site. + + + + Measure Tags (Optional): 度量标签(可选): - + ASHRAE Climate Zone ASHRAE标准 气候区 - + CEC Climate Zone CEC标准气候区 - - - + + + Design Days 设计日 - + Import From DDY 从DDY文件导入 - + Change Weather File 修改气候文件 - - + + Set Weather File 设置气候文件 - + EPW Files (*.epw);; All Files (*.*) EPW 文件 (*.epw);; 所有文件 (*.*) - + Open Weather File 打开气候文件 - + Failed To Set Weather File 设置气候文件失败 - + Failed To Set Weather File To 设置气候文件失败 - + There are <span style="font-weight:bold;">%1</span> Design Days available for import - + , %1 of which are unknown type - + Heating - + Cooling - + OK - + Cancel 取消 - + Import all - + Open DDY File 打开DDY文件 - + No Design Days in DDY File DDY不含设计日 - + This DDY file does not contain any valid design days. Check the DDY file itself for errors or omissions. 这个DDY文件不含任何设计日。请检查这个DDY文件是否有误。 @@ -901,45 +927,45 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OSDocument - + Export Idf 导出 Idf - + (*.idf) (*.idf) - + (*.xml) (*.xml) - - + + Failed to save model 保存失败 - - + + Failed to save model, make sure that you do not have the location open and that you have correct write access. 保存失败,请确保你的保存地址有效且可覆盖。 - + Save 保存 - + (*.osm) (*.osm) - - + + Select My Measures Directory 选择我的脚本文件夹 @@ -951,7 +977,7 @@ If you would like to see the OpenStudioApplication translated in your language o openstudio::OpenStudioApp - + Timeout 超时 @@ -960,98 +986,98 @@ If you would like to see the OpenStudioApplication translated in your language o 无法打开脚本管理器,是否再试? - + Failed to start the Measure Manager. Would you like to keep waiting? - + Loading Library Files 加载资料文件 - + (Manage library files in Preferences->Change default libraries) 管理资料文件 在设置->设置默认资料库 - + Translation From version 转换从版本 - - + + to - + Unknown starting version 无法识别版本 - + Import Idf 导入Idf - + (*.idf) (*.idf) - + ' while OpenStudio uses a <strong>newer</strong> EnergyPlus ' ' OpenStudio 使用 <strong>新版</strong> EnergyPlus ' - + '. Consider using the EnergyPlus Auxiliary program IDFVersionUpdater to update your IDF file. '. 使用 EnergyPlus 附属工具 IDFVersionUpdater 来升级 IDF 文件. - + ' while OpenStudio uses an <strong>older</strong> EnergyPlus ' ' 当 OpenStudio 使用 <strong>旧版</strong> EnergyPlus ' - + '. '. - + ' which is the <strong>same</strong> version of EnergyPlus that OpenStudio uses ( ' 这是 <strong>一样</strong> 版本的EnergyPlus 是 OpenStudio 所使用的 ( - + <strong>The IDF does not have a VersionObject</strong>. Check that it is of correct version ( <strong>这 IDF不含 VersionObject</strong>. 检查是否正确版本 ( - + ) and that all fields are valid against Energy+.idd. ) 所有内容都是根据 Energy+.idd验证有效。 - + <br/><br/>The ValidityReport follows. <br/><br/> 有效性报告包括以下. - + <strong>File is not valid to draft strictness</strong>. Check that all fields are valid against Energy+.idd. <strong>无效文件</strong>.依据Energy+.idd 来检查所有内容. - + IDF Import Failed 失败导入IDF - + =============== Errors =============== @@ -1060,7 +1086,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ============== Warnings ============== @@ -1069,7 +1095,7 @@ If you would like to see the OpenStudioApplication translated in your language o - + ==== The following idf objects were not imported ==== @@ -1078,113 +1104,113 @@ If you would like to see the OpenStudioApplication translated in your language o - + named 命名的 - + Unnamed 未命名 - + <strong>Some portions of the IDF file were not imported.</strong> <strong>一部分内容没有被导入.</strong> - + IDF Import 导入Idf - + Only geometry, constructions, loads, thermal zones, and schedules are supported by the OpenStudio IDF import feature. 只有模型,构造材料,负荷,热区,和日期表可以被 OpenStudio 从IDF导入. - + Import 导入 - + (*.xml) (*.xml) - + Errors or warnings occurred on import of 错误和警告出现在导入 - + Could not import SDD file. 失败导入SDD 。 - + Could not import 不能导入 - + file at 文件 - + Save Changes? 保存修改内容? - + The document has been modified. 文件已被修改。 - + Do you want to save your changes? 你想保存修改内容码? - + Open 打开 - + (*.osm) (*.osm) - + A new version is available at <a href=" 新版本在 <a href=" - + Currently using the most recent version 现在使用最新版本 - + Check for Updates 检查更新 - + Measure Manager Server: 脚本管理服务器: - + Chrome Debugger: http://localhost: Chrome 调试器: http://localhost: - + Temp Directory: 临时文件夹: @@ -1203,34 +1229,34 @@ If you would like to see the OpenStudioApplication translated in your language o 关于 - + Failed to load model 无法打开模型 - + Opening future version 打开新版本 - + using 使用 - + Model updated from 更新模型从 - + Existing Ruby scripts have been removed. Ruby scripts are no longer supported and have been replaced by measures. 现有的Ruby脚本已经被移除。 Ruby脚本已不被支持,现在可以使用Measurej脚本. - + Failed to open file at 无法打开文件 @@ -1300,7 +1326,7 @@ Would you like to restart now? 选择资料库 - + Failed to load the following libraries... @@ -1309,7 +1335,7 @@ Would you like to restart now? - + Would you like to Restore library paths to default values or Open the library settings to change them manually? From 8afeacf01e07338dbf383e4565b56857c8548fda Mon Sep 17 00:00:00 2001 From: Dan Macumber Date: Tue, 16 Jun 2026 07:37:55 -0600 Subject: [PATCH 4/5] Fix cppcheck and clang format --- src/utilities/RemoteBCLNLR.cpp | 48 +++++++++++++++++----------------- src/utilities/RemoteBCLNLR.hpp | 8 +++--- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/utilities/RemoteBCLNLR.cpp b/src/utilities/RemoteBCLNLR.cpp index ae8e5e47b..6458b4fc2 100644 --- a/src/utilities/RemoteBCLNLR.cpp +++ b/src/utilities/RemoteBCLNLR.cpp @@ -117,7 +117,7 @@ boost::optional RemoteBCLNLR::getMeasure(const std::string& uid, con } boost::optional RemoteBCLNLR::metaSearchComponentLibrary(const std::string& searchTerm, const std::string& componentType, - const std::string& filterType) const { + const std::string& filterType) const { bool searchStarted = const_cast(this)->startComponentLibraryMetaSearch(searchTerm, componentType, filterType); if (searchStarted) { return waitForMetaSearch(); @@ -126,7 +126,7 @@ boost::optional RemoteBCLNLR::metaSearchComponentLibrary(co } boost::optional RemoteBCLNLR::metaSearchComponentLibrary(const std::string& searchTerm, const unsigned componentTypeTID, - const std::string& filterType) const { + const std::string& filterType) const { bool searchStarted = const_cast(this)->startComponentLibraryMetaSearch(searchTerm, componentTypeTID, filterType); if (searchStarted) { return waitForMetaSearch(); @@ -135,7 +135,7 @@ boost::optional RemoteBCLNLR::metaSearchComponentLibrary(co } std::vector RemoteBCLNLR::searchComponentLibrary(const std::string& searchTerm, const std::string& componentType, - const unsigned page) const { + const unsigned page) const { // Perform metaSearch first metaSearchComponentLibrary(searchTerm, componentType, "nrel_component"); if (lastTotalResults() == 0) { @@ -150,7 +150,7 @@ std::vector RemoteBCLNLR::searchComponentLibrary(const std::str } std::vector RemoteBCLNLR::searchComponentLibrary(const std::string& searchTerm, const unsigned componentTypeTID, - const unsigned page) const { + const unsigned page) const { // Perform metaSearch first metaSearchComponentLibrary(searchTerm, componentTypeTID, "nrel_component"); if (lastTotalResults() == 0) { @@ -165,7 +165,7 @@ std::vector RemoteBCLNLR::searchComponentLibrary(const std::str } std::vector RemoteBCLNLR::searchMeasureLibrary(const std::string& searchTerm, const std::string& componentType, - const unsigned page) const { + const unsigned page) const { // Perform metaSearch first metaSearchComponentLibrary(searchTerm, componentType, "nrel_measure"); if (lastTotalResults() == 0) { @@ -180,7 +180,7 @@ std::vector RemoteBCLNLR::searchMeasureLibrary(const std::strin } std::vector RemoteBCLNLR::searchMeasureLibrary(const std::string& searchTerm, const unsigned componentTypeTID, - const unsigned page) const { + const unsigned page) const { // Perform metaSearch first metaSearchComponentLibrary(searchTerm, componentTypeTID, "nrel_measure"); if (lastTotalResults() == 0) { @@ -506,10 +506,10 @@ boost::optional RemoteBCLNLR::waitForComponentDownload() const { return boost::none; } -boost::optional RemoteBCLNLR::waitForComponentDownload(int) const { - DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForComponentDownload() instead"); - return waitForComponentDownload(); -} +//boost::optional RemoteBCLNLR::waitForComponentDownload(int) const { +// DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForComponentDownload() instead"); +// return waitForComponentDownload(); +//} boost::optional RemoteBCLNLR::waitForMeasureDownload() const { if (waitForLock()) { @@ -518,10 +518,10 @@ boost::optional RemoteBCLNLR::waitForMeasureDownload() const { return boost::none; } -boost::optional RemoteBCLNLR::waitForMeasureDownload(int) const { - DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForMeasureDownload() instead"); - return waitForMeasureDownload(); -} +//boost::optional RemoteBCLNLR::waitForMeasureDownload(int) const { +// DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForMeasureDownload() instead"); +// return waitForMeasureDownload(); +//} boost::optional RemoteBCLNLR::waitForMetaSearch() const { if (waitForLock()) { @@ -530,10 +530,10 @@ boost::optional RemoteBCLNLR::waitForMetaSearch() const { return boost::none; } -boost::optional RemoteBCLNLR::waitForMetaSearch(int) const { - DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForMetaSearch() instead"); - return waitForMetaSearch(); -} +//boost::optional RemoteBCLNLR::waitForMetaSearch(int) const { +// DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForMetaSearch() instead"); +// return waitForMetaSearch(); +//} std::vector RemoteBCLNLR::waitForSearch() const { if (waitForLock()) { @@ -542,10 +542,10 @@ std::vector RemoteBCLNLR::waitForSearch() const { return {}; } -std::vector RemoteBCLNLR::waitForSearch(int) const { - DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForSearch() instead"); - return waitForSearch(); -} +//std::vector RemoteBCLNLR::waitForSearch(int) const { +// DEPRECATED_AT_MSG(3, 2, 1, "The int parameter is unused. Use waitForSearch() instead"); +// return waitForSearch(); +//} /////////////////////////////////////////////////////////////////////////// /// Non-blocking class members @@ -691,7 +691,7 @@ bool RemoteBCLNLR::startComponentLibraryMetaSearch(const std::string& searchTerm } bool RemoteBCLNLR::startComponentLibrarySearch(const std::string& searchTerm, const std::string& componentType, const std::string& filterType, - const unsigned page) { + const unsigned page) { // can't start another request until last one is done if (m_httpResponse && !m_httpResponse->is_done()) { return false; @@ -733,7 +733,7 @@ bool RemoteBCLNLR::startComponentLibrarySearch(const std::string& searchTerm, co } bool RemoteBCLNLR::startComponentLibrarySearch(const std::string& searchTerm, const unsigned componentTypeTID, const std::string& filterType, - const unsigned page) { + const unsigned page) { // can't start another request until last one is done if (m_httpResponse && !m_httpResponse->is_done()) { return false; diff --git a/src/utilities/RemoteBCLNLR.hpp b/src/utilities/RemoteBCLNLR.hpp index f4d4fdefb..89cfa659e 100644 --- a/src/utilities/RemoteBCLNLR.hpp +++ b/src/utilities/RemoteBCLNLR.hpp @@ -168,22 +168,22 @@ class OSAPP_UTILITIES_API RemoteBCLNLR : public BCL /// Wait number of milliseconds for download to complete /// Returns the download if it completed in the allowable time boost::optional waitForComponentDownload() const; - OS_DEPRECATED(3, 2, 1) boost::optional waitForComponentDownload(int) const; + //OS_DEPRECATED(3, 2, 1) boost::optional waitForComponentDownload(int) const; /// Wait number of milliseconds for download to complete /// Returns the download if it completed in the allowable time boost::optional waitForMeasureDownload() const; - OS_DEPRECATED(3, 2, 1) boost::optional waitForMeasureDownload(int) const; + //OS_DEPRECATED(3, 2, 1) boost::optional waitForMeasureDownload(int) const; /// Wait number of milliseconds for download to complete /// Returns the download if it completed in the allowable time boost::optional waitForMetaSearch() const; - OS_DEPRECATED(3, 2, 1) boost::optional waitForMetaSearch(int) const; + //OS_DEPRECATED(3, 2, 1) boost::optional waitForMetaSearch(int) const; /// Wait number of milliseconds for download to complete /// Returns the download if it completed in the allowable time std::vector waitForSearch() const; - OS_DEPRECATED(3, 2, 1) std::vector waitForSearch(int) const; + //OS_DEPRECATED(3, 2, 1) std::vector waitForSearch(int) const; //@} /** @name Non-blocking class members */ From 2d25a334a1f82e7871d17a2fd1013a3088f9652c Mon Sep 17 00:00:00 2001 From: Dan Macumber Date: Tue, 16 Jun 2026 07:41:28 -0600 Subject: [PATCH 5/5] Additional explicit for cppcheck --- src/utilities/RemoteBCLNLR.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utilities/RemoteBCLNLR.hpp b/src/utilities/RemoteBCLNLR.hpp index 89cfa659e..7a8ae6da3 100644 --- a/src/utilities/RemoteBCLNLR.hpp +++ b/src/utilities/RemoteBCLNLR.hpp @@ -37,7 +37,7 @@ namespace openstudio { class OSAPP_UTILITIES_API RemoteQueryResponse { public: - RemoteQueryResponse(std::shared_ptr& domDocument); + explicit RemoteQueryResponse(std::shared_ptr& domDocument); pugi::xml_node root() const;