1 /* Language.h */ 2 3 /* Copyright (C) 2011-2020 Michael Lugmair (Lucio Carreras) 4 * 5 * This file is part of sayonara player 6 * 7 * This program is free software: you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation, either version 3 of the License, or 10 * (at your option) any later version. 11 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 17 * You should have received a copy of the GNU General Public License 18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 #ifndef LANGUAGE_H 22 #define LANGUAGE_H 23 24 #include <QObject> 25 #include <QList> 26 #include <QMap> 27 #include <QLocale> 28 29 /** 30 * @brief The LanguageString class 31 * @ingroup Language 32 */ 33 class LanguageString : public QString 34 { 35 public: 36 LanguageString(const QString& other); 37 LanguageString(const LanguageString& other) = default; 38 39 LanguageString& operator=(const QString& other); 40 LanguageString& operator=(const LanguageString& other) = default; 41 42 /** 43 * @brief Convert first character to upper case and rest to lower case 44 */ 45 LanguageString& toFirstUpper(); 46 47 /** 48 * @brief appends a space 49 */ 50 LanguageString& space(); 51 52 /** 53 * @brief appends question mark 54 */ 55 LanguageString& question(); 56 57 /** 58 * @brief Appends triple points 59 */ 60 LanguageString& triplePt(); 61 }; 62 63 /** 64 * @brief The Lang class 65 * @ingroup Language 66 */ 67 class Lang : 68 public QObject 69 { 70 Q_OBJECT 71 72 public: 73 74 /** 75 * @brief An enum for the most common translation files. 76 * use with Lang::get() 77 */ 78 enum Term 79 { 80 About=0, 81 Action, 82 Actions, 83 Activate, 84 Active, 85 Add, 86 AddArtist, 87 AddTab, 88 Album, 89 AlbumArtist, 90 AlbumArtists, 91 Albums, 92 All, 93 Append, 94 Application, 95 Apply, 96 Artist, 97 Artists, 98 Ascending, 99 Automatic, 100 Bitrate, 101 Bookmarks, 102 Broadcast, 103 By, 104 Cancel, 105 CannotFindLame, 106 Comment, 107 Continue, 108 Covers, 109 Clear, 110 ClearSelection, 111 Close, 112 CloseOthers, 113 CloseTab, 114 CreateDirectory, 115 Created, 116 CreateNewLibrary, 117 DarkMode, 118 Date, 119 Days, 120 DaysShort, 121 Default, 122 Delete, 123 Descending, 124 Directory, 125 Directories, 126 Disc, 127 Duration, 128 DurationShort, 129 DynamicPlayback, 130 Edit, 131 EmptyInput, 132 EnterName, 133 EnterNewName, 134 EnterUrl, 135 Entries, 136 Entry, 137 Error, 138 Fast, 139 File, 140 Filename, 141 Files, 142 Filesize, 143 Filetype, 144 Filter, 145 First, 146 Font, 147 Fonts, 148 Fulltext, 149 GaplessPlayback, 150 GB, 151 Genre, 152 Genres, 153 Hide, 154 Hours, 155 HoursShort, 156 ImportDir, 157 ImportFiles, 158 Inactive, 159 Info, 160 InvalidChars, 161 KB, 162 Key_Find, 163 Key_Delete, 164 Key_Escape, 165 Key_Control, 166 Key_Alt, 167 Key_Shift, 168 Key_Backspace, 169 Key_Tab, 170 Library, 171 LibraryPath, 172 LibraryView, 173 Listen, 174 LiveSearch, 175 Loading, 176 LoadingArg, 177 Logger, 178 LogLevel, 179 Lyrics, 180 MB, 181 Menu, 182 Minimize, 183 Minutes, 184 MinutesShort, 185 Missing, 186 Modified, 187 Months, 188 MoveDown, 189 MoveUp, 190 MuteOn, 191 MuteOff, 192 Name, 193 New, 194 NextPage, 195 NextTrack, 196 No, 197 NoAlbums, 198 NumTracks, 199 OK, 200 On, 201 Open, 202 OpenDir, 203 OpenFile, 204 Or, 205 Overwrite, 206 Pause, 207 Play, 208 PlayingTime, 209 PlayInNewTab, 210 Playlist, 211 Playlists, 212 PlayNext, 213 PlayPause, 214 Plugin, 215 Podcasts, 216 Preferences, 217 PreviousPage, 218 PreviousTrack, 219 PurchaseUrl, 220 Quit, 221 Radio, 222 RadioStation, 223 Rating, 224 Really, 225 Refresh, 226 ReloadLibrary, 227 Remove, 228 Rename, 229 Repeat1, 230 RepeatAll, 231 Replace, 232 Reset, 233 Retry, 234 ReverseOrder, 235 Sampler, 236 Save, 237 SaveAs, 238 SaveToFile, 239 ScanForFiles, 240 SearchNoun, 241 SearchVerb, 242 SearchNext, 243 SearchPrev, 244 Second, 245 Seconds, 246 SecondsShort, 247 SeekForward, 248 SeekBackward, 249 Show, 250 ShowAlbumArtists, 251 ShowCovers, 252 ShowLibrary, 253 Shuffle, 254 Shutdown, 255 SimilarArtists, 256 SortBy, 257 Stop, 258 Streams, 259 StreamUrl, 260 Success, 261 Th, 262 Third, 263 Title, 264 Track, 265 TrackOn, 266 TrackNo, 267 Tracks, 268 Tree, 269 Undo, 270 UnknownAlbum, 271 UnknownArtist, 272 UnknownTitle, 273 UnknownGenre, 274 UnknownYear, 275 UnknownPlaceholder, 276 Various, 277 VariousAlbums, 278 VariousArtists, 279 VariousTracks, 280 Version, 281 VolumeDown, 282 VolumeUp, 283 Warning, 284 Weeks, 285 Year, 286 Years, 287 Yes, 288 Zoom, 289 NUMBER_OF_LANGUAGE_KEYS 290 }; 291 292 enum TermNr 293 { 294 NrDirectories=0, 295 NrFiles, 296 NrPlaylists, 297 NrTracks, 298 NrTracksFound, 299 NUMBER_OF_LANGUAGE_PARAM_KEYS 300 }; 301 302 public: 303 Lang(); 304 ~Lang(); 305 306 /** 307 * @brief Fetch translation by enum 308 * @param enum term describing the source word 309 * @param ok optional pointer for return value 310 * @return translated text 311 */ 312 static LanguageString get(Lang::Term term, bool* ok=nullptr); 313 314 static LanguageString getWithNumber(Lang::TermNr term, int param, bool* ok=nullptr); 315 }; 316 317 #endif // LANGUAGE_H 318