1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-17 16:40:07 +02:00

Interface preferences displays self-names of languages

This commit is contained in:
Paul Licameli 2017-12-31 21:46:55 -05:00
parent 2e8a73bab1
commit 7ec5fd79df
6 changed files with 84 additions and 62 deletions

View File

@ -5,7 +5,7 @@ ACLOCAL_AMFLAGS = -I m4
bin_PROGRAMS = audacity$(EXEEXT) bin_PROGRAMS = audacity$(EXEEXT)
dist_doc_DATA = LICENSE.txt README.txt dist_doc_DATA = LICENSE.txt README.txt
dist_pkgdata_DATA = presets/EQDefaultCurves.xml dist_pkgdata_DATA = presets/EQDefaultCurves.xml locale/LanguageNames.txt
nobase_dist_pkgdata_DATA = \ nobase_dist_pkgdata_DATA = \
include/audacity/ConfigInterface.h \ include/audacity/ConfigInterface.h \

View File

@ -513,7 +513,7 @@ SUBDIRS = help images lib-src po src tests
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
bin_PROGRAMS = audacity$(EXEEXT) bin_PROGRAMS = audacity$(EXEEXT)
dist_doc_DATA = LICENSE.txt README.txt dist_doc_DATA = LICENSE.txt README.txt
dist_pkgdata_DATA = presets/EQDefaultCurves.xml dist_pkgdata_DATA = presets/EQDefaultCurves.xml locale/LanguageNames.txt
nobase_dist_pkgdata_DATA = \ nobase_dist_pkgdata_DATA = \
include/audacity/ConfigInterface.h \ include/audacity/ConfigInterface.h \
include/audacity/EffectAutomationParameters.h \ include/audacity/EffectAutomationParameters.h \

56
locale/LanguageNames.txt Normal file
View File

@ -0,0 +1,56 @@
af Afrikaans
ar العربية
be Беларуская
bg Български
bn বাংলা
bs Bosanski
ca Català
ca_ES@valencia Valencià
cs Čeština
cy Cymraeg
da Dansk
de Deutsch
el Ελληνικά
en English
es Español
eu Euskara
eu_ES Euskara (Espainiako)
fa فارسی
fi Suomi
fr Français
ga Gaeilge
gl Galego
he עברית
hi हिन्दी
hr Hrvatski
hu Magyar
hy Հայերեն
id Bahasa Indonesia
it Italiano
ja 日本語
ka ქართული
km ខេមរភាសា
ko 한국어
lt Lietuvių
mk Македонски
my မြန်မာစာ
nb Norsk
nl Nederlands
oc Occitan
pl Polski
pt Português
pt_BR Português (Brasil)
ro Română
ru Русский
sk Slovenčina
sl Slovenščina
sr_RS Српски
sr_RS@latin Srpski
sv Svenska
ta தமிழ்
tg Тоҷикӣ
tr Türkçe
uk Українська
vi Tiếng Việt
zh_CN 中文
zh_TW 中文

View File

@ -1222,6 +1222,7 @@
5E15126E1DB0010C00702E29 /* TrackControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E1512681DB0010C00702E29 /* TrackControls.cpp */; }; 5E15126E1DB0010C00702E29 /* TrackControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E1512681DB0010C00702E29 /* TrackControls.cpp */; };
5E15126F1DB0010C00702E29 /* TrackUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E15126A1DB0010C00702E29 /* TrackUI.cpp */; }; 5E15126F1DB0010C00702E29 /* TrackUI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E15126A1DB0010C00702E29 /* TrackUI.cpp */; };
5E1512701DB0010C00702E29 /* TrackVRulerControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E15126B1DB0010C00702E29 /* TrackVRulerControls.cpp */; }; 5E1512701DB0010C00702E29 /* TrackVRulerControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E15126B1DB0010C00702E29 /* TrackVRulerControls.cpp */; };
5E16FF4D1FF9CE0B0085E1B8 /* LanguageNames.txt in Resources */ = {isa = PBXBuildFile; fileRef = 5E16FF4C1FF9CE0B0085E1B8 /* LanguageNames.txt */; };
5E2A19941EED688500217B58 /* SelectionState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E2A19921EED688500217B58 /* SelectionState.cpp */; }; 5E2A19941EED688500217B58 /* SelectionState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E2A19921EED688500217B58 /* SelectionState.cpp */; };
5E3FFE721EC9032B0020F7C9 /* NoteTrackSliderHandles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E3FFE701EC9032B0020F7C9 /* NoteTrackSliderHandles.cpp */; }; 5E3FFE721EC9032B0020F7C9 /* NoteTrackSliderHandles.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E3FFE701EC9032B0020F7C9 /* NoteTrackSliderHandles.cpp */; };
5E667A601F0BEE5F00C942A5 /* WaveTrackVZoomHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E667A5E1F0BEE5F00C942A5 /* WaveTrackVZoomHandle.cpp */; }; 5E667A601F0BEE5F00C942A5 /* WaveTrackVZoomHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5E667A5E1F0BEE5F00C942A5 /* WaveTrackVZoomHandle.cpp */; };
@ -3070,6 +3071,7 @@
5E15126A1DB0010C00702E29 /* TrackUI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackUI.cpp; sourceTree = "<group>"; }; 5E15126A1DB0010C00702E29 /* TrackUI.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackUI.cpp; sourceTree = "<group>"; };
5E15126B1DB0010C00702E29 /* TrackVRulerControls.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackVRulerControls.cpp; sourceTree = "<group>"; }; 5E15126B1DB0010C00702E29 /* TrackVRulerControls.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackVRulerControls.cpp; sourceTree = "<group>"; };
5E15126C1DB0010C00702E29 /* TrackVRulerControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackVRulerControls.h; sourceTree = "<group>"; }; 5E15126C1DB0010C00702E29 /* TrackVRulerControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackVRulerControls.h; sourceTree = "<group>"; };
5E16FF4C1FF9CE0B0085E1B8 /* LanguageNames.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LanguageNames.txt; path = ../locale/LanguageNames.txt; sourceTree = "<group>"; };
5E2A19921EED688500217B58 /* SelectionState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectionState.cpp; sourceTree = "<group>"; }; 5E2A19921EED688500217B58 /* SelectionState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SelectionState.cpp; sourceTree = "<group>"; };
5E2A19931EED688500217B58 /* SelectionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectionState.h; sourceTree = "<group>"; }; 5E2A19931EED688500217B58 /* SelectionState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SelectionState.h; sourceTree = "<group>"; };
5E3FFE701EC9032B0020F7C9 /* NoteTrackSliderHandles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NoteTrackSliderHandles.cpp; sourceTree = "<group>"; }; 5E3FFE701EC9032B0020F7C9 /* NoteTrackSliderHandles.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NoteTrackSliderHandles.cpp; sourceTree = "<group>"; };
@ -5349,6 +5351,7 @@
286D30AC0F264B58004E6E4A /* locale */ = { 286D30AC0F264B58004E6E4A /* locale */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
5E16FF4C1FF9CE0B0085E1B8 /* LanguageNames.txt */,
28884912131B6CF500B59735 /* af.po */, 28884912131B6CF500B59735 /* af.po */,
28884913131B6CF500B59735 /* ar.po */, 28884913131B6CF500B59735 /* ar.po */,
28884914131B6CF500B59735 /* be.po */, 28884914131B6CF500B59735 /* be.po */,
@ -7091,6 +7094,7 @@
isa = PBXResourcesBuildPhase; isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
5E16FF4D1FF9CE0B0085E1B8 /* LanguageNames.txt in Resources */,
174F73D0098D516D009CD6E0 /* Audacity.icns in Resources */, 174F73D0098D516D009CD6E0 /* Audacity.icns in Resources */,
174F73D1098D516D009CD6E0 /* AudacityAIFF.icns in Resources */, 174F73D1098D516D009CD6E0 /* AudacityAIFF.icns in Resources */,
174F73D2098D516D009CD6E0 /* AudacityAU.icns in Resources */, 174F73D2098D516D009CD6E0 /* AudacityAU.icns in Resources */,

View File

@ -35,8 +35,10 @@
#include <wx/defs.h> #include <wx/defs.h>
#include <wx/hashmap.h> #include <wx/hashmap.h>
#include <wx/intl.h> #include <wx/intl.h>
#include <wx/textfile.h>
#include "Languages.h" #include "Languages.h"
#include "FileNames.h"
#include "AudacityApp.h" #include "AudacityApp.h"
@ -131,66 +133,25 @@ void GetLanguages(wxArrayString &langCodes, wxArrayString &langNames)
LangHash reverseHash; LangHash reverseHash;
LangHash tempHash; LangHash tempHash;
// MM: Use only ASCII characters here to avoid problems with {
// charset conversion on Linux platforms // The list of locales and associated self-names of languages
localLanguageName[wxT("af")] = wxT("Afrikaans"); // is stored in an external resource file which is easier
localLanguageName[wxT("ar")] = wxT("Arabic"); // to edit as Unicode than C++ source code.
localLanguageName[wxT("be")] = wxT("Belarusian"); auto dir = FileNames::ResourcesDir();
localLanguageName[wxT("bg")] = wxT("Balgarski"); wxTextFile file{dir + wxFILE_SEP_PATH + "LanguageNames.txt"};
localLanguageName[wxT("bn")] = wxT("Bengali"); file.Open();
localLanguageName[wxT("bs")] = wxT("Bosnian"); for ( auto str = file.GetFirstLine(); !file.Eof();
localLanguageName[wxT("ca")] = wxT("Catalan"); str = file.GetNextLine() )
localLanguageName[wxT("ca_ES@valencia")] = wxT("Valencian (southern Catalan)"); {
localLanguageName[wxT("cs")] = wxT("Czech"); // Allow commenting-out of languages no longer supported
localLanguageName[wxT("cy")] = wxT("Welsh"); if (str[0] == '#')
localLanguageName[wxT("da")] = wxT("Dansk"); continue;
localLanguageName[wxT("de")] = wxT("Deutsch");
localLanguageName[wxT("el")] = wxT("Ellinika"); auto code = str.BeforeFirst(' ');
localLanguageName[wxT("en")] = wxT("English"); auto name = str.AfterFirst(' ');
localLanguageName[wxT("es")] = wxT("Espanol"); localLanguageName[code] = name;
localLanguageName[wxT("eu")] = wxT("Euskara"); }
localLanguageName[wxT("eu_ES")] = wxT("Euskara (Espainiako)"); }
localLanguageName[wxT("fa")] = wxT("Farsi");
localLanguageName[wxT("fi")] = wxT("Suomi");
localLanguageName[wxT("fr")] = wxT("Francais");
localLanguageName[wxT("ga")] = wxT("Gaeilge");
localLanguageName[wxT("gl")] = wxT("Galician");
localLanguageName[wxT("he")] = wxT("Hebrew");
localLanguageName[wxT("hi")] = wxT("Hindi");
localLanguageName[wxT("hr")] = wxT("Croatian");
localLanguageName[wxT("hu")] = wxT("Magyar");
localLanguageName[wxT("hy")] = wxT("Armenian");
localLanguageName[wxT("id")] = wxT("Bahasa Indonesia"); // aka Indonesian
localLanguageName[wxT("it")] = wxT("Italiano");
localLanguageName[wxT("ja")] = wxT("Nihongo");
localLanguageName[wxT("ka")] = wxT("Georgian");
localLanguageName[wxT("km")] = wxT("Khmer");
localLanguageName[wxT("ko")] = wxT("Korean");
localLanguageName[wxT("lt")] = wxT("Lietuviu");
localLanguageName[wxT("mk")] = wxT("Makedonski");
localLanguageName[wxT("my")] = wxT("Burmese");
localLanguageName[wxT("nb")] = wxT("Norsk");
localLanguageName[wxT("nl")] = wxT("Nederlands");
localLanguageName[wxT("oc")] = wxT("Occitan");
localLanguageName[wxT("pl")] = wxT("Polski");
localLanguageName[wxT("pt")] = wxT("Portugues");
localLanguageName[wxT("pt_BR")] = wxT("Portugues (Brasil)");
localLanguageName[wxT("ro")] = wxT("Romanian");
localLanguageName[wxT("ru")] = wxT("Russky");
localLanguageName[wxT("sk")] = wxT("Slovak");
localLanguageName[wxT("sl")] = wxT("Slovenscina");
localLanguageName[wxT("sr_RS")] = wxT("Serbian (Cyrillic)");
localLanguageName[wxT("sr_RS@latin")] = wxT("Serbian (Latin)");
localLanguageName[wxT("sv")] = wxT("Svenska");
localLanguageName[wxT("tg")] = wxT("Tajik");
localLanguageName[wxT("ta")] = wxT("Tamil");
localLanguageName[wxT("tr")] = wxT("Turkce");
localLanguageName[wxT("uk")] = wxT("Ukrainska");
localLanguageName[wxT("vi")] = wxT("Vietnamese");
// If we look up zh in wxLocale we get zh_TW hence we MUST look
// for zh_CN.
localLanguageName[wxT("zh_CN")] = wxT("Chinese (Simplified)");
localLanguageName[wxT("zh_TW")] = wxT("Chinese (Traditional)");
wxArrayString audacityPathList = wxGetApp().audacityPathList; wxArrayString audacityPathList = wxGetApp().audacityPathList;

View File

@ -98,6 +98,7 @@ Source: "{#AppExe}"; DestDir: "{app}"; Flags: ignoreversion
Source: "..\help\manual\*"; DestDir: "{app}\help\manual\"; Flags: ignoreversion recursesubdirs Source: "..\help\manual\*"; DestDir: "{app}\help\manual\"; Flags: ignoreversion recursesubdirs
Source: "..\presets\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs Source: "..\presets\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs
Source: "..\locale\LanguageNames.txt"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs
; wxWidgets DLLs. Be specific (not *.dll) so we don't accidentally distribute avformat.dll, for example. ; wxWidgets DLLs. Be specific (not *.dll) so we don't accidentally distribute avformat.dll, for example.
; Don't use the WXWIN environment variable, because... ; Don't use the WXWIN environment variable, because...