Re-design of submodules used in blender.git
This commit implements described in the #104573. The goal is to fix the confusion of the submodule hashes change, which are not ideal for any of the supported git-module configuration (they are either always visible causing confusion, or silently staged and committed, also causing confusion). This commit replaces submodules with a checkout of addons and addons_contrib, covered by the .gitignore, and locale and developer tools are moved to the main repository. This also changes the paths: - /release/scripts are moved to the /scripts - /source/tools are moved to the /tools - /release/datafiles/locale is moved to /locale This is done to avoid conflicts when using bisect, and also allow buildbot to automatically "recover" wgen building older or newer branches/patches. Running `make update` will initialize the local checkout to the changed repository configuration. Another aspect of the change is that the make update will support Github style of remote organization (origin remote pointing to thy fork, upstream remote pointing to the upstream blender/blender.git). Pull Request #104755
This commit is contained in:
parent
3e721195b0
commit
03806d0b67
20
.gitignore
vendored
20
.gitignore
vendored
@ -39,7 +39,7 @@ Desktop.ini
|
||||
/doc/python_api/rst/bmesh.ops.rst
|
||||
|
||||
# in-source lib downloads
|
||||
/build_files/build_environment/downloads
|
||||
/build_files/build_environment/downloads/
|
||||
|
||||
# in-source buildbot signing configuration
|
||||
/build_files/buildbot/codesign/config_server.py
|
||||
@ -48,4 +48,20 @@ Desktop.ini
|
||||
waveletNoiseTile.bin
|
||||
|
||||
# testing environment
|
||||
/Testing
|
||||
/Testing/
|
||||
|
||||
# Translations.
|
||||
/locale/user-config.py
|
||||
|
||||
# External repositories.
|
||||
/scripts/addons/
|
||||
/scripts/addons_contrib/
|
||||
|
||||
# Ignore old submodules directories.
|
||||
# Eventually need to get rid of those, but for the first time of transition
|
||||
# avoid indidents when the folders exists after bisect and developers staging
|
||||
# them by accident.
|
||||
/release/scripts/addons/
|
||||
/release/datafiles/locale/
|
||||
/release/scripts/addons_contrib/
|
||||
/source/tools/
|
||||
|
20
.gitmodules
vendored
20
.gitmodules
vendored
@ -1,20 +0,0 @@
|
||||
[submodule "release/scripts/addons"]
|
||||
path = release/scripts/addons
|
||||
url = ../blender-addons.git
|
||||
branch = main
|
||||
ignore = all
|
||||
[submodule "release/scripts/addons_contrib"]
|
||||
path = release/scripts/addons_contrib
|
||||
url = ../blender-addons-contrib.git
|
||||
branch = main
|
||||
ignore = all
|
||||
[submodule "release/datafiles/locale"]
|
||||
path = release/datafiles/locale
|
||||
url = ../blender-translations.git
|
||||
branch = main
|
||||
ignore = all
|
||||
[submodule "source/tools"]
|
||||
path = source/tools
|
||||
url = ../blender-dev-tools.git
|
||||
branch = main
|
||||
ignore = all
|
@ -954,21 +954,6 @@ endif()
|
||||
# -----------------------------------------------------------------------------
|
||||
# Check if Sub-modules are Cloned
|
||||
|
||||
if(WITH_INTERNATIONAL)
|
||||
file(GLOB RESULT "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
|
||||
list(LENGTH RESULT DIR_LEN)
|
||||
if(DIR_LEN EQUAL 0)
|
||||
message(
|
||||
WARNING
|
||||
"Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
|
||||
"This is a 'git submodule', which are known not to work with bridges to other version "
|
||||
"control systems."
|
||||
)
|
||||
set(TRANSLATIONS_FOUND OFF)
|
||||
set_and_warn_library_found("Translations" TRANSLATIONS_FOUND WITH_INTERNATIONAL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_PYTHON)
|
||||
# While we have this as an '#error' in 'bpy_capi_utils.h',
|
||||
# upgrading Python tends to cause confusion for users who build.
|
||||
@ -984,14 +969,14 @@ if(WITH_PYTHON)
|
||||
)
|
||||
endif()
|
||||
|
||||
file(GLOB RESULT "${CMAKE_SOURCE_DIR}/release/scripts/addons")
|
||||
file(GLOB RESULT "${CMAKE_SOURCE_DIR}/scripts/addons")
|
||||
list(LENGTH RESULT DIR_LEN)
|
||||
if(DIR_LEN EQUAL 0)
|
||||
message(
|
||||
WARNING
|
||||
"Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
|
||||
"This is a 'git submodule', which are known not to work with bridges to other version "
|
||||
"control systems: * CONTINUING WITHOUT ADDONS *"
|
||||
"Addons path '${CMAKE_SOURCE_DIR}/cripts/addons' is missing. "
|
||||
"This is an external repository which needs to be checked out. Use `make update` to do so. "
|
||||
"* CONTINUING WITHOUT ADDONS *"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
28
GNUmakefile
28
GNUmakefile
@ -69,7 +69,7 @@ Static Source Code Checking
|
||||
* check_cmake: Runs our own cmake file checker which detects errors in the cmake file list definitions.
|
||||
* check_pep8: Checks all Python script are pep8 which are tagged to use the stricter formatting.
|
||||
* check_mypy: Checks all Python scripts using mypy,
|
||||
see: source/tools/check_source/check_mypy_config.py scripts which are included.
|
||||
see: tools/check_source/check_mypy_config.py scripts which are included.
|
||||
|
||||
Documentation Checking
|
||||
|
||||
@ -85,7 +85,7 @@ Spell Checkers
|
||||
* check_spelling_osl: Check for spelling errors (OSL only).
|
||||
* check_spelling_py: Check for spelling errors (Python only).
|
||||
|
||||
Note: an additional word-list is maintained at: 'source/tools/check_source/check_spelling_c_config.py'
|
||||
Note: an additional word-list is maintained at: 'tools/check_source/check_spelling_c_config.py'
|
||||
|
||||
Note: that spell checkers can take a 'CHECK_SPELLING_CACHE' filepath argument,
|
||||
so re-running does not need to re-check unchanged files.
|
||||
@ -490,22 +490,22 @@ check_smatch: .FORCE
|
||||
$(PYTHON) "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_smatch.py"
|
||||
|
||||
check_mypy: .FORCE
|
||||
@$(PYTHON) "$(BLENDER_DIR)/source/tools/check_source/check_mypy.py"
|
||||
@$(PYTHON) "$(BLENDER_DIR)/tools/check_source/check_mypy.py"
|
||||
|
||||
check_wiki_file_structure: .FORCE
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_wiki/check_wiki_file_structure.py"
|
||||
"$(BLENDER_DIR)/tools/check_wiki/check_wiki_file_structure.py"
|
||||
|
||||
check_spelling_py: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/release/scripts"
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/scripts"
|
||||
|
||||
check_spelling_c: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
"$(BLENDER_DIR)/source" \
|
||||
"$(BLENDER_DIR)/intern/cycles" \
|
||||
@ -515,21 +515,21 @@ check_spelling_c: .FORCE
|
||||
check_spelling_osl: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
"$(BLENDER_DIR)/intern/cycles/kernel/shaders"
|
||||
|
||||
check_descriptions: .FORCE
|
||||
@$(BLENDER_BIN) --background -noaudio --factory-startup --python \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_descriptions.py"
|
||||
"$(BLENDER_DIR)/tools/check_source/check_descriptions.py"
|
||||
|
||||
check_deprecated: .FORCE
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
source/tools/check_source/check_deprecated.py
|
||||
tools/check_source/check_deprecated.py
|
||||
|
||||
check_licenses: .FORCE
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_licenses.py" \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_licenses.py" \
|
||||
"--show-headers=$(SHOW_HEADERS)"
|
||||
|
||||
check_pep8: .FORCE
|
||||
@ -538,7 +538,7 @@ check_pep8: .FORCE
|
||||
|
||||
check_cmake: .FORCE
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
source/tools/check_source/check_cmake_consistency.py
|
||||
tools/check_source/check_cmake_consistency.py
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
@ -576,8 +576,8 @@ update_code: .FORCE
|
||||
@$(PYTHON) ./build_files/utils/make_update.py --no-libraries
|
||||
|
||||
format: .FORCE
|
||||
@PATH="${LIBDIR}/llvm/bin/:$(PATH)" $(PYTHON) source/tools/utils_maintenance/clang_format_paths.py $(PATHS)
|
||||
@$(PYTHON) source/tools/utils_maintenance/autopep8_format_paths.py --autopep8-command="$(AUTOPEP8)" $(PATHS)
|
||||
@PATH="${LIBDIR}/llvm/bin/:$(PATH)" $(PYTHON) tools/utils_maintenance/clang_format_paths.py $(PATHS)
|
||||
@$(PYTHON) tools/utils_maintenance/autopep8_format_paths.py --autopep8-command="$(AUTOPEP8)" $(PATHS)
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
@ -901,11 +901,11 @@ endif()
|
||||
|
||||
if(WINDOWS_PYTHON_DEBUG)
|
||||
# Include the system scripts in the blender_python_system_scripts project.
|
||||
file(GLOB_RECURSE inFiles "${CMAKE_SOURCE_DIR}/release/scripts/*.*" )
|
||||
file(GLOB_RECURSE inFiles "${CMAKE_SOURCE_DIR}/scripts/*.*" )
|
||||
add_custom_target(blender_python_system_scripts SOURCES ${inFiles})
|
||||
foreach(_source IN ITEMS ${inFiles})
|
||||
get_filename_component(_source_path "${_source}" PATH)
|
||||
string(REPLACE "${CMAKE_SOURCE_DIR}/release/scripts/" "" _source_path "${_source_path}")
|
||||
string(REPLACE "${CMAKE_SOURCE_DIR}/scripts/" "" _source_path "${_source_path}")
|
||||
string(REPLACE "/" "\\" _group_path "${_source_path}")
|
||||
source_group("${_group_path}" FILES "${_source}")
|
||||
endforeach()
|
||||
@ -940,7 +940,7 @@ if(WINDOWS_PYTHON_DEBUG)
|
||||
file(WRITE ${USER_PROPS_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?>
|
||||
<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">
|
||||
<PropertyGroup>
|
||||
<LocalDebuggerCommandArguments>-con --env-system-scripts \"${CMAKE_SOURCE_DIR}/release/scripts\" </LocalDebuggerCommandArguments>
|
||||
<LocalDebuggerCommandArguments>-con --env-system-scripts \"${CMAKE_SOURCE_DIR}/scripts\" </LocalDebuggerCommandArguments>
|
||||
</PropertyGroup>
|
||||
</Project>")
|
||||
endif()
|
||||
|
@ -1,53 +1,3 @@
|
||||
#
|
||||
# Used by Buildbot build pipeline make_update.py script only for now
|
||||
# We intended to update the make_update.py in the branches to use this file eventually
|
||||
#
|
||||
update-code:
|
||||
git:
|
||||
submodules:
|
||||
- branch: blender-v3.5-release
|
||||
commit_id: HEAD
|
||||
path: release/scripts/addons
|
||||
- branch: blender-v3.5-release
|
||||
commit_id: HEAD
|
||||
path: release/scripts/addons_contrib
|
||||
- branch: blender-v3.5-release
|
||||
commit_id: HEAD
|
||||
path: release/datafiles/locale
|
||||
- branch: blender-v3.5-release
|
||||
commit_id: HEAD
|
||||
path: source/tools
|
||||
svn:
|
||||
libraries:
|
||||
darwin-arm64:
|
||||
branch: tags/blender-3.5-release
|
||||
commit_id: HEAD
|
||||
path: lib/darwin_arm64
|
||||
darwin-x86_64:
|
||||
branch: tags/blender-3.5-release
|
||||
commit_id: HEAD
|
||||
path: lib/darwin
|
||||
linux-x86_64:
|
||||
branch: tags/blender-3.5-release
|
||||
commit_id: HEAD
|
||||
path: lib/linux_x86_64_glibc_228
|
||||
windows-amd64:
|
||||
branch: tags/blender-3.5-release
|
||||
commit_id: HEAD
|
||||
path: lib/win64_vc15
|
||||
tests:
|
||||
branch: tags/blender-3.5-release
|
||||
commit_id: HEAD
|
||||
path: lib/tests
|
||||
benchmarks:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/benchmarks
|
||||
assets:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/assets
|
||||
|
||||
#
|
||||
# Buildbot only configs
|
||||
#
|
||||
|
@ -135,7 +135,7 @@ def submodules_to_manifest(
|
||||
submodule = line.split()[1]
|
||||
|
||||
# Don't use native slashes as GIT for MS-Windows outputs forward slashes.
|
||||
if skip_addon_contrib and submodule == "release/scripts/addons_contrib":
|
||||
if skip_addon_contrib and submodule == "scripts/addons_contrib":
|
||||
continue
|
||||
|
||||
for path in git_ls_files(blender_srcdir / submodule):
|
||||
|
@ -16,14 +16,28 @@ import shutil
|
||||
import sys
|
||||
|
||||
import make_utils
|
||||
from pathlib import Path
|
||||
from make_utils import call, check_output
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from typing import (
|
||||
List,
|
||||
Iterable,
|
||||
Optional,
|
||||
)
|
||||
|
||||
|
||||
class Submodule:
|
||||
path: str
|
||||
branch: str
|
||||
branch_fallback: str
|
||||
|
||||
def __init__(self, path: str, branch: str, branch_fallback: str) -> None:
|
||||
self.path = path
|
||||
self.branch = branch
|
||||
self.branch_fallback = branch_fallback
|
||||
|
||||
|
||||
def print_stage(text: str) -> None:
|
||||
print("")
|
||||
print(text)
|
||||
@ -196,73 +210,257 @@ def git_update_skip(args: argparse.Namespace, check_remote_exists: bool = True)
|
||||
return ""
|
||||
|
||||
|
||||
def use_upstream_workflow(args: argparse.Namespace) -> bool:
|
||||
return make_utils.git_remote_exist(args.git_command, "upstream")
|
||||
|
||||
|
||||
def work_tree_update_upstream_workflow(args: argparse.Namespace, use_fetch=True) -> str:
|
||||
"""
|
||||
Update the Blender repository using the Github style of fork organization
|
||||
|
||||
Returns true if the current local branch has been updated to the upstream state.
|
||||
Otherwise false is returned.
|
||||
"""
|
||||
|
||||
branch_name = make_utils.git_branch(args.git_command)
|
||||
|
||||
if use_fetch:
|
||||
call((args.git_command, "fetch", "upstream"))
|
||||
|
||||
upstream_branch = f"upstream/{branch_name}"
|
||||
if not make_utils.git_branch_exists(args.git_command, upstream_branch):
|
||||
return "no_branch"
|
||||
|
||||
retcode = call((args.git_command, "merge", "--ff-only", upstream_branch), exit_on_error=False)
|
||||
if retcode != 0:
|
||||
return "Unable to fast forward\n"
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def work_tree_update(args: argparse.Namespace, use_fetch=True) -> str:
|
||||
"""
|
||||
Update the Git working tree using the best strategy
|
||||
|
||||
This function detects whether it is a github style of fork remote organization is used, or
|
||||
is it a repository which origin is an upstream.
|
||||
"""
|
||||
|
||||
if use_upstream_workflow(args):
|
||||
message = work_tree_update_upstream_workflow(args, use_fetch)
|
||||
if message != "no_branch":
|
||||
return message
|
||||
|
||||
# If there is upstream configured but the local branch is not in the upstream, try to
|
||||
# update the branch from the fork.
|
||||
|
||||
update_command = [args.git_command, "pull", "--rebase"]
|
||||
|
||||
call(update_command)
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
# Update blender repository.
|
||||
def blender_update(args: argparse.Namespace) -> None:
|
||||
def blender_update(args: argparse.Namespace) -> str:
|
||||
print_stage("Updating Blender Git Repository")
|
||||
call([args.git_command, "pull", "--rebase"])
|
||||
|
||||
return work_tree_update(args)
|
||||
|
||||
|
||||
# Update submodules.
|
||||
def submodules_update(
|
||||
args: argparse.Namespace,
|
||||
release_version: Optional[str],
|
||||
branch: Optional[str],
|
||||
) -> str:
|
||||
print_stage("Updating Submodules")
|
||||
if make_utils.command_missing(args.git_command):
|
||||
sys.stderr.write("git not found, can't update code\n")
|
||||
sys.exit(1)
|
||||
def resolve_external_url(blender_url: str, repo_name: str) -> str:
|
||||
return urljoin(blender_url + "/", "../" + repo_name)
|
||||
|
||||
# Update submodules to appropriate given branch,
|
||||
# falling back to main if none is given and/or found in a sub-repository.
|
||||
|
||||
def external_script_copy_old_submodule_over(args: argparse.Namespace, directory_name: str) -> None:
|
||||
blender_git_root = Path(get_blender_git_root())
|
||||
scripts_dir = blender_git_root / "scripts"
|
||||
external_dir = scripts_dir / directory_name
|
||||
|
||||
old_submodule_relative_dir = Path("release") / "scripts" / directory_name
|
||||
print(f"Moving {old_submodule_relative_dir} to scripts/{directory_name} ...")
|
||||
|
||||
old_submodule_dir = blender_git_root / old_submodule_relative_dir
|
||||
shutil.move(old_submodule_dir, external_dir)
|
||||
|
||||
# Remove old ".git" which is a file with path to a submodule bare repo inside of main
|
||||
# repo .git/modules directory.
|
||||
(external_dir / ".git").unlink()
|
||||
|
||||
bare_repo_relative_dir = Path(".git") / "modules" / "release" / "scripts" / directory_name
|
||||
print(f"Copying {bare_repo_relative_dir} to scripts/{directory_name}/.git ...")
|
||||
bare_repo_dir = blender_git_root / bare_repo_relative_dir
|
||||
shutil.copytree(bare_repo_dir, external_dir / ".git")
|
||||
|
||||
git_config = external_dir / ".git" / "config"
|
||||
call((args.git_command, "config", "--file", git_config, "--unset", "core.worktree"))
|
||||
|
||||
|
||||
def external_script_initialize_if_needed(args: argparse.Namespace,
|
||||
repo_name: str,
|
||||
directory_name: str) -> None:
|
||||
"""Initialize checkout of an external repository scripts directory"""
|
||||
|
||||
blender_git_root = Path(get_blender_git_root())
|
||||
blender_dot_git = blender_git_root / ".git"
|
||||
scripts_dir = blender_git_root / "scripts"
|
||||
external_dir = scripts_dir / directory_name
|
||||
|
||||
if external_dir.exists():
|
||||
return
|
||||
|
||||
print(f"Initializing scripts/{directory_name} ...")
|
||||
|
||||
old_submodule_dot_git = blender_git_root / "release" / "scripts" / directory_name / ".git"
|
||||
if old_submodule_dot_git.exists() and blender_dot_git.is_dir():
|
||||
external_script_copy_old_submodule_over(args, directory_name)
|
||||
return
|
||||
|
||||
origin_name = "upstream" if use_upstream_workflow(args) else "origin"
|
||||
blender_url = make_utils.git_get_remote_url(args.git_command, origin_name)
|
||||
external_url = resolve_external_url(blender_url, repo_name)
|
||||
|
||||
call((args.git_command, "clone", "--origin", origin_name, external_url, external_dir))
|
||||
|
||||
|
||||
def external_script_add_origin_if_needed(args: argparse.Namespace,
|
||||
repo_name: str,
|
||||
directory_name: str) -> str:
|
||||
"""
|
||||
Add remote called 'origin' if there is a fork of the external repository available
|
||||
|
||||
This is only done when using Github style upstream workflow in the main repository.
|
||||
"""
|
||||
|
||||
if not use_upstream_workflow(args):
|
||||
return ""
|
||||
|
||||
cwd = os.getcwd()
|
||||
|
||||
blender_git_root = Path(get_blender_git_root())
|
||||
scripts_dir = blender_git_root / "scripts"
|
||||
external_dir = scripts_dir / directory_name
|
||||
|
||||
origin_blender_url = make_utils.git_get_remote_url(args.git_command, "origin")
|
||||
origin_external_url = resolve_external_url(origin_blender_url, repo_name)
|
||||
|
||||
try:
|
||||
os.chdir(external_dir)
|
||||
|
||||
if (make_utils.git_remote_exist(args.git_command, "origin") or
|
||||
not make_utils.git_remote_exist(args.git_command, "upstream")):
|
||||
return
|
||||
|
||||
if not make_utils.git_is_remote_repository(args.git_command, origin_external_url):
|
||||
return
|
||||
|
||||
print(f"Adding origin remote to {directory_name} pointing to fork ...")
|
||||
|
||||
# Non-obvious tricks to introduce the new remote called "origin" to the existing
|
||||
# submodule configuration.
|
||||
#
|
||||
# This is all within the content of creating a fork of a submodule after `make update`
|
||||
# has been run and possibly local branches tracking upstream were added.
|
||||
#
|
||||
# The idea here goes as following:
|
||||
#
|
||||
# - Rename remote "upstream" to "origin", which takes care of changing the names of
|
||||
# remotes the local branches are tracking.
|
||||
#
|
||||
# - Change the URL to the "origin", which so was was still pointing to upstream.
|
||||
#
|
||||
# - Re-introduce the "upstream" remote, with the same URL as it had prior to rename.
|
||||
|
||||
upstream_url = make_utils.git_get_remote_url(args.git_command, "upstream")
|
||||
|
||||
call((args.git_command, "remote", "rename", "upstream", "origin"))
|
||||
make_utils.git_set_config(args.git_command, f"remote.origin.url", origin_external_url)
|
||||
|
||||
call((args.git_command, "remote", "add", "upstream", upstream_url))
|
||||
finally:
|
||||
os.chdir(cwd)
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def external_scripts_update(args: argparse.Namespace,
|
||||
repo_name: str,
|
||||
directory_name: str,
|
||||
branch: Optional[str]) -> str:
|
||||
"""Update a single external checkout with the given name in the scripts folder"""
|
||||
|
||||
external_script_initialize_if_needed(args, repo_name, directory_name)
|
||||
external_script_add_origin_if_needed(args, repo_name, directory_name)
|
||||
|
||||
print(f"Updating scripts/{directory_name} ...")
|
||||
|
||||
cwd = os.getcwd()
|
||||
|
||||
blender_git_root = Path(get_blender_git_root())
|
||||
scripts_dir = blender_git_root / "scripts"
|
||||
external_dir = scripts_dir / directory_name
|
||||
|
||||
# Update externals to appropriate given branch, falling back to main if none is given and/or
|
||||
# found in a sub-repository.
|
||||
branch_fallback = "main"
|
||||
if not branch:
|
||||
branch = branch_fallback
|
||||
|
||||
submodules = [
|
||||
("release/scripts/addons", branch, branch_fallback),
|
||||
("release/scripts/addons_contrib", branch, branch_fallback),
|
||||
("release/datafiles/locale", branch, branch_fallback),
|
||||
("source/tools", branch, branch_fallback),
|
||||
]
|
||||
|
||||
# Initialize submodules only if needed.
|
||||
for submodule_path, submodule_branch, submodule_branch_fallback in submodules:
|
||||
if not os.path.exists(os.path.join(submodule_path, ".git")):
|
||||
call([args.git_command, "submodule", "update", "--init", "--recursive"])
|
||||
break
|
||||
|
||||
# Checkout appropriate branch and pull changes.
|
||||
skip_msg = ""
|
||||
for submodule_path, submodule_branch, submodule_branch_fallback in submodules:
|
||||
cwd = os.getcwd()
|
||||
try:
|
||||
os.chdir(submodule_path)
|
||||
msg = git_update_skip(args, check_remote_exists=False)
|
||||
if msg:
|
||||
skip_msg += submodule_path + " skipped: " + msg + "\n"
|
||||
else:
|
||||
# Find a matching branch that exists.
|
||||
call([args.git_command, "fetch", "origin"])
|
||||
if make_utils.git_branch_exists(args.git_command, submodule_branch):
|
||||
pass
|
||||
elif make_utils.git_branch_exists(args.git_command, submodule_branch_fallback):
|
||||
submodule_branch = submodule_branch_fallback
|
||||
else:
|
||||
# Skip.
|
||||
submodule_branch = ""
|
||||
|
||||
# Switch to branch and pull.
|
||||
if submodule_branch:
|
||||
if make_utils.git_branch(args.git_command) != submodule_branch:
|
||||
call([args.git_command, "checkout", submodule_branch])
|
||||
call([args.git_command, "pull", "--rebase", "origin", submodule_branch])
|
||||
finally:
|
||||
os.chdir(cwd)
|
||||
try:
|
||||
os.chdir(external_dir)
|
||||
msg = git_update_skip(args, check_remote_exists=False)
|
||||
if msg:
|
||||
skip_msg += directory_name + " skipped: " + msg + "\n"
|
||||
else:
|
||||
# Find a matching branch that exists.
|
||||
for remote in ("origin", "upstream"):
|
||||
if make_utils.git_remote_exist(args.git_command, remote):
|
||||
call([args.git_command, "fetch", remote])
|
||||
|
||||
submodule_branch = branch
|
||||
|
||||
if make_utils.git_branch_exists(args.git_command, submodule_branch):
|
||||
pass
|
||||
elif make_utils.git_branch_exists(args.git_command, branch_fallback):
|
||||
submodule_branch = branch_fallback
|
||||
else:
|
||||
# Skip.
|
||||
submodule_branch = ""
|
||||
|
||||
# Switch to branch and pull.
|
||||
if submodule_branch:
|
||||
if make_utils.git_branch(args.git_command) != submodule_branch:
|
||||
call([args.git_command, "checkout", submodule_branch])
|
||||
# Don't use extra fetch since all remotes of interest have been already fetched
|
||||
# some lines above.
|
||||
skip_msg += work_tree_update(args, use_fetch=False)
|
||||
finally:
|
||||
os.chdir(cwd)
|
||||
|
||||
return skip_msg
|
||||
|
||||
|
||||
def scripts_submodules_update(args: argparse.Namespace, branch: Optional[str]) -> str:
|
||||
"""Update working trees of addons and addons_contrib within the scripts/ directory"""
|
||||
msg = ""
|
||||
|
||||
msg += external_scripts_update(args, "blender-addons", "addons", branch)
|
||||
msg += external_scripts_update(args, "blender-addons-contrib", "addons_contrib", branch)
|
||||
|
||||
return msg
|
||||
|
||||
|
||||
def submodules_update(args: argparse.Namespace, branch: Optional[str]) -> str:
|
||||
"""Update submodules or other externally tracked source trees"""
|
||||
msg = ""
|
||||
|
||||
msg += scripts_submodules_update(args, branch)
|
||||
|
||||
return msg
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = parse_arguments()
|
||||
blender_skip_msg = ""
|
||||
@ -285,9 +483,9 @@ if __name__ == "__main__":
|
||||
if blender_skip_msg:
|
||||
blender_skip_msg = "Blender repository skipped: " + blender_skip_msg + "\n"
|
||||
else:
|
||||
blender_update(args)
|
||||
blender_skip_msg = "Blender repository skipped: " + blender_update(args) + "\n"
|
||||
if not args.no_submodules:
|
||||
submodules_skip_msg = submodules_update(args, release_version, branch)
|
||||
submodules_skip_msg = submodules_update(args, branch)
|
||||
|
||||
# Report any skipped repositories at the end, so it's not as easy to miss.
|
||||
skip_msg = blender_skip_msg + submodules_skip_msg
|
||||
|
@ -9,7 +9,9 @@ import re
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
from pathlib import Path
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from typing import (
|
||||
Sequence,
|
||||
@ -19,7 +21,7 @@ from typing import (
|
||||
|
||||
def call(cmd: Sequence[str], exit_on_error: bool = True, silent: bool = False) -> int:
|
||||
if not silent:
|
||||
print(" ".join(cmd))
|
||||
print(" ".join([str(x) for x in cmd]))
|
||||
|
||||
# Flush to ensure correct order output on Windows.
|
||||
sys.stdout.flush()
|
||||
@ -55,10 +57,48 @@ def check_output(cmd: Sequence[str], exit_on_error: bool = True) -> str:
|
||||
def git_branch_exists(git_command: str, branch: str) -> bool:
|
||||
return (
|
||||
call([git_command, "rev-parse", "--verify", branch], exit_on_error=False, silent=True) == 0 or
|
||||
call([git_command, "rev-parse", "--verify", "remotes/upstream/" + branch], exit_on_error=False, silent=True) == 0 or
|
||||
call([git_command, "rev-parse", "--verify", "remotes/origin/" + branch], exit_on_error=False, silent=True) == 0
|
||||
)
|
||||
|
||||
|
||||
def git_get_remote_url(git_command: str, remote_name: str) -> bool:
|
||||
return check_output((git_command, "ls-remote", "--get-url", remote_name))
|
||||
|
||||
|
||||
def git_remote_exist(git_command: str, remote_name: str) -> bool:
|
||||
"""Check whether there is a remote with the given name"""
|
||||
# `git ls-remote --get-url upstream` will print an URL if there is such remote configured, and
|
||||
# otherwise will print "upstream".
|
||||
remote_url = check_output((git_command, "ls-remote", "--get-url", remote_name))
|
||||
return remote_url != remote_name
|
||||
|
||||
|
||||
def git_get_resolved_submodule_url(git_command: str, blender_url: str, submodule_path: str) -> str:
|
||||
git_root = check_output([git_command, "rev-parse", "--show-toplevel"])
|
||||
dot_gitmodules = os.path.join(git_root, ".gitmodules")
|
||||
|
||||
submodule_key_prefix = f"submodule.{submodule_path}"
|
||||
submodule_key_url = f"{submodule_key_prefix}.url"
|
||||
|
||||
gitmodule_url = git_get_config(
|
||||
git_command, submodule_key_url, file=dot_gitmodules)
|
||||
|
||||
# A bit of a trickery to construct final URL.
|
||||
# Only works for the relative submodule URLs.
|
||||
#
|
||||
# Note that unless the LHS URL ends up with a slash urljoin treats the last component as a
|
||||
# file.
|
||||
assert gitmodule_url.startswith('..')
|
||||
return urljoin(blender_url + "/", gitmodule_url)
|
||||
|
||||
|
||||
def git_is_remote_repository(git_command: str, repo: str) -> bool:
|
||||
"""Returns true if the given repository is a valid/clonable git repo"""
|
||||
exit_code = call((git_command, "ls-remote", repo, "HEAD"), exit_on_error=False, silent=True)
|
||||
return exit_code == 0
|
||||
|
||||
|
||||
def git_branch(git_command: str) -> str:
|
||||
# Get current branch name.
|
||||
try:
|
||||
@ -70,6 +110,20 @@ def git_branch(git_command: str) -> str:
|
||||
return branch.strip().decode('utf8')
|
||||
|
||||
|
||||
def git_get_config(git_command: str, key: str, file: Optional[str] = None) -> str:
|
||||
if file:
|
||||
return check_output([git_command, "config", "--file", file, "--get", key])
|
||||
|
||||
return check_output([git_command, "config", "--get", key])
|
||||
|
||||
|
||||
def git_set_config(git_command: str, key: str, value: str, file: Optional[str] = None) -> str:
|
||||
if file:
|
||||
return check_output([git_command, "config", "--file", file, key, value])
|
||||
|
||||
return check_output([git_command, "config", key, value])
|
||||
|
||||
|
||||
def git_tag(git_command: str) -> Optional[str]:
|
||||
# Get current tag name.
|
||||
try:
|
||||
|
@ -4,9 +4,9 @@ if "%GIT%" == "" (
|
||||
)
|
||||
cd "%BLENDER_DIR%"
|
||||
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Branch_hash=%%i
|
||||
cd "%BLENDER_DIR%/release/datafiles/locale"
|
||||
cd "%BLENDER_DIR%/locale"
|
||||
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Locale_hash=%%i
|
||||
cd "%BLENDER_DIR%/release/scripts/addons"
|
||||
cd "%BLENDER_DIR%/scripts/addons"
|
||||
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Addons_Hash=%%i
|
||||
cd "%BLENDER_DIR%"
|
||||
:EOF
|
@ -31,7 +31,7 @@ For an overview of BMesh data types and how they reference each other see:
|
||||
Example Script
|
||||
--------------
|
||||
|
||||
.. literalinclude:: __/__/__/release/scripts/templates_py/bmesh_simple.py
|
||||
.. literalinclude:: __/__/__/scripts/templates_py/bmesh_simple.py
|
||||
|
||||
|
||||
Standalone Module
|
||||
|
@ -288,7 +288,7 @@ In Python, this is done by defining a class, which is a subclass of an existing
|
||||
Example Operator
|
||||
----------------
|
||||
|
||||
.. literalinclude:: __/__/__/release/scripts/templates_py/operator_simple.py
|
||||
.. literalinclude:: __/__/__/scripts/templates_py/operator_simple.py
|
||||
|
||||
Once this script runs, ``SimpleOperator`` is registered with Blender
|
||||
and can be called from Operator Search or added to the toolbar.
|
||||
@ -320,7 +320,7 @@ Example Panel
|
||||
Panels are registered as a class, like an operator.
|
||||
Notice the extra ``bl_`` variables used to set the context they display in.
|
||||
|
||||
.. literalinclude:: __/__/__/release/scripts/templates_py/ui_panel_simple.py
|
||||
.. literalinclude:: __/__/__/scripts/templates_py/ui_panel_simple.py
|
||||
|
||||
To run the script:
|
||||
|
||||
|
@ -367,13 +367,13 @@ except ImportError:
|
||||
# Note that ".." is replaced by "__" in the RST files,
|
||||
# to avoid having to match Blender's source tree.
|
||||
EXTRA_SOURCE_FILES = (
|
||||
"../../../release/scripts/templates_py/bmesh_simple.py",
|
||||
"../../../release/scripts/templates_py/gizmo_operator.py",
|
||||
"../../../release/scripts/templates_py/gizmo_operator_target.py",
|
||||
"../../../release/scripts/templates_py/gizmo_simple.py",
|
||||
"../../../release/scripts/templates_py/operator_simple.py",
|
||||
"../../../release/scripts/templates_py/ui_panel_simple.py",
|
||||
"../../../release/scripts/templates_py/ui_previews_custom_icon.py",
|
||||
"../../../scripts/templates_py/bmesh_simple.py",
|
||||
"../../../scripts/templates_py/gizmo_operator.py",
|
||||
"../../../scripts/templates_py/gizmo_operator_target.py",
|
||||
"../../../scripts/templates_py/gizmo_simple.py",
|
||||
"../../../scripts/templates_py/operator_simple.py",
|
||||
"../../../scripts/templates_py/ui_panel_simple.py",
|
||||
"../../../scripts/templates_py/ui_previews_custom_icon.py",
|
||||
"../examples/bmesh.ops.1.py",
|
||||
"../examples/bpy.app.translations.py",
|
||||
)
|
||||
@ -1816,7 +1816,7 @@ def pyrna2sphinx(basepath):
|
||||
|
||||
# operators
|
||||
def write_ops():
|
||||
API_BASEURL = "https://projects.blender.org/blender/blender/src/branch/main/release/scripts"
|
||||
API_BASEURL = "https://projects.blender.org/blender/blender/src/branch/main/scripts"
|
||||
API_BASEURL_ADDON = "https://projects.blender.org/blender/blender-addons"
|
||||
API_BASEURL_ADDON_CONTRIB = "https://projects.blender.org/blender/blender-addons-contrib"
|
||||
|
||||
|
65
locale/languages
Normal file
65
locale/languages
Normal file
@ -0,0 +1,65 @@
|
||||
# File used by Blender to know which languages (translations) are available,
|
||||
# and to generate translation menu.
|
||||
#
|
||||
# File format:
|
||||
# ID:MENULABEL:ISOCODE
|
||||
# ID must be unique, except for 0 value (marks categories for menu).
|
||||
# Line starting with a # are comments!
|
||||
#
|
||||
# Automatically generated by bl_i18n_utils/update_languages_menu.py script.
|
||||
# Highest ID currently in use: 48
|
||||
#
|
||||
0:Complete:
|
||||
0:Automatic (Automatic):DEFAULT
|
||||
1:English (English):en_US
|
||||
9:Spanish (Español):es
|
||||
8:French (Français):fr_FR
|
||||
2:Japanese (日本語):ja_JP
|
||||
47:Slovak (Slovenčina):sk_SK
|
||||
41:Vietnamese (tiếng Việt):vi_VN
|
||||
13:Simplified Chinese (简体中文):zh_CN
|
||||
#
|
||||
0:In Progress:
|
||||
10:Catalan (Català):ca_AD
|
||||
11:Czech (Český):cs_CZ
|
||||
5:German (Deutsch):de_DE
|
||||
4:Italian (Italiano):it_IT
|
||||
48:Georgian (ქართული):ka
|
||||
24:Korean (한국어):ko_KR
|
||||
32:Brazilian Portuguese (Português do Brasil):pt_BR
|
||||
12:Portuguese (Português):pt_PT
|
||||
15:Russian (Русский):ru_RU
|
||||
18:Ukrainian (Українська):uk_UA
|
||||
14:Traditional Chinese (繁體中文):zh_TW
|
||||
#
|
||||
0:Starting:
|
||||
45:Abkhaz (Аԥсуа бызшәа):ab
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #37:Amharic (አማርኛ):am_ET
|
||||
21:Arabic (ﺔﻴﺑﺮﻌﻟﺍ):ar_EG
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #22:Bulgarian (Български):bg_BG
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #23:Greek (Ελληνικά):el_GR
|
||||
35:Esperanto (Esperanto):eo
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #36:Spanish from Spain (Español de España):es_ES
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #34:Estonian (Eestlane):et_EE
|
||||
42:Basque (Euskara):eu_EU
|
||||
26:Persian (ﯽﺳﺭﺎﻓ):fa_IR
|
||||
6:Finnish (Suomi):fi_FI
|
||||
43:Hausa (Hausa):ha
|
||||
33:Hebrew (תירִבְעִ):he_IL
|
||||
40:Hindi (मानक हिन्दी):hi_IN
|
||||
16:Croatian (Hrvatski):hr_HR
|
||||
31:Hungarian (Magyar):hu_HU
|
||||
27:Indonesian (Bahasa indonesia):id_ID
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #44:Kazakh (қазақша):kk_KZ
|
||||
29:Kyrgyz (Кыргыз тили):ky_KG
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #25:Nepali (नेपाली):ne_NP
|
||||
3:Dutch (Nederlandse taal):nl_NL
|
||||
19:Polish (Polski):pl_PL
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #20:Romanian (Român):ro_RO
|
||||
17:Serbian (Српски):sr_RS
|
||||
28:Serbian Latin (Srpski latinica):sr_RS@latin
|
||||
7:Swedish (Svenska):sv_SE
|
||||
46:Thai (ภาษาไทย):th_TH
|
||||
30:Turkish (Türkçe):tr_TR
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #38:Uzbek (Oʻzbek):uz_UZ
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #39:Uzbek Cyrillic (Ўзбек):uz_UZ@cyrillic
|
720
locale/po/ab.po
Normal file
720
locale/po/ab.po
Normal file
@ -0,0 +1,720 @@
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Blender 3.5.0 Beta (b'5fd4d47206ff')\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"\"POT-Creation-Date: 2019-02-25 20:41:30\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Daniel Tlisha <daniel.abzakh@gmail.com>\n"
|
||||
"Language-Team: Abkhaz language team <daniel.abzakh@gmail.com>\n"
|
||||
"Language: ab\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit"
|
||||
|
||||
|
||||
msgid "Select"
|
||||
msgstr "Алхра"
|
||||
|
||||
|
||||
msgid "Add"
|
||||
msgstr "Ацҵара"
|
||||
|
||||
|
||||
msgid "Subtract"
|
||||
msgstr "Ацхра"
|
||||
|
||||
|
||||
msgid "Empty"
|
||||
msgstr "Аҭацәы"
|
||||
|
||||
|
||||
msgid "Edge"
|
||||
msgstr "Акьыԥшь"
|
||||
|
||||
|
||||
msgid "Face"
|
||||
msgstr "Ахаҿы"
|
||||
|
||||
|
||||
msgid "Object"
|
||||
msgstr "Амаҭәар"
|
||||
|
||||
|
||||
msgid "Texts"
|
||||
msgstr "Аҳәоуқәа"
|
||||
|
||||
|
||||
msgid "Main Images"
|
||||
msgstr "Ихадоу Асахьақәа"
|
||||
|
||||
|
||||
msgid "Main Lights"
|
||||
msgstr "Ихадоу Алашарақәа"
|
||||
|
||||
|
||||
msgid "Main Meshes"
|
||||
msgstr "Ихадоу Аҿарԥагақәа"
|
||||
|
||||
|
||||
msgid "Mode"
|
||||
msgstr "А́иҿкаашьа"
|
||||
|
||||
|
||||
msgid "Marker"
|
||||
msgstr "Ашьҭа"
|
||||
|
||||
|
||||
msgid "Image"
|
||||
msgstr "Асахьанҵа"
|
||||
|
||||
|
||||
msgid "Rotation"
|
||||
msgstr "Агьежьра"
|
||||
|
||||
|
||||
msgid "Scale"
|
||||
msgstr "Ашәага"
|
||||
|
||||
|
||||
msgid "Curve"
|
||||
msgstr "Архәара"
|
||||
|
||||
|
||||
msgid "Difference"
|
||||
msgstr "Аиԥшымра"
|
||||
|
||||
|
||||
msgid "Armature"
|
||||
msgstr "Абаҩ"
|
||||
|
||||
|
||||
msgid "Camera"
|
||||
msgstr "Акамера"
|
||||
|
||||
|
||||
msgid "Location"
|
||||
msgstr "Аҭыԥ"
|
||||
|
||||
|
||||
msgid "Cursor"
|
||||
msgstr "Ахырхага"
|
||||
|
||||
|
||||
msgid "Plane"
|
||||
msgstr "Аҟьаҟьа"
|
||||
|
||||
|
||||
msgid "View"
|
||||
msgstr "Аԥшра"
|
||||
|
||||
|
||||
msgid "Render"
|
||||
msgstr "Архиара"
|
||||
|
||||
|
||||
msgid "Shading"
|
||||
msgstr "Аршәшьра"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Armature"
|
||||
msgstr "Абаҩ"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Camera"
|
||||
msgstr "Акамера"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Image"
|
||||
msgstr "Асахьанҵа"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Lattice"
|
||||
msgstr "Аҭыџьеихац"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Library"
|
||||
msgstr "Ашәҟәыԥхьарҭа"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Light"
|
||||
msgstr "Алашара"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Metaball"
|
||||
msgstr "Метампыл"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Speaker"
|
||||
msgstr "Абжьы Ахыҵхырҭа"
|
||||
|
||||
|
||||
msgid "Vertex"
|
||||
msgstr "Ақәыцә"
|
||||
|
||||
|
||||
msgid "Group"
|
||||
msgstr "Агәыԥ"
|
||||
|
||||
|
||||
msgid "Cone"
|
||||
msgstr "Аконус"
|
||||
|
||||
|
||||
msgid "Sphere"
|
||||
msgstr "Асфера"
|
||||
|
||||
|
||||
msgid "End"
|
||||
msgstr "Алгара"
|
||||
|
||||
|
||||
msgid "Start"
|
||||
msgstr "Алагара"
|
||||
|
||||
|
||||
msgid "Window"
|
||||
msgstr "Аԥенџьыр"
|
||||
|
||||
|
||||
msgid "Edit Mode"
|
||||
msgstr "Аиҭакра Аиҿкаашьа"
|
||||
|
||||
|
||||
msgid "Lattice"
|
||||
msgstr "Аҭыџьеихац"
|
||||
|
||||
|
||||
msgid "Library"
|
||||
msgstr "Ашәҟәыԥхьарҭа"
|
||||
|
||||
|
||||
msgid "Local"
|
||||
msgstr "Ҷыдала"
|
||||
|
||||
|
||||
msgid "Global"
|
||||
msgstr "Зеиԥшла"
|
||||
|
||||
|
||||
msgctxt "Light"
|
||||
msgid "Light"
|
||||
msgstr "Алашара"
|
||||
|
||||
|
||||
msgctxt "Light"
|
||||
msgid "Sun"
|
||||
msgstr "Амра"
|
||||
|
||||
|
||||
msgid "Cube"
|
||||
msgstr "Акуб"
|
||||
|
||||
|
||||
msgid "Roughness"
|
||||
msgstr "Аџьаџьара"
|
||||
|
||||
|
||||
msgid "Specular"
|
||||
msgstr "Ацырцырра"
|
||||
|
||||
|
||||
msgid "Circle"
|
||||
msgstr "Аицыгьежь"
|
||||
|
||||
|
||||
msgid "Object Mode"
|
||||
msgstr "Амаҭәар Аиҿкаашьа"
|
||||
|
||||
|
||||
msgid "Sculpt Mode"
|
||||
msgstr "Ашәаҳара Аиҿкаашьа"
|
||||
|
||||
|
||||
msgid "Vertex Paint"
|
||||
msgstr "Ақәыцә Ашәра"
|
||||
|
||||
|
||||
msgid "Weight Paint"
|
||||
msgstr "Акапан Ашәра"
|
||||
|
||||
|
||||
msgid "Texture Paint"
|
||||
msgstr "Атекстура Ашәра"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Empty"
|
||||
msgstr "Аҭацәы"
|
||||
|
||||
|
||||
msgid "3D Cursor"
|
||||
msgstr "3Д Ахырхага"
|
||||
|
||||
|
||||
msgid "Edit"
|
||||
msgstr "Аиҭакра"
|
||||
|
||||
|
||||
msgid "Text"
|
||||
msgstr "Аҳәоу"
|
||||
|
||||
|
||||
msgid "Mesh"
|
||||
msgstr "Аҿарҧага"
|
||||
|
||||
|
||||
msgid "File"
|
||||
msgstr "Ашәҟәы"
|
||||
|
||||
|
||||
msgid "Help"
|
||||
msgstr "Аилыркаа"
|
||||
|
||||
|
||||
msgid "Metaball"
|
||||
msgstr "Метампыл"
|
||||
|
||||
|
||||
msgid "Light"
|
||||
msgstr "Алашара"
|
||||
|
||||
|
||||
msgid "Intersect"
|
||||
msgstr "Аихҵәара"
|
||||
|
||||
|
||||
msgid "Ball"
|
||||
msgstr "Ампыл"
|
||||
|
||||
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgid "Keying"
|
||||
msgstr " Аиҭаганҵа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Circle"
|
||||
msgstr "Ацҵара Аицыгьежь"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Cube"
|
||||
msgstr "Ацҵара Акуб"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Ico Sphere"
|
||||
msgstr "Ацҵара Ico Асфера"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Monkey"
|
||||
msgstr "Ацҵара Амаамын"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Plane"
|
||||
msgstr "Ацҵара Аҟьаҟьа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add UV Sphere"
|
||||
msgstr "Ацҵара UV Асфера"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Armature"
|
||||
msgstr "Ацҵара Абаҩ"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Camera"
|
||||
msgstr "Ацҵара Акамера"
|
||||
|
||||
|
||||
msgid "Monkey"
|
||||
msgstr "Амаамын"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Light"
|
||||
msgstr "Ацҵара Алашара"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Metaball"
|
||||
msgstr "Ацҵара Метампыл"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Speaker"
|
||||
msgstr "Ацҵара Абжьы Ахыҵхырҭа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Text"
|
||||
msgstr "Ацҵара Аҳәоу"
|
||||
|
||||
|
||||
msgctxt "Scene"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgid "Overlays"
|
||||
msgstr "Ақәҵакәа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Scale"
|
||||
msgstr "Ашәага"
|
||||
|
||||
|
||||
msgid "Playback"
|
||||
msgstr "Арҳәара"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Circle"
|
||||
msgstr "Аицыгьежь"
|
||||
|
||||
|
||||
msgctxt "Sequence"
|
||||
msgid "Image"
|
||||
msgstr "Асахьанҵа"
|
||||
|
||||
|
||||
msgctxt "Sequence"
|
||||
msgid "Text"
|
||||
msgstr "Аҳәоу"
|
||||
|
||||
|
||||
msgctxt "MovieClip"
|
||||
msgid "View"
|
||||
msgstr "Аԥшра"
|
||||
|
||||
|
||||
msgid "Speaker"
|
||||
msgstr "Абжьы Ахыҵхырҭа"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Armature"
|
||||
msgstr "Абаҩ"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Metaball"
|
||||
msgstr "Метампы"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Lattice"
|
||||
msgstr "Аҭыџьеихац"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Image"
|
||||
msgstr "Асахьанҵа"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Text"
|
||||
msgstr "Аҳәоу"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Location"
|
||||
msgstr "Аҭыԥ"
|
||||
|
||||
|
||||
msgctxt "Image"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Text"
|
||||
msgstr "Аҳәоу"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Rotation"
|
||||
msgstr "Агьежьра"
|
||||
|
||||
|
||||
msgctxt "Text"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgid "location"
|
||||
msgstr "Аҭыԥ"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Plane"
|
||||
msgstr "Аҟьаҟьа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Cube"
|
||||
msgstr "Акуб"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "UV Sphere"
|
||||
msgstr "UV Асфера"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Ico Sphere"
|
||||
msgstr "Ico Асфера "
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Cylinder"
|
||||
msgstr "Ацилиндр"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Cone"
|
||||
msgstr "Аконус"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Monkey"
|
||||
msgstr "Амаамын"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Camera"
|
||||
msgstr "Акамера"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Speaker"
|
||||
msgstr "Абжьы Ахыҵхырҭа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Armature"
|
||||
msgstr "Абаҩ"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Lattice"
|
||||
msgstr "Аҭыџьеихац"
|
||||
|
||||
|
||||
msgctxt "Object"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Mesh"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Curve"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Metaball"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Material"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Texture"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Lattice"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Light"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Camera"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "World"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Screen"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Speaker"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Sound"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Armature"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Action"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "NodeTree"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Brush"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "ParticleSettings"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "GPencil"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "FreestyleLineStyle"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "WorkSpace"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "LightProbe"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Action"
|
||||
msgid "Group"
|
||||
msgstr "Агәыԥ"
|
||||
|
||||
|
||||
msgid "Front Orthographic"
|
||||
msgstr "Аԥхьа Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Front Perspective"
|
||||
msgstr "Аԥхьа Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Back Orthographic"
|
||||
msgstr "Ашьҭахь Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Back Perspective"
|
||||
msgstr "Ашьҭахь Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Top Orthographic"
|
||||
msgstr "Ақә Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Top Perspective"
|
||||
msgstr "Ақә Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Bottom Orthographic"
|
||||
msgstr "Ҵаҟа Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Bottom Perspective"
|
||||
msgstr "Ҵаҟа Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Right Orthographic"
|
||||
msgstr "Арӷьа Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Right Perspective"
|
||||
msgstr "Арӷьа Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Left Orthographic"
|
||||
msgstr "Арма Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Left Perspective"
|
||||
msgstr "Арма Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Camera Perspective"
|
||||
msgstr "Акамера Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Camera Orthographic"
|
||||
msgstr "Акамера Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "User Orthographic"
|
||||
msgstr "Ахархәаҩ Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "User Perspective"
|
||||
msgstr "Ахархәаҩ Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "global"
|
||||
msgstr "Зеиԥшла"
|
||||
|
||||
|
||||
msgid "local"
|
||||
msgstr "Ҷыдала"
|
||||
|
||||
|
||||
msgid "view"
|
||||
msgstr "Аԥшра"
|
||||
|
||||
|
||||
msgid "cursor"
|
||||
msgstr "Ахырхага"
|
||||
|
||||
|
||||
msgctxt "Armature"
|
||||
msgid "Group"
|
||||
msgstr "Агәыԥ"
|
||||
|
41082
locale/po/ar.po
Normal file
41082
locale/po/ar.po
Normal file
File diff suppressed because it is too large
Load Diff
72547
locale/po/ca.po
Normal file
72547
locale/po/ca.po
Normal file
File diff suppressed because it is too large
Load Diff
48103
locale/po/cs.po
Normal file
48103
locale/po/cs.po
Normal file
File diff suppressed because it is too large
Load Diff
66345
locale/po/de.po
Normal file
66345
locale/po/de.po
Normal file
File diff suppressed because it is too large
Load Diff
75
locale/po/eo.po
Normal file
75
locale/po/eo.po
Normal file
@ -0,0 +1,75 @@
|
||||
|
||||
msgid "Select"
|
||||
msgstr "Elektas"
|
||||
|
||||
|
||||
msgid "Add"
|
||||
msgstr "Aldonia"
|
||||
|
||||
|
||||
msgid "View"
|
||||
msgstr "Rigardi"
|
||||
|
||||
|
||||
msgid "Render"
|
||||
msgstr "Por Kapitulacigi"
|
||||
|
||||
|
||||
msgid "Window"
|
||||
msgstr "Fenestro"
|
||||
|
||||
|
||||
msgid "Edit Mode"
|
||||
msgstr "Prilaborado Modo"
|
||||
|
||||
|
||||
msgid "Links"
|
||||
msgstr "Ligiloj"
|
||||
|
||||
|
||||
msgid "Object Mode"
|
||||
msgstr "Objekto Modo"
|
||||
|
||||
|
||||
msgid "Sculpt Mode"
|
||||
msgstr "Skulptaĵo Modo"
|
||||
|
||||
|
||||
msgid "File"
|
||||
msgstr "Dosiero"
|
||||
|
||||
|
||||
msgid "Help"
|
||||
msgstr "Helpo"
|
||||
|
||||
|
||||
msgid "New"
|
||||
msgstr "Nova"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Select"
|
||||
msgstr "Elektas"
|
||||
|
||||
|
||||
msgid "View Z Axis"
|
||||
msgstr "Montri Z Axis"
|
||||
|
||||
|
||||
msgid "View X Axis"
|
||||
msgstr "Montri X Axis"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Render"
|
||||
msgstr "Por Kapitulacigi"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Recover Last Session"
|
||||
msgstr "Restaŭri lasta kunsido"
|
||||
|
||||
|
||||
msgid "Recent"
|
||||
msgstr "Freŝaj"
|
||||
|
126298
locale/po/es.po
Normal file
126298
locale/po/es.po
Normal file
File diff suppressed because it is too large
Load Diff
99778
locale/po/es_ES.po
Normal file
99778
locale/po/es_ES.po
Normal file
File diff suppressed because it is too large
Load Diff
2578
locale/po/eu.po
Normal file
2578
locale/po/eu.po
Normal file
File diff suppressed because it is too large
Load Diff
4305
locale/po/fa.po
Normal file
4305
locale/po/fa.po
Normal file
File diff suppressed because it is too large
Load Diff
12368
locale/po/fi.po
Normal file
12368
locale/po/fi.po
Normal file
File diff suppressed because it is too large
Load Diff
128050
locale/po/fr.po
Normal file
128050
locale/po/fr.po
Normal file
File diff suppressed because it is too large
Load Diff
123
locale/po/ha.po
Normal file
123
locale/po/ha.po
Normal file
@ -0,0 +1,123 @@
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Blender 3.5.0 Beta (b'5fd4d47206ff')\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-20 13:46:36\n"
|
||||
"PO-Revision-Date: 2017-12-25 14:01+0100\n"
|
||||
"Last-Translator: UMAR HARUNA ABDULLAHI <umarbrowser20@gmail.com>\n"
|
||||
"Language-Team: BlenderNigeria <pyc0der@outlook.com>\n"
|
||||
"Language: ha\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.11"
|
||||
|
||||
|
||||
msgid "Name"
|
||||
msgstr "Suna"
|
||||
|
||||
|
||||
msgid "Action F-Curves"
|
||||
msgstr "Aikin F-Curves"
|
||||
|
||||
|
||||
msgid "Collection of action F-Curves"
|
||||
msgstr "Karban bayanan aikin F-Curves"
|
||||
|
||||
|
||||
msgid "Action Group"
|
||||
msgstr "Aikin Kunguya"
|
||||
|
||||
|
||||
msgid "Groups of F-Curves"
|
||||
msgstr "Kungiyar F-Curves"
|
||||
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Channels"
|
||||
|
||||
|
||||
msgid "F-Curves in this group"
|
||||
msgstr "F-Curves acikin wannan kungiya"
|
||||
|
||||
|
||||
msgid "Color Set"
|
||||
msgstr "Sashin Launi"
|
||||
|
||||
|
||||
msgid "Custom color set to use"
|
||||
msgstr "Hadaddiyar sashin launin daza a saka"
|
||||
|
||||
|
||||
msgid "Default Colors"
|
||||
msgstr "Launi na ainihi"
|
||||
|
||||
|
||||
msgid "01 - Theme Color Set"
|
||||
msgstr "01 - Theme Color Set"
|
||||
|
||||
|
||||
msgid "02 - Theme Color Set"
|
||||
msgstr "02 - Theme Color Set"
|
||||
|
||||
|
||||
msgid "03 - Theme Color Set"
|
||||
msgstr "03 - Theme Color Set"
|
||||
|
||||
|
||||
msgid "04 - Theme Color Set"
|
||||
msgstr "04 - Theme Color Set"
|
||||
|
||||
|
||||
msgid "Custom Color Set"
|
||||
msgstr "Hadaddiyar sashin launuka"
|
||||
|
||||
|
||||
msgid "Colors"
|
||||
msgstr "launuka"
|
||||
|
||||
|
||||
msgid "Copy of the colors associated with the group's color set"
|
||||
msgstr "Ari launukan dasuka danganta da launukannan"
|
||||
|
||||
|
||||
msgid "Color set is user-defined instead of a fixed theme color set"
|
||||
msgstr "Launukan nawanda yasane ba na gyararren theme ba"
|
||||
|
||||
|
||||
msgid "Lock"
|
||||
msgstr "rufe"
|
||||
|
||||
|
||||
msgid "Action group is locked"
|
||||
msgstr "Aikin kungiya ya rufe"
|
||||
|
||||
|
||||
msgid "Select"
|
||||
msgstr "Zabi"
|
||||
|
||||
|
||||
msgid "Action group is selected"
|
||||
msgstr "An zabi aikin kungiya"
|
||||
|
||||
|
||||
msgid "Expanded"
|
||||
msgstr "budadde"
|
||||
|
||||
|
||||
msgid "Action Groups"
|
||||
msgstr "Aikin kungiyoyi"
|
||||
|
||||
|
||||
msgid "Collection of action groups"
|
||||
msgstr "Karban aikin kungiyoyi"
|
||||
|
||||
|
||||
msgid "Action Pose Markers"
|
||||
msgstr "Aikin Pose Markers"
|
||||
|
||||
|
||||
msgid "Collection of timeline markers"
|
||||
msgstr "Sashin lokacin markers"
|
||||
|
531
locale/po/he.po
Normal file
531
locale/po/he.po
Normal file
@ -0,0 +1,531 @@
|
||||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Blender 3.5.0 Beta (b'5fd4d47206ff')\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-20 13:46:36\n"
|
||||
"PO-Revision-Date: 2012-10-07 13:56+0300\n"
|
||||
"Last-Translator: Barak Itkin <lightningismyname@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: he\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Virtaal 0.7.0"
|
||||
|
||||
|
||||
msgid "Name"
|
||||
msgstr "םש"
|
||||
|
||||
|
||||
msgid "Color"
|
||||
msgstr "עבצ"
|
||||
|
||||
|
||||
msgid "Value"
|
||||
msgstr "ךרע"
|
||||
|
||||
|
||||
msgid "Off"
|
||||
msgstr "יובכ"
|
||||
|
||||
|
||||
msgid "Add"
|
||||
msgstr "ףסוה"
|
||||
|
||||
|
||||
msgid "Width"
|
||||
msgstr "בחור"
|
||||
|
||||
|
||||
msgid "Vector"
|
||||
msgstr "רוטקו"
|
||||
|
||||
|
||||
msgid "Indirect"
|
||||
msgstr "ףיקע"
|
||||
|
||||
|
||||
msgid "Speed"
|
||||
msgstr "תוריהמ"
|
||||
|
||||
|
||||
msgid "Strength"
|
||||
msgstr "המצוע"
|
||||
|
||||
|
||||
msgid "Random"
|
||||
msgstr "יארקא"
|
||||
|
||||
|
||||
msgid "Remove"
|
||||
msgstr "רסה"
|
||||
|
||||
|
||||
msgid "Vertex Color"
|
||||
msgstr "דוקדוק עבצ"
|
||||
|
||||
|
||||
msgid "Smooth"
|
||||
msgstr "קלח"
|
||||
|
||||
|
||||
msgid "Saturation"
|
||||
msgstr "היוור"
|
||||
|
||||
|
||||
msgid "Path"
|
||||
msgstr "ביתנ"
|
||||
|
||||
|
||||
msgid "Rotation"
|
||||
msgstr "בוביס"
|
||||
|
||||
|
||||
msgid "Left"
|
||||
msgstr "לאמש"
|
||||
|
||||
|
||||
msgid "Right"
|
||||
msgstr "ןימי"
|
||||
|
||||
|
||||
msgid "Center"
|
||||
msgstr "זכרמ"
|
||||
|
||||
|
||||
msgid "Gamma"
|
||||
msgstr "אמג"
|
||||
|
||||
|
||||
msgid "Constant"
|
||||
msgstr "עובק"
|
||||
|
||||
|
||||
msgid "Position"
|
||||
msgstr "םוקמ"
|
||||
|
||||
|
||||
msgid "Output"
|
||||
msgstr "טלפ"
|
||||
|
||||
|
||||
msgid "Default"
|
||||
msgstr "לדחמ תרירב"
|
||||
|
||||
|
||||
msgid "Location"
|
||||
msgstr "םוקימ"
|
||||
|
||||
|
||||
msgid "White Level"
|
||||
msgstr "ןבל תמר"
|
||||
|
||||
|
||||
msgid "Surface"
|
||||
msgstr "חטשמ"
|
||||
|
||||
|
||||
msgid "View"
|
||||
msgstr "הגוצת"
|
||||
|
||||
|
||||
msgid "Scene"
|
||||
msgstr "הנצס"
|
||||
|
||||
|
||||
msgid "Shrink"
|
||||
msgstr "ץווכ"
|
||||
|
||||
|
||||
msgid "Modifiers"
|
||||
msgstr "םינשמ"
|
||||
|
||||
|
||||
msgid "Frequency"
|
||||
msgstr "תורידת"
|
||||
|
||||
|
||||
msgid "Size"
|
||||
msgstr "לדוג"
|
||||
|
||||
|
||||
msgid "Environment"
|
||||
msgstr "הביבס"
|
||||
|
||||
|
||||
msgid "End"
|
||||
msgstr "ףוס"
|
||||
|
||||
|
||||
msgid "Start"
|
||||
msgstr "הלחתה"
|
||||
|
||||
|
||||
msgid "Density"
|
||||
msgstr "תופיפצ"
|
||||
|
||||
|
||||
msgid "Generated"
|
||||
msgstr "רצוימ"
|
||||
|
||||
|
||||
msgid "Window"
|
||||
msgstr "ןולח"
|
||||
|
||||
|
||||
msgid "Header"
|
||||
msgstr "תרתוכ"
|
||||
|
||||
|
||||
msgid "Tools"
|
||||
msgstr "םילכ"
|
||||
|
||||
|
||||
msgid "Edit Mode"
|
||||
msgstr "הכירע בצמ"
|
||||
|
||||
|
||||
msgid "Mirror"
|
||||
msgstr "הארמ"
|
||||
|
||||
|
||||
msgid "Space"
|
||||
msgstr "חוור"
|
||||
|
||||
|
||||
msgid "Red"
|
||||
msgstr "םודא"
|
||||
|
||||
|
||||
msgid "Green"
|
||||
msgstr "קורי"
|
||||
|
||||
|
||||
msgid "Blue"
|
||||
msgstr "לוחכ"
|
||||
|
||||
|
||||
msgid "Mask"
|
||||
msgstr "הכסמ"
|
||||
|
||||
|
||||
msgid "Up"
|
||||
msgstr "הלעמ"
|
||||
|
||||
|
||||
msgid "Mean"
|
||||
msgstr "עצוממ"
|
||||
|
||||
|
||||
msgid "Movie"
|
||||
msgstr "טרס"
|
||||
|
||||
|
||||
msgid "Roughness"
|
||||
msgstr "תוסג"
|
||||
|
||||
|
||||
msgid "Specular"
|
||||
msgstr "רלקפסא"
|
||||
|
||||
|
||||
msgid "Both"
|
||||
msgstr "םהינש"
|
||||
|
||||
|
||||
msgid "Sculpt Mode"
|
||||
msgstr "לוסיפ בצמ"
|
||||
|
||||
|
||||
msgid "Vertex Paint"
|
||||
msgstr "םידוקדוק תעיבצ"
|
||||
|
||||
|
||||
msgid "Weight Paint"
|
||||
msgstr "לקשמ תעיבצ"
|
||||
|
||||
|
||||
msgid "Quadratic"
|
||||
msgstr "יעוביר"
|
||||
|
||||
|
||||
msgid "Mist"
|
||||
msgstr "לפרע"
|
||||
|
||||
|
||||
msgid "Color Management"
|
||||
msgstr "עבצ לוהינ"
|
||||
|
||||
|
||||
msgid "Apply"
|
||||
msgstr "לחה"
|
||||
|
||||
|
||||
msgid "Python"
|
||||
msgstr "Python"
|
||||
|
||||
|
||||
msgid "System"
|
||||
msgstr "תכרעמ"
|
||||
|
||||
|
||||
msgid "Convert"
|
||||
msgstr "רמה"
|
||||
|
||||
|
||||
msgid "World"
|
||||
msgstr "םלוע"
|
||||
|
||||
|
||||
msgid "Lift"
|
||||
msgstr "יוליע"
|
||||
|
||||
|
||||
msgid "Y Axis"
|
||||
msgstr "Y ריצ"
|
||||
|
||||
|
||||
msgid "Background"
|
||||
msgstr "עקר"
|
||||
|
||||
|
||||
msgid "Reflection"
|
||||
msgstr "תופקתשה"
|
||||
|
||||
|
||||
msgid "Emission"
|
||||
msgstr "הטילפ"
|
||||
|
||||
|
||||
msgid "Down"
|
||||
msgstr "הטמ"
|
||||
|
||||
|
||||
msgid "Lamp"
|
||||
msgstr "הרונמ"
|
||||
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "לוחתא"
|
||||
|
||||
|
||||
msgid "Manual"
|
||||
msgstr "ינדי"
|
||||
|
||||
|
||||
msgid "Credits"
|
||||
msgstr "תודות"
|
||||
|
||||
|
||||
msgid "Detail"
|
||||
msgstr "טוריפ"
|
||||
|
||||
|
||||
msgid "Dimension"
|
||||
msgstr "דמימ"
|
||||
|
||||
|
||||
msgid "Location:"
|
||||
msgstr ":םוקימ"
|
||||
|
||||
|
||||
msgid "Nothing selected"
|
||||
msgstr "רבד רחבנ אל"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Change Shortcut"
|
||||
msgstr "ךרד־רוציק הנש"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Reset All to Default Values"
|
||||
msgstr "לדחמה תרירב יכרעל לכה לחתא"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Remove Shortcut"
|
||||
msgstr "ךרד־רוציק רסה"
|
||||
|
||||
|
||||
msgid "Value:"
|
||||
msgstr ":ךרע"
|
||||
|
||||
|
||||
msgid "(Gamma Corrected)"
|
||||
msgstr "(אמג ןקותמ)"
|
||||
|
||||
|
||||
msgid "Shortcut: %s"
|
||||
msgstr "%s :ךרד־רוציק"
|
||||
|
||||
|
||||
msgid "Python: %s"
|
||||
msgstr "Python: %s"
|
||||
|
||||
|
||||
msgid "Radians: %f"
|
||||
msgstr "%f :םינאידר"
|
||||
|
||||
|
||||
msgid "Expression: %s"
|
||||
msgstr "%s :יוטיב"
|
||||
|
||||
|
||||
msgid "Library: %s"
|
||||
msgstr "%s :היירפס"
|
||||
|
||||
|
||||
msgid "Disabled: %s"
|
||||
msgstr "%s :תבשומ"
|
||||
|
||||
|
||||
msgid "Python: %s.%s"
|
||||
msgstr "Python: %s.%s"
|
||||
|
||||
|
||||
msgid "No Properties"
|
||||
msgstr "םינייפאמ אלל"
|
||||
|
||||
|
||||
msgid "Delete points"
|
||||
msgstr "תודוקנ קחמ"
|
||||
|
||||
|
||||
msgid "Stop this job"
|
||||
msgstr "וז הדובע רוצע"
|
||||
|
||||
|
||||
msgid "%d items"
|
||||
msgstr "%d םיטירפ"
|
||||
|
||||
|
||||
msgid "Fields"
|
||||
msgstr "תודש"
|
||||
|
||||
|
||||
msgid "File Path:"
|
||||
msgstr ":ץבוק ביתנ"
|
||||
|
||||
|
||||
msgid "File path"
|
||||
msgstr "ץבוק ביתנ"
|
||||
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr "לוטיב"
|
||||
|
||||
|
||||
msgid "File name"
|
||||
msgstr "ץבוק םש"
|
||||
|
||||
|
||||
msgid "Add Modifier"
|
||||
msgstr "הנשמ ףסוה"
|
||||
|
||||
|
||||
msgid "Select Layer"
|
||||
msgstr "הבכש רחב"
|
||||
|
||||
|
||||
msgid " + Z"
|
||||
msgstr " + Z"
|
||||
|
||||
|
||||
msgid "Label Size"
|
||||
msgstr "תיוות לדוג"
|
||||
|
||||
|
||||
msgid "Squash"
|
||||
msgstr "ךעמ"
|
||||
|
||||
|
||||
msgid "Disconnect"
|
||||
msgstr "קתנ"
|
||||
|
||||
|
||||
msgid "Dependency Loop"
|
||||
msgstr "תויולת תאלול"
|
||||
|
||||
|
||||
msgid "Vertex:"
|
||||
msgstr ":דוקדוק"
|
||||
|
||||
|
||||
msgid "Median:"
|
||||
msgstr ":ןויצח"
|
||||
|
||||
|
||||
msgid "Radius X:"
|
||||
msgstr ":X סוידר"
|
||||
|
||||
|
||||
msgid "Radius Y:"
|
||||
msgstr ":Y סוידר"
|
||||
|
||||
|
||||
msgid "Weight:"
|
||||
msgstr ":לקשמ"
|
||||
|
||||
|
||||
msgid "Radius:"
|
||||
msgstr ":סוידר"
|
||||
|
||||
|
||||
msgid "Mean Radius:"
|
||||
msgstr ":עצוממ סוידר"
|
||||
|
||||
|
||||
msgid "Modify"
|
||||
msgstr "הנש"
|
||||
|
||||
|
||||
msgid "Color Space:"
|
||||
msgstr ":עבצ בחרמ"
|
||||
|
||||
|
||||
msgid "Key Color"
|
||||
msgstr "חתפמ עבצ"
|
||||
|
||||
|
||||
msgid "Image 1"
|
||||
msgstr "1 הנומת"
|
||||
|
||||
|
||||
msgid "Image 2"
|
||||
msgstr "2 הנומת"
|
||||
|
||||
|
||||
msgid "Std Dev"
|
||||
msgstr "ןקת תייטס"
|
||||
|
||||
|
||||
msgid "Path:"
|
||||
msgstr ":ביתנ"
|
||||
|
||||
|
||||
msgid "Add Input"
|
||||
msgstr "טלק ףסוה"
|
||||
|
||||
|
||||
msgid "Incoming"
|
||||
msgstr "סנכנ"
|
||||
|
||||
|
||||
msgid "Color2"
|
||||
msgstr "2עבצ"
|
||||
|
||||
|
||||
msgid "Row Height"
|
||||
msgstr "הרוש הבוג"
|
||||
|
||||
|
||||
msgid "Bricks 1"
|
||||
msgstr "1 םינבל"
|
||||
|
||||
|
||||
msgid "Bricks 2"
|
||||
msgstr "2 םינבל"
|
||||
|
7300
locale/po/hi.po
Normal file
7300
locale/po/hi.po
Normal file
File diff suppressed because it is too large
Load Diff
9
locale/po/hr.po
Normal file
9
locale/po/hr.po
Normal file
@ -0,0 +1,9 @@
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Duplicate Objects"
|
||||
msgstr "bbbbbbbbbbbbb"
|
||||
|
||||
|
||||
msgid "Duplicate Objects"
|
||||
msgstr "aaaaaaaaa"
|
||||
|
21219
locale/po/hu.po
Normal file
21219
locale/po/hu.po
Normal file
File diff suppressed because it is too large
Load Diff
27271
locale/po/id.po
Normal file
27271
locale/po/id.po
Normal file
File diff suppressed because it is too large
Load Diff
60880
locale/po/it.po
Normal file
60880
locale/po/it.po
Normal file
File diff suppressed because it is too large
Load Diff
128626
locale/po/ja.po
Normal file
128626
locale/po/ja.po
Normal file
File diff suppressed because it is too large
Load Diff
43107
locale/po/ka.po
Normal file
43107
locale/po/ka.po
Normal file
File diff suppressed because it is too large
Load Diff
89826
locale/po/ko.po
Normal file
89826
locale/po/ko.po
Normal file
File diff suppressed because it is too large
Load Diff
4170
locale/po/ky.po
Normal file
4170
locale/po/ky.po
Normal file
File diff suppressed because it is too large
Load Diff
9751
locale/po/nl.po
Normal file
9751
locale/po/nl.po
Normal file
File diff suppressed because it is too large
Load Diff
11564
locale/po/pl.po
Normal file
11564
locale/po/pl.po
Normal file
File diff suppressed because it is too large
Load Diff
68171
locale/po/pt.po
Normal file
68171
locale/po/pt.po
Normal file
File diff suppressed because it is too large
Load Diff
76649
locale/po/pt_BR.po
Normal file
76649
locale/po/pt_BR.po
Normal file
File diff suppressed because it is too large
Load Diff
92634
locale/po/ru.po
Normal file
92634
locale/po/ru.po
Normal file
File diff suppressed because it is too large
Load Diff
128065
locale/po/sk.po
Normal file
128065
locale/po/sk.po
Normal file
File diff suppressed because it is too large
Load Diff
28383
locale/po/sr.po
Normal file
28383
locale/po/sr.po
Normal file
File diff suppressed because it is too large
Load Diff
28363
locale/po/sr@latin.po
Normal file
28363
locale/po/sr@latin.po
Normal file
File diff suppressed because it is too large
Load Diff
2810
locale/po/sv.po
Normal file
2810
locale/po/sv.po
Normal file
File diff suppressed because it is too large
Load Diff
5922
locale/po/th.po
Normal file
5922
locale/po/th.po
Normal file
File diff suppressed because it is too large
Load Diff
6297
locale/po/tr.po
Normal file
6297
locale/po/tr.po
Normal file
File diff suppressed because it is too large
Load Diff
104399
locale/po/uk.po
Normal file
104399
locale/po/uk.po
Normal file
File diff suppressed because it is too large
Load Diff
122861
locale/po/vi.po
Normal file
122861
locale/po/vi.po
Normal file
File diff suppressed because it is too large
Load Diff
127996
locale/po/zh_CN.po
Normal file
127996
locale/po/zh_CN.po
Normal file
File diff suppressed because it is too large
Load Diff
61951
locale/po/zh_TW.po
Normal file
61951
locale/po/zh_TW.po
Normal file
File diff suppressed because it is too large
Load Diff
@ -33,15 +33,15 @@ aggressive = 2
|
||||
|
||||
# Exclude:
|
||||
# - `./extern/` because it's maintained separately.
|
||||
# - `./release/scripts/addons*` & `./source/tools/` because they are external repositories
|
||||
# - `./scripts/addons*` & `./tools/` because they are external repositories
|
||||
# which can contain their own configuration and be handled separately.
|
||||
# - `./release/scripts/modules/rna_manual_reference.py` because it's a generated data-file.
|
||||
# - `./scripts/modules/rna_manual_reference.py` because it's a generated data-file.
|
||||
exclude = """
|
||||
./extern/*,
|
||||
./release/scripts/addons/*,
|
||||
./release/scripts/addons_contrib/*,
|
||||
./release/scripts/modules/rna_manual_reference.py,
|
||||
./source/tools/*,
|
||||
./scripts/addons/*,
|
||||
./scripts/addons_contrib/*,
|
||||
./scripts/modules/rna_manual_reference.py,
|
||||
./tools/*,
|
||||
"""
|
||||
|
||||
# Omit settings such as `jobs`, `in_place` & `recursive` as they can cause editor utilities that auto-format on save
|
||||
|
@ -1 +0,0 @@
|
||||
Subproject commit 4331c8e76c2f42b9fd903716c333d6cdeaa5cebd
|
@ -1,7 +1,7 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
/**
|
||||
* Generated by 'source/tools/utils/blender_theme_as_c.py'
|
||||
* Generated by 'tools/utils/blender_theme_as_c.py'
|
||||
*
|
||||
* Do not hand edit this file!
|
||||
*/
|
||||
|
@ -1 +0,0 @@
|
||||
Subproject commit b3f0ffc587d197b37eac9a1566d1d24b7bee7d9a
|
@ -1 +0,0 @@
|
||||
Subproject commit 14ab9273409ea0231d08ba6e86fdc73d4e459e99
|
0
release/scripts/freestyle/modules/freestyle/types.py → scripts/freestyle/modules/freestyle/types.py
0
release/scripts/freestyle/modules/freestyle/types.py → scripts/freestyle/modules/freestyle/types.py
0
release/scripts/freestyle/modules/freestyle/utils.py → scripts/freestyle/modules/freestyle/utils.py
0
release/scripts/freestyle/modules/freestyle/utils.py → scripts/freestyle/modules/freestyle/utils.py
0
release/scripts/freestyle/styles/external_contour.py → scripts/freestyle/styles/external_contour.py
0
release/scripts/freestyle/styles/external_contour.py → scripts/freestyle/styles/external_contour.py
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user