Skip to content

Commit

Permalink
feat: localized UI for Portuguese language (#222)
Browse files Browse the repository at this point in the history
Co-authored-by: Scott Willeke <[email protected]>
  • Loading branch information
igorruckert and activescott authored Feb 28, 2025
1 parent 1e7f7cf commit 4b4a909
Show file tree
Hide file tree
Showing 3 changed files with 293 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/.build/lessmsi.msbuild
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,10 @@
<!-- TheCulture is MSBuild's so-called "Item Metadata". See https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-items?view=vs-2022&source=recommendations#item-metadata -->
<TheCulture>fr</TheCulture>
</DeployFiles>
<DeployFiles Include="$(RootDir)\LessMsi.Gui\bin\Release\pt\lessmsi-gui.resources.dll">
<!-- TheCulture is MSBuild's so-called "Item Metadata". See https://learn.microsoft.com/en-us/visualstudio/msbuild/msbuild-items?view=vs-2022&source=recommendations#item-metadata -->
<TheCulture>pt</TheCulture>
</DeployFiles>
<DeployFiles Include="$(RootDir)\packages\libmspack4n.0.9.10\lib\net40\libmspackn.dll"></DeployFiles>
<DeployFiles Include="$(RootDir)\packages\libmspack4n.0.9.10\build\x86\mspack.dll"></DeployFiles>
<DeployFiles Include="$(RootDir)\packages\LessIO.1.0.34\lib\net40\LessIO.dll"></DeployFiles>
Expand Down
1 change: 1 addition & 0 deletions src/LessMsi.Gui/LessMsi.Gui.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@
<LastGenOutput>Strings.it.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Resources\Languages\Strings.pt.resx" />
<EmbeddedResource Include="Resources\Languages\Strings.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Strings.Designer.cs</LastGenOutput>
Expand Down
288 changes: 288 additions & 0 deletions src/LessMsi.Gui/Resources/Languages/Strings.pt.resx
Original file line number Diff line number Diff line change
@@ -0,0 +1,288 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<value>Sobre</value>
</data>
<data name="AddShortcutText" xml:space="preserve">
<value>Adicionar atalho ao menu de contexto</value>
</data>
<data name="AllFilesFilter" xml:space="preserve">
<value>Todos os arquivos</value>
</data>
<data name="ChangeLang" xml:space="preserve">
<value>Alterar idioma</value>
</data>
<data name="Component" xml:space="preserve">
<value>Componente</value>
</data>
<data name="Copy" xml:space="preserve">
<value>&amp;Copiar</value>
</data>
<data name="Description" xml:space="preserve">
<value>Descrição:</value>
</data>
<data name="Directory" xml:space="preserve">
<value>Pasta</value>
</data>
<data name="Edit" xml:space="preserve">
<value>&amp;Editar</value>
</data>
<data name="EmptyFilePathError" xml:space="preserve">
<value>O caminho do arquivo está vazio</value>
</data>
<data name="ERROR" xml:space="preserve">
<value>ERRO</value>
</data>
<data name="Exit" xml:space="preserve">
<value>&amp;Sair</value>
</data>
<data name="Extract" xml:space="preserve">
<value>E&amp;xtrair</value>
</data>
<data name="ExtractFiles" xml:space="preserve">
<value>Extrair arquivos</value>
</data>
<data name="ExtractStreamFiles" xml:space="preserve">
<value>Extrair arquivos de fluxo...</value>
</data>
<data name="File" xml:space="preserve">
<value>Arquivo</value>
</data>
<data name="FileExistError" xml:space="preserve">
<value>O arquivo '{0}' não existe</value>
</data>
<data name="FileMenuLabel" xml:space="preserve">
<value>&amp;Arquivo</value>
</data>
<data name="FilesFoundStatus" xml:space="preserve">
<value>arquivos encontrados.</value>
</data>
<data name="ID" xml:space="preserve">
<value>ID</value>
</data>
<data name="Size" xml:space="preserve">
<value>Tamanho</value>
</data>
<data name="Stream" xml:space="preserve">
<value>Fluxo</value>
</data>
<data name="Streams" xml:space="preserve">
<value>Fluxos</value>
</data>
<data name="Summary" xml:space="preserve">
<value>Resumo</value>
</data>
<data name="Table" xml:space="preserve">
<value>&amp;Tabela</value>
</data>
<data name="TableView" xml:space="preserve">
<value>Visualização em tabela</value>
</data>
<data name="Type" xml:space="preserve">
<value>Tipo</value>
</data>
<data name="UnselectAll" xml:space="preserve">
<value>&amp;Desmarcar todos</value>
</data>
<data name="Value" xml:space="preserve">
<value>Valor</value>
</data>
<data name="Version" xml:space="preserve">
<value>Versão</value>
</data>
<data name="TooLongFilePathError" xml:space="preserve">
<value>O caminho do arquivo é muito longo</value>
</data>
<data name="SelectFilesMessage" xml:space="preserve">
<value>Selecione alguns ou todos os arquivos para extraí-los.</value>
</data>
<data name="Search" xml:space="preserve">
<value>Pesquisar</value>
</data>
<data name="SearchFile" xml:space="preserve">
<value>Pesquisar arquivo</value>
</data>
<data name="SelectAll" xml:space="preserve">
<value>Selecionar &amp;todos</value>
</data>
<data name="RecentFiles" xml:space="preserve">
<value>Arquivos recentes</value>
</data>
<data name="RemoveShortcutText" xml:space="preserve">
<value>Remover item dos atalhos</value>
</data>
<data name="RemoveShortcutTextNote" xml:space="preserve">
<value>Remove o menu de contexto se ele existir</value>
</data>
<data name="SameDirMassage" xml:space="preserve">
<value>deve estar na mesma pasta que</value>
</data>
<data name="AddShortcutTextNote" xml:space="preserve">
<value>Adiciona o itens 'Extrair' e 'Explorar' ao menu de contexto dos arquivos .msi.</value>
</data>
<data name="BadlyFormedFilePathError" xml:space="preserve">
<value>O caminho do arquivo está mal formado</value>
</data>
<data name="FindStreamError" xml:space="preserve">
<value>Não foi possível encontrar o fluxo para o CAB '{0}'</value>
</data>
<data name="InvalidCharsInFilePathError" xml:space="preserve">
<value>O caminho do arquivo contêm caracteres inválidos</value>
</data>
<data name="LoadingSummaryInfoError" xml:space="preserve">
<value>Erro ao carregar informações de resumo</value>
</data>
<data name="LoadingTablesStatus" xml:space="preserve">
<value>Carregando lista de tabelas...</value>
</data>
<data name="MissingFile" xml:space="preserve">
<value>Arquivo ausente</value>
</data>
<data name="Name" xml:space="preserve">
<value>Nome</value>
</data>
<data name="NoFilesPresentStatus" xml:space="preserve">
<value>Nenhum arquivo presente</value>
</data>
<data name="Open" xml:space="preserve">
<value>A&amp;brir</value>
</data>
<data name="OpenFileError" xml:space="preserve">
<value>Falha ao abrir o arquivo</value>
</data>
<data name="Preferences" xml:space="preserve">
<value>Preferências</value>
</data>
<data name="PreferencesMenuLabel" xml:space="preserve">
<value>&amp;Preferências</value>
</data>
<data name="ProcessingTableStatus" xml:space="preserve">
<value>Processando tabela '{0}'.</value>
</data>
<data name="ViewFilesError" xml:space="preserve">
<value>Não é possível visualizar os arquivos</value>
</data>
<data name="ViewTableError" xml:space="preserve">
<value>Não é possível visualizar a tabela</value>
</data>
<data name="MsiFilesFilter" xml:space="preserve">
<value>Arquivos .msi</value>
</data>
</root>

0 comments on commit 4b4a909

Please sign in to comment.