mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-24 20:00:02 +00:00
bimtester: se gettext for message translation
This commit is contained in:
committed by
Dion Moult
parent
3ae20637d7
commit
85a78a6e48
@@ -1,7 +1,9 @@
|
|||||||
|
import gettext
|
||||||
from behave import step
|
from behave import step
|
||||||
|
|
||||||
from utils import assert_schema
|
from ifcdata_methods import assert_schema
|
||||||
from utils import IfcFile
|
from utils import IfcFile
|
||||||
|
from utils import switch_locale
|
||||||
|
|
||||||
|
|
||||||
@step('The IFC file "{file}" must be provided')
|
@step('The IFC file "{file}" must be provided')
|
||||||
@@ -14,8 +16,8 @@ def step_impl(context, file):
|
|||||||
|
|
||||||
@step("IFC data must use the {schema} schema")
|
@step("IFC data must use the {schema} schema")
|
||||||
def step_impl(context, schema):
|
def step_impl(context, schema):
|
||||||
context.schema = IfcFile.get().schema
|
switch_locale(context.localedir, "en")
|
||||||
assert_schema(schema, context.schema)
|
assert_schema(context, schema)
|
||||||
|
|
||||||
|
|
||||||
@step('The IFC file "{file}" is exempt from being provided')
|
@step('The IFC file "{file}" is exempt from being provided')
|
||||||
|
|||||||
@@ -1,19 +1,9 @@
|
|||||||
from behave import step
|
from behave import step
|
||||||
|
|
||||||
from utils import assert_schema
|
from ifcdata_methods import assert_schema
|
||||||
|
from utils import switch_locale
|
||||||
|
|
||||||
# https://behave.readthedocs.io/en/latest/api.html#step-macro-calling-steps-from-other-steps
|
|
||||||
# https://stackoverflow.com/questions/46735425/how-to-only-show-failing-tests-from-behave
|
|
||||||
# https://community.osarch.org/discussion/comment/4533/#Comment_4533
|
|
||||||
|
|
||||||
@step("Die IFC Daten müssen das {schema} Schema benutzen")
|
@step("Die IFC Daten müssen das {schema} Schema benutzen")
|
||||||
def step_impl(context, schema):
|
def step_impl(context, schema):
|
||||||
try:
|
switch_locale(context.localedir, "de")
|
||||||
context.execute_steps(
|
assert_schema(context, schema)
|
||||||
"* IFC data must use the {schema} schema".format(schema=schema)
|
|
||||||
)
|
|
||||||
except Exception:
|
|
||||||
assert_schema(schema, context.schema)
|
|
||||||
# TODO translate error
|
|
||||||
# "Wir haben ein Schema {} erwartet, aber die Daten sind Schema (}"
|
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
from behave import step
|
from behave import step
|
||||||
|
|
||||||
from utils import assert_schema
|
from ifcdata_methods import assert_schema
|
||||||
|
from utils import switch_locale
|
||||||
|
|
||||||
@step("Les données IFC doivent utiliser le schéma {schema}")
|
@step("Les données IFC doivent utiliser le schéma {schema}")
|
||||||
def step_impl(context, schema):
|
def step_impl(context, schema):
|
||||||
try:
|
switch_locale(context.localedir, "fr")
|
||||||
context.execute_steps(
|
assert_schema(context, schema)
|
||||||
"* IFC data must use the {schema} schema".format(schema=schema)
|
|
||||||
)
|
|
||||||
except Exception:
|
|
||||||
assert_schema(schema, context.schema)
|
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
from utils import IfcFile
|
||||||
|
|
||||||
|
|
||||||
|
def assert_schema(context, target_schema):
|
||||||
|
real_schema = IfcFile.get().schema
|
||||||
|
assert real_schema == target_schema, (
|
||||||
|
_("We expected a schema of {} but instead got {}")
|
||||||
|
.format(target_schema, real_schema)
|
||||||
|
)
|
||||||
@@ -80,8 +80,11 @@ def assert_pset(element, pset_name, prop_name=None, value=None):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def assert_schema(real_schema, target_schema):
|
def switch_locale(locale_dir, locale_id="en"):
|
||||||
assert real_schema == target_schema, (
|
from gettext import translation
|
||||||
"We expected a schema of {} but instead got {}"
|
newlang = translation(
|
||||||
.format(target_schema, real_schema)
|
"messages",
|
||||||
|
localedir=locale_dir,
|
||||||
|
languages=[locale_id]
|
||||||
)
|
)
|
||||||
|
newlang.install()
|
||||||
|
|||||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
|||||||
|
# German translations for PROJECT.
|
||||||
|
# Copyright (C) 2020 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the PROJECT project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2020-12-17 15:14+0100\n"
|
||||||
|
"PO-Revision-Date: 2020-12-18 06:11+0100\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language: de\n"
|
||||||
|
"Language-Team: de <LL@li.org>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.6.0\n"
|
||||||
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
|
|
||||||
|
#: features/steps/ifcdata_methods.py:7
|
||||||
|
msgid "We expected a schema of {} but instead got {}"
|
||||||
|
msgstr "Wir haben das Schema {} erwartet, aber die Daten nutzen das Schema {}"
|
||||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
|||||||
|
# German translations for PROJECT.
|
||||||
|
# Copyright (C) 2020 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the PROJECT project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2020-12-17 15:14+0100\n"
|
||||||
|
"PO-Revision-Date: 2020-12-18 06:12+0100\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language: en\n"
|
||||||
|
"Language-Team: en <LL@li.org>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.6.0\n"
|
||||||
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
|
|
||||||
|
#: features/steps/ifcdata_methods.py:7
|
||||||
|
msgid "We expected a schema of {} but instead got {}"
|
||||||
|
msgstr "We expected a schema of {} but instead got {}"
|
||||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
|||||||
|
# French translations for PROJECT.
|
||||||
|
# Copyright (C) 2020 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the PROJECT project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2020-12-17 15:14+0100\n"
|
||||||
|
"PO-Revision-Date: 2020-12-18 06:12+0100\n"
|
||||||
|
"Last-Translator: \n"
|
||||||
|
"Language: fr\n"
|
||||||
|
"Language-Team: fr <LL@li.org>\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.6.0\n"
|
||||||
|
"X-Generator: Poedit 2.2.1\n"
|
||||||
|
|
||||||
|
#: features/steps/ifcdata_methods.py:7
|
||||||
|
msgid "We expected a schema of {} but instead got {}"
|
||||||
|
msgstr ""
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Translations template for PROJECT.
|
||||||
|
# Copyright (C) 2020 ORGANIZATION
|
||||||
|
# This file is distributed under the same license as the PROJECT project.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
|
"POT-Creation-Date: 2020-12-17 15:14+0100\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Generated-By: Babel 2.6.0\n"
|
||||||
|
|
||||||
|
#: features/steps/ifcdata_methods.py:7
|
||||||
|
msgid "We expected a schema of {} but instead got {}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
@@ -11,6 +11,9 @@ from behave.__main__ import main as behave_main
|
|||||||
# get bimtester source code module path
|
# get bimtester source code module path
|
||||||
bimtester_path = os.path.dirname(os.path.realpath(__file__))
|
bimtester_path = os.path.dirname(os.path.realpath(__file__))
|
||||||
# print(bimtester_path)
|
# print(bimtester_path)
|
||||||
|
locale_path = os.path.join(bimtester_path, "locale")
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# PyInstaller creates a temp folder and stores path in _MEIPASS
|
# PyInstaller creates a temp folder and stores path in _MEIPASS
|
||||||
base_path = sys._MEIPASS
|
base_path = sys._MEIPASS
|
||||||
@@ -36,6 +39,10 @@ def run_tests(args):
|
|||||||
"--outfile",
|
"--outfile",
|
||||||
"report/report.json"
|
"report/report.json"
|
||||||
])
|
])
|
||||||
|
behave_args.extend([
|
||||||
|
"--define",
|
||||||
|
"localedir={}".format(locale_path)
|
||||||
|
])
|
||||||
behave_main(behave_args)
|
behave_main(behave_args)
|
||||||
print("# All tests are finished.")
|
print("# All tests are finished.")
|
||||||
return True
|
return True
|
||||||
@@ -262,7 +269,10 @@ def run_intmp_tests(args={}):
|
|||||||
os.path.join(report_path, "report.json"),
|
os.path.join(report_path, "report.json"),
|
||||||
# next two lines are one arg
|
# next two lines are one arg
|
||||||
"--define",
|
"--define",
|
||||||
"ifcbasename={}".format(os.path.splitext(ifc_filename)[0])
|
"ifcbasename={}".format(os.path.splitext(ifc_filename)[0]),
|
||||||
|
# next two lines are one arg
|
||||||
|
"--define",
|
||||||
|
"localedir={}".format(locale_path)
|
||||||
])
|
])
|
||||||
print(behave_args)
|
print(behave_args)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user