mirror of
https://github.com/mtheall/ftpd.git
synced 2025-06-18 19:15:33 -04:00
Initial i18n
This commit is contained in:
parent
0665777a85
commit
2e4e9875b1
10
Makefile.3ds
10
Makefile.3ds
@ -34,6 +34,7 @@ include $(DEVKITARM)/3ds_rules
|
|||||||
SOURCES := source source/3ds
|
SOURCES := source source/3ds
|
||||||
DATA := data
|
DATA := data
|
||||||
INCLUDES := include
|
INCLUDES := include
|
||||||
|
ROMFS := 3ds/romfs
|
||||||
|
|
||||||
ifeq ($(strip $(CLASSIC)),)
|
ifeq ($(strip $(CLASSIC)),)
|
||||||
APP_TITLE := ftpd pro
|
APP_TITLE := ftpd pro
|
||||||
@ -41,7 +42,6 @@ TARGET := 3ds/ftpd
|
|||||||
BUILD := 3ds/build
|
BUILD := 3ds/build
|
||||||
SOURCES += source/imgui
|
SOURCES += source/imgui
|
||||||
GRAPHICS := 3ds/gfx
|
GRAPHICS := 3ds/gfx
|
||||||
ROMFS := 3ds/romfs
|
|
||||||
GFXBUILD := $(ROMFS)
|
GFXBUILD := $(ROMFS)
|
||||||
RSF_FILE := meta/ftpd-cia.rsf
|
RSF_FILE := meta/ftpd-cia.rsf
|
||||||
else
|
else
|
||||||
@ -71,6 +71,7 @@ CFLAGS := -g -Wall $(OPTIMIZE) -mword-relocations \
|
|||||||
CFLAGS += $(INCLUDE) -DARM11 -D_3DS \
|
CFLAGS += $(INCLUDE) -DARM11 -D_3DS \
|
||||||
-DSTATUS_STRING="\"ftpd v$(VERSION)\"" \
|
-DSTATUS_STRING="\"ftpd v$(VERSION)\"" \
|
||||||
-DIMGUI_DISABLE_INCLUDE_IMCONFIG_H=1 \
|
-DIMGUI_DISABLE_INCLUDE_IMCONFIG_H=1 \
|
||||||
|
-D"_(x)=getText(x)" \
|
||||||
-DNO_IPV6 -DFTPDCONFIG="\"/config/ftpd/ftpd.cfg\"" \
|
-DNO_IPV6 -DFTPDCONFIG="\"/config/ftpd/ftpd.cfg\"" \
|
||||||
-DANTI_ALIAS=1
|
-DANTI_ALIAS=1
|
||||||
|
|
||||||
@ -107,8 +108,8 @@ export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
|||||||
|
|
||||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
export DEPSDIR := $(CURDIR)/$(BUILD)
|
||||||
|
|
||||||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
export CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
||||||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
export CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
||||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
||||||
SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist)))
|
SHLISTFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.shlist)))
|
||||||
GFXFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.t3s)))
|
GFXFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.t3s)))
|
||||||
@ -308,9 +309,10 @@ $(TARGET).bnr: $(TOPDIR)/$(BNR_IMAGE) $(TOPDIR)/$(BNR_AUDIO)
|
|||||||
@bannertool makebanner -o $@ -i $(TOPDIR)/$(BNR_IMAGE) -a $(TOPDIR)/$(BNR_AUDIO)
|
@bannertool makebanner -o $@ -i $(TOPDIR)/$(BNR_IMAGE) -a $(TOPDIR)/$(BNR_AUDIO)
|
||||||
@echo "built ... $@"
|
@echo "built ... $@"
|
||||||
|
|
||||||
|
|
||||||
-include $(DEPSDIR)/*.d
|
-include $(DEPSDIR)/*.d
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------
|
||||||
endif
|
endif
|
||||||
#---------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TOPDIR)/Makefile.i18n
|
||||||
|
48
Makefile.i18n
Normal file
48
Makefile.i18n
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
ifeq ($(strip $(ROMFS)),)
|
||||||
|
$(error "Please include from a Makefile that defines ROMFS")
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(strip $(TARGET)),)
|
||||||
|
$(error "Please include from a Makefile that defines TARGET")
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Note: Have your main target, e.g. $(OUTPUT).nro, depend on ROMFS_DEPS
|
||||||
|
|
||||||
|
.PHONY: clean-mo
|
||||||
|
|
||||||
|
MO_FILES := $(foreach lang,de_DE en_GB en_US es_ES fr_FR it_IT ja_JP nl_NL pt_PT ru_RU,$(TOPDIR)/$(ROMFS)/locale/$(lang)/ftpd.mo)
|
||||||
|
|
||||||
|
$(OUTPUT).nds: $(MO_FILES)
|
||||||
|
$(OUTPUT).3dsx: $(MO_FILES)
|
||||||
|
$(OUTPUT).cia: $(MO_FILES)
|
||||||
|
$(OUTPUT).nro: $(MO_FILES)
|
||||||
|
|
||||||
|
$(MO_FILES): $(TOPDIR)/$(ROMFS)/locale/%/ftpd.mo: $(TOPDIR)/po/%/ftpd.po
|
||||||
|
@echo "Building $@"
|
||||||
|
@[ -d $(dir $@) ] || mkdir -p $(dir $@)
|
||||||
|
msgfmt -c --output-file=$@ $<
|
||||||
|
|
||||||
|
$(TOPDIR)/po/%.po: $(TOPDIR)/po/$(notdir $(TARGET)).pot
|
||||||
|
@echo "Building $@"
|
||||||
|
@[ -d $(dir $@) ] || mkdir -p $(dir $@)
|
||||||
|
@if [ -f $@ ]; \
|
||||||
|
then \
|
||||||
|
msgmerge --backup=off -qU $@ $< && touch $@; \
|
||||||
|
else \
|
||||||
|
msginit -i $< -l $*.UTF-8 -o $@; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
$(TOPDIR)/po/$(notdir $(TARGET)).pot: $(CFILES) $(CPPFILES) $(CXXFILES)
|
||||||
|
@echo "Building $@"
|
||||||
|
@[ -d $(dir $@) ] || mkdir -p $(dir $@)
|
||||||
|
xgettext -o $@ $^ -k_ -c -s \
|
||||||
|
--from-code="UTF-8" \
|
||||||
|
--copyright-holder="Michael Theall" \
|
||||||
|
--package-name="$(APP_TITLE)" \
|
||||||
|
--package-version="$(APP_DESCRIPTION)" \
|
||||||
|
--msgid-bugs-address="pigman46@gmail.com"
|
||||||
|
|
||||||
|
clean: clean-mo
|
||||||
|
|
||||||
|
clean-mo:
|
||||||
|
@$(RM) $(MO_FILES)
|
@ -7,11 +7,12 @@ CXXFILES := $(wildcard source/*.cpp source/imgui/*.cpp source/linux/*.cpp)
|
|||||||
OFILES := $(patsubst source/%,$(BUILD)/%,$(CFILES:.c=.c.o))
|
OFILES := $(patsubst source/%,$(BUILD)/%,$(CFILES:.c=.c.o))
|
||||||
OXXFILES := $(patsubst source/%,$(BUILD)/%,$(CXXFILES:.cpp=.cpp.o))
|
OXXFILES := $(patsubst source/%,$(BUILD)/%,$(CXXFILES:.cpp=.cpp.o))
|
||||||
|
|
||||||
CPPFLAGS := -g -Wall -pthread -Iinclude -Isource/linux \
|
CPPFLAGS := -g -O0 -Wall -pthread -Iinclude -Isource/linux \
|
||||||
`pkg-config --cflags gl glfw3` \
|
`pkg-config --cflags gl glfw3` \
|
||||||
-DSTATUS_STRING="\"ftpd v$(VERSION)\"" \
|
-DSTATUS_STRING="\"ftpd v$(VERSION)\"" \
|
||||||
-DIMGUI_DISABLE_INCLUDE_IMCONFIG_H=1 \
|
-DIMGUI_DISABLE_INCLUDE_IMCONFIG_H=1 \
|
||||||
-DIMGUI_IMPL_OPENGL_LOADER_GLAD=1 \
|
-DIMGUI_IMPL_OPENGL_LOADER_GLAD=1 \
|
||||||
|
-D"_(x)=getText(x)" \
|
||||||
-DFTPDCONFIG="\"ftpd.cfg\""
|
-DFTPDCONFIG="\"ftpd.cfg\""
|
||||||
CFLAGS := $(CPPFLAGS)
|
CFLAGS := $(CPPFLAGS)
|
||||||
CXXFLAGS := $(CPPFLAGS) -std=gnu++17
|
CXXFLAGS := $(CPPFLAGS) -std=gnu++17
|
||||||
|
@ -47,6 +47,7 @@ CFLAGS := -g -Wall $(OPTIMIZE) \
|
|||||||
$(ARCH) $(INCLUDE) -DARM9 -DNDS \
|
$(ARCH) $(INCLUDE) -DARM9 -DNDS \
|
||||||
-DSTATUS_STRING="\"ftpd v$(VERSION)\"" \
|
-DSTATUS_STRING="\"ftpd v$(VERSION)\"" \
|
||||||
-DIMGUI_DISABLE_INCLUDE_IMCONFIG_H=1 \
|
-DIMGUI_DISABLE_INCLUDE_IMCONFIG_H=1 \
|
||||||
|
-D"_(x)=getText(x)" \
|
||||||
-DNO_IPV6 -DCLASSIC -DFTPDCONFIG="\"/config/ftpd/ftpd.cfg\""
|
-DNO_IPV6 -DCLASSIC -DFTPDCONFIG="\"/config/ftpd/ftpd.cfg\""
|
||||||
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++17
|
||||||
ASFLAGS := -g $(ARCH)
|
ASFLAGS := -g $(ARCH)
|
||||||
|
@ -44,6 +44,7 @@ APP_VERSION := $(VERSION)
|
|||||||
SOURCES := source source/switch
|
SOURCES := source source/switch
|
||||||
DATA := data
|
DATA := data
|
||||||
INCLUDES := include
|
INCLUDES := include
|
||||||
|
ROMFS := switch/romfs
|
||||||
|
|
||||||
ifeq ($(strip $(CLASSIC)),)
|
ifeq ($(strip $(CLASSIC)),)
|
||||||
APP_TITLE := ftpd pro $(VERSION)
|
APP_TITLE := ftpd pro $(VERSION)
|
||||||
@ -51,7 +52,6 @@ TARGET := switch/ftpd
|
|||||||
BUILD := switch/build
|
BUILD := switch/build
|
||||||
SOURCES += source/imgui
|
SOURCES += source/imgui
|
||||||
GRAPHICS := switch/gfx
|
GRAPHICS := switch/gfx
|
||||||
ROMFS := switch/romfs
|
|
||||||
else
|
else
|
||||||
APP_TITLE := ftpd classic $(VERSION)
|
APP_TITLE := ftpd classic $(VERSION)
|
||||||
TARGET := switch-classic/ftpd-classic
|
TARGET := switch-classic/ftpd-classic
|
||||||
@ -74,6 +74,7 @@ CFLAGS := -g -Wall -Wno-narrowing $(OPTIMIZE) \
|
|||||||
CFLAGS += $(INCLUDE) -D__SWITCH__ \
|
CFLAGS += $(INCLUDE) -D__SWITCH__ \
|
||||||
-DSTATUS_STRING="\"ftpd v$(VERSION)\"" \
|
-DSTATUS_STRING="\"ftpd v$(VERSION)\"" \
|
||||||
-DIMGUI_DISABLE_INCLUDE_IMCONFIG_H=1 \
|
-DIMGUI_DISABLE_INCLUDE_IMCONFIG_H=1 \
|
||||||
|
-D"_(x)=getText(x)" \
|
||||||
-DFTPDCONFIG="\"/config/ftpd/ftpd.cfg\"" \
|
-DFTPDCONFIG="\"/config/ftpd/ftpd.cfg\"" \
|
||||||
`$(PREFIX)pkg-config --cflags libzstd`
|
`$(PREFIX)pkg-config --cflags libzstd`
|
||||||
|
|
||||||
@ -315,3 +316,5 @@ $(OFILES_SRC) : $(HFILES_BIN)
|
|||||||
#---------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------
|
||||||
endif
|
endif
|
||||||
#---------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
include $(TOPDIR)/Makefile.i18n
|
||||||
|
@ -77,7 +77,7 @@ public:
|
|||||||
/// \brief Seek to file position
|
/// \brief Seek to file position
|
||||||
/// \param pos_ File position
|
/// \param pos_ File position
|
||||||
/// \param origin_ Reference position (\sa std::fseek)
|
/// \param origin_ Reference position (\sa std::fseek)
|
||||||
std::make_signed_t<std::size_t> seek (std::size_t pos_, int origin_);
|
std::make_signed_t<std::size_t> seek (std::size_t pos_, int origin_ = SEEK_SET);
|
||||||
|
|
||||||
/// \brief Read data
|
/// \brief Read data
|
||||||
/// \param buffer_ Output buffer
|
/// \param buffer_ Output buffer
|
||||||
|
@ -51,6 +51,9 @@ public:
|
|||||||
/// \param path_ Path to config file
|
/// \param path_ Path to config file
|
||||||
bool save (char const *path_);
|
bool save (char const *path_);
|
||||||
|
|
||||||
|
/// \brief Get language
|
||||||
|
std::string const &language () const;
|
||||||
|
|
||||||
/// \brief Get user
|
/// \brief Get user
|
||||||
std::string const &user () const;
|
std::string const &user () const;
|
||||||
|
|
||||||
@ -77,6 +80,10 @@ public:
|
|||||||
std::string const &passphrase () const;
|
std::string const &passphrase () const;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/// \brief Set language
|
||||||
|
/// \param language_ Language to set
|
||||||
|
void setLanguage (std::string const &language_);
|
||||||
|
|
||||||
/// \brief Set user
|
/// \brief Set user
|
||||||
/// \param user_ User
|
/// \param user_ User
|
||||||
void setUser (std::string const &user_);
|
void setUser (std::string const &user_);
|
||||||
@ -121,6 +128,9 @@ private:
|
|||||||
mutable platform::Mutex m_lock;
|
mutable platform::Mutex m_lock;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/// \brief Language
|
||||||
|
std::string m_language;
|
||||||
|
|
||||||
/// \brief Username
|
/// \brief Username
|
||||||
std::string m_user;
|
std::string m_user;
|
||||||
|
|
||||||
|
@ -119,15 +119,14 @@ private:
|
|||||||
/// \brief Whether to show about window
|
/// \brief Whether to show about window
|
||||||
bool m_showAbout = false;
|
bool m_showAbout = false;
|
||||||
|
|
||||||
|
/// \brief Language setting
|
||||||
|
unsigned m_languageSetting;
|
||||||
/// \brief User name setting
|
/// \brief User name setting
|
||||||
std::string m_userSetting;
|
std::string m_userSetting;
|
||||||
|
|
||||||
/// \brief Password setting
|
/// \brief Password setting
|
||||||
std::string m_passSetting;
|
std::string m_passSetting;
|
||||||
|
|
||||||
/// \brief Port setting
|
/// \brief Port setting
|
||||||
std::uint16_t m_portSetting;
|
std::uint16_t m_portSetting;
|
||||||
|
|
||||||
#ifdef _3DS
|
#ifdef _3DS
|
||||||
/// \brief getMTime setting
|
/// \brief getMTime setting
|
||||||
bool m_getMTimeSetting;
|
bool m_getMTimeSetting;
|
||||||
|
29
include/gettext.h
Normal file
29
include/gettext.h
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
// ftpd is a server implementation based on the following:
|
||||||
|
// - RFC 959 (https://tools.ietf.org/html/rfc959)
|
||||||
|
// - RFC 3659 (https://tools.ietf.org/html/rfc3659)
|
||||||
|
// - suggested implementation details from https://cr.yp.to/ftp/filesystem.html
|
||||||
|
//
|
||||||
|
// Copyright (C) 2020 Michael Theall
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
/// \brief Set language for getText
|
||||||
|
/// \param language_ Language to set
|
||||||
|
void setLanguage (char const *language_);
|
||||||
|
|
||||||
|
/// \brief Translate message
|
||||||
|
/// \param text_ Text to translate
|
||||||
|
__attribute__ ((__format_arg__ (1))) char const *getText (char const *text_);
|
201
po/de_DE/ftpd.po
Normal file
201
po/de_DE/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# German translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:21-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||||
|
"Language: de_DE/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/en_GB/ftpd.po
Normal file
201
po/en_GB/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# English translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:21-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: English\n"
|
||||||
|
"Language: en_GB/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/en_US/ftpd.po
Normal file
201
po/en_US/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# English translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:21-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: English\n"
|
||||||
|
"Language: en_US/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/es_ES/ftpd.po
Normal file
201
po/es_ES/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# Spanish translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:21-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: Spanish <es@tp.org.es>\n"
|
||||||
|
"Language: es_ES/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/fr_FR/ftpd.po
Normal file
201
po/fr_FR/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# French translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:21-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: French <traduc@traduc.org>\n"
|
||||||
|
"Language: fr_FR/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/ftpd.pot
Normal file
201
po/ftpd.pot
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# SOME DESCRIPTIVE TITLE.
|
||||||
|
# Copyright (C) YEAR Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.1.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\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"
|
||||||
|
"Language: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/it_IT/ftpd.po
Normal file
201
po/it_IT/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# Italian translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:21-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: Italian <tp@lists.linux.it>\n"
|
||||||
|
"Language: it_IT/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/ja_JP/ftpd.po
Normal file
201
po/ja_JP/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# Japanese translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:22-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
|
||||||
|
"Language: ja_JP/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/nl_NL/ftpd.po
Normal file
201
po/nl_NL/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# Dutch translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:22-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
|
||||||
|
"Language: nl_NL/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
201
po/pt_PT/ftpd.po
Normal file
201
po/pt_PT/ftpd.po
Normal file
@ -0,0 +1,201 @@
|
|||||||
|
# Portuguese translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:22-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
|
||||||
|
"Language: pt_PT/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
202
po/ru_RU/ftpd.po
Normal file
202
po/ru_RU/ftpd.po
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
# Russian translations for ftpd pro package.
|
||||||
|
# Copyright (C) 2020 Michael Theall
|
||||||
|
# This file is distributed under the same license as the ftpd pro package.
|
||||||
|
# Michael Theall <pigman46@gmail.com>, 2020.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: ftpd pro v3.0.0\n"
|
||||||
|
"Report-Msgid-Bugs-To: pigman46@gmail.com\n"
|
||||||
|
"POT-Creation-Date: 2021-06-13 11:14-0500\n"
|
||||||
|
"PO-Revision-Date: 2020-06-03 21:22-0500\n"
|
||||||
|
"Last-Translator: Michael Theall <pigman46@gmail.com>\n"
|
||||||
|
"Language-Team: Russian <gnu@d07.ru>\n"
|
||||||
|
"Language: ru_RU/ftpd\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||||
|
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:359
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:422
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:607
|
||||||
|
msgid "About"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:78
|
||||||
|
#, c-format
|
||||||
|
msgid "Accepted connection from [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:500
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:520
|
||||||
|
msgid "Apply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:503
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:526
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:42
|
||||||
|
#, c-format
|
||||||
|
msgid "Closing connection to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:567
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:155
|
||||||
|
#, c-format
|
||||||
|
msgid "Connected to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:148
|
||||||
|
#, c-format
|
||||||
|
msgid "Connecting to [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:480
|
||||||
|
msgid "Enable Access Point"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1398
|
||||||
|
msgid "Exceeded command buffer size\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:563
|
||||||
|
msgid "Failed to save config\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:476
|
||||||
|
msgid "Get mtime"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:444
|
||||||
|
msgid "Language"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:2260
|
||||||
|
#, c-format
|
||||||
|
msgid "Listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:208
|
||||||
|
msgid "Logs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:353
|
||||||
|
msgid "Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:351
|
||||||
|
msgid "Menu "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1556
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1587
|
||||||
|
msgid "Not enough space for response\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:617
|
||||||
|
msgid "OK"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:490
|
||||||
|
msgid "Passphrase"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:462
|
||||||
|
msgid "Password"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. peer closed connection
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpSession.cpp:1413
|
||||||
|
msgid "Peer closed connection\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:614
|
||||||
|
#, c-format
|
||||||
|
msgid "Platform: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:467
|
||||||
|
msgid "Port"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:615
|
||||||
|
#, c-format
|
||||||
|
msgid "Renderer: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:502
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:524
|
||||||
|
msgid "Reset"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:482
|
||||||
|
msgid "SSID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:501
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:522
|
||||||
|
msgid "Save"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:221
|
||||||
|
msgid "Sessions"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:356
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:413
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:437
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:441
|
||||||
|
msgid "Settings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:319
|
||||||
|
#, c-format
|
||||||
|
msgid "Started server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:39
|
||||||
|
#, c-format
|
||||||
|
msgid "Stop listening on [%s]:%u\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:338
|
||||||
|
#, c-format
|
||||||
|
msgid "Stopped server at %s\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:457
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:125
|
||||||
|
msgid "Waiting on WiFi"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/ftpServer.cpp:190
|
||||||
|
msgid "Waiting on WiFi..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/3ds/platform.cpp:214
|
||||||
|
msgid "WiFi connected\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "no"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "off"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:196
|
||||||
|
msgid "on"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: /home/mtheall/workspace/ftpd/source/socket.cpp:246
|
||||||
|
msgid "yes"
|
||||||
|
msgstr ""
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "fs.h"
|
#include "fs.h"
|
||||||
#include "ftpServer.h"
|
#include "ftpServer.h"
|
||||||
|
#include "gettext.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
#include "imgui_citro3d.h"
|
#include "imgui_citro3d.h"
|
||||||
@ -210,7 +211,7 @@ void startNetwork ()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
s_socuActive = true;
|
s_socuActive = true;
|
||||||
info ("Wifi connected\n");
|
info (_ ("WiFi connected\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Draw citro3d logo
|
/// \brief Draw citro3d logo
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "ftpConfig.h"
|
#include "ftpConfig.h"
|
||||||
|
|
||||||
#include "fs.h"
|
#include "fs.h"
|
||||||
|
#include "gettext.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
@ -147,7 +148,9 @@ UniqueFtpConfig FtpConfig::load (char const *const path_)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (key == "user")
|
if (key == "language")
|
||||||
|
config->m_language = val;
|
||||||
|
else if (key == "user")
|
||||||
config->m_user = val;
|
config->m_user = val;
|
||||||
else if (key == "pass")
|
else if (key == "pass")
|
||||||
config->m_pass = val;
|
config->m_pass = val;
|
||||||
@ -202,6 +205,8 @@ bool FtpConfig::save (char const *const path_)
|
|||||||
if (!fp.open (path_, "wb"))
|
if (!fp.open (path_, "wb"))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (!m_language.empty ())
|
||||||
|
std::fprintf (fp, "language=%s\n", m_language.c_str ());
|
||||||
if (!m_user.empty ())
|
if (!m_user.empty ())
|
||||||
std::fprintf (fp, "user=%s\n", m_user.c_str ());
|
std::fprintf (fp, "user=%s\n", m_user.c_str ());
|
||||||
if (!m_pass.empty ())
|
if (!m_pass.empty ())
|
||||||
@ -223,6 +228,11 @@ bool FtpConfig::save (char const *const path_)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string const &FtpConfig::language () const
|
||||||
|
{
|
||||||
|
return m_language;
|
||||||
|
}
|
||||||
|
|
||||||
std::string const &FtpConfig::user () const
|
std::string const &FtpConfig::user () const
|
||||||
{
|
{
|
||||||
return m_user;
|
return m_user;
|
||||||
@ -262,6 +272,12 @@ std::string const &FtpConfig::passphrase () const
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
void FtpConfig::setLanguage (std::string const &language_)
|
||||||
|
{
|
||||||
|
m_language = language_;
|
||||||
|
::setLanguage (language_.c_str ());
|
||||||
|
}
|
||||||
|
|
||||||
void FtpConfig::setUser (std::string const &user_)
|
void FtpConfig::setUser (std::string const &user_)
|
||||||
{
|
{
|
||||||
m_user = user_.substr (0, user_.find_first_of ('\0'));
|
m_user = user_.substr (0, user_.find_first_of ('\0'));
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "ftpServer.h"
|
#include "ftpServer.h"
|
||||||
|
|
||||||
#include "fs.h"
|
#include "fs.h"
|
||||||
|
#include "gettext.h"
|
||||||
#include "licenses.h"
|
#include "licenses.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
@ -69,6 +70,21 @@ platform::Mutex s_lock;
|
|||||||
|
|
||||||
/// \brief Free space string
|
/// \brief Free space string
|
||||||
std::string s_freeSpace;
|
std::string s_freeSpace;
|
||||||
|
|
||||||
|
std::pair<std::string, std::string> const s_languageMap[] = {
|
||||||
|
// clang-format off
|
||||||
|
{"Deutsch", "de_DE"},
|
||||||
|
{"English (US)", "en_US"},
|
||||||
|
{"English (UK)", "en_GB"},
|
||||||
|
{"Español", "es_ES"},
|
||||||
|
{"Français", "fr_FR"},
|
||||||
|
{"Italiano", "it_IT"},
|
||||||
|
{"日本語", "ja_JP"},
|
||||||
|
{"Nederlands", "nl_NL"},
|
||||||
|
{"Português (Portugal)", "pt_PT"},
|
||||||
|
{"Русский", "ru_RU"},
|
||||||
|
// clang-format on
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////
|
||||||
@ -106,7 +122,7 @@ void FtpServer::draw ()
|
|||||||
consoleSelect (&g_statusConsole);
|
consoleSelect (&g_statusConsole);
|
||||||
std::printf ("\x1b[0;0H\x1b[32;1m%s \x1b[36;1m%s%s",
|
std::printf ("\x1b[0;0H\x1b[32;1m%s \x1b[36;1m%s%s",
|
||||||
STATUS_STRING,
|
STATUS_STRING,
|
||||||
m_socket ? m_socket->sockName ().name () : "Waiting on WiFi",
|
m_socket ? m_socket->sockName ().name () : _ ("Waiting on WiFi"),
|
||||||
m_socket ? port : "");
|
m_socket ? port : "");
|
||||||
|
|
||||||
#ifndef NDS
|
#ifndef NDS
|
||||||
@ -171,7 +187,7 @@ void FtpServer::draw ()
|
|||||||
std::snprintf (title,
|
std::snprintf (title,
|
||||||
sizeof (title),
|
sizeof (title),
|
||||||
STATUS_STRING " %s###ftpd",
|
STATUS_STRING " %s###ftpd",
|
||||||
m_socket ? m_name.c_str () : "Waiting for WiFi...");
|
m_socket ? m_name.c_str () : _ ("Waiting on WiFi..."));
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::Begin (title,
|
ImGui::Begin (title,
|
||||||
@ -189,7 +205,7 @@ void FtpServer::draw ()
|
|||||||
|
|
||||||
#ifndef _3DS
|
#ifndef _3DS
|
||||||
ImGui::BeginChild (
|
ImGui::BeginChild (
|
||||||
"Logs", ImVec2 (0, 0.5f * height), false, ImGuiWindowFlags_HorizontalScrollbar);
|
_ ("Logs"), ImVec2 (0, 0.5f * height), false, ImGuiWindowFlags_HorizontalScrollbar);
|
||||||
#endif
|
#endif
|
||||||
drawLog ();
|
drawLog ();
|
||||||
#ifndef _3DS
|
#ifndef _3DS
|
||||||
@ -202,7 +218,7 @@ void FtpServer::draw ()
|
|||||||
// bottom screen
|
// bottom screen
|
||||||
ImGui::SetNextWindowSize (ImVec2 (width * 0.8f, height * 0.5f));
|
ImGui::SetNextWindowSize (ImVec2 (width * 0.8f, height * 0.5f));
|
||||||
ImGui::SetNextWindowPos (ImVec2 (width * 0.1f, height * 0.5f), ImGuiCond_FirstUseEver);
|
ImGui::SetNextWindowPos (ImVec2 (width * 0.1f, height * 0.5f), ImGuiCond_FirstUseEver);
|
||||||
ImGui::Begin ("Sessions",
|
ImGui::Begin (_ ("Sessions"),
|
||||||
nullptr,
|
nullptr,
|
||||||
ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize |
|
ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize |
|
||||||
ImGuiWindowFlags_MenuBar);
|
ImGuiWindowFlags_MenuBar);
|
||||||
@ -227,6 +243,7 @@ UniqueFtpServer FtpServer::create ()
|
|||||||
updateFreeSpace ();
|
updateFreeSpace ();
|
||||||
|
|
||||||
auto config = FtpConfig::load (FTPDCONFIG);
|
auto config = FtpConfig::load (FTPDCONFIG);
|
||||||
|
setLanguage (config->language ().c_str ());
|
||||||
|
|
||||||
return UniqueFtpServer (new FtpServer (std::move (config)));
|
return UniqueFtpServer (new FtpServer (std::move (config)));
|
||||||
}
|
}
|
||||||
@ -299,7 +316,7 @@ void FtpServer::handleNetworkFound ()
|
|||||||
m_name.resize (std::strlen (name) + 3 + 5);
|
m_name.resize (std::strlen (name) + 3 + 5);
|
||||||
m_name.resize (std::sprintf (m_name.data (), "[%s]:%u", name, sockName.port ()));
|
m_name.resize (std::sprintf (m_name.data (), "[%s]:%u", name, sockName.port ()));
|
||||||
|
|
||||||
info ("Started server at %s\n", m_name.c_str ());
|
info (_ ("Started server at %s\n"), m_name.c_str ());
|
||||||
|
|
||||||
LOCKED (m_socket = std::move (socket));
|
LOCKED (m_socket = std::move (socket));
|
||||||
}
|
}
|
||||||
@ -318,7 +335,7 @@ void FtpServer::handleNetworkLost ()
|
|||||||
LOCKED (sock = std::move (m_socket));
|
LOCKED (sock = std::move (m_socket));
|
||||||
}
|
}
|
||||||
|
|
||||||
info ("Stopped server at %s\n", m_name.c_str ());
|
info (_ ("Stopped server at %s\n"), m_name.c_str ());
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CLASSIC
|
#ifndef CLASSIC
|
||||||
@ -330,15 +347,16 @@ void FtpServer::showMenu ()
|
|||||||
if (ImGui::BeginMenuBar ())
|
if (ImGui::BeginMenuBar ())
|
||||||
{
|
{
|
||||||
#if defined(_3DS) || defined(__SWITCH__)
|
#if defined(_3DS) || defined(__SWITCH__)
|
||||||
if (ImGui::BeginMenu (u8"Menu \xee\x80\x83")) // Y Button
|
// TRANSLATORS: \xee\x80\x83 (Y button)
|
||||||
|
if (ImGui::BeginMenu (_ ("Menu \xee\x80\x83"))) // Y Button
|
||||||
#else
|
#else
|
||||||
if (ImGui::BeginMenu ("Menu"))
|
if (ImGui::BeginMenu (_ ("Menu")))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (ImGui::MenuItem ("Settings"))
|
if (ImGui::MenuItem (_ ("Settings")))
|
||||||
m_showSettings = true;
|
m_showSettings = true;
|
||||||
|
|
||||||
if (ImGui::MenuItem ("About"))
|
if (ImGui::MenuItem (_ ("About")))
|
||||||
m_showAbout = true;
|
m_showAbout = true;
|
||||||
|
|
||||||
ImGui::EndMenu ();
|
ImGui::EndMenu ();
|
||||||
@ -353,6 +371,22 @@ void FtpServer::showMenu ()
|
|||||||
#ifndef NDS
|
#ifndef NDS
|
||||||
auto const lock = m_config->lockGuard ();
|
auto const lock = m_config->lockGuard ();
|
||||||
#endif
|
#endif
|
||||||
|
auto const &language = m_config->language ();
|
||||||
|
m_languageSetting = std::numeric_limits<unsigned>::max ();
|
||||||
|
for (unsigned i = 0; i < std::extent_v<decltype (s_languageMap)>; ++i)
|
||||||
|
{
|
||||||
|
auto const &code = s_languageMap[i].second;
|
||||||
|
if (language == code)
|
||||||
|
{
|
||||||
|
m_languageSetting = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// default to English (US)
|
||||||
|
/// \todo get language from system settings
|
||||||
|
if (code == "en_US" && m_languageSetting == std::numeric_limits<unsigned>::max ())
|
||||||
|
m_languageSetting = i;
|
||||||
|
}
|
||||||
|
|
||||||
m_userSetting = m_config->user ();
|
m_userSetting = m_config->user ();
|
||||||
m_userSetting.resize (32);
|
m_userSetting.resize (32);
|
||||||
@ -376,7 +410,7 @@ void FtpServer::showMenu ()
|
|||||||
m_passphraseSetting.resize (63);
|
m_passphraseSetting.resize (63);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ImGui::OpenPopup ("Settings");
|
ImGui::OpenPopup (_ ("Settings"));
|
||||||
}
|
}
|
||||||
|
|
||||||
showSettings ();
|
showSettings ();
|
||||||
@ -385,7 +419,7 @@ void FtpServer::showMenu ()
|
|||||||
if (m_showAbout)
|
if (m_showAbout)
|
||||||
{
|
{
|
||||||
if (!prevShowAbout)
|
if (!prevShowAbout)
|
||||||
ImGui::OpenPopup ("About");
|
ImGui::OpenPopup (_ ("About"));
|
||||||
|
|
||||||
showAbout ();
|
showAbout ();
|
||||||
}
|
}
|
||||||
@ -400,24 +434,37 @@ void FtpServer::showSettings ()
|
|||||||
|
|
||||||
ImGui::SetNextWindowSize (ImVec2 (width * 0.8f, height * 0.5f));
|
ImGui::SetNextWindowSize (ImVec2 (width * 0.8f, height * 0.5f));
|
||||||
ImGui::SetNextWindowPos (ImVec2 (width * 0.1f, height * 0.5f));
|
ImGui::SetNextWindowPos (ImVec2 (width * 0.1f, height * 0.5f));
|
||||||
if (ImGui::BeginPopupModal ("Settings",
|
if (ImGui::BeginPopupModal (_ ("Settings"),
|
||||||
nullptr,
|
nullptr,
|
||||||
ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize))
|
ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize))
|
||||||
#else
|
#else
|
||||||
if (ImGui::BeginPopupModal ("Settings", nullptr, ImGuiWindowFlags_AlwaysAutoResize))
|
if (ImGui::BeginPopupModal (_ ("Settings"), nullptr, ImGuiWindowFlags_AlwaysAutoResize))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
ImGui::InputText ("User",
|
if (ImGui::BeginCombo (_ ("Language"), s_languageMap[m_languageSetting].first.c_str ()))
|
||||||
|
{
|
||||||
|
for (unsigned i = 0; i < std::extent_v<decltype (s_languageMap)>; ++i)
|
||||||
|
{
|
||||||
|
if (ImGui::Selectable (s_languageMap[i].first.c_str (), i == m_languageSetting))
|
||||||
|
{
|
||||||
|
m_languageSetting = i;
|
||||||
|
ImGui::SetItemDefaultFocus ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::EndCombo ();
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGui::InputText (_ ("User"),
|
||||||
m_userSetting.data (),
|
m_userSetting.data (),
|
||||||
m_userSetting.size (),
|
m_userSetting.size (),
|
||||||
ImGuiInputTextFlags_AutoSelectAll);
|
ImGuiInputTextFlags_AutoSelectAll);
|
||||||
|
|
||||||
ImGui::InputText ("Pass",
|
ImGui::InputText (_ ("Password"),
|
||||||
m_passSetting.data (),
|
m_passSetting.data (),
|
||||||
m_passSetting.size (),
|
m_passSetting.size (),
|
||||||
ImGuiInputTextFlags_AutoSelectAll | ImGuiInputTextFlags_Password);
|
ImGuiInputTextFlags_AutoSelectAll | ImGuiInputTextFlags_Password);
|
||||||
|
|
||||||
ImGui::InputScalar ("Port",
|
ImGui::InputScalar (_ ("Port"),
|
||||||
ImGuiDataType_U16,
|
ImGuiDataType_U16,
|
||||||
&m_portSetting,
|
&m_portSetting,
|
||||||
nullptr,
|
nullptr,
|
||||||
@ -426,13 +473,13 @@ void FtpServer::showSettings ()
|
|||||||
ImGuiInputTextFlags_AutoSelectAll);
|
ImGuiInputTextFlags_AutoSelectAll);
|
||||||
|
|
||||||
#ifdef _3DS
|
#ifdef _3DS
|
||||||
ImGui::Checkbox ("Get mtime", &m_getMTimeSetting);
|
ImGui::Checkbox (_ ("Get mtime"), &m_getMTimeSetting);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __SWITCH__
|
#ifdef __SWITCH__
|
||||||
ImGui::Checkbox ("Enable Access Point", &m_enableAPSetting);
|
ImGui::Checkbox (_ ("Enable Access Point"), &m_enableAPSetting);
|
||||||
|
|
||||||
ImGui::InputText ("SSID",
|
ImGui::InputText (_ ("SSID"),
|
||||||
m_ssidSetting.data (),
|
m_ssidSetting.data (),
|
||||||
m_ssidSetting.size (),
|
m_ssidSetting.size (),
|
||||||
ImGuiInputTextFlags_AutoSelectAll);
|
ImGuiInputTextFlags_AutoSelectAll);
|
||||||
@ -440,7 +487,7 @@ void FtpServer::showSettings ()
|
|||||||
if (ssidError)
|
if (ssidError)
|
||||||
ImGui::TextColored (ImVec4 (1.0f, 0.4f, 0.4f, 1.0f), ssidError);
|
ImGui::TextColored (ImVec4 (1.0f, 0.4f, 0.4f, 1.0f), ssidError);
|
||||||
|
|
||||||
ImGui::InputText ("Passphrase",
|
ImGui::InputText (_ ("Passphrase"),
|
||||||
m_passphraseSetting.data (),
|
m_passphraseSetting.data (),
|
||||||
m_passphraseSetting.size (),
|
m_passphraseSetting.size (),
|
||||||
ImGuiInputTextFlags_AutoSelectAll | ImGuiInputTextFlags_Password);
|
ImGuiInputTextFlags_AutoSelectAll | ImGuiInputTextFlags_Password);
|
||||||
@ -449,19 +496,19 @@ void FtpServer::showSettings ()
|
|||||||
ImGui::TextColored (ImVec4 (1.0f, 0.4f, 0.4f, 1.0f), passphraseError);
|
ImGui::TextColored (ImVec4 (1.0f, 0.4f, 0.4f, 1.0f), passphraseError);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static ImVec2 const sizes[] = {
|
ImVec2 const sizes[] = {
|
||||||
ImGui::CalcTextSize ("Apply"),
|
ImGui::CalcTextSize (_ ("Apply")),
|
||||||
ImGui::CalcTextSize ("Save"),
|
ImGui::CalcTextSize (_ ("Save")),
|
||||||
ImGui::CalcTextSize ("Reset"),
|
ImGui::CalcTextSize (_ ("Reset")),
|
||||||
ImGui::CalcTextSize ("Cancel"),
|
ImGui::CalcTextSize (_ ("Cancel")),
|
||||||
};
|
};
|
||||||
|
|
||||||
static auto const maxWidth = std::max_element (
|
auto const maxWidth = std::max_element (
|
||||||
std::begin (sizes), std::end (sizes), [] (auto const &lhs_, auto const &rhs_) {
|
std::begin (sizes), std::end (sizes), [] (auto const &lhs_, auto const &rhs_) {
|
||||||
return lhs_.x < rhs_.x;
|
return lhs_.x < rhs_.x;
|
||||||
})->x;
|
})->x;
|
||||||
|
|
||||||
static auto const maxHeight = std::max_element (
|
auto const maxHeight = std::max_element (
|
||||||
std::begin (sizes), std::end (sizes), [] (auto const &lhs_, auto const &rhs_) {
|
std::begin (sizes), std::end (sizes), [] (auto const &lhs_, auto const &rhs_) {
|
||||||
return lhs_.y < rhs_.y;
|
return lhs_.y < rhs_.y;
|
||||||
})->y;
|
})->y;
|
||||||
@ -470,13 +517,13 @@ void FtpServer::showSettings ()
|
|||||||
auto const width = maxWidth + 2 * style.FramePadding.x;
|
auto const width = maxWidth + 2 * style.FramePadding.x;
|
||||||
auto const height = maxHeight + 2 * style.FramePadding.y;
|
auto const height = maxHeight + 2 * style.FramePadding.y;
|
||||||
|
|
||||||
auto const apply = ImGui::Button ("Apply", ImVec2 (width, height));
|
auto const apply = ImGui::Button (_ ("Apply"), ImVec2 (width, height));
|
||||||
ImGui::SameLine ();
|
ImGui::SameLine ();
|
||||||
auto const save = ImGui::Button ("Save", ImVec2 (width, height));
|
auto const save = ImGui::Button (_ ("Save"), ImVec2 (width, height));
|
||||||
ImGui::SameLine ();
|
ImGui::SameLine ();
|
||||||
auto const reset = ImGui::Button ("Reset", ImVec2 (width, height));
|
auto const reset = ImGui::Button (_ ("Reset"), ImVec2 (width, height));
|
||||||
ImGui::SameLine ();
|
ImGui::SameLine ();
|
||||||
auto const cancel = ImGui::Button ("Cancel", ImVec2 (width, height));
|
auto const cancel = ImGui::Button (_ ("Cancel"), ImVec2 (width, height));
|
||||||
|
|
||||||
if (apply || save)
|
if (apply || save)
|
||||||
{
|
{
|
||||||
@ -487,6 +534,7 @@ void FtpServer::showSettings ()
|
|||||||
auto const lock = m_config->lockGuard ();
|
auto const lock = m_config->lockGuard ();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
m_config->setLanguage (s_languageMap[m_languageSetting].second);
|
||||||
m_config->setUser (m_userSetting);
|
m_config->setUser (m_userSetting);
|
||||||
m_config->setPass (m_passSetting);
|
m_config->setPass (m_passSetting);
|
||||||
m_config->setPort (m_portSetting);
|
m_config->setPort (m_portSetting);
|
||||||
@ -512,7 +560,7 @@ void FtpServer::showSettings ()
|
|||||||
auto const lock = m_config->lockGuard ();
|
auto const lock = m_config->lockGuard ();
|
||||||
#endif
|
#endif
|
||||||
if (!m_config->save (FTPDCONFIG))
|
if (!m_config->save (FTPDCONFIG))
|
||||||
error ("Failed to save config\n");
|
error (_ ("Failed to save config\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reset)
|
if (reset)
|
||||||
@ -556,17 +604,17 @@ void FtpServer::showAbout ()
|
|||||||
ImGui::SetNextWindowSize (ImVec2 (width * 0.8f, height * 0.8f));
|
ImGui::SetNextWindowSize (ImVec2 (width * 0.8f, height * 0.8f));
|
||||||
ImGui::SetNextWindowPos (ImVec2 (width * 0.1f, height * 0.1f));
|
ImGui::SetNextWindowPos (ImVec2 (width * 0.1f, height * 0.1f));
|
||||||
#endif
|
#endif
|
||||||
if (ImGui::BeginPopupModal ("About",
|
if (ImGui::BeginPopupModal (_ ("About"),
|
||||||
nullptr,
|
nullptr,
|
||||||
ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize))
|
ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoResize))
|
||||||
{
|
{
|
||||||
ImGui::TextUnformatted (STATUS_STRING);
|
ImGui::TextUnformatted (STATUS_STRING);
|
||||||
ImGui::TextWrapped ("Copyright © 2021 Michael Theall, Dave Murphy, TuxSH");
|
ImGui::TextWrapped ("Copyright © 2021 Michael Theall, Dave Murphy, TuxSH");
|
||||||
ImGui::Separator ();
|
ImGui::Separator ();
|
||||||
ImGui::Text ("Platform: %s", io.BackendPlatformName);
|
ImGui::Text (_ ("Platform: %s"), io.BackendPlatformName);
|
||||||
ImGui::Text ("Renderer: %s", io.BackendRendererName);
|
ImGui::Text (_ ("Renderer: %s"), io.BackendRendererName);
|
||||||
|
|
||||||
if (ImGui::Button ("OK", ImVec2 (100, 0)))
|
if (ImGui::Button (_ ("OK"), ImVec2 (100, 0)))
|
||||||
{
|
{
|
||||||
m_showAbout = false;
|
m_showAbout = false;
|
||||||
ImGui::CloseCurrentPopup ();
|
ImGui::CloseCurrentPopup ();
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "ftpSession.h"
|
#include "ftpSession.h"
|
||||||
|
|
||||||
#include "ftpServer.h"
|
#include "ftpServer.h"
|
||||||
|
#include "gettext.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "platform.h"
|
#include "platform.h"
|
||||||
|
|
||||||
@ -563,7 +564,7 @@ bool FtpSession::poll (std::vector<UniqueFtpSession> const &sessions_)
|
|||||||
{
|
{
|
||||||
// PORT connection completed
|
// PORT connection completed
|
||||||
auto const &sockName = session->m_dataSocket->peerName ();
|
auto const &sockName = session->m_dataSocket->peerName ();
|
||||||
info ("Connected to [%s]:%u\n", sockName.name (), sockName.port ());
|
info (_ ("Connected to [%s]:%u\n"), sockName.name (), sockName.port ());
|
||||||
|
|
||||||
session->sendResponse ("150 Ready\r\n");
|
session->sendResponse ("150 Ready\r\n");
|
||||||
session->setState (State::DATA_TRANSFER, true, false);
|
session->setState (State::DATA_TRANSFER, true, false);
|
||||||
@ -1100,7 +1101,8 @@ void FtpSession::xferFile (char const *const args_, XferFileMode const mode_)
|
|||||||
|
|
||||||
if (m_restartPosition != 0)
|
if (m_restartPosition != 0)
|
||||||
{
|
{
|
||||||
if (m_file.seek (m_restartPosition, SEEK_SET) != 0)
|
// seek to the REST offset
|
||||||
|
if (m_file.seek (m_restartPosition) != 0)
|
||||||
{
|
{
|
||||||
sendResponse ("450 %s\r\n", std::strerror (errno));
|
sendResponse ("450 %s\r\n", std::strerror (errno));
|
||||||
return;
|
return;
|
||||||
@ -1134,7 +1136,7 @@ void FtpSession::xferFile (char const *const args_, XferFileMode const mode_)
|
|||||||
if (m_restartPosition != 0 && !append)
|
if (m_restartPosition != 0 && !append)
|
||||||
{
|
{
|
||||||
// seek to the REST offset
|
// seek to the REST offset
|
||||||
if (m_file.seek (m_restartPosition, SEEK_SET) != 0)
|
if (m_file.seek (m_restartPosition) != 0)
|
||||||
{
|
{
|
||||||
sendResponse ("450 %s\r\n", std::strerror (errno));
|
sendResponse ("450 %s\r\n", std::strerror (errno));
|
||||||
return;
|
return;
|
||||||
@ -1393,7 +1395,7 @@ void FtpSession::readCommand (int const events_)
|
|||||||
// prepare to receive data
|
// prepare to receive data
|
||||||
if (m_commandBuffer.freeSize () == 0)
|
if (m_commandBuffer.freeSize () == 0)
|
||||||
{
|
{
|
||||||
error ("Exceeded command buffer size\n");
|
error (_ ("Exceeded command buffer size\n"));
|
||||||
closeCommand ();
|
closeCommand ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1408,7 +1410,7 @@ void FtpSession::readCommand (int const events_)
|
|||||||
if (rc == 0)
|
if (rc == 0)
|
||||||
{
|
{
|
||||||
// peer closed connection
|
// peer closed connection
|
||||||
info ("Peer closed connection\n");
|
info (_ ("Peer closed connection\n"));
|
||||||
closeCommand ();
|
closeCommand ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1551,7 +1553,7 @@ void FtpSession::sendResponse (char const *fmt_, ...)
|
|||||||
|
|
||||||
if (static_cast<std::size_t> (rc) > size)
|
if (static_cast<std::size_t> (rc) > size)
|
||||||
{
|
{
|
||||||
error ("Not enough space for response\n");
|
error (_ ("Not enough space for response\n"));
|
||||||
closeCommand ();
|
closeCommand ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1582,7 +1584,7 @@ void FtpSession::sendResponse (std::string_view const response_)
|
|||||||
|
|
||||||
if (response_.size () > size)
|
if (response_.size () > size)
|
||||||
{
|
{
|
||||||
error ("Not enough space for response\n");
|
error (_ ("Not enough space for response\n"));
|
||||||
closeCommand ();
|
closeCommand ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1689,7 +1691,7 @@ bool FtpSession::listTransfer ()
|
|||||||
std::uint64_t mtime = 0;
|
std::uint64_t mtime = 0;
|
||||||
auto const rc = archive_getmtime (fullPath.c_str (), &mtime);
|
auto const rc = archive_getmtime (fullPath.c_str (), &mtime);
|
||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
error ("sdmc_getmtime %s 0x%lx\n", fullPath.c_str (), rc);
|
error ("archive_getmtime %s 0x%lx\n", fullPath.c_str (), rc);
|
||||||
else
|
else
|
||||||
st.st_mtime = mtime;
|
st.st_mtime = mtime;
|
||||||
}
|
}
|
||||||
@ -2255,7 +2257,7 @@ void FtpSession::PASV (char const *args_)
|
|||||||
auto const &sockName = m_pasvSocket->sockName ();
|
auto const &sockName = m_pasvSocket->sockName ();
|
||||||
std::string name = sockName.name ();
|
std::string name = sockName.name ();
|
||||||
auto const port = sockName.port ();
|
auto const port = sockName.port ();
|
||||||
info ("Listening on [%s]:%u\n", name.c_str (), port);
|
info (_ ("Listening on [%s]:%u\n"), name.c_str (), port);
|
||||||
|
|
||||||
// send the address in the ftp format
|
// send the address in the ftp format
|
||||||
for (auto &c : name)
|
for (auto &c : name)
|
||||||
|
184
source/gettext.cpp
Normal file
184
source/gettext.cpp
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
// ftpd is a server implementation based on the following:
|
||||||
|
// - RFC 959 (https://tools.ietf.org/html/rfc959)
|
||||||
|
// - RFC 3659 (https://tools.ietf.org/html/rfc3659)
|
||||||
|
// - suggested implementation details from https://cr.yp.to/ftp/filesystem.html
|
||||||
|
//
|
||||||
|
// Copyright (C) 2020 Michael Theall
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU General Public License as published by
|
||||||
|
// the Free Software Foundation, either version 3 of the License, or
|
||||||
|
// (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU General Public License
|
||||||
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include "gettext.h"
|
||||||
|
|
||||||
|
#include "fs.h"
|
||||||
|
|
||||||
|
#include <cerrno>
|
||||||
|
#include <cinttypes>
|
||||||
|
#include <cstdint>
|
||||||
|
#include <cstring>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
|
namespace
|
||||||
|
{
|
||||||
|
using StringMap = std::map<std::string, std::string>;
|
||||||
|
using Table = std::vector<std::pair<std::uint32_t, std::uint32_t>>;
|
||||||
|
|
||||||
|
StringMap s_translations;
|
||||||
|
|
||||||
|
/// \brief Read u32 value
|
||||||
|
/// \param file_ File to read
|
||||||
|
/// \param[out] data_ Output data
|
||||||
|
/// \param le_ Whether little-endian
|
||||||
|
bool read (fs::File &file_, std::uint32_t &data_, bool const le_)
|
||||||
|
{
|
||||||
|
if (!file_.readAll (&data_, sizeof (data_)))
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if (!le_)
|
||||||
|
data_ = __builtin_bswap32 (data_);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// \brief Load string table [offset, length]
|
||||||
|
/// \param file_ File to read
|
||||||
|
/// \param offset_ Offset to read from
|
||||||
|
/// \param count_ Number of entries
|
||||||
|
/// \param le_ Whether little-endian
|
||||||
|
Table loadTable (fs::File &file_, off_t const offset_, std::uint32_t const count_, bool const le_)
|
||||||
|
{
|
||||||
|
if (file_.seek (offset_) != 0)
|
||||||
|
return {};
|
||||||
|
|
||||||
|
Table table;
|
||||||
|
for (std::uint32_t i = 0; i < count_; ++i)
|
||||||
|
{
|
||||||
|
std::uint32_t length;
|
||||||
|
if (!read (file_, length, le_))
|
||||||
|
return {};
|
||||||
|
|
||||||
|
std::uint32_t offset;
|
||||||
|
if (!read (file_, offset, le_))
|
||||||
|
return {};
|
||||||
|
|
||||||
|
table.emplace_back (std::make_pair (offset, length));
|
||||||
|
}
|
||||||
|
|
||||||
|
return table;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// \brief Load string
|
||||||
|
/// \param file_ File to read
|
||||||
|
/// \param offset_ String offset
|
||||||
|
/// \param length_ String length
|
||||||
|
std::string loadString (fs::File &file_, std::uint32_t const offset_, std::uint32_t const length_)
|
||||||
|
{
|
||||||
|
if (length_ == 0)
|
||||||
|
return {};
|
||||||
|
|
||||||
|
if (file_.seek (offset_) != 0)
|
||||||
|
return {};
|
||||||
|
|
||||||
|
std::string str (length_, 0);
|
||||||
|
|
||||||
|
if (!file_.readAll (&str[0], length_))
|
||||||
|
return {};
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// \brief Load translations
|
||||||
|
/// \param language_ Language to load
|
||||||
|
void loadTranslations (char const *const language_)
|
||||||
|
{
|
||||||
|
char path[32];
|
||||||
|
std::sprintf (path, "romfs:/locale/%s/ftpd.mo", language_);
|
||||||
|
|
||||||
|
fs::File file;
|
||||||
|
if (!file.open (path))
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::uint32_t magic;
|
||||||
|
if (!read (file, magic, true))
|
||||||
|
return;
|
||||||
|
|
||||||
|
bool le;
|
||||||
|
if (magic == 0x950412DE)
|
||||||
|
le = true;
|
||||||
|
else if (magic == 0xDE120495)
|
||||||
|
le = false;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::uint32_t version;
|
||||||
|
if (!read (file, version, le) || version != 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::uint32_t numStrings;
|
||||||
|
if (!read (file, numStrings, le))
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::uint32_t originalOffset;
|
||||||
|
if (!read (file, originalOffset, le))
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::uint32_t translationOffset;
|
||||||
|
if (!read (file, translationOffset, le))
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::uint32_t hashSize;
|
||||||
|
if (!read (file, hashSize, le))
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::uint32_t hashOffset;
|
||||||
|
if (!read (file, hashOffset, le))
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto originalTable = loadTable (file, originalOffset, numStrings, le);
|
||||||
|
if (originalTable.size () != numStrings)
|
||||||
|
return;
|
||||||
|
|
||||||
|
auto translationTable = loadTable (file, translationOffset, numStrings, le);
|
||||||
|
if (translationTable.size () != numStrings)
|
||||||
|
return;
|
||||||
|
|
||||||
|
StringMap strings;
|
||||||
|
for (std::uint32_t i = 0; i < numStrings; ++i)
|
||||||
|
{
|
||||||
|
auto originalString = loadString (file, originalTable[i].first, originalTable[i].second);
|
||||||
|
auto translationString =
|
||||||
|
loadString (file, translationTable[i].first, translationTable[i].second);
|
||||||
|
|
||||||
|
strings.emplace (std::make_pair (originalString, translationString));
|
||||||
|
}
|
||||||
|
|
||||||
|
std::swap (strings, s_translations);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setLanguage (char const *const language_)
|
||||||
|
{
|
||||||
|
loadTranslations (language_);
|
||||||
|
}
|
||||||
|
|
||||||
|
char const *getText (char const *const text_)
|
||||||
|
{
|
||||||
|
auto it = s_translations.find (text_);
|
||||||
|
if (it != std::end (s_translations) && !it->second.empty ())
|
||||||
|
return it->second.c_str ();
|
||||||
|
|
||||||
|
return text_;
|
||||||
|
}
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "socket.h"
|
#include "socket.h"
|
||||||
|
|
||||||
|
#include "gettext.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
@ -35,10 +36,10 @@
|
|||||||
Socket::~Socket ()
|
Socket::~Socket ()
|
||||||
{
|
{
|
||||||
if (m_listening)
|
if (m_listening)
|
||||||
info ("Stop listening on [%s]:%u\n", m_sockName.name (), m_sockName.port ());
|
info (_ ("Stop listening on [%s]:%u\n"), m_sockName.name (), m_sockName.port ());
|
||||||
|
|
||||||
if (m_connected)
|
if (m_connected)
|
||||||
info ("Closing connection to [%s]:%u\n", m_peerName.name (), m_peerName.port ());
|
info (_ ("Closing connection to [%s]:%u\n"), m_peerName.name (), m_peerName.port ());
|
||||||
|
|
||||||
#ifdef NDS
|
#ifdef NDS
|
||||||
if (::closesocket (m_fd) != 0)
|
if (::closesocket (m_fd) != 0)
|
||||||
@ -74,7 +75,7 @@ UniqueSocket Socket::accept ()
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
info ("Accepted connection from [%s]:%u\n", addr.name (), addr.port ());
|
info (_ ("Accepted connection from [%s]:%u\n"), addr.name (), addr.port ());
|
||||||
return UniqueSocket (new Socket (fd, m_sockName, addr));
|
return UniqueSocket (new Socket (fd, m_sockName, addr));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,14 +145,14 @@ bool Socket::connect (SockAddr const &addr_)
|
|||||||
{
|
{
|
||||||
m_peerName = addr_;
|
m_peerName = addr_;
|
||||||
m_connected = true;
|
m_connected = true;
|
||||||
info ("Connecting to [%s]:%u\n", addr_.name (), addr_.port ());
|
info (_ ("Connecting to [%s]:%u\n"), addr_.name (), addr_.port ());
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_peerName = addr_;
|
m_peerName = addr_;
|
||||||
m_connected = true;
|
m_connected = true;
|
||||||
info ("Connected to [%s]:%u\n", addr_.name (), addr_.port ());
|
info (_ ("Connected to [%s]:%u\n"), addr_.name (), addr_.port ());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -192,7 +193,7 @@ bool Socket::setLinger (bool const enable_, std::chrono::seconds const time_)
|
|||||||
if (rc != 0)
|
if (rc != 0)
|
||||||
{
|
{
|
||||||
error ("setsockopt(SO_LINGER, %s, %lus): %s\n",
|
error ("setsockopt(SO_LINGER, %s, %lus): %s\n",
|
||||||
enable_ ? "on" : "off",
|
enable_ ? _ ("on") : _ ("off"),
|
||||||
static_cast<unsigned long> (time_.count ()),
|
static_cast<unsigned long> (time_.count ()),
|
||||||
std::strerror (errno));
|
std::strerror (errno));
|
||||||
return false;
|
return false;
|
||||||
@ -241,7 +242,9 @@ bool Socket::setReuseAddress (bool const reuse_)
|
|||||||
int const reuse = reuse_;
|
int const reuse = reuse_;
|
||||||
if (::setsockopt (m_fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof (reuse)) != 0)
|
if (::setsockopt (m_fd, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof (reuse)) != 0)
|
||||||
{
|
{
|
||||||
error ("setsockopt(SO_REUSEADDR, %s): %s\n", reuse_ ? "yes" : "no", std::strerror (errno));
|
error ("setsockopt(SO_REUSEADDR, %s): %s\n",
|
||||||
|
reuse_ ? _ ("yes") : _ ("no"),
|
||||||
|
std::strerror (errno));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user