<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://pascalabc.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=77.66.230.115</id>
	<title>Вики проекта PascalABC.NET - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://pascalabc.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=77.66.230.115"/>
	<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/77.66.230.115"/>
	<updated>2026-04-19T01:23:18Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=210</id>
		<title>Локализация приложений</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9B%D0%BE%D0%BA%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9&amp;diff=210"/>
		<updated>2009-08-09T15:42:51Z</updated>

		<summary type="html">&lt;p&gt;77.66.230.115: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В .NET есть развитые средства локализации приложений. Соответственно эти возможности доступны в PascalABC.NET. Ниже приведен минимальный код, использующий ресурсы для локализации приложения на лету.&lt;br /&gt;
&lt;br /&gt;
На данный момент в PascalABC.NET нет редактора ресурсов. Однако их можно создать программно, используя класс ResourceWriter. Следует отметить, что имя файла ресурса (точнее корневая папка ресурса) должно совпадать с именем файла основной программы. Назовем основную программу CultureForm. Тогда код генерации ресурсов выглядит так. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Pascal&amp;quot;&amp;gt; #reference 'System.Windows.Forms.dll'&lt;br /&gt;
 &lt;br /&gt;
 uses System, System.Windows.Forms, System.Globalization, System.Resources, System.Diagnostics;&lt;br /&gt;
 &lt;br /&gt;
 procedure MakeResource;&lt;br /&gt;
 begin&lt;br /&gt;
   var rw := new ResourceWriter('CultureForm.en-US.resources');&lt;br /&gt;
   rw.AddResource('MyButton','Click me');&lt;br /&gt;
   rw.Close();&lt;br /&gt;
   rw := new ResourceWriter('CultureForm.ru-RU.resources');&lt;br /&gt;
   rw.AddResource('MyButton','Нажми меня');&lt;br /&gt;
   rw.Close();&lt;br /&gt;
 end;&lt;br /&gt;
 &lt;br /&gt;
 begin&lt;br /&gt;
  MakeResource();  &lt;br /&gt;
 end.&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее необходимо создать в папке программы CultureForm подпапку resources и скопировать туда файлы CultureForm.en-US.resources и CultureForm.ru-RU.resources.&lt;br /&gt;
Теперь наша основная программа:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;Pascal&amp;quot;&amp;gt; program CultureForm&lt;br /&gt;
 #reference 'System.Windows.Forms.dll'&lt;br /&gt;
 #reference 'System.Drawing.dll'&lt;br /&gt;
 &lt;br /&gt;
 uses System, System.Windows.Forms, System.Globalization, System.Resources;&lt;br /&gt;
 &lt;br /&gt;
 var f : Form;&lt;br /&gt;
     btn : Button;&lt;br /&gt;
     rm : ResourceManager;&lt;br /&gt;
     ru_cult : CultureInfo := new CultureInfo('ru-RU');&lt;br /&gt;
     en_cult : CultureInfo := new CultureInfo('en-US');&lt;br /&gt;
     local : boolean;&lt;br /&gt;
     &lt;br /&gt;
 procedure ButtonClicked(sender : object; e : EventArgs);&lt;br /&gt;
 begin&lt;br /&gt;
   if not local then&lt;br /&gt;
     btn.Text := rm.GetString('MyButton',ru_cult) //надпись на русском языке&lt;br /&gt;
   else&lt;br /&gt;
     btn.Text := rm.GetString('MyButton',en_cult); //на английском языке&lt;br /&gt;
   local := not local;&lt;br /&gt;
 end;&lt;br /&gt;
     &lt;br /&gt;
 begin&lt;br /&gt;
   //загрузка ресурсов&lt;br /&gt;
   rm := ResourceManager.CreateFileBasedResourceManager('CultureForm2',System.IO.Path.Combine(GetCurrentDir(),'resources'),nil);&lt;br /&gt;
   f := new Form;&lt;br /&gt;
   btn := new Button();&lt;br /&gt;
   &lt;br /&gt;
   btn.Text := rm.GetString('MyButton',en_cult);&lt;br /&gt;
   btn.Click += ButtonClicked;&lt;br /&gt;
   f.Controls.Add(btn);&lt;br /&gt;
   Application.Run(f);&lt;br /&gt;
 end.&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>77.66.230.115</name></author>
	</entry>
</feed>