Implement multi-language support 01/316701/3
authorAkash Kumar <akash1.kumar@samsung.com>
Tue, 17 Dec 2024 06:23:31 +0000 (11:53 +0530)
committerAkash Kumar <akash1.kumar@samsung.com>
Thu, 19 Dec 2024 05:22:02 +0000 (05:22 +0000)
This patch:
- Make changes to support multiple language based on system language.
- Add text resource files for English and Korean language.
- After this patch application will support English and Korean language.

Change-Id: I0668bdb1c9c2fc2903f52d95e870e906b78932ac
Signed-off-by: Akash Kumar <akash1.kumar@samsung.com>
15 files changed:
SettingWiFiDirect/SettingWiFiDirect.sln
SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.cs
SettingWiFiDirect/SettingWiFiDirect/SettingWiFiDirect.csproj
SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.Designer.cs [new file with mode: 0644]
SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.en-US.resx [new file with mode: 0644]
SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.ko-KR.resx [new file with mode: 0644]
SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.resx [new file with mode: 0644]
SettingWiFiDirect/SettingWiFiDirect/tizen-manifest.xml
SettingWiFiDirect/SettingWiFiDirect/tizen_dotnet_project.yaml
SettingWiFiDirect/SettingWiFiDirect/view/ResourceManager.cs [new file with mode: 0644]
SettingWiFiDirect/SettingWiFiDirect/view/Resources.cs [deleted file]
SettingWiFiDirect/SettingWiFiDirect/view/WiFiDirectDeviceView.cs
packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk [deleted file]
packaging/org.tizen.cssetting-wifi-direct-1.0.3.rpk [new file with mode: 0644]
packaging/org.tizen.setting-wifi-direct.spec

index 46225547992c9c807446f3b74f337cb29849ec1e..e31351d0b1ba1e44d1a8a2636df63202d5ca4a4d 100644 (file)
@@ -1,13 +1,9 @@
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31005.135
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio Version 17
+VisualStudioVersion = 17.12.35527.113 d17.12
 MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingWiFiDirect", "SettingWiFiDirect\SettingWiFiDirect.csproj", "{9669460b-4892-4139-9074-dd9df359ddba}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{8f19bdad-b6a0-40bd-8e44-9dd8e5c1aed4}"
-       ProjectSection(SolutionItems) = preProject
-               tizen_workspace.yaml = tizen_workspace.yaml
-       EndProjectSection
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SettingWiFiDirect", "SettingWiFiDirect\SettingWiFiDirect.csproj", "{9669460B-4892-4139-9074-DD9DF359DDBA}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -15,11 +11,10 @@ Global
                Release|Any CPU = Release|Any CPU
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {9669460b-4892-4139-9074-dd9df359ddba}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9669460b-4892-4139-9074-dd9df359ddba}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9669460b-4892-4139-9074-dd9df359ddba}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9669460b-4892-4139-9074-dd9df359ddba}.Release|Any CPU.Build.0 = Release|Any CPU
-
+               {9669460B-4892-4139-9074-DD9DF359DDBA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9669460B-4892-4139-9074-DD9DF359DDBA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9669460B-4892-4139-9074-DD9DF359DDBA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9669460B-4892-4139-9074-DD9DF359DDBA}.Release|Any CPU.Build.0 = Release|Any CPU
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
index ac9899267dfd4fae1e1e8050495a389efcceaa11..b204d3bb74137efe7472ccb2f1a1b34def02f6f3 100644 (file)
@@ -8,6 +8,7 @@ using Tizen.NUI.Binding;
 using Tizen.NUI.Components;
 using SettingCore;
 using static SettingWiFiDirect.Logger;
+using SettingWiFiDirect.TextResources;
 
 
 namespace SettingWiFiDirect
@@ -17,7 +18,7 @@ namespace SettingWiFiDirect
         private WiFiDirect mWifiDirect;
         private PeerSource mPeerSource;
         private CollectionView mScanList;
-        public override string ProvideTitle() => Resources.IDS_WIFI_BODY_WI_FI_DIRECT_ABB;
+        public override string ProvideTitle() => NUIGadgetResourceManager.GetString(nameof(Resources.IDS_WIFI_BODY_WI_FI_DIRECT_ABB));
 
         protected override void OnCustomizationUpdate(IEnumerable<MenuCustomizationItem> items)
         {
@@ -27,7 +28,7 @@ namespace SettingWiFiDirect
 
         public MainPage()
         {
-            mPeerSource = new PeerSource();
+            Debug("+");
             mWifiDirect = new WiFiDirect();
             mWifiDirect.Activate();
             try
@@ -56,7 +57,8 @@ namespace SettingWiFiDirect
         {
             Debug("+");
             base.OnCreate();
-
+            ResourceManager.TextResourceManager = this;
+            mPeerSource = new PeerSource();
             return CreateComponents();
         }
 
@@ -215,7 +217,9 @@ namespace SettingWiFiDirect
         private TextLabel GetHeader()
         {
             Debug("+");
-            string label = string.Format(Resources.IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES, mWifiDirect.getDeviceName());
+            string headerString = NUIGadgetResourceManager.GetString(nameof(Resources.IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES));
+            string label = string.Format(headerString, mWifiDirect.getDeviceName());
+
             TextLabel header = new TextLabel(label);
 
             return header;
index 1d436b0188b7cf42f9cc65eedf06f388ec00cf45..d6f24ba6f7c721d1440c2df61e5c209f7b0010b2 100644 (file)
@@ -1,4 +1,4 @@
-<Project Sdk="Tizen.NET.Sdk/1.2.0">
+<Project Sdk="Tizen.NET.Sdk/1.2.0">
 
        <PropertyGroup>
                <TargetFramework>net6.0</TargetFramework>
                <PackageReference Include="SettingCore" Version="1.0.346" />
                <PackageReference Include="Tizen.NET" Version="12.0.0.18043" />
        </ItemGroup>
+
+       <ItemGroup>
+               <Compile Update="TextResources\Resources.Designer.cs">
+                       <DesignTime>True</DesignTime>
+                       <AutoGen>True</AutoGen>
+                       <DependentUpon>Resources.resx</DependentUpon>
+               </Compile>
+       </ItemGroup>
+
+       <ItemGroup>
+               <EmbeddedResource Update="TextResources\Resources.en-US.resx">
+                       <Generator>PublicResXFileCodeGenerator</Generator>
+               </EmbeddedResource>
+               <EmbeddedResource Update="TextResources\Resources.ko-KR.resx">
+                       <Generator>PublicResXFileCodeGenerator</Generator>
+               </EmbeddedResource>
+               <EmbeddedResource Update="TextResources\Resources.resx">
+                       <Generator>PublicResXFileCodeGenerator</Generator>
+                       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
+               </EmbeddedResource>
+       </ItemGroup>
+
+       <PropertyGroup>
+               <GadgetResourceType>org.tizen.appfw.gadget.setting-wifi-direct</GadgetResourceType>
+       </PropertyGroup>
+
+       <Target Name="PostBuild" AfterTargets="PostBuildEvent">
+               <Exec Command=":: Copy resource dll&#xD;&#xA;
+               dir $(OutDir)\&#xD;&#xA;
+               mkdir res\allowed\$(GadgetResourceType)&#xD;&#xA;
+               xcopy /S /K /D /H /Y $(OutDir)\en-US res\allowed\$(GadgetResourceType)\en-US\&#xD;&#xA;
+               xcopy /S /K /D /H /Y $(OutDir)\ko-KR res\allowed\$(GadgetResourceType)\ko-KR\&#xD;&#xA;" />
+       </Target>
 </Project>
diff --git a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.Designer.cs b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.Designer.cs
new file mode 100644 (file)
index 0000000..cd88a28
--- /dev/null
@@ -0,0 +1,118 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.42000
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace SettingWiFiDirect.TextResources {
+    using System;
+
+
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class Resources
+    {
+
+        private static global::System.Resources.ResourceManager resourceMan;
+
+        private static global::System.Globalization.CultureInfo resourceCulture;
+
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+
+        static private string mResourcePath = "";
+
+        static public void SetPath(string path)
+        {
+            mResourcePath = path;
+        }
+        static public string GetPath()
+        {
+            return mResourcePath;
+        }
+        internal Resources()
+        {
+        }
+
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager
+        {
+            get
+            {
+                if (object.ReferenceEquals(resourceMan, null))
+                {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SettingWiFiDirect.TextResources.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture
+        {
+            get
+            {
+                return resourceCulture;
+            }
+            set
+            {
+                resourceCulture = value;
+            }
+        }
+
+        /// <summary>
+        ///   Looks up a localized string similar to Available.
+        /// </summary>
+        public static string IDS_CHATON_BODY_AVAILABLE {
+            get {
+                return ResourceManager.GetString("IDS_CHATON_BODY_AVAILABLE", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Wi-Fi Direct.
+        /// </summary>
+        public static string IDS_WIFI_BODY_WI_FI_DIRECT_ABB {
+            get {
+                return ResourceManager.GetString("IDS_WIFI_BODY_WI_FI_DIRECT_ABB", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Your device (%s) is currently visible to nearby devices..
+        /// </summary>
+        public static string IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES {
+            get {
+                return ResourceManager.GetString("IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Available devices.
+        /// </summary>
+        public static string IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB {
+            get {
+                return ResourceManager.GetString("IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB", resourceCulture);
+            }
+        }
+    }
+}
diff --git a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.en-US.resx b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.en-US.resx
new file mode 100644 (file)
index 0000000..a137c54
--- /dev/null
@@ -0,0 +1,132 @@
+<?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="IDS_CHATON_BODY_AVAILABLE" xml:space="preserve">
+    <value>Available</value>
+  </data>
+  <data name="IDS_WIFI_BODY_WI_FI_DIRECT_ABB" xml:space="preserve">
+    <value>Wi-Fi Direct</value>
+  </data>
+  <data name="IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES" xml:space="preserve">
+    <value>Your device ({0}) is currently visible to nearby devices.</value>
+  </data>
+  <data name="IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB" xml:space="preserve">
+    <value>Available devices</value>
+  </data>
+</root>
diff --git a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.ko-KR.resx b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.ko-KR.resx
new file mode 100644 (file)
index 0000000..6db7705
--- /dev/null
@@ -0,0 +1,132 @@
+<?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="IDS_CHATON_BODY_AVAILABLE" xml:space="preserve">
+    <value>가능</value>
+  </data>
+  <data name="IDS_WIFI_BODY_WI_FI_DIRECT_ABB" xml:space="preserve">
+    <value>Wi-Fi 다이렉트</value>
+  </data>
+  <data name="IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES" xml:space="preserve">
+    <value>주변 디바이스에서 내 디바이스({0})를 검색할 수 있습니다.</value>
+  </data>
+  <data name="IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB" xml:space="preserve">
+    <value>사용 가능한 디바이스</value>
+  </data>
+</root>
diff --git a/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.resx b/SettingWiFiDirect/SettingWiFiDirect/TextResources/Resources.resx
new file mode 100644 (file)
index 0000000..a137c54
--- /dev/null
@@ -0,0 +1,132 @@
+<?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="IDS_CHATON_BODY_AVAILABLE" xml:space="preserve">
+    <value>Available</value>
+  </data>
+  <data name="IDS_WIFI_BODY_WI_FI_DIRECT_ABB" xml:space="preserve">
+    <value>Wi-Fi Direct</value>
+  </data>
+  <data name="IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES" xml:space="preserve">
+    <value>Your device ({0}) is currently visible to nearby devices.</value>
+  </data>
+  <data name="IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB" xml:space="preserve">
+    <value>Available devices</value>
+  </data>
+</root>
index 653febae61279d244ff7061eff0977496e6d9645..d0594e5271076372d6c5117a6debe6b730610f5f 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns="http://tizen.org/ns/packages" api-version="7.0"
-  package="org.tizen.cssetting-wifi-direct" version="1.0.2"
+  package="org.tizen.cssetting-wifi-direct" version="1.0.3"
   res-type="org.tizen.appfw.gadget.setting-wifi-direct" res-version="1.0.0">
        <allowed-package id="org.tizen.*">
                <required-privileges>
@@ -11,4 +11,6 @@
                </required-privileges>
        </allowed-package>
   <metadata key="http://tizen.org/metadata/ui-gadget/dll" value="SettingWiFiDirect.dll" />
+  <metadata key="http://tizen.org/metadata/ui-gadget/resource/dll" value="SettingWiFiDirect.resources.dll"/>
+  <metadata key="http://tizen.org/metadata/ui-gadget/resource/class-name" value="SettingWiFiDirect.TextResources.Resources"/>
 </manifest>
index 26c1f0787db3d573bc98df41d3f113a07dfc49ae..58dcc8b44f9698df4ed85e5c9b30efaf1d52d2d8 100644 (file)
@@ -23,16 +23,28 @@ resources:
 
 # files monitored for dirty/modified status
 files:
+  - .gn
+  - Build/.exportmap
+  - Build/BUILD.gn
+  - Build/BUILDCONFIG.gn
+  - Build/SettingWiFiDirect/BUILD.gn
   - Directory.Build.targets
   - Logger.cs
   - MenuProvider.cs
   - SettingWiFiDirect.cs
   - SettingWiFiDirect.csproj
+  - TextResources/Resources.Designer.cs
+  - TextResources/Resources.en-US.resx
+  - TextResources/Resources.ko-KR.resx
+  - TextResources/Resources.resx
   - WiFiDirectConfig.cs
   - controller/Interop/WiFiDirect.cs
   - controller/WiFiDirect.cs
   - model/Peer.cs
   - model/WfdEnumerations.cs
+  - res/allowed/org.tizen.appfw.gadget.setting-wifi-direct/SettingWiFiDirect.dll
+  - res/allowed/org.tizen.appfw.gadget.setting-wifi-direct/en-US/SettingWiFiDirect.resources.dll
+  - res/allowed/org.tizen.appfw.gadget.setting-wifi-direct/ko-KR/SettingWiFiDirect.resources.dll
   - res/icons/settings_wifi_direct.png
   - res/images/00_list_bar_press_1x80.png
   - res/images/A09_device_Medical.png
@@ -56,7 +68,7 @@ files:
   - res/images/U04_device_STB.png
   - res/images/icon_select_all.png
   - tizen-manifest.xml
-  - view/Resources.cs
+  - view/ResourceManager.cs
   - view/WiFiDirectDeviceView.cs
 
 # project dependencies
diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/ResourceManager.cs b/SettingWiFiDirect/SettingWiFiDirect/view/ResourceManager.cs
new file mode 100644 (file)
index 0000000..d1fb80b
--- /dev/null
@@ -0,0 +1,7 @@
+namespace SettingWiFiDirect
+{
+    internal class ResourceManager
+    {
+        public static MainPage TextResourceManager;
+    }
+}
diff --git a/SettingWiFiDirect/SettingWiFiDirect/view/Resources.cs b/SettingWiFiDirect/SettingWiFiDirect/view/Resources.cs
deleted file mode 100644 (file)
index ac1f900..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-namespace SettingWiFiDirect
-{
-    static class Resources
-    {
-        static private string mResourcePath = "";
-
-        static public void SetPath(string path)
-        {
-            mResourcePath = path;
-        }
-        static public string GetPath()
-        {
-            return mResourcePath;
-        }
-
-        static public string IDS_WIFI_BODY_WI_FI_DIRECT_ABB = "Wi-Fi Direct";
-
-        static public string IDS_COM_POP_MAXIMUM_NUMBER_OF_CHARACTERS_REACHED = "Maximum number of characters reached.";
-
-        static public string IDS_ST_HEADER_PD_SELECTED = "%d selected";
-
-        static public string IDS_ST_BUTTON_ENABLE = "Enable";
-
-        static public string IDS_WIFI_SK_CANCEL = "Cancel";
-
-        static public string IDS_WIFI_SK2_OK = "OK";
-
-        static public string IDS_WIFI_BODY_WI_FI = "Wi-Fi";
-
-        static public string IDS_WIFI_BODY_CONNECTING_ING = "Connecting...";
-
-        static public string IDS_WIFI_BODY_CONNECT = "Connect";
-
-        static public string IDS_COM_POP_SECURITY_POLICY_RESTRICTS_USE_OF_WI_FI = "Security policy restricts use of Wi-Fi.";
-
-        static public string IDS_BT_BODY_NO_DEVICES_FOUND_ABB = "No devices found";
-
-        static public string IDS_BR_SK_YES = "Yes";
-
-        static public string IDS_BR_SK_NO = "No";
-
-        static public string IDS_BR_SK_CANCEL = "Cancel";
-
-        static public string IDS_ST_HEADER_RENAME_DEVICE = "Rename device";
-
-        static public string IDS_ST_HEADER_MY_DEVICE_NAME = "My device name";
-
-        static public string IDS_COM_POP_FAILED = "Failed.";
-
-        static public string IDS_COM_BODY_CONNECTED_M_STATUS = "Connected";
-
-        static public string IDS_BR_SK_OK = "OK";
-
-        static public string IDS_ST_POP_DEVICE_NAMES_ARE_DISPLAYED_TO_DISTINGUISH_EACH_OF_THE_DEVICES_AVAILABLE_MSG =
-            "Device names are displayed to distinguish each of the devices available in the nearby devices list, and via Bluetooth, Wi-Fi Direct, and other methods.";
-
-        static public string IDS_ST_SK_RENAME = "Rename";
-
-        static public string IDS_ST_POP_NOT_SUPPORTED = "Not supported.";
-
-        static public string IDS_CHATON_BODY_AVAILABLE = "Available";
-
-        static public string IDS_CHATON_HEADER_CONNECTION_FAILED_ABB2 = "Connection failed";
-
-        static public string IDS_WIFI_SK2_CANCEL_CONNECTION = "Cancel connection";
-
-        static public string IDS_ST_HEADER_CONNECTED_DEVICES = "Connected devices";
-
-        static public string IDS_WIFI_BODY_SELECT_ALL = "Select all";
-
-        static public string IDS_ST_HEADER_BUSY_DEVICES = "Busy devices";
-
-        static public string IDS_ST_BODY_CONNECTED_WITH_ANOTHER_DEVICE_ABB = "Connected with another device";
-
-        static public string IDS_WIFI_BODY_WAITING_FOR_CONNECTION_M_STATUS_ABB = "Waiting for connection";
-
-        static public string IDS_WIFI_BUTTON_MULTI_CONNECT = "Multi connect";
-
-        static public string IDS_WIFI_SK_DISCONNECT = "Disconnect";
-
-        static public string IDS_WIFI_BODY_DISABLE_WI_FI_DIRECT_AFTER_USE = "Disable Wi-Fi Direct after use";
-
-        static public string IDS_WIFI_BODY_DISABLE_WI_FI_DIRECT_AFTER_USE_ABB = "Disable Wi-Fi Direct after use";
-
-        static public string IDS_WIFI_BODY_PS_IS_REQUESTING_A_WI_FI_DIRECT_CONNECTION_ALLOW_Q =
-            "%s is requesting a Wi-Fi Direct connection. Allow?";
-
-        static public string IDS_WIFI_BODY_USING_WI_FI_DIRECT_WILL_DISCONNECT_CURRENT_WI_FI_CONNECTION_CONTINUE_Q =
-            "Using Wi-Fi Direct will disconnect current Wi-Fi connection. Continue?";
-
-        static public string IDS_WIFI_BODY_USING_WI_FI_DIRECT_WILL_DISCONNECT_CURRENT_WI_FI_TETHERING_CONTINUE_Q =
-            "Using Wi-Fi Direct will disconnect current Wi-Fi tethering. Continue?";
-
-        static public string IDS_WIFI_HEADER_WI_FI_DIRECT_CONNECTION_ABB = "Wi-Fi Direct connection";
-
-        static public string IDS_WIFI_POP_THERE_HAS_BEEN_NO_ACTIVITY_FOR_PD_MINUTES_SINCE_WI_FI_DIRECT_WAS_ENABLED_MSG =
-            "There has been no activity for %d minutes since Wi-Fi Direct was enabled. To extend battery life, Wi-Fi Direct has been disabled.";
-
-        static public string IDS_WIFI_SK4_SCAN = "Scan";
-
-        static public string IDS_WIFI_SK_STOP = "Stop";
-
-        static public string IDS_WIFI_POP_DEACTIVATION_FAILED = "Deactivation failed.";
-
-        static public string IDS_WIFI_POP_CURRENT_CONNECTION_WILL_BE_DISCONNECTED_CONTINUE_Q = "Current connection will be disconnected. Continue?";
-
-        static public string IDS_ST_POP_YOU_CAN_CONNECT_UP_TO_PD_DEVICES_AT_THE_SAME_TIME = "You can connect up to %d devices at the same time.";
-
-        static public string IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB = "Available devices";
-
-        static public string IDS_WIFI_POP_FAILED_TO_CONNECT_TO_PS = "Failed to connect to %s.";
-
-        static public string IDS_ST_POP_DEVICE_CONNECTED_TO_ANOTHER_DEVICE = "Device connected to another device.";
-
-        static public string IDS_WIFI_BODY_CONNECTED_TO_PS = "Connected to %s.";
-
-        static public string IDS_COM_BODY_PINS_DO_NOT_MATCH = "PINs do not match.";
-
-        static public string IDS_WIFI_BODY_CURRENT_CONNECTION_WILL_BE_DISCONNECTED_SO_THAT_SCANNING_CAN_START_CONTINUE_Q =
-            "Current connection will be disconnected so that scanning can start. Continue?";
-
-        static public string IDS_WIFI_POP_ENTER_PIN_TO_CONNECT_TO_PS = "Enter PIN to connect to %s.";
-
-        static public string IDS_WIFI_POP_CONNECT_TO_PS_IN_PD_SECONDS = "Connect to %s in %d seconds.";
-
-        static public string IDS_WIFI_POP_PIN_CODE_PS = "PIN %s";
-
-        static public string IDS_DLNA_HEADER_SELECT_DEVICES_ABB = "Select devices";
-
-        static public string IDS_WIFI_BODY_THE_WI_FI_DIRECT_CONNECTION_HAS_BEEN_LOST = "The Wi-Fi Direct connection has been lost.";
-
-        static public string IDS_ST_BODY_CONNECT_WITH_PS_IN_PD_SECS_ABB = "Connect with %s in %d secs.";
-
-        static public string IDS_ST_BODY_RENAME_DEVICE_ABB = "Rename device";
-
-        static public string IDS_WIFI_POP_PIN = "PIN";
-
-        static public string IDS_WIFI_HEADER_UNABLE_TO_CONNECT_ABB2 = "Unable to connect";
-
-        static public string IDS_WIFI_BUTTON_ALLOW = "Allow";
-
-        static public string IDS_WIFI_SK_CONNECT = "Connect";
-
-        static public string IDS_WIFI_BODY_CONNECTED = "Connected.";
-
-        static public string IDS_STU_HEADER_ENTER_DEVICE_NAME = "Enter device name";
-
-        static public string IDS_WIFI_SBODY_NOT_CONNECTED_M_STATUS_ABB = "Not connected";
-
-        static public string IDS_WIFI_POP_THIS_WI_FI_DIRECT_CONNECTION_WILL_BE_CANCELLED = "This Wi-Fi Direct connection will be cancelled.";
-
-        static public string IDS_WIFI_BODY_TO_SAVE_BATTERY_POWER_DISABLE_WI_FI_DIRECT_AFTER_USE =
-            "To save battery power, disable Wi-Fi Direct after use.";
-
-        static public string IDS_SMR_BODY_SCREEN_MIRRORING_IS_ENABLED = "Screen Mirroring is enabled.";
-
-        static public string IDS_SMR_POP_SCREEN_MIRRORING_HAS_BEEN_DISABLED = "Screen Mirroring has been disabled.";
-
-        static public string IDS_WIFI_BODY_YOUR_DEVICE_HPS_IS_CURRENTLY_VISIBLE_TO_NEARBY_DEVICES =
-            "Your device ({0}) is currently visible to nearby devices.";
-    }
-}
index 94e40881491c3dcba65be1ad2963e4d3b4b0b034..a94340959cec2f6a9682b50f9920a7645732ee46 100644 (file)
@@ -1,6 +1,8 @@
+using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.ComponentModel;
+using SettingWiFiDirect.TextResources;
 using static SettingWiFiDirect.Logger;
 
 namespace SettingWiFiDirect
@@ -64,7 +66,11 @@ namespace SettingWiFiDirect
         public PeerSource()
         {
             Debug("+");
-            mAvailable = new DeviceCollection(Resources.IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB);
+
+            var availableGroupTitle = ResourceManager.TextResourceManager.NUIGadgetResourceManager.GetString(
+                nameof(Resources.IDS_WIFI_HEADER_AVAILABLE_DEVICES_ABB));
+
+            mAvailable = new DeviceCollection(availableGroupTitle);
             this.Add(mAvailable);
         }
 
diff --git a/packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk b/packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk
deleted file mode 100644 (file)
index e261a51..0000000
Binary files a/packaging/org.tizen.cssetting-wifi-direct-1.0.2.rpk and /dev/null differ
diff --git a/packaging/org.tizen.cssetting-wifi-direct-1.0.3.rpk b/packaging/org.tizen.cssetting-wifi-direct-1.0.3.rpk
new file mode 100644 (file)
index 0000000..29caf91
Binary files /dev/null and b/packaging/org.tizen.cssetting-wifi-direct-1.0.3.rpk differ
index a63a03c88576334cac3fd0e5510b26a8bec8d496..eed40b22d1945f5165aca93951a7d4699b00eae3 100644 (file)
@@ -1,6 +1,6 @@
 Name:          org.tizen.setting-wifi-direct
 summary:       NUI wifi-direct setting application
-Version:       1.0.2
+Version:       1.0.3
 Release:       1
 Provides:      org.tizen.setting-wifi-direct = %{version}-%{release}
 Group:         Applications/Security