mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 02:03:12 +02:00
Merge remote-tracking branch 'i18n/master' into master
This commit is contained in:
commit
56cb974757
5
.gitignore
vendored
5
.gitignore
vendored
@ -110,3 +110,8 @@ CMakeSettings.json
|
||||
# KDevelop
|
||||
.kdev4/
|
||||
*.kdev4
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
i18n_status.svg
|
||||
i18n_status.csv
|
47
translation/CMakeLists.txt
Normal file
47
translation/CMakeLists.txt
Normal file
@ -0,0 +1,47 @@
|
||||
cmake_minimum_required( VERSION 2.8.4 FATAL_ERROR )
|
||||
|
||||
if ( ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR} )
|
||||
message( FATAL_ERROR
|
||||
"In-source builds not allowed. Please make a new directory (called"
|
||||
" a build directory) and run CMake from there, points here."
|
||||
" You may need to remove CMakeCache.txt." )
|
||||
endif()
|
||||
|
||||
project( kicad-i18n NONE )
|
||||
|
||||
find_package( Gettext REQUIRED )
|
||||
|
||||
option( KICAD_I18N_UNIX_STRICT_PATH
|
||||
"Use standard Unix locale lookup path (default OFF)."
|
||||
OFF
|
||||
)
|
||||
|
||||
if( UNIX AND KICAD_I18N_UNIX_STRICT_PATH )
|
||||
set( KICAD_I18N_PATH ${CMAKE_INSTALL_PREFIX}/share/locale
|
||||
CACHE PATH "Location of KiCad i18n files." )
|
||||
else()
|
||||
# Default Unix inconvenient locale lookup path
|
||||
set( KICAD_I18N_PATH share/kicad/internat
|
||||
CACHE PATH "Location of KiCad i18n files." )
|
||||
endif()
|
||||
|
||||
file(STRINGS LINGUAS LANG_ARRAY REGEX "^[^#].*")
|
||||
|
||||
foreach( LANG ${LANG_ARRAY} )
|
||||
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${LANG})
|
||||
|
||||
execute_process( COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
|
||||
${CMAKE_SOURCE_DIR}/${LANG}/kicad.po
|
||||
-o ${CMAKE_BINARY_DIR}/${LANG}/kicad.mo )
|
||||
|
||||
if( UNIX AND KICAD_I18N_UNIX_STRICT_PATH )
|
||||
install( FILES ${CMAKE_BINARY_DIR}/${LANG}/kicad.mo
|
||||
DESTINATION ${KICAD_I18N_PATH}/${LANG}/LC_MESSAGES
|
||||
COMPONENT resources )
|
||||
else()
|
||||
install( FILES ${CMAKE_BINARY_DIR}/${LANG}/kicad.mo
|
||||
DESTINATION ${KICAD_I18N_PATH}/${LANG}
|
||||
COMPONENT resources )
|
||||
endif()
|
||||
endforeach()
|
||||
|
27
translation/LINGUAS
Normal file
27
translation/LINGUAS
Normal file
@ -0,0 +1,27 @@
|
||||
# please keep this list sorted alphabetically
|
||||
#
|
||||
bg
|
||||
ca
|
||||
cs
|
||||
de
|
||||
el
|
||||
en
|
||||
es
|
||||
fi
|
||||
fr
|
||||
hu
|
||||
it
|
||||
ja
|
||||
ko
|
||||
lt
|
||||
nl
|
||||
no
|
||||
pl
|
||||
pt
|
||||
ru
|
||||
sk
|
||||
sl
|
||||
sv
|
||||
tr
|
||||
zh_CN
|
||||
zh_TW
|
14
translation/POTDIRS
Normal file
14
translation/POTDIRS
Normal file
@ -0,0 +1,14 @@
|
||||
3d-viewer
|
||||
bitmap2component
|
||||
common
|
||||
cvpcb
|
||||
eeschema
|
||||
gerbview
|
||||
include
|
||||
libs
|
||||
kicad
|
||||
pagelayout_editor
|
||||
pcb_calculator
|
||||
pcbnew
|
||||
plugins
|
||||
tools
|
67
translation/README.adoc
Normal file
67
translation/README.adoc
Normal file
@ -0,0 +1,67 @@
|
||||
= KiCad GUI translations
|
||||
|
||||
This is the repository for the po files that is used for the GUI
|
||||
translations for KiCad.
|
||||
|
||||
It is cmake equipped to conform with the rest of the installation
|
||||
principles for KiCad.
|
||||
|
||||
== How to submit translations
|
||||
No general details about translating po-files will be described here,
|
||||
there are plenty of resources on the rest of the www. But a suggestion
|
||||
on how to handle updates and translations will be provided.
|
||||
|
||||
When you start translating we need to make sure there is an updated
|
||||
po-file. You can either ask someone to do push an update or do it
|
||||
yourself with the `update-po-files.sh` script. You can add your
|
||||
language code as the first argument to the script to only update that
|
||||
single language.
|
||||
|
||||
When you did update the po-file, please make a commit with the
|
||||
following text if you update the german language relative to the kicad
|
||||
master branch:
|
||||
```
|
||||
Update german to master
|
||||
|
||||
ca264f898290158f60d4c9dcd55d0428b7fa7965
|
||||
```
|
||||
|
||||
Here we included the language, branch and sha of the kicad source at
|
||||
the time of updating. Now make your translations and commit that and
|
||||
push the pull request.
|
||||
|
||||
This is not mandatory, but it makes it easer for other people to
|
||||
review your changes when we seperate the automatic update from the
|
||||
human edits.
|
||||
|
||||
|
||||
== Depends
|
||||
- Cmake
|
||||
- Gettext
|
||||
|
||||
== How to install
|
||||
```sh
|
||||
$ cd kicad-i18n
|
||||
$ BUILD_SRC=$(pwd)
|
||||
$ mkdir -p ~/tmp/kicad-i18n-build
|
||||
$ cd ~/tmp/kicad-i18n-build
|
||||
$ cmake ${BUILD_SRC}
|
||||
$ make install
|
||||
$ cd ..
|
||||
$ rm -rf ~/tmp/kicad-i18n-build
|
||||
```
|
||||
|
||||
If you want to change the default install prefix to match your KiCad
|
||||
build, you can add `cmake` option for example use:
|
||||
```
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
```
|
||||
|
||||
If you occurred some problems, use `cmake --trace -DCMAKE_VERBOSE_MAKEFILE=ON` instead `cmake` to
|
||||
make build log more verbose, when you fill issue report.
|
||||
|
||||
== Why are we not using transifex or similar service
|
||||
We would like to make it easier for people to help translate, but I
|
||||
don't really know how to make transifex work in synergy with a
|
||||
workflow where people can also update by working with the po files
|
||||
here directly.
|
43256
translation/bg/kicad.po
Normal file
43256
translation/bg/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
41269
translation/ca/kicad.po
Normal file
41269
translation/ca/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
47149
translation/cs/kicad.po
Executable file
47149
translation/cs/kicad.po
Executable file
File diff suppressed because it is too large
Load Diff
37434
translation/de/kicad.po
Normal file
37434
translation/de/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
43976
translation/el/kicad.po
Normal file
43976
translation/el/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
30156
translation/en/kicad.po
Normal file
30156
translation/en/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
51091
translation/es/kicad.po
Normal file
51091
translation/es/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
43698
translation/fi/kicad.po
Normal file
43698
translation/fi/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
40169
translation/fr/kicad.po
Normal file
40169
translation/fr/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
40186
translation/hu/kicad.po
Normal file
40186
translation/hu/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
33608
translation/it/kicad.po
Normal file
33608
translation/it/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
48299
translation/ja/kicad.po
Executable file
48299
translation/ja/kicad.po
Executable file
File diff suppressed because it is too large
Load Diff
40756
translation/ko/kicad.po
Normal file
40756
translation/ko/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
45594
translation/lt/kicad.po
Normal file
45594
translation/lt/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
44560
translation/nl/kicad.po
Normal file
44560
translation/nl/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
30987
translation/no/kicad.po
Normal file
30987
translation/no/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
35458
translation/pl/kicad.po
Normal file
35458
translation/pl/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
71
translation/plot_i18n_status.py
Executable file
71
translation/plot_i18n_status.py
Executable file
@ -0,0 +1,71 @@
|
||||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
#####################################
|
||||
#
|
||||
# This program source code file is part of KiCad, a free EDA CAD application.
|
||||
#
|
||||
# Copyright (C) 2016 Nick Østergaard <oe.nick at gmail dot com>
|
||||
# Copyright (C) 2016 KiCad Developers
|
||||
#
|
||||
# License GNU GPL Version 3 or any later version.
|
||||
#
|
||||
#####################################
|
||||
|
||||
import matplotlib.pyplot as plt
|
||||
import csv
|
||||
import numpy as np
|
||||
import time
|
||||
|
||||
# Initialize data structure variable
|
||||
data = []
|
||||
|
||||
# Read CSV file
|
||||
with open('i18n_status.csv', 'r') as csvfile:
|
||||
spamreader = csv.reader(csvfile, delimiter=';')
|
||||
for row in spamreader:
|
||||
data.append(row)
|
||||
|
||||
# Replace empyt values with zero and convert numbers to int
|
||||
for index,value in np.ndenumerate( data ):
|
||||
if value=='':
|
||||
data[index[0]][index[1]] = 0
|
||||
try:
|
||||
data[index[0]][index[1]] = int(data[index[0]][index[1]])
|
||||
except:
|
||||
pass
|
||||
|
||||
# Sort data after mostly translated
|
||||
data[1:] = sorted(data[1:], key=lambda x: int(x[1]), reverse=True)
|
||||
|
||||
# Prepare some number for formatting the plot
|
||||
N = len(data[1:]) # number of languages
|
||||
width = 0.35 # the width of the bars
|
||||
ind = np.arange(N)*width*5 # the x locations for the groups
|
||||
|
||||
# Plot the bars
|
||||
fig, ax = plt.subplots()
|
||||
rects1 = ax.bar(ind, list(zip(*data))[1][1:], width, color='b')
|
||||
rects2 = ax.bar(ind+width, list(zip(*data))[2][1:], width, color='r')
|
||||
rects3 = ax.bar(ind+2*width, list(zip(*data))[3][1:], width, color='y')
|
||||
|
||||
# Plot ceiling
|
||||
max_nof_strings = sum(map(int, data[1][1:4]))
|
||||
plt.plot([0,max(ind)+3*width],[max_nof_strings,max_nof_strings], color='k', linewidth='2')
|
||||
ax.set_xlim([0,max(ind)+3*width])
|
||||
|
||||
# Add some text for labels, title and axes ticks
|
||||
ax.set_ylabel('Number of strings')
|
||||
ax.set_title('Translation status')
|
||||
ax.set_xticks(ind+width*1.5)
|
||||
ax.set_xticklabels(list(zip(*data))[0][1:])
|
||||
ax.yaxis.grid(True, which='both') # horizontal lines
|
||||
ax.legend((rects1[0], rects2[0], rects3[0]), ('TRANSLATED', 'FUZZY', 'UNTRANSLATED'), loc='upper center', bbox_to_anchor=(0.5, -0.05), fancybox=True, ncol=3)
|
||||
plt.figtext(0.99, 0.96, time.strftime("%d/%m %Y"), horizontalalignment='right')
|
||||
plt.subplots_adjust(left=0.07, right=0.99, top=0.95, bottom=0.12)
|
||||
|
||||
fig.set_size_inches(12, 8)
|
||||
|
||||
fig.savefig('i18n_status.svg')
|
||||
|
||||
# Show the magic to the user
|
||||
plt.show()
|
38272
translation/pt/kicad.po
Normal file
38272
translation/pt/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
35438
translation/ru/kicad.po
Normal file
35438
translation/ru/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
42083
translation/sk/kicad.po
Normal file
42083
translation/sk/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
39494
translation/sl/kicad.po
Normal file
39494
translation/sl/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
35695
translation/sv/kicad.po
Normal file
35695
translation/sv/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
31017
translation/tr/kicad.po
Normal file
31017
translation/tr/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
134
translation/update-po-files.sh
Executable file
134
translation/update-po-files.sh
Executable file
@ -0,0 +1,134 @@
|
||||
#!/bin/bash -e
|
||||
#####################################
|
||||
#
|
||||
# This program source code file is part of KiCad, a free EDA CAD application.
|
||||
#
|
||||
# Copyright (C) 2015 Marco Ciampa <ciampix@libero.it>
|
||||
# Copyright (C) 2015-2016 KiCad Developers
|
||||
#
|
||||
# License GNU GPL Version 3 or any later version.
|
||||
#
|
||||
#####################################
|
||||
|
||||
export LC_ALL=C
|
||||
|
||||
display_help() {
|
||||
echo "Usage: $0 [-k] [-p] [locale]"
|
||||
echo " -k keep pot template and not delete it"
|
||||
echo " -p plot the translation statistics [requires python with matplotlib]"
|
||||
echo " -s=<path> path to kicad source code"
|
||||
exit
|
||||
}
|
||||
|
||||
# Handle command line arguments
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
-h|--help)
|
||||
display_help
|
||||
shift
|
||||
;;
|
||||
-k)
|
||||
KEEP=1
|
||||
shift
|
||||
;;
|
||||
-p)
|
||||
PLOT=1
|
||||
shift
|
||||
;;
|
||||
-s=*)
|
||||
SOURCEDIR="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
SINGLE_LANG=$i
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ -z ${SOURCEDIR} ]; then
|
||||
SOURCEDIR=../kicad
|
||||
echo "Using default SOURCEDIR=${SOURCEDIR}"
|
||||
fi
|
||||
|
||||
#Autovars
|
||||
cd $(dirname ${BASH_SOURCE[0]})
|
||||
LOCALDIR=$PWD
|
||||
CSVFILE=${PWD}/i18n_status.csv
|
||||
LINGUAS=`cat $LOCALDIR/LINGUAS|grep -v '^#'|grep -v '^\s*$'` #Read file without comment and empty lines
|
||||
POTDIRS=`cat $LOCALDIR/POTDIRS|grep -v '^#'|grep -v '^\s*$'` #Read file without comment and empty lines
|
||||
|
||||
cd $SOURCEDIR
|
||||
|
||||
#Generate/update template pot file
|
||||
find $POTDIRS -name '*.cpp' -or -name '*.h' |
|
||||
sort |
|
||||
xgettext -f- -k_ -k_HKI -kwxPLURAL:1,2 --force-po --from-code utf-8 -o $LOCALDIR/kicad.pot
|
||||
|
||||
#check if present in locale list
|
||||
validate() { echo $LINGUAS | grep -F -q -w "$1"; }
|
||||
|
||||
#If supplied, update only the specified locale
|
||||
if [ ! "$SINGLE_LANG" = "" ] ; then
|
||||
if ! validate "$SINGLE_LANG"; then
|
||||
echo "Error!"
|
||||
echo "Locale argument \"$1\" not present in current locale list:"
|
||||
for i in $LINGUAS; do echo -n "$i "; done
|
||||
echo # newline
|
||||
exit 1
|
||||
else
|
||||
LINGUAS="$SINGLE_LANG"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Writing summary to ${CSVFILE}"
|
||||
echo "LANG;TRANSLATED;FUZZY;UNTRANSLATED" > "${CSVFILE}"
|
||||
|
||||
for i in $LINGUAS
|
||||
do
|
||||
echo "## $i"
|
||||
if [ "$i" = "en" ] ; then
|
||||
msgmerge --no-location --no-fuzzy-matching --force-po $LOCALDIR/$i/kicad.po $LOCALDIR/kicad.pot -o $LOCALDIR/$i/kicad.po 2> /dev/null
|
||||
msgen $LOCALDIR/$i/kicad.po -o $LOCALDIR/$i/kicad.po.tmp && mv $LOCALDIR/$i/kicad.po.tmp $LOCALDIR/$i/kicad.po
|
||||
else
|
||||
msgmerge --force-po $LOCALDIR/$i/kicad.po $LOCALDIR/kicad.pot -o $LOCALDIR/$i/kicad.po 2> /dev/null
|
||||
fi
|
||||
msgfmt --statistics $LOCALDIR/$i/kicad.po -o $LOCALDIR/messages.mo 2>&1 >>/dev/null |
|
||||
while IFS=",." read A B C D ; do
|
||||
echo $A
|
||||
echo $B
|
||||
echo $C
|
||||
echo $D
|
||||
|
||||
for STRING in "$A" "$B" "$C" "$D" ; do
|
||||
STRING=${STRING# }
|
||||
case "$STRING" in
|
||||
*" translated message"* )
|
||||
TRANSLATED=${STRING% translated message*}
|
||||
;;
|
||||
*" fuzzy translation"* )
|
||||
FUZZY=${STRING% fuzzy translation*}
|
||||
;;
|
||||
*" untranslated message"* )
|
||||
UNTRANSLATED=${STRING% untranslated message*}
|
||||
;;
|
||||
"" )
|
||||
;;
|
||||
* )
|
||||
echo >&2 "$0: Unknown format of \"msgfmt --statistics $LOCALDIR/$i/kicad.po \": \"$STRING\""
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
echo "$i;${TRANSLATED};${FUZZY};${UNTRANSLATED}">>"${CSVFILE}"
|
||||
done
|
||||
rm $LOCALDIR/messages.mo
|
||||
done
|
||||
|
||||
if [ "$PLOT" = "1" ]; then
|
||||
cd $LOCALDIR
|
||||
$LOCALDIR/plot_i18n_status.py
|
||||
fi
|
||||
|
||||
if [ ! "$KEEP" = "1" ]; then
|
||||
rm $LOCALDIR/kicad.pot
|
||||
fi
|
37944
translation/zh_CN/kicad.po
Executable file
37944
translation/zh_CN/kicad.po
Executable file
File diff suppressed because it is too large
Load Diff
40257
translation/zh_TW/kicad.po
Normal file
40257
translation/zh_TW/kicad.po
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user