Skip to content

Commit

Permalink
Merge pull request #3352 from LiteFarmOrg/patch/translations
Browse files Browse the repository at this point in the history
3.6.7 Add new languages to LiteFarm (German)
  • Loading branch information
kathyavini authored Sep 17, 2024
2 parents 650c16f + 253b899 commit 191024b
Show file tree
Hide file tree
Showing 158 changed files with 17,057 additions and 606 deletions.
14 changes: 13 additions & 1 deletion .github/workflows/crowdin-download.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,30 @@ jobs:
max-parallel: 1 # Should be 1 to avoid parallel builds
matrix:
locales: [
# Frontend core translations
# Frontend core i18n public translations
{
name: webapp_locales,
source: packages/webapp/public/locales/en/*.json,
translation: packages/webapp/public/locales/%two_letters_code%/%original_file_name%,
},
# Frontend compiled translations
{
name: webapp_compiled_locales,
source: packages/webapp/src/locales/en/*.json,
translation: packages/webapp/src/locales/%two_letters_code%/%original_file_name%,
},
# Consent Forms
{
name: webapp_consent,
source: packages/webapp/src/containers/Consent/locales/en/*.md,
translation: packages/webapp/src/containers/Consent/locales/%two_letters_code%/%original_file_name%,
},
# Shared translations
{
name: shared_locales,
source: packages/shared/locales/en/*.json,
translation: packages/shared/locales/%two_letters_code%/%original_file_name%,
},
# Backend tranlsations - skipping pdf (crop.json is copied jobs scheduler init during build)
{
name: api_job_locales,
Expand Down
12 changes: 11 additions & 1 deletion .github/workflows/crowdin-upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,26 @@ jobs:
max-parallel: 1 # Should be 1 to avoid parallel builds
matrix:
locales: [
# Frontend core translations
# Frontend core i18n public translations
{
source: packages/webapp/public/locales/en/*.json,
translation: packages/webapp/public/locales/%two_letters_code%/%original_file_name%,
},
# Frontend compiled translations
{
source: packages/webapp/src/locales/en/*.json,
translation: packages/webapp/src/locales/%two_letters_code%/%original_file_name%,
},
# Consent Forms
{
source: packages/webapp/src/containers/Consent/locales/en/*.md,
translation: packages/webapp/src/containers/Consent/locales/%two_letters_code%/%original_file_name%,
},
# Shared translations
{
source: packages/shared/locales/en/*.json,
translation: packages/shared/locales/%two_letters_code%/%original_file_name%,
},
# Backend tranlsations - skipping pdf (crop.json is copied jobs scheduler init during build)
{
source: packages/api/src/jobs/locales/en/*.json,
Expand Down
4 changes: 4 additions & 0 deletions packages/api/dev.export.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ cp ../webapp/public/locales/en/crop.json src/jobs/locales/en
cp ../webapp/public/locales/es/crop.json src/jobs/locales/es
cp ../webapp/public/locales/pt/crop.json src/jobs/locales/pt
cp ../webapp/public/locales/fr/crop.json src/jobs/locales/fr
cp ../webapp/public/locales/de/crop.json src/jobs/locales/de
cp ../webapp/public/locales/hi/crop.json src/jobs/locales/hi
cp ../webapp/public/locales/pa/crop.json src/jobs/locales/pa
cp ../webapp/public/locales/ml/crop.json src/jobs/locales/ml

# Give nodemon time to restart the API
sleep 10
Expand Down
4 changes: 2 additions & 2 deletions packages/api/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions packages/api/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "litefarm-api",
"version": "3.6.6",
"version": "3.6.7",
"description": "LiteFarm API server",
"main": "./api/src/server.js",
"type": "module",
Expand All @@ -25,7 +25,7 @@
"migrate:testing:seed": "knex seed:run --env=test --knexfile=./.knex/knexfile.js",
"migrate:rollback:testing:db": "NODE_ENV=test knex migrate:rollback --env=test --knexfile=./.knex/knexfile.js",
"i18n-scheduler": "npx i18next 'src/jobs/certification/**/*.js' -c 'src/jobs/locales/i18next-parser.config.js'",
"scheduler": "cp ../webapp/public/locales/en/crop.json src/jobs/locales/en && cp ../webapp/public/locales/es/crop.json src/jobs/locales/es && cp ../webapp/public/locales/pt/crop.json src/jobs/locales/pt && cp ../webapp/public/locales/fr/crop.json src/jobs/locales/fr && node src/jobs/index.js",
"scheduler": "cp ../webapp/public/locales/en/crop.json src/jobs/locales/en && cp ../webapp/public/locales/es/crop.json src/jobs/locales/es && cp ../webapp/public/locales/pt/crop.json src/jobs/locales/pt && cp ../webapp/public/locales/fr/crop.json src/jobs/locales/fr && cp ../webapp/public/locales/de/crop.json src/jobs/locales/de && cp ../webapp/public/locales/de/crop.json src/jobs/locales/de && cp ../webapp/public/locales/hi/crop.json src/jobs/locales/hi && cp ../webapp/public/locales/hi/crop.json src/jobs/locales/pa && cp ../webapp/public/locales/ml/crop.json src/jobs/locales/ml && node src/jobs/index.js",
"lint": "eslint src",
"fix-lint": "eslint src --fix",
"precommit": "lint-staged"
Expand Down
23 changes: 22 additions & 1 deletion packages/api/src/controllers/sensorController.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,21 @@ import { sensorErrors, parseSensorCsv } from '../../../shared/validation/sensorC
import syncAsyncResponse from '../util/syncAsyncResponse.js';
import knex from '../util/knex.js';

const getSensorTranslations = async (language) => {
// Remove country identifier from language preference
const parsedLanguage = language.includes('-') ? language.split('-')[0] : language;
let translations = await import(`../../../shared/locales/${parsedLanguage}/sensorCSV.json`, {
assert: { type: 'json' },
});
// Default to english in case where user language not supported
if (!translations) {
translations = await import(`../../../shared/locales/en/sensorCSV.json`, {
assert: { type: 'json' },
});
}
return translations.default;
};

const sensorController = {
async getSensorReadingTypes(req, res) {
const { location_id } = req.params;
Expand Down Expand Up @@ -101,9 +116,15 @@ const sensorController = {
'Ensemble Scientific',
);

//TODO: LF-4443 - Sensor should not use User language (unrestricted string), accept as body param or farm level detail
const [{ language_preference }] = await baseController.getIndividual(UserModel, user_id);

const { data, errors } = parseSensorCsv(req.file.buffer.toString(), language_preference);
const translations = await getSensorTranslations(language_preference);
const { data, errors } = parseSensorCsv(
req.file.buffer.toString(),
language_preference,
translations,
);

if (errors.length > 0) {
return await sendResponse(
Expand Down
Binary file added packages/api/src/jobs/locales/de/readme.pdf
Binary file not shown.
102 changes: 102 additions & 0 deletions packages/api/src/jobs/locales/de/translation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"EXPORT_README_TITLE": "Ihr Zertifizierungsexport verstehen",
"N": "N",
"N/A": "nicht angegeben",
"NO": "Nein",
"NOT_SURE": "Nicht sicher",
"OPERATION_NAME": "NAME DES VORGANGS",
"RECORD_A": {
"ACRES": "Hektar",
"AREA": "Bereich",
"BUILDING": "(Gebäude, Wald, Biodiversitätsfläche, Einfahrt)",
"CERTIFIED": "Zertifiziert",
"CROPS_OR_ANIMALS": "Kulturpflanze(n) oder Tierart pro Einheit",
"CURRENT_STATUS": "Aktueller Status - markiere eins pro Einheit",
"EXPORT_DOCUMENT_NAME": "NACHWEIS A",
"HEADER": "NACHWEIS A - STANDORTIDENTIFIKATION",
"HECTARES": "Hektare",
"INDIVIDUAL_PRODUCTION_UNIT": "für jede einzelne Produktionseinheit (z. B. Parzelle/Feld/GH/definierter Bereich - entsprechend Ihrer Operation und auf Ihrer Karte gekennzeichnet)",
"NAME_OR_ID": "Name oder Identifikations #",
"NEW": "Neu",
"NEW_AREA": "Bereich (Dieses Jahr hinzugefügt)",
"NON_ORGANIC": "Nicht-Bio Bereich in",
"NON_PRODUCING": "Nicht-produzierend",
"OPERATION_NAME": "NAME DES VORGANGS",
"ORGANIC_AREA": "Biologischer Bereich",
"PLEASE_VERIFY": "Bitte überprüfen Sie die Details und machen Sie jährlich alle notwendigen Änderungen. Wenn die Operation mehrere separate Standorte betreibt, stellen Sie sicher, dass Sie jeden Standort einzeln beschreiben. Bitte lesen Sie die unten angeführte Registerkarte für Beispiele, wie Sie dieses Formular ausfüllen.",
"PRODUCTION": "Produktion",
"REMOVED": "Aus Programm entfernt",
"REPORTING_PERIOD": "Berichtszeitraum",
"ROW_FT": "Zeile Fuß",
"ROW_M": "Reihe M",
"SIZE_IN_PREFERRED_UNIT": "Größe in Bevorzugter Maßeinheit",
"SPLIT": "Aufteilen/Parallel",
"SQ_FT": "Sq Ft",
"SQ_M": "",
"TRANSITIONAL": "Übergangsweise",
"WHY_REMOVED": "Warum Entfernt oder andere Notizen"
},
"RECORD_D": {
"DATE_COMPLETED": "Daten vollständig",
"EXPORT_DOCUMENT_NAME": "NACHWEIS D",
"FROM": "Von",
"HEADER": "Nachweis D - Saatgut und Pflanzmaterial",
"NOTE": {
"LIST_ALL": "Listen Sie ALLES an Samen und Pflanzenmaterial, die während des Berichtszeitraums verwendet werden. Bitte beachten Sie:",
"ONE": "Stellen Sie sicher, dass Kaufbelege, Etiketten, Anhänger und Bio-Zertifikate für sämtliches Saatgut und Pflanzmaterial zur Überprüfung während der Inspektion verfügbar sind.",
"TWO": {
"A": "Kommerzielle Verfügbarkeitssuche pro COS 5.3 - (Nachweis D1 oder Äquivalent)",
"B": "Dokumentation zur Bestätigung des Nicht-GVO-Status",
"C": "Dokumentation, die bestätigt, dass jegliche Behandlungen, wie Inokulanten oder Saatgutbeschichtung PSL-konform sind (Hinweis: NOP-Konformität reicht nicht aus)",
"PART_1": "Wo",
"PART_2": "nicht-Bio Saatgut/Pflanzenmaterial",
"PART_3": "verwendet wird, ist die folgende Dokumentation erforderlich, um bei der Überprüfung verfügbar zu sein"
}
},
"REPORTING_PERIOD": "Berichtszeitraum",
"TABLE_COLUMN": {
"IS_SEARCH_COMPLETED": "Wenn es sich um nicht-zertifiziertes Bio-Saatgut/Pflanzenmaterial handelt, wurde die Suche abgeschlossen (J/N)",
"LIST_SEED_TREATMENTS": "Saatgutbehandlung auflisten (falls vorhanden)",
"LOT_NUMBER": "Grundstück # (falls zutreffend)",
"NON_GE_DOCS_AVAILABLE": "Nicht-GVO Dokumente verfügbar (J/N)",
"NOTES": "Notizen/Termine für mehrjährige Pflanzungen/usw.",
"SEED_CROP_OR_PLANTING_STOCK": "Saatguternte/Sorten oder Pflanzmaterial",
"STATUS_CERTIFIED_ORGANIC": "Saatgut-/Pflanzmaterialstatus = Zertifiziert biologisch (J/N)",
"SUPPLIER": "Quelle/Lieferant",
"TREATMENT_DOCS_AVAILABLE": "Behandlungsdokumente verfügbar (J/N)"
},
"TO": "Bis"
},
"RECORD_I": {
"CLEANERS": "Reiniger",
"CROP_PRODUCTION_AIDS": "Hilfsmittel im Pflanzenbau",
"EXPORT_DOCUMENT_NAME": "NACHWEIS I",
"HEADER": "Nachweis I",
"INPUT_CATEGORY": "Eingabekategorie",
"LOCATIONS": "Standort(e)",
"NOTE": {
"LIST_ALL": "Listen Sie ALLE Eingaben auf, die in den letzten 12 Monaten oder seit Ihrem letzten eingereichten Nachweis I verwendet wurden. Sie können dieses Dokument verwenden, um einen fortlaufenden Nachweis der verwendeten Eingaben während der gesamten Saison zu führen.",
"LIVESTOCK_INPUTS": "Hinweis: Tierhaltungsinputs wie Futter, Futtermittelzusätze und -ergänzungen, Gesundheitsprodukte und Produktionshilfsmittel, Tierstreu usw. sind im Nachweis LI-Tierhaltungsinputs aufzulisten.",
"ONE": {
"PART_1": "Bodenverbesserungsmittel, Pflanzenernährung, Produktionshilfsmittel und -materialien:",
"PART_2": "zB. als Mulche, Düngemittel, Blattsprays, Kompost, Dung, Topf- oder Pflanzsubstratmischungen oder -komponenten, Torfmoos, Bodenverbesserungsmittel usw."
},
"PLEASE_USE_SEPARATE_RECORD": "Bitte verwenden Sie einen eigenen Inputnachweis für jede Inputkategorie wie unten beschrieben und laden Sie jede einzelne in den entsprechenden Upload-Speicherort von Abschnitt 99 hoch:",
"PREP_INPUTS": "Hinweis: Vorbereitungsinputs: Lebensmittelzusatzstoffe, andere Zutaten und Verarbeitungshilfsmittel sind im Nachweis PM - Verarbeitung Master Zutaten und Verarbeitungshilfsmittel aufzulisten.",
"TWO": "Reinigungsmittel, Desinfektionsmittel, Sanitärmittel, Schädlingsbekämpfmittel."
},
"REPORTING_PERIOD": "BERICHTSZEITRAUM",
"TABLE_COLUMN": {
"CROP_FIELD_APPLIED_TO": "Pflanze/Feld, auf der/dem angewendet oder Produktionseinheit, die verwendet wird in",
"DATE_USED": "Verwendetes Datum",
"LISTED_IN_PSL": "Auf der PSL gelistet? (J/N)",
"NOTES": "Anmerkungen",
"PRODUCT_NAME": "Produktname",
"QUANTITY": "Menge",
"SUPPLIER": "Markenname oder Quelle/Lieferant"
},
"VARIETALS": "Sorte(n)"
},
"Y": "J",
"YES": "Ja"
}
Binary file added packages/api/src/jobs/locales/hi/readme.pdf
Binary file not shown.
Loading

0 comments on commit 191024b

Please sign in to comment.