Skip to content

Commit

Permalink
Add russian locale (#24)
Browse files Browse the repository at this point in the history
* Add ru_RU.json locale

* fix locale name

* fix translation

* some layout edits
  • Loading branch information
Ftrless authored Jul 14, 2024
1 parent 6f484de commit 014e6b1
Show file tree
Hide file tree
Showing 4 changed files with 123 additions and 12 deletions.
8 changes: 8 additions & 0 deletions frontend/src/components/Navbar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@
<circle cx="8.75" cy="11.5" r="2.438" fill="#FFF"/>
</svg>
</template>
<template v-slot:option-ru_RU>
<svg viewBox="0 0 36 36" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" preserveAspectRatio="xMidYMid meet">
<path fill="#CE2028" d="M36 27a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4v-4h36v4z"></path>
<path fill="#22408C" d="M0 13h36v10H0z"></path>
<path fill="#EEE" d="M32 5H4a4 4 0 0 0-4 4v4h36V9a4 4 0 0 0-4-4z"></path>
</svg>
</template>
<template v-slot:option-new-group>
<a href="https://github.com/linkie/linkie-web/tree/master/frontend/src/locales"
class="cursor-pointer px-4 py-2 hover:bg-base-300 dark:hover:bg-base-dark-400 transition-colors flex gap-2 items-center">
Expand Down Expand Up @@ -125,6 +132,7 @@ function localeOptions(i18n: VueI18n | ExportedGlobalComposer): DropdownOption[]
createLocale("en_GB", "English (UK)"),
createLocale("zh_CN", "中文 (中国)"),
createLocale("zh_TW", "中文 (台灣)"),
createLocale("ru_RU", "Русский")
]
}
Expand Down
23 changes: 11 additions & 12 deletions frontend/src/components/mappings/MappingsFilterBlock.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,19 @@
<IconBrandCodepen :size="20"/>
</SubHeader>

<div class="pt-2 pb-2.5 flex gap-3">
<button v-for="item in ['mappings', 'stacktrace']"
:aria-selected="(mode ?? 'mappings') === item" @click="selectMode(item)" @mouseenter="modeHover = true" @mouseleave="modeHover = false"
class="selection-button py-2 px-3 flex items-center text-left rounded-lg bg-base-500 dark:bg-base-dark-200 bg-opacity-60 hover:bg-opacity-100
dark:hover:bg-base-dark-400 dark:focus:bg-base-dark-400 transition-all duration-150 border-none select-none group overflow-clip flex-shrink-0">
<IconTriangles class="flex-shrink-0" :size="20" v-if="item === 'mappings'"/>
<IconFileSad class="flex-shrink-0" :size="20" v-else/>
<span :aria-expanded="!modeHover && (mode ?? 'mappings') === item"
class="group-hover:opacity-100 group-hover:w-fit group-hover:pl-2 aria-expanded:opacity-100 aria-expanded:w-fit aria-expanded:pl-2 w-0 pl-0 transition-all duration-150 opacity-[-100]">
<div class="pt-2 pb-2.5 flex gap-3">
<button v-for="item in ['mappings', 'stacktrace']"
:aria-selected="(mode ?? 'mappings') === item" @click="selectMode(item)" @mouseenter="modeHover = true" @mouseleave="modeHover = false"
class="selection-button py-2 px-3 flex items-center text-left rounded-lg bg-base-500 dark:bg-base-dark-200 bg-opacity-60 hover:bg-opacity-100 dark:hover:bg-base-dark-400 dark:focus:bg-base-dark-400 transition-all duration-150 border-none select-none group overflow-clip flex-shrink-0">
<IconTriangles class="flex-shrink-0" :size="20" v-if="item === 'mappings'"/>
<IconFileSad class="flex-shrink-0" :size="20" v-else/>
<span :aria-expanded="!modeHover && (mode ?? 'mappings') === item"
class="group-hover:opacity-100 group-hover:w-fit group-hover:pl-2 aria-expanded:opacity-100 aria-expanded:w-fit aria-expanded:pl-2 w-0 pl-0 transition-all duration-150 opacity-[-100] text-ellipsis whitespace-nowrap overflow-hidden">
{{ $t(`mappings.mode.${item}`) }}</span>
</button>
</div>
</button>
</div>
<div class="divider mt-0 mb-0 pb-0.5"/>
<div class="divider mt-0 mb-0 pb-0.5"/>
<SubHeader class="mt-[-.25rem] mb-1 flex items-center gap-1.5">
{{ $t("mappings.namespace") }}
Expand Down
102 changes: 102 additions & 0 deletions frontend/src/locales/ru_RU.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
{
"navbar./": "Linkie",
"navbar./dependencies": "Зависимости",
"navbar./generator": "Генератор",
"navbar./mappings": "Отображения",
"navbar./desktop": "Рабочий стол",
"navbar.locale.help.0": "Не нашли ваш язык?",
"navbar.locale.help.1": "Помогите добавить его!",
"home.welcome": "Добро пожаловать в Linkie",
"home.quick.access": "Быстрый доступ",
"home.dependencies": "Зависимости",
"home.mappings": "Отображения",
"dependencies.loader": "Загрузчик",
"dependencies.build.system": "Система сборки",
"dependencies.build.system.architectury.loom": "Architectury Loom",
"dependencies.build.system.forge.gradle": "ForgeGradle",
"dependencies.build.system.neo.gradle": "NeoGradle",
"dependencies.version": "Версия",
"dependencies.version.snapshots": "Включить снэпшоты",
"dependencies.maven.repo": "Maven Репозиторий",
"dependencies.toc": "Содержание",
"generator.template.base.title": "Базовый шаблон",
"generator.template.base.description": "Выберите базовый шаблон для начала. Это определяет *загрузчик модов*, который будет использовать ваш проект и поддерживать, а также *систему сборки* и доступные *библиотеки*.\nПожалуйста, тщательно обдумайте свой выбор, так как изменение базового шаблона позже будет очень трудоемким.",
"generator.template.base.details.ide": "Поддержка IDE",
"generator.template.base.details.features": "Функции",
"generator.versions.title": "Версии",
"generator.versions.description": "Давайте выберем версию Minecraft, на которую будем ориентироваться!",
"generator.versions.version": "Версия Minecraft",
"generator.mod.loaders.title": "Загрузчики модов",
"generator.build.system.title": "Система сборки",
"generator.build.system.description.forge": "Выберите свою систему сборки.\n*ForgeGradle* — официальная система сборки для модов Forge, в то время как *Architectury Loom* является неофициальной альтернативой, поддерживающей альтернативные отображения, такие как Yarn и Quilt Mappings на Forge.\n\nЕсли вы не уверены, что выбрать, используйте *ForgeGradle*.",
"generator.build.system.description.mappings": "Теперь выберите предпочитаемые отображения.\n*Официальные отображения Mojang* — это официальные отображения для Minecraft, а *Yarn* — это неофициальная свободная альтернатива от FabricMC, которая используется сообществом Fabric.",
"generator.build.system.description.mappings.parchment": "Так как официальные отображения Mojang не предоставляют имен параметров, был создан проект сообщества под названием *Parchment*, чтобы их предоставить.\nВы можете выбрать использование Parchment для предоставления имен параметров или нет.",
"generator.build.system.description.mappings.parchment.toggle": "Включить поддержку Parchment",
"generator.build.system.description.env.split": "Распространенной причиной сбоев серверов является вызов клиентского кода на сервере. Эта опция настраивает ваш мод на создание из двух наборов исходников: *клиент* и *основной*. Это обеспечивает четкое разделение клиентского и серверного кода.",
"generator.build.system.description.gradle.language": "Затем выберите предпочитаемый язык сценариев для ваших сборок.\nЕсли вы не уверены, что выбрать, используйте *Groovy*, так как это самый часто используемый язык для Gradle.",
"generator.mod.config.title": "Конфигурация мода",
"generator.mod.config.description": "Убедитесь, что ваш мод действительно уникален!\nПожалуйста, заполните следующую информацию о вашем моде:",
"generator.mod.config.mod.name": "Имя мода",
"generator.mod.config.mod.description": "Описание мода",
"generator.mod.config.mod.license": "Лицензия мода",
"generator.mod.config.mod.main.class": "Имя основного класса",
"generator.mod.config.mod.client.class": "Имя клиентского класса",
"generator.mod.config.mod.id": "ID мода",
"generator.mod.config.mod.version": "Версия",
"generator.mod.config.mod.package": "Пакет",
"generator.mod.config.mod.authors": "Авторы",
"generator.mixins.config.title": "Конфигурация Миксинов",
"generator.mixins.config.description.1": "Миксины — это система модификации основной игры, доступная как в Forge, так и в Fabric. Моддерам Forge это может быть менее знакомо, так как Forge обычно предоставляет все, что нужно.",
"generator.mixins.config.description.2": "Введение в Миксины на Wiki Fabric — отличный ресурс для начала. Однако *вам могут не понадобиться Миксины*, если ваш мод — это что-то простое, например, добавление нескольких блоков и предметов, API предоставляет все необходимое для этого.\n\nhttps://fabricmc.net/wiki/tutorial:mixin_introduction",
"generator.mixins.config.description.fabric": "Это не так в случае с Fabric. Большое количество событий и хуков недоступно в Fabric, и большинство из них вам придется подключать самостоятельно.",
"generator.dependencies.title": "Зависимости",
"mappings.mode": "Режим",
"mappings.mode.mappings": "Отображения",
"mappings.mode.stacktrace": "Стек трассировки",
"mappings.namespace": "Пространство имен",
"mappings.namespace.show.more": "Показать больше...",
"mappings.namespace.show.less": "Скрыть...",
"mappings.version": "Версия",
"mappings.version.snapshots": "Включить снэпшоты:",
"mappings.version.no.translation": "{version} (без перевода)",
"mappings.translation": "Перевод",
"mappings.translation.none": "Без перевода",
"mappings.translation.another.namespace": "Перевести в другое пространство имен",
"mappings.translation.another.version": "Перевести в другую версию",
"mappings.translation.n/a": "Н/д",
"mappings.search.type": "Тип поиска:",
"mappings.search.type.classes": "Классы",
"mappings.search.type.methods": "Методы",
"mappings.search.type.fields": "Поля",
"mappings.searching": "Поиск результатов",
"mappings.searching.subtitle": "Чувствуете удачу?",
"mappings.searching.none": "Нет результатов",
"mappings.searching.none.try": "Попробуйте что-то поискать?",
"mappings.searching.none.mistake": "Допустили ошибку в поиске?",
"mappings.entry.type.class": "Класс",
"mappings.entry.type.method": "Метод",
"mappings.entry.type.field": "Поле",
"mappings.entry.type": "Тип:",
"mappings.entry.mixin.target": "Цель Миксина:",
"mappings.entry.at": "AT:",
"mappings.entry.aw": "AW:",
"mappings.entry.view.sources": "Посмотреть источники",
"namespace.yarn": "Yarn",
"namespace.mojang_raw": "Mojang",
"namespace.mojang": "Mojang (через Intermediary)",
"namespace.mojang_srg": "Mojang (через SRG)",
"namespace.mojang_hashed": "Mojang (через Hashed)",
"namespace.mcp": "Старый MCP (<=1.16.5)",
"namespace.quilt-mappings": "Quilt Отображения",
"namespace.legacy-yarn": "Устаревший Yarn",
"namespace.feather": "Feather",
"namespace.barn": "Barn",
"namespace.yarrn": "Yarrn",
"namespace.plasma": "Plasma",
"loader.fabric": "Fabric",
"loader.forge": "Forge",
"loader.neoforge": "NeoForge",
"loader.quilt": "Quilt",
"loader.legacy-fabric": "Устаревший Fabric",
"message.copy.clipboard": "Скопировано в буфер обмена"
}
2 changes: 2 additions & 0 deletions frontend/src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import enUS from "./locales/en_US.json"
import enGB from "./locales/en_GB.json"
// @ts-ignore
import zhCN from "./locales/zh_CN.json"
import ruRU from "./locales/ru_RU.json"
// @ts-ignore
import zhTW from "./locales/zh_TW.json"
import {isTauri} from "./app/tauri/tauri"
Expand Down Expand Up @@ -63,6 +64,7 @@ const i18n = createI18n({
"en_GB": enGB,
"zh_CN": zhCN,
"zh_TW": zhTW,
"ru_RU": ruRU,
},
})

Expand Down

0 comments on commit 014e6b1

Please sign in to comment.