Skip to content

docs: Russian language support #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
109 changes: 109 additions & 0 deletions docs/ru-ru/articles/avalonia/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# Вступление

> [!ОСТОРОЖНО]
> До того, как проект будет иметь стабильную версию, он может содержать нестабильные приложения и функции, включая критические изменения. Пожалуйста, используйте его с осторожностью.

## Настройка окружения

> [!ВНИМАНИЕ]
> Последующие действия были протестированы только на Windows. Это не было протестировано на Linux/macOS.

* [Zig](https://ziglang.org/) предоставляет `linker/sysroot` поддержку для [OpenHarmony-NET.PublishAotCross](https://github.com/OpenHarmony-NET/PublishAotCross?tab=readme-ov-file#openharmony-netpublishaotcross), чтобы разрешить кросс-компиляцию для `linux-x64/linux-arm64/linux-musl-x64/linux-musl-arm64` в Windows.

```shell
# Установка Zig в Windows с помощью winget
winget install zig.zig
```

> [!ПРЕДУПРЕЖДЕНИЕ]
> Не рекомендуется добавлять `clang` к переменным среды, так как это может привести к конфликту с процессом сборки.

* [LLVM](https://releases.llvm.org/download.html) необходим для процесса компиляции, в котором используется `llvm-objcopy.exe`. Убедитесь, что он существует в переменных вашего окружения

* .NET 9.0 SDK или выше

* Последняя версия DevEco Studio

* _Необязательно_ `Visual Studio 2022`

* _Необязательно_ `JetBrains Rider`

## Сборка и запуск

* Склонируйте [OpenHarmony.Avalonia](https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia). Убедитесь, что для клонирования используется параметр `--recursive`, чтобы включить подмодули.

```shell
git clone https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia.git --recursive # Включение подмодулей
```

* Откройте каталог проекта `OpenHarmony.Avalonia`

```shell
|-- Directory.Build.props
|-- OHOS_Project
|-- OpenHarmony.Avalonia.sln
|-- README.md
|-- Src
|-- ThirdParty

3 directories, 3 files
```

Затем выполните следующую команду или используйте `Visual Studio 2022`, чтобы открыть `OpenHarmony.Решение Avalonia.sln`, щелкните правой кнопкой мыши на проекте `Entry` и опубликуйте.

> [!ВНИМАНИЕ]
> `arm64-v8a` подходит для физических устройств, в то время как `x86_64` предназначен для эмуляторов. Пожалуйста, выбирайте в соответствии с типом вашего устройства.

### [Физическое устройство](#tab/physical)

```shell
dotnet publish ./Src/Entry/Entry.csproj -c Release -r linux-musl-arm64 -p:PublishAot=true -o OHOS_Project/entry/libs/arm64-v8a
```

Или выберите `PublishArm64.pubxml` на странице публикации, затем нажмите кнопку опубликовать.

### [Эмулятор](#tab/virtual)

```shell
dotnet publish ./Src/Entry/Entry.csproj -c Release -r linux-musl-x64 -p:PublishAot=true -o OHOS_Project/entry/libs/x86_64
```

Или выберите `PublishAmd64.pubxml` на странице публикации, затем нажмите кнопку опубликовать.

---

* Откройте DevEco Studio, откройте каталог `OHOS_Project`, затем нажмите кнопку запустить. DevEco Studio автоматически установит и запустит приложение на вашем физическом устройстве/эмуляторе.

> [!ВНИМАНИЕ]
> Запуск на физическом устройстве может потребовать подписания и других процедур, соответствующих обычной разработке программного обеспечения HarmonyOS.

## Запуск вашего проекта

* Добавьте свой проект в зависимости `Entry` проекта (т.е `Entry` проект должен ссылаться на ваш проект)

[И замените это пространство имен пространством имен вашего проекта](https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia/blob/2f0af9d19832c48a69e972eb263caf4a68f381c6/Src/Entry/XComponentEntry.cs#L5)

```diff
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using Avalonia.OpenHarmony;
using OpenHarmony.NDK.Bindings.Native;
- using AOOH_Gallery;
+ using YourProjectNamespace;

namespace Entry;
```

[Также измените принадлежность класса `App` к проекту](https://github.com/OpenHarmony-NET/OpenHarmony.Avalonia/blob/2f0af9d19832c48a69e972eb263caf4a68f381c6/Src/Entry/XComponentEntry.cs#L21)

```diff
try
{
Ace.OH_NativeXComponent_RegisterOnFrameCallback(component, &OnSurfaceRendered);
if (XComponents.TryGetValue((nint)component, out var xComponent))
return;
+ xComponent = new AvaloniaXComponent<App>((nint)component, (nint)window);
XComponents.Add((nint)component, xComponent);
xComponent.OnSurfaceCreated();
}
```
Empty file.
1 change: 1 addition & 0 deletions docs/ru-ru/articles/blazor-hybrid/introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Вступление
3 changes: 3 additions & 0 deletions docs/ru-ru/articles/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Начало работы

В этой статье рассказывается о том, как разрабатывать собственные библиотеки для системы Harmony с использованием .NET и NDK. Если вы хотите разрабатывать полноценные приложения Harmony OS с использованием .NET, пожалуйста, обратитесь к разделам [Avalonia](avalonia/introduction.md) **и** [Blazor Hybrid](blazor-hybrid/introduction.md).
29 changes: 29 additions & 0 deletions docs/ru-ru/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
![OpenHarmony.NET](../_images/Header.png "Привет OpenHarmony.NET")

# Вступление

## 🤔Что такое OpenHarmony.NET?

OpenHarmony.NET это решение, разработанное специально для **OpenHarmony** (включая **HarmonyOS Next**), предназначен для поддержки **.NET** приложений в операционной системе Harmony. С OpenHarmony.NET разработчики смогу использовать знакомые **Avalonia** или **Blazor Hybrid** для разработки Harmony приложений, и даже использовать **C#** вместо **C++** для разработки собственных библиотек. Это предоставляет .NET разработчикам новую платформу, позволяющую легко внедрять стек .NET в экосистему Harmony.

## 😲Среда выполнения

### · Статус адаптации
OpenHarmony.NET был успешно адаптирован для **.NET 9**, предоставляя разработчикам стабильную и эффективную среду выполнения.

### · Ограничения среды выполнения
1. **Только Native AOT**:
Из-за ограничений системы Harmony на ассемблерный код, генерируемый во время выполнения (посмотрите [Harmony System Change Notes](https://developer.huawei.com/consumer/cn/doc/harmonyos-releases-V5/changelogs-for-all-apps-b031-V5#%E5%8C%BF%E5%90%8D%E5%86%85%E5%AD%98%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%E7%AE%A1%E6%8E%A7%E7%AD%96%E7%95%A5%E5%8F%98%E6%9B%B4%E8%AF%B4%E6%98%8E)), JIT (Just-In-Time) не может быть использован. Поэтому OpenHarmony.NET использует **NativeAOT (Native Ahead-Of-Time)** компиляцию. Данный метод генерирует машинный код непосредственно во время компиляции, обеспечивая эффективное выполнение приложения в системе Harmony.

2. **Невозможно использовать `Marshal.GetDelegateForFunctionPointer` и связанные с ним функции**:
По той же причине, что и выше, рекомендуется прямое использование указателей на функции.

## 🥰Framework Adaptation

### Поддерживаемые фреймворки разработки
В настоящий момент OpenHarmony.NET успешно работает со следующими фреймворками:
1. **Avalonia**: это кроссплатформенный UI фреймворк, поддерживающий разработку десктоп приложений на C# и XAML. Более подробно можно узнать тут [Докуметация Avalonia](articles/avalonia/introduction.md).
2. **Blazor Hybrid**: гибридный фреймворк разработки, базирующиеся на Blazor. Позволяет создавать кроссплатформенные приложения с использованием C# и Razor. Более подробно можно узнать тут [Документация Blazor Hybrid](articles/blazor-hybrid/introduction.md).

### Другие адаптированные фремворки разработки
Мы приглашаем другие .NET фреймворки присоединиться к OpenHarmony.NET. Если вы заинтересованы в адаптации других фреймворков, мы готовы поделиться ценным опытом, накопленным в ходе адаптации Avalonia и Blazor Hybrid, чтобы помочь вам быстро приступить к работе.
10 changes: 10 additions & 0 deletions docs/ru-ru/toc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
- name: Вступление
href: index.md
- name: Начало работы
href: articles/index.md

- name: Фреймворки разработки
- name: Avalonia
href: articles/avalonia/introduction.md
- name: Blazor Hybrid
href: articles/blazor-hybrid/introduction.md
4 changes: 3 additions & 1 deletion templates/material/partials/footer.tmpl.partial
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
This page also provides in following languages
<a href="#" id="zh-cn-link" class="me-2">简体中文</a>
<a href="#" id="en-us-link" class="me-2">English</a>
<a href="#" id="ru-ru-link" class="me-2">Русский</a>
</div>
{{/_appFooter}}
</div>
Expand All @@ -20,7 +21,8 @@
// Define supported languages with their code and element ID
const languages = {
"zh-cn": { id: "zh-cn-link", name: "简体中文" },
"en-us": { id: "en-us-link", name: "English" }
"en-us": { id: "en-us-link", name: "English" },
"ru-ru": { id: "ru-ru-link", name: "Русский" }
};

function updateLanguageLinks() {
Expand Down