working on translations

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
This commit is contained in:
2026-01-15 22:51:23 +01:00
parent 0d1cdd35d1
commit 6de5f1f660
10 changed files with 242 additions and 183 deletions

View File

@@ -31,19 +31,16 @@ public class Path {
public static final String REDIRECT = "redirect"; public static final String REDIRECT = "redirect";
public static final String SEARCH = "search"; public static final String SEARCH = "search";
public static final String SERVICE = "service";
public static final String SETTINGS = "settings"; public static final String SETTINGS = "settings";
public static final String STATES = "states"; public static final String STATES = "states";
public static final String STARTED = "started"; public static final String STARTED = "started";
public static final String STATE = "state"; public static final String STATE = "state";
public static final String STOP = "stop"; public static final String STOP = "stop";
public static final String SUBMIT = "submit";
public static final String TAGGED = "tagged"; public static final String TAGGED = "tagged";
public static final String TOKEN = "token"; public static final String TOKEN = "token";
public static final String USER = "user"; public static final String USER = "user";
public static final String USES = "uses"; public static final String USES = "uses";
public static final String VIEW = "view";
} }

View File

@@ -5,8 +5,9 @@ package de.srsoftware.umbrella.core.constants;
* This is a collection of messages that appear throughout the project * This is a collection of messages that appear throughout the project
*/ */
public class Text { public class Text {
public static final String BOOLEAN = "Boolean";
public static final String BOOKMARK = "bookmark"; public static final String BOOKMARK = "bookmark";
public static final String BOOLEAN = "Boolean";
public static final String COMPANIES = "companies"; public static final String COMPANIES = "companies";
public static final String COMPANY = "company"; public static final String COMPANY = "company";
public static final String COMPANY_WITH_ID = "company ({id})"; public static final String COMPANY_WITH_ID = "company ({id})";
@@ -15,41 +16,51 @@ public class Text {
public static final String CONTACT_WITH_ID = "contact ({id})"; public static final String CONTACT_WITH_ID = "contact ({id})";
public static final String CUSTOMER = "customer"; public static final String CUSTOMER = "customer";
public static final String CUSTOMER_SETTINGS = "customer settings"; public static final String CUSTOMER_SETTINGS = "customer settings";
public static final String DOCUMENT = "document"; public static final String DOCUMENT = "document";
public static final String DOCUMENTS = "documents"; public static final String DOCUMENTS = "documents";
public static final String DOCUMENT_TYPE_ID = "document type id"; public static final String DOCUMENT_TYPE_ID = "document type id";
public static final String DOCUMENT_WITH_ID = "document ({id})"; public static final String DOCUMENT_WITH_ID = "document ({id})";
public static final String INVALID_DB_CODE = "Encountered invalid dbCode: {code}"; public static final String INVALID_DB_CODE = "Encountered invalid dbCode: {code}";
public static final String ITEM = "item"; public static final String ITEM = "item";
public static final String ITEMS = "items"; public static final String ITEMS = "items";
public static final String LOCATION = "location"; public static final String LOCATION = "location";
public static final String LOCATIONS = "locations"; public static final String LOCATIONS = "locations";
public static final String LOGIN_SERVICE = "login service"; public static final String LOGIN_SERVICE = "login service";
public static final String LONG = "Long"; public static final String LONG = "Long";
public static final String NOTE = "note"; public static final String NOTE = "note";
public static final String NOTE_WITH_ID = "note ({id})"; public static final String NOTE_WITH_ID = "note ({id})";
public static final String NUMBER = "number"; public static final String NUMBER = "number";
public static final String PATH = "path"; public static final String PATH = "path";
public static final String PROJECT = "project"; public static final String PROJECT = "project";
public static final String PROPERTIES = "properties";
public static final String PROJECT_WITH_ID = "project ({id})"; public static final String PROJECT_WITH_ID = "project ({id})";
public static final String PROPERTIES = "properties";
public static final String PROPERTY = "property"; public static final String PROPERTY = "property";
public static final String SENDER = "sender"; public static final String SENDER = "sender";
public static final String SESSION = "session";
public static final String SERVICE_WITH_ID = "service ({id})"; public static final String SERVICE_WITH_ID = "service ({id})";
public static final String SESSION = "session";
public static final String SETTINGS = "settings"; public static final String SETTINGS = "settings";
public static final String STRING = "string"; public static final String STRING = "string";
public static final String TABLE_WITH_NAME = "table {name}"; public static final String TABLE_WITH_NAME = "table {name}";
public static final String TAGS = "tags"; public static final String TAGS = "tags";
public static final String TASK = "task"; public static final String TASK = "task";
public static final String TASKS = "tasks"; public static final String TASKS = "tasks";
public static final String TIME_WITH_ID = "time ({id})"; public static final String TIME_WITH_ID = "time ({id})";
public static final String TYPE = "type"; public static final String TYPE = "type";
public static final String UNIT = "unit";
public static final String USER_WITH_ID = "user ({id})"; public static final String USER_WITH_ID = "user ({id})";
public static final String WIKI_PAGE = "wiki page"; public static final String WIKI_PAGE = "wiki page";
public static final String WIKI_PAGES = "wiki pages"; public static final String WIKI_PAGES = "wiki pages";
public static final String UNIT = "unit";
public static final String T_UNIT_PRICE = "unit price"; public static final String UNIT_PRICE = "unit price";
public static final String USER = "user"; public static final String USER = "user";
public static final String USERS = "users"; public static final String USERS = "users";

View File

@@ -24,6 +24,7 @@ import static de.srsoftware.umbrella.core.constants.Field.SENDER;
import static de.srsoftware.umbrella.core.constants.Field.STATE; import static de.srsoftware.umbrella.core.constants.Field.STATE;
import static de.srsoftware.umbrella.core.constants.Field.TYPE; import static de.srsoftware.umbrella.core.constants.Field.TYPE;
import static de.srsoftware.umbrella.core.constants.Field.UNIT; import static de.srsoftware.umbrella.core.constants.Field.UNIT;
import static de.srsoftware.umbrella.core.constants.Field.UNIT_PRICE;
import static de.srsoftware.umbrella.core.constants.Field.USER; import static de.srsoftware.umbrella.core.constants.Field.USER;
import static de.srsoftware.umbrella.core.constants.Path.*; import static de.srsoftware.umbrella.core.constants.Path.*;
import static de.srsoftware.umbrella.core.constants.Text.*; import static de.srsoftware.umbrella.core.constants.Text.*;

View File

@@ -15,6 +15,7 @@ import static de.srsoftware.umbrella.core.constants.Field.NUMBER;
import static de.srsoftware.umbrella.core.constants.Field.SENDER; import static de.srsoftware.umbrella.core.constants.Field.SENDER;
import static de.srsoftware.umbrella.core.constants.Field.TYPE; import static de.srsoftware.umbrella.core.constants.Field.TYPE;
import static de.srsoftware.umbrella.core.constants.Field.UNIT; import static de.srsoftware.umbrella.core.constants.Field.UNIT;
import static de.srsoftware.umbrella.core.constants.Field.UNIT_PRICE;
import static de.srsoftware.umbrella.core.constants.Text.*; import static de.srsoftware.umbrella.core.constants.Text.*;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*; import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.*;
import static de.srsoftware.umbrella.core.model.Document.DEFAULT_THOUSANDS_SEPARATOR; import static de.srsoftware.umbrella.core.model.Document.DEFAULT_THOUSANDS_SEPARATOR;

View File

@@ -7,8 +7,8 @@ import static de.srsoftware.umbrella.core.ConnectionProvider.connect;
import static de.srsoftware.umbrella.core.ModuleRegistry.companyService; import static de.srsoftware.umbrella.core.ModuleRegistry.companyService;
import static de.srsoftware.umbrella.core.ModuleRegistry.translator; import static de.srsoftware.umbrella.core.ModuleRegistry.translator;
import static de.srsoftware.umbrella.core.constants.Field.*; import static de.srsoftware.umbrella.core.constants.Field.*;
import static de.srsoftware.umbrella.core.constants.Text.T_UNIT_PRICE;
import static de.srsoftware.umbrella.core.constants.Text.UNIT; import static de.srsoftware.umbrella.core.constants.Text.UNIT;
import static de.srsoftware.umbrella.core.constants.Text.UNIT_PRICE;
import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.databaseException; import static de.srsoftware.umbrella.core.exceptions.UmbrellaException.databaseException;
import static de.srsoftware.umbrella.stock.Constants.TABLE_ITEMS; import static de.srsoftware.umbrella.stock.Constants.TABLE_ITEMS;
import static java.lang.System.Logger.Level.DEBUG; import static java.lang.System.Logger.Level.DEBUG;
@@ -75,7 +75,7 @@ public class ItemDb {
LOG.log(DEBUG, " using location: {0}",location.resolve().name()); LOG.log(DEBUG, " using location: {0}",location.resolve().name());
var stockItem = new Item(0,company,0,location,code,name,description); var stockItem = new Item(0,company,0,location,code,name,description);
var props = stockItem.properties(); var props = stockItem.properties();
var keyUnitPrice = translator().translate(lang,T_UNIT_PRICE); var keyUnitPrice = translator().translate(lang, Text.UNIT_PRICE);
var keyUnit = translator().translate(lang, Text.UNIT); var keyUnit = translator().translate(lang, Text.UNIT);
var keyTax = translator().translate(lang,TAX_RATE); var keyTax = translator().translate(lang,TAX_RATE);
var keyLegacyId = translator().translate(lang,"legacy_id"); var keyLegacyId = translator().translate(lang,"legacy_id");

View File

@@ -14,6 +14,7 @@
"basic_data": "Basis-Daten", "basic_data": "Basis-Daten",
"bookmark": "Lesezeichen", "bookmark": "Lesezeichen",
"bookmarks": "Lesezeichen", "bookmarks": "Lesezeichen",
"Boolean": "Boolean",
"by": "von", "by": "von",
"cancel": "abbrechen", "cancel": "abbrechen",
@@ -30,6 +31,7 @@
"confirm_state": "Status wirklich ändern?", "confirm_state": "Status wirklich ändern?",
"companies": "Firmen", "companies": "Firmen",
"company": "Firma", "company": "Firma",
"company ({id})": "Firma ({id})",
"company_optional": "Firma (optional)", "company_optional": "Firma (optional)",
"confirmation": "Bestätigung", "confirmation": "Bestätigung",
"complete": "abschließen", "complete": "abschließen",
@@ -53,6 +55,7 @@
"customer_address": "Adresse", "customer_address": "Adresse",
"customer_email": "Emailadresse des Kunden", "customer_email": "Emailadresse des Kunden",
"customer_id": "Kundennummer", "customer_id": "Kundennummer",
"customer settings": "Kunden-Einstellungen",
"custom_tag_colors": "Nutzerdefinierte Tag-Farben", "custom_tag_colors": "Nutzerdefinierte Tag-Farben",
"data_sent": "Daten übermittelt", "data_sent": "Daten übermittelt",
@@ -72,6 +75,8 @@
"document": "Dokument", "document": "Dokument",
"document_list": "Dokumente", "document_list": "Dokumente",
"documents": "Dokumente", "documents": "Dokumente",
"document type id": "Dokumenten-Typ-ID",
"document ({id})": "Dokument ({id})",
"do_login" : "anmelden", "do_login" : "anmelden",
"do_open" : "öffnen", "do_open" : "öffnen",
"do_send" : "versenden", "do_send" : "versenden",
@@ -87,6 +92,7 @@
"edit_service": "Login-Service \"{name}\" bearbeiten", "edit_service": "Login-Service \"{name}\" bearbeiten",
"email": "E-Mail", "email": "E-Mail",
"email_or_username": "Email oder Nutzername", "email_or_username": "Email oder Nutzername",
"Encountered invalid dbCode: {code}": "Ungültiger dbCode aufgetreten: {code}",
"end": "Ende", "end": "Ende",
"estimated_time": "geschätzte Zeit", "estimated_time": "geschätzte Zeit",
"estimated_times": "geschätzte Zeiten", "estimated_times": "geschätzte Zeiten",
@@ -167,10 +173,13 @@
"local_court": "Amtsgericht", "local_court": "Amtsgericht",
"locality": "Ort", "locality": "Ort",
"location": "Ort", "location": "Ort",
"locations": "Orte",
"login" : "Anmeldung", "login" : "Anmeldung",
"login service": "Login-Service",
"login_services": "Login-Services", "login_services": "Login-Services",
"logout": "Abmelden", "logout": "Abmelden",
"logout_user": "{user} abmelden", "logout_user": "{user} abmelden",
"Long": "Ganzzahl",
"markdown_code": "Markdown-Code", "markdown_code": "Markdown-Code",
"markdown_supported": "Markdown & <a target=\"_blank\" href=\"https://plantuml.com\">Plantuml</a> nutzbar!", "markdown_supported": "Markdown & <a target=\"_blank\" href=\"https://plantuml.com\">Plantuml</a> nutzbar!",
@@ -218,6 +227,7 @@
"no_project_for_id": "Kein Projekt mit ID {0} gefunden!", "no_project_for_id": "Kein Projekt mit ID {0} gefunden!",
"no_task_for_id": "Keine Aufgabe mit ID {0} gefunden!", "no_task_for_id": "Keine Aufgabe mit ID {0} gefunden!",
"note": "Notiz", "note": "Notiz",
"note ({id})": "Notiz ({id})",
"notes": "Notizen", "notes": "Notizen",
"not_recent_version": "Die ist nicht die neuste Version dieser Seite!", "not_recent_version": "Die ist nicht die neuste Version dieser Seite!",
"number": "Nummer", "number": "Nummer",
@@ -230,6 +240,7 @@
"page": "Seite", "page": "Seite",
"parent_task": "übergeordnete Aufgabe", "parent_task": "übergeordnete Aufgabe",
"password" : "Passwort", "password" : "Passwort",
"path": "Pfad",
"permission": { "permission": {
"EDIT": "lesen/schreiben", "EDIT": "lesen/schreiben",
"OWNER": "Besitzer" "OWNER": "Besitzer"
@@ -250,7 +261,10 @@
"priority": "Priorität", "priority": "Priorität",
"processing_code": "Code wird verarbeitet…", "processing_code": "Code wird verarbeitet…",
"project": "Projekt", "project": "Projekt",
"project ({id})": "Projekt ({id})",
"projects": "Projekte", "projects": "Projekte",
"properties": "Eigenschaften",
"property": "Eigenschaft",
"record": "Eintrag", "record": "Eintrag",
"region": "Bundesland", "region": "Bundesland",
@@ -274,6 +288,8 @@
"sender_tax_id": "Steuernummer", "sender_tax_id": "Steuernummer",
"sent_email": "Email gesendet", "sent_email": "Email gesendet",
"service": "Service", "service": "Service",
"service ({id})": "Service ({id})",
"session": "Sitzung",
"settings" : "Einstellungen", "settings" : "Einstellungen",
"share_with": "Teilen mit:", "share_with": "Teilen mit:",
"show": "anzeigen", "show": "anzeigen",
@@ -301,12 +317,14 @@
}, },
"stock": "Inventar", "stock": "Inventar",
"street": "Straße", "street": "Straße",
"string": "Text",
"subject": "Betreff", "subject": "Betreff",
"subtask": "Unteraufgabe", "subtask": "Unteraufgabe",
"subtasks": "Unteraufgaben", "subtasks": "Unteraufgaben",
"succeeding_document": "Nachfolge-Dokument", "succeeding_document": "Nachfolge-Dokument",
"sum_of_records": "Summe der ausgewählten Einträge", "sum_of_records": "Summe der ausgewählten Einträge",
"table {name}": "Tabelle {name}",
"tag_name": "Tag-Name", "tag_name": "Tag-Name",
"tag_uses": "Verwendung des Tags „{tag}“", "tag_uses": "Verwendung des Tags „{tag}“",
"tags": "Tags", "tags": "Tags",
@@ -319,6 +337,7 @@
"tax_rate": "Steuersatz", "tax_rate": "Steuersatz",
"template": "Vorlage", "template": "Vorlage",
"theme": "Design", "theme": "Design",
"time ({id})": "Zeit ({id})",
"times": "Zeiten", "times": "Zeiten",
"timetracking": "Zeiterfassung", "timetracking": "Zeiterfassung",
"title_not_available": "„{title}“ ist als Seitenname nicht mehr verfügbar!", "title_not_available": "„{title}“ ist als Seitenname nicht mehr verfügbar!",
@@ -333,6 +352,7 @@
"unexpected_item_id_format": "Alte Artikel-ID sollte die Form tt:zz:zz haben, habe aber {0} gefunden!", "unexpected_item_id_format": "Alte Artikel-ID sollte die Form tt:zz:zz haben, habe aber {0} gefunden!",
"unit": "Einheit", "unit": "Einheit",
"unit price": "Preis/Einheit",
"unit_price": "Preis/Einheit", "unit_price": "Preis/Einheit",
"unknown_item_location": "Artikel {0} von {1} {2} ist verknüpft mit unbekanntem Lagerort {3}!", "unknown_item_location": "Artikel {0} von {1} {2} ist verknüpft mit unbekanntem Lagerort {3}!",
"unlink": "Trennen", "unlink": "Trennen",
@@ -340,6 +360,7 @@
"UPDATE_USERS" : "Nutzer aktualisieren", "UPDATE_USERS" : "Nutzer aktualisieren",
"upload_file": "Datei hochladen", "upload_file": "Datei hochladen",
"user": "Benutzer", "user": "Benutzer",
"user ({id})": "Benutzer ({id})",
"user_list": "Benutzer-Liste", "user_list": "Benutzer-Liste",
"user_module" : "Umbrella User-Verwaltung", "user_module" : "Umbrella User-Verwaltung",
"users": "Benutzer", "users": "Benutzer",
@@ -351,6 +372,8 @@
"welcome" : "Willkommen, {0}", "welcome" : "Willkommen, {0}",
"wiki": "Wiki", "wiki": "Wiki",
"wikis": "Wiki-Seiten", "wikis": "Wiki-Seiten",
"wiki page": "Wiki-Seite",
"wiki pages": "Wiki-Seiten",
"wiki_pages": "Wiki-Seiten", "wiki_pages": "Wiki-Seiten",
"value": "Wert", "value": "Wert",

View File

@@ -14,6 +14,7 @@
"basic_data": "basic data", "basic_data": "basic data",
"bookmark": "bookmark", "bookmark": "bookmark",
"bookmarks": "bookmarks", "bookmarks": "bookmarks",
"Boolean": "Boolean",
"by": "by", "by": "by",
"cancel": "cancel", "cancel": "cancel",
@@ -30,6 +31,7 @@
"confirm_state": "Really change state?", "confirm_state": "Really change state?",
"companies": "companies", "companies": "companies",
"company": "company", "company": "company",
"company ({id})": "company ({id})",
"company_optional": "company (optional)", "company_optional": "company (optional)",
"confirmation": "confirmation", "confirmation": "confirmation",
"complete": "complete", "complete": "complete",
@@ -53,6 +55,7 @@
"customer_address": "address", "customer_address": "address",
"customer_email": "customer email address", "customer_email": "customer email address",
"customer_id": "customer ID", "customer_id": "customer ID",
"customer settings": "customer settings",
"custom_tag_colors": "custom tag colors", "custom_tag_colors": "custom tag colors",
"data_sent": "data sent", "data_sent": "data sent",
@@ -72,6 +75,8 @@
"document": "document", "document": "document",
"document_list": "document list", "document_list": "document list",
"documents": "documents", "documents": "documents",
"document type id": "document type id",
"document ({id})":"document ({id})",
"do_login" : "do login", "do_login" : "do login",
"do_open" : "open", "do_open" : "open",
"do_send" : "send", "do_send" : "send",
@@ -87,6 +92,7 @@
"edit_service": "edit login service \"{name}\"", "edit_service": "edit login service \"{name}\"",
"email": "email", "email": "email",
"email_or_username": "email or username", "email_or_username": "email or username",
"Encountered invalid dbCode: {code}": "Encountered invalid dbCode: {code}",
"end": "end", "end": "end",
"estimated_time": "estimated duration", "estimated_time": "estimated duration",
"estimated_times": "estimated durations", "estimated_times": "estimated durations",
@@ -167,10 +173,13 @@
"local_court": "local court", "local_court": "local court",
"locality": "locality", "locality": "locality",
"location": "location", "location": "location",
"locations": "locations",
"login" : "login", "login" : "login",
"login service": "login service",
"login_services": "login service", "login_services": "login service",
"logout": "logout", "logout": "logout",
"logout_user": "logout {user}", "logout_user": "logout {user}",
"Long": "Long",
"markdown_code": "Markdown-Code", "markdown_code": "Markdown-Code",
"markdown_supported": "Markdown & <a target=\"_blank\" href=\"https://plantuml.com\">Plantuml</a> supported!", "markdown_supported": "Markdown & <a target=\"_blank\" href=\"https://plantuml.com\">Plantuml</a> supported!",
@@ -218,6 +227,7 @@
"no_project_for_id": "No project found for id {0}", "no_project_for_id": "No project found for id {0}",
"no_task_for_id": "No task found for id {0}", "no_task_for_id": "No task found for id {0}",
"note": "note", "note": "note",
"note ({id})":"note ({id})",
"notes": "notes", "notes": "notes",
"not_recent_version": "This is not the current version of this page!", "not_recent_version": "This is not the current version of this page!",
"number": "number", "number": "number",
@@ -230,6 +240,7 @@
"page": "page", "page": "page",
"parent_task": "parent task", "parent_task": "parent task",
"password" : "password", "password" : "password",
"path": "path",
"permission": { "permission": {
"EDIT": "read/write", "EDIT": "read/write",
"OWNER": "owner" "OWNER": "owner"
@@ -250,7 +261,10 @@
"priority": "priority", "priority": "priority",
"processing_code": "processing code…", "processing_code": "processing code…",
"project": "project", "project": "project",
"project ({id})": "project ({id})",
"projects": "projects", "projects": "projects",
"properties": "properties",
"property": "property",
"record": "record", "record": "record",
"region": "region", "region": "region",
@@ -274,6 +288,8 @@
"sender_tax_id": "tax ID", "sender_tax_id": "tax ID",
"sent_email": "email sent", "sent_email": "email sent",
"service": "service", "service": "service",
"service ({id})": "service ({id})",
"session": "session",
"settings" : "settings", "settings" : "settings",
"share_with": "share with:", "share_with": "share with:",
"show": "show", "show": "show",
@@ -301,12 +317,14 @@
}, },
"stock": "stock", "stock": "stock",
"street": "street", "street": "street",
"string": "string",
"subject": "subject", "subject": "subject",
"subtask": "subtask", "subtask": "subtask",
"subtasks": "subtasks", "subtasks": "subtasks",
"succeeding_document": "succeeding document", "succeeding_document": "succeeding document",
"sum_of_records": "sum of records", "sum_of_records": "sum of records",
"table {name}": "table {name}",
"tag_name": "tag name", "tag_name": "tag name",
"tag_uses": "usage of tag „{tag}“", "tag_uses": "usage of tag „{tag}“",
"tags": "tags", "tags": "tags",
@@ -319,13 +337,14 @@
"tax_rate": "tax rate", "tax_rate": "tax rate",
"template": "template", "template": "template",
"theme": "design", "theme": "design",
"time ({id})": "time ({id})",
"times": "times", "times": "times",
"timetracking": "time tracking", "timetracking": "time tracking",
"title_not_available": "„{title}“ is not available as page name!", "title_not_available": "„{title}“ is not available as page name!",
"title_or_desc": "title/description", "title_or_desc": "title/description",
"toggle_objects": "toggle {objects}", "toggle_objects": "toggle {objects}",
"tutorial": "tutorial", "tutorial": "tutorial",
"type": "document type", "type": "type",
"type_confirmation": "confirmation", "type_confirmation": "confirmation",
"type_invoice": "invoice", "type_invoice": "invoice",
"type_offer": "offer", "type_offer": "offer",
@@ -333,6 +352,7 @@
"unexpected_item_id_format": "Expected old item ID to be of the form ss:dd:dd, encountered {0}!", "unexpected_item_id_format": "Expected old item ID to be of the form ss:dd:dd, encountered {0}!",
"unit": "unit", "unit": "unit",
"unit price": "unit price",
"unit_price": "price/unit", "unit_price": "price/unit",
"unknown_item_location": "Item {0} of {1} {2} refers to location {3}, which is unknown!", "unknown_item_location": "Item {0} of {1} {2} refers to location {3}, which is unknown!",
"unlink": "unlink", "unlink": "unlink",
@@ -340,14 +360,20 @@
"UPDATE_USERS" : "update users", "UPDATE_USERS" : "update users",
"upload_file": "upload file", "upload_file": "upload file",
"user": "user", "user": "user",
"user ({id})": "user ({id})",
"user_list": "user list", "user_list": "user list",
"user_module" : "Umbrella user management", "user_module" : "Umbrella user management",
"users": "users", "users": "users",
"user_created_entity": "{user} created \"{entity}\"",
"user_deleted_entity": "{user} deleted \"{entity}\"",
"user_updated_entity": "{user} updated \"{entity}\"",
"website": "website", "website": "website",
"welcome" : "Welcome, {0}", "welcome" : "Welcome, {0}",
"wiki": "Wiki", "wiki": "Wiki",
"wikis": "wiki pages", "wikis": "wiki pages",
"wiki page": "wiki page",
"wiki pages": "wiki pages",
"wiki_pages": "wiki pages", "wiki_pages": "wiki pages",
"value": "value", "value": "value",