Merge remote-tracking branch 'i18n/master' into master
This commit is contained in:
commit
56cb974757
|
@ -110,3 +110,8 @@ CMakeSettings.json
|
|||
# KDevelop
|
||||
.kdev4/
|
||||
*.kdev4
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
i18n_status.svg
|
||||
i18n_status.csv
|
|
@ -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()
|
||||
|
|
@ -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
|
|
@ -0,0 +1,14 @@
|
|||
3d-viewer
|
||||
bitmap2component
|
||||
common
|
||||
cvpcb
|
||||
eeschema
|
||||
gerbview
|
||||
include
|
||||
libs
|
||||
kicad
|
||||
pagelayout_editor
|
||||
pcb_calculator
|
||||
pcbnew
|
||||
plugins
|
||||
tools
|
|
@ -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.
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -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()
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -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
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue