Project

General

Profile

« Previous | Next » 

Revision 3a768e35

Added by Leszek Koltunski 3 days ago

Move all the strings from objlib to the app.
Upgrade AGP from 8.1.4 to 8.3.2

View differences:

build.gradle
43 43
        mavenCentral()
44 44
    }
45 45
    dependencies{
46
        classpath 'com.android.tools.build:gradle:8.1.4'
46
        classpath 'com.android.tools.build:gradle:8.3.2'
47 47
        classpath 'com.google.gms:google-services:4.4.2'
48 48
        classpath 'com.google.firebase:firebase-crashlytics-gradle:3.0.2'
49 49
    }
src/main/java/org/distorted/dialogs/DialogSolverView.java
19 19
import org.distorted.objectlib.helpers.OperatingSystemInterface;
20 20
import org.distorted.objectlib.main.TwistyObject;
21 21
import org.distorted.objectlib.solvers.verifiers.SolverAbstract;
22
import org.distorted.objectlib.solvers.verifiers.SolvingList;
22
import org.distorted.objectlib.solvers.verifiers.ImplementedVerifierList;
23 23
import org.distorted.solvers.ScreenList;
24 24
import org.distorted.solvers.ScreenSetupPosition;
25 25
import org.distorted.solvers.SolverActivity;
......
55 55
      public void onClick(View v)
56 56
        {
57 57
        dialog.dismiss();
58
        SolvingList list = SolvingList.getSolver(solverOrdinal);
58
        ImplementedVerifierList list = ImplementedVerifierList.getSolver(solverOrdinal);
59 59
        OperatingSystemInterface os = act.getInterface();
60 60
        TwistyObject object = act.getObject();
61 61
        SolverAbstract solver = list.create(os,object);
src/main/java/org/distorted/dialogs/DialogSolvers.java
23 23
import org.distorted.main.R;
24 24
import org.distorted.objectlib.metadata.ListObjects;
25 25
import org.distorted.solvers.SolverActivity;
26
import org.distorted.objectlib.solvers.verifiers.SolvingList;
26
import org.distorted.objectlib.solvers.verifiers.ImplementedVerifierList;
27
import org.distorted.solvers.SolverDescriptions;
27 28

  
28 29
///////////////////////////////////////////////////////////////////////////////////////////////////
29 30

  
......
85 86

  
86 87
    SolverActivity sact = (SolverActivity) getContext();
87 88
    int objectOrdinal = ListObjects.getObjectIndex(mArgument);
88
    int[] solverOrdinals = SolvingList.getSolverOrdinals(objectOrdinal);
89
    int[] solverOrdinals = ImplementedVerifierList.getSolverOrdinals(objectOrdinal);
89 90
    int len = solverOrdinals==null ? 0 : solverOrdinals.length;
90 91

  
91 92
    for(int o=0; o<len; o++ )
92 93
      {
93 94
      int ord = solverOrdinals[o];
94
      SolvingList solver = SolvingList.getSolver(ord);
95
      int title  = solver.getTitle();
96
      int description = solver.getDescription();
97
      DialogSolverView pane = new DialogSolverView(sact,this,ord,title,description, padd, font, (o==len-1?pL:pV),pT,pB);
98
      layout.addView(pane.getView());
95
      SolverDescriptions description = SolverDescriptions.getDescription(ord);
96

  
97
      if( description!=null )
98
        {
99
        int title=description.getTitle();
100
        int desc=description.getDescription();
101
        DialogSolverView pane=new DialogSolverView(sact, this, ord, title, desc, padd, font, (o == len - 1 ? pL : pV), pT, pB);
102
        layout.addView(pane.getView());
103
        }
99 104
      }
100 105
    }
101 106
  }
src/main/java/org/distorted/helpers/RubikNetwork.java
363 363
      return false;
364 364
      }
365 365

  
366
    if( mScores.length()==0 )
366
    if( mScores.isEmpty() )
367 367
      {
368 368
      receiver.message("Failed to download scores");
369 369
      return false;
......
455 455

  
456 456
  private boolean gottaDownload()
457 457
    {
458
    return ((mScores.length()==0) && !mRunning);
458
    return ( mScores.isEmpty() && !mRunning);
459 459
    }
460 460

  
461 461
///////////////////////////////////////////////////////////////////////////////////////////////////
src/main/java/org/distorted/objects/RubikObject.java
27 27
import org.distorted.objectlib.metadata.ListObjects;
28 28
import org.distorted.objectlib.metadata.Metadata;
29 29
import org.distorted.objectlib.patterns.RubikPatternList;
30
import org.distorted.objectlib.solvers.verifiers.SolvingList;
30
import org.distorted.objectlib.solvers.verifiers.ImplementedVerifierList;
31 31

  
32 32
///////////////////////////////////////////////////////////////////////////////////////////////////
33 33

  
......
39 39
  private final int mIconID;
40 40
  private final String[][] mPatterns;
41 41
  private final int mPrice;
42
  private final int[] mSolverOrdinals;
42
  private final int mNumSolvers;
43 43
  private final int mObjectOrdinal;
44 44
  private final boolean mIsLocal;
45 45
  private final int mCategory, mYear;
......
81 81
    int patternOrdinal  = RubikPatternList.getOrdinal(mObjectIndex);
82 82
    mPatterns = RubikPatternList.getPatterns(patternOrdinal);
83 83

  
84
    mSolverOrdinals= SolvingList.getSolverOrdinals(mObjectOrdinal);
84
    int[] solverOrdinals= ImplementedVerifierList.getSolverOrdinals(mObjectOrdinal);
85
    mNumSolvers = solverOrdinals==null ? 0 : solverOrdinals.length;
85 86
    mExtrasOrdinal = -1;
86 87

  
87 88
    mObjectVersion = meta.objectVersion();
......
110 111

  
111 112
    mPatterns      = null;
112 113
    mExtrasOrdinal = -1;
113
    mSolverOrdinals= null;
114
    mNumSolvers    = 0;
114 115
    mObjectOrdinal = -1;
115 116
    mIsLocal       = true;
116 117

  
......
168 169

  
169 170
///////////////////////////////////////////////////////////////////////////////////////////////////
170 171

  
171
  public void setExtrasOrdinal(int ordinal)
172
    {
173
    mExtrasOrdinal = ordinal;
174
    }
175

  
176
///////////////////////////////////////////////////////////////////////////////////////////////////
177

  
178
  public int getExtrasOrdinal()
179
    {
180
    return mExtrasOrdinal;
181
    }
182

  
183 172
///////////////////////////////////////////////////////////////////////////////////////////////////
184 173
// PUBLIC API
185 174

  
186
  public String getLowerName()
187
    {
188
    return mLowerName;
189
    }
190

  
191
///////////////////////////////////////////////////////////////////////////////////////////////////
192

  
193
  public String getUpperName()
194
    {
195
    return mUpperName;
196
    }
197

  
198
///////////////////////////////////////////////////////////////////////////////////////////////////
199

  
200
  public int getNumScramble()
201
    {
202
    return mNumScramble;
203
    }
204

  
205
///////////////////////////////////////////////////////////////////////////////////////////////////
206

  
207
  public int getPrice()
208
    {
209
    return mPrice;
210
    }
211

  
212
///////////////////////////////////////////////////////////////////////////////////////////////////
213

  
214
  public boolean isFree()
215
    {
216
    return (!RubikObjectList.USE_IAP || mIsFree);
217
    }
218

  
219
///////////////////////////////////////////////////////////////////////////////////////////////////
220

  
221
  public void markFree()
222
    {
223
    mIsFree=true;
224
    }
225

  
226
///////////////////////////////////////////////////////////////////////////////////////////////////
227

  
228
  public int getObjectVersion()
229
    {
230
    return mObjectVersion;
231
    }
232

  
233
///////////////////////////////////////////////////////////////////////////////////////////////////
234

  
235
  public int getExtrasVersion()
236
    {
237
    return mExtrasVersion;
238
    }
239

  
240
///////////////////////////////////////////////////////////////////////////////////////////////////
241

  
242
  public boolean supportsAdjustableColors()
243
    {
244
    return mAdjColors;
245
    }
246

  
247
///////////////////////////////////////////////////////////////////////////////////////////////////
248

  
249 175
  public void setIconTo(Activity act,ImageButton button)
250 176
    {
251 177
    Drawable icon = createIconDrawable(act);
......
311 237

  
312 238
///////////////////////////////////////////////////////////////////////////////////////////////////
313 239

  
314
  public int getCategory()
315
    {
316
    return mCategory;
317
    }
318

  
319
///////////////////////////////////////////////////////////////////////////////////////////////////
320

  
321
  public int getIndex()
322
    {
323
    return mObjectIndex;
324
    }
325

  
326
///////////////////////////////////////////////////////////////////////////////////////////////////
327

  
328
  public float getDifficulty()
329
    {
330
    return mDifficulty;
331
    }
332

  
333
///////////////////////////////////////////////////////////////////////////////////////////////////
334

  
335
  public int getYearOfInvention()
336
    {
337
    return mYear;
338
    }
339

  
340
///////////////////////////////////////////////////////////////////////////////////////////////////
341

  
342
  public String getAuthor()
343
    {
344
    return mAuthor;
345
    }
346

  
347
///////////////////////////////////////////////////////////////////////////////////////////////////
348

  
349
  public boolean hasExtras()
350
    {
351
    return mExtrasID!=0;
352
    }
353

  
354
///////////////////////////////////////////////////////////////////////////////////////////////////
355

  
356
  public int numSolvers()
357
    {
358
    return mSolverOrdinals!=null ? mSolverOrdinals.length : 0;
359
    }
360

  
361
///////////////////////////////////////////////////////////////////////////////////////////////////
362

  
363
  public int getObjectOrdinal()
364
    {
365
    return mObjectOrdinal;
366
    }
367

  
368
///////////////////////////////////////////////////////////////////////////////////////////////////
369

  
370
  public boolean isLocal()
371
    {
372
    return mIsLocal;
373
    }
374

  
375
///////////////////////////////////////////////////////////////////////////////////////////////////
376

  
377
  public boolean hasPatterns()
378
    {
379
    return mPatterns!=null;
380
    }
381

  
382
///////////////////////////////////////////////////////////////////////////////////////////////////
383

  
384
  public String[][] getPatterns()
385
    {
386
    return mPatterns;
387
    }
240
  public int getCategory()                  { return mCategory; }
241
  public int getIndex()                     { return mObjectIndex; }
242
  public float getDifficulty()              { return mDifficulty; }
243
  public int getYearOfInvention()           { return mYear; }
244
  public String getAuthor()                 { return mAuthor; }
245
  public boolean hasExtras()                { return mExtrasID!=0; }
246
  public int numSolvers()                   { return mNumSolvers; }
247
  public int getObjectOrdinal()             { return mObjectOrdinal; }
248
  public boolean isLocal()                  { return mIsLocal; }
249
  public boolean hasPatterns()              { return mPatterns!=null; }
250
  public String[][] getPatterns()           { return mPatterns; }
251
  public String getLowerName()              { return mLowerName; }
252
  public String getUpperName()              { return mUpperName; }
253
  public int getNumScramble()               { return mNumScramble; }
254
  public int getPrice()                     { return mPrice; }
255
  public boolean isFree()                   { return (!RubikObjectList.USE_IAP || mIsFree); }
256
  public void markFree()                    { mIsFree=true; }
257
  public int getObjectVersion()             { return mObjectVersion; }
258
  public int getExtrasVersion()             { return mExtrasVersion; }
259
  public void setExtrasOrdinal(int ordinal) { mExtrasOrdinal = ordinal; }
260
  public int getExtrasOrdinal()             { return mExtrasOrdinal; }
261
  public boolean supportsAdjustableColors() { return mAdjColors; }
388 262
}
src/main/java/org/distorted/solvers/ScreenSetupPosition.java
39 39
import org.distorted.objectlib.shape.*;
40 40
import org.distorted.objectlib.solvers.verifiers.ResultScreen;
41 41
import org.distorted.objectlib.solvers.verifiers.SolverAbstract;
42
import org.distorted.objectlib.solvers.verifiers.SolvingList;
42
import org.distorted.objectlib.solvers.verifiers.ImplementedVerifierList;
43 43

  
44 44
import java.lang.ref.WeakReference;
45 45
import java.util.Timer;
......
291 291

  
292 292
  private void pressSolve(SolverActivity act)
293 293
    {
294
    int[] solverOrdinals = SolvingList.getSolverOrdinals(mObjectOrdinal);
294
    int[] solverOrdinals = ImplementedVerifierList.getSolverOrdinals(mObjectOrdinal);
295 295

  
296 296
    if( solverOrdinals!=null  )
297 297
      {
298
      SolvingList slvList = SolvingList.getSolver(solverOrdinals[0]);
298
      ImplementedVerifierList slvList = ImplementedVerifierList.getSolver(solverOrdinals[0]);
299 299
      OperatingSystemInterface os = act.getInterface();
300 300
      TwistyObject object = act.getObject();
301 301
      SolverAbstract solver = slvList.create(os,object);
src/main/java/org/distorted/solvers/SolverDescriptions.java
1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2020 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8
///////////////////////////////////////////////////////////////////////////////////////////////////
9

  
10
package org.distorted.solvers;
11

  
12
import static org.distorted.objectlib.solvers.verifiers.ImplementedVerifierList.*;
13

  
14
import org.distorted.main.R;
15
import org.distorted.objectlib.solvers.verifiers.*;
16

  
17
///////////////////////////////////////////////////////////////////////////////////////////////////
18

  
19
public enum SolverDescriptions
20
{
21
  DESC_CUBE2          ( CUBE2         , R.string.solver_cube2_title, R.string.solver_cube2_description),
22
  DESC_CU232          ( CU232         , R.string.solver_cu232_title, R.string.solver_cu232_description),
23
  DESC_CU323          ( CU323         , R.string.solver_cu323_title, R.string.solver_cu323_description),
24
  DESC_PYRAMINX       ( PYRAMINX      , R.string.solver_pyra3_title, R.string.solver_pyra3_description),
25
  DESC_SKEWB          ( SKEWB         , R.string.solver_skew2_title, R.string.solver_skew2_description),
26
  DESC_PYRAMINX_DUO   ( PYRAMINX_DUO  , R.string.solver_pduo2_title, R.string.solver_pduo2_description),
27
  DESC_IVY            ( IVY           , R.string.solver_ivy_title  , R.string.solver_ivy_description  ),
28
  DESC_DIAMOND        ( DIAMOND       , R.string.solver_diam2_title, R.string.solver_diam2_description),
29
  DESC_JING2          ( JING2         , R.string.solver_jing2_title, R.string.solver_jing2_description),
30
  DESC_DINO6          ( DINO6         , R.string.solver_dino6_title, R.string.solver_dino6_description),
31
  DESC_DINO4          ( DINO4         , R.string.solver_dino4_title, R.string.solver_dino4_description),
32
  DESC_PDIA           ( PDIA          , R.string.solver_pdia_title , R.string.solver_pdia_description ),
33

  
34
  DESC_CUBE3_KOCIEMBA ( CUBE3_KOCIEMBA, R.string.solver_cube3_title, R.string.solver_cube3_description),
35

  
36
  DESC_CUBE3_ALGO     ( CUBE3_ALGO    , R.string.solver_3algo_title, R.string.solver_3algo_description),
37
  DESC_KILO3_ALGO     ( KILO3_ALGO    , R.string.solver_kilo3_title, R.string.solver_kilo3_description),
38
  ;
39

  
40
  public static final int NUM_OBJECTS = values().length;
41

  
42
  private final ImplementedVerifierList mSolver;
43
  private final int mTitle;
44
  private final int mDescription;
45

  
46
  private static final SolverDescriptions[] objects;
47

  
48
  static
49
    {
50
    objects = new SolverDescriptions[NUM_OBJECTS];
51
    int i=0;
52

  
53
    for( SolverDescriptions object: SolverDescriptions.values())
54
      {
55
      objects[i++] = object;
56
      }
57
    }
58

  
59
///////////////////////////////////////////////////////////////////////////////////////////////////
60

  
61
  SolverDescriptions(ImplementedVerifierList solver, int title, int descripton)
62
    {
63
    mSolver      = solver;
64
    mTitle       = title;
65
    mDescription = descripton;
66
    }
67

  
68
///////////////////////////////////////////////////////////////////////////////////////////////////
69

  
70
  public static SolverDescriptions getDescription(int ordinal)
71
    {
72
    for(int i=0; i<NUM_OBJECTS; i++)
73
      if( objects[i].mSolver.ordinal()==ordinal ) return objects[i];
74

  
75
    return null;
76
    }
77

  
78
///////////////////////////////////////////////////////////////////////////////////////////////////
79

  
80
  public ImplementedVerifierList getSolver() { return mSolver; }
81
  public int getTitle() { return mTitle; }
82
  public int getDescription() { return mDescription; }
83
}
src/main/java/org/distorted/solvers/SolverObjectLibInterface.java
18 18
import org.distorted.objectlib.main.ObjectControl;
19 19
import org.distorted.objects.RubikObject;
20 20
import org.distorted.objects.RubikObjectList;
21
import org.distorted.objectlib.solvers.verifiers.SolvingList;
21
import org.distorted.objectlib.solvers.verifiers.ImplementedVerifierList;
22 22

  
23 23
import java.lang.ref.WeakReference;
24 24

  
......
173 173
    ScreenSetupPosition solver = (ScreenSetupPosition) ScreenList.SVER.getScreenClass();
174 174
    int color = solver.getCurrentColor();
175 175
    int currObject = act.getObjectOrdinal();
176
    mLastCubitColor = SolvingList.cubitIsLocked(currObject,cubit);
176
    mLastCubitColor = ImplementedVerifierList.cubitIsLocked(currObject,cubit);
177 177
    mLastCubit = cubit;
178 178
    mLastCubitFace = face;
179 179
    ObjectControl control = act.getControl();
src/main/res/values-de/strings.xml
232 232
    <string name="color_dgreen7">dunkelgrüne</string>
233 233

  
234 234
    <string name="solver_cube3_description">Ein nahezu perfekter, sofortiger, zweiphasiger 3x3-Löser.\nAutor: Herbert Kociemba.</string>
235
    <string name="solver_3algo_description">Implementierung des Anfängeralgorithmus. 7 Phasen. Erzeugt Lösungen mit etwa 100 Zügen.\nAutor: Leszek Koltunski.</string>
236 235
    <string name="solver_pduo2_description">Ein perfekter, sofortiger Löser.\nAutor: Leszek Koltunski.</string>
237 236
    <string name="solver_ivy_description">Ein perfekter, sofortiger Löser.\nAutor: Leszek Koltunski.</string>
238 237
    <string name="solver_cu232_description">Ein perfekter, sofortiger Löser.\nAutor: Leszek Koltunski.</string>
......
245 244
    <string name="solver_dino4_description">Ein perfekter, sofortiger Löser.\nAutor: Leszek Koltunski.</string>
246 245
    <string name="solver_pdia_description">Ein perfekter, sofortiger Löser.\nAutor: Leszek Koltunski.</string>
247 246
    <string name="solver_cu323_description">Ein perfekter, sofortiger Löser.\nAutor: Leszek Koltunski.</string>
247
    <string name="solver_3algo_description">Implementierung des Anfängeralgorithmus. 7 Phasen. Erzeugt Lösungen mit etwa 100 Zügen.\nAutor: Leszek Koltunski.</string>
248
    <string name="solver_kilo3_description">Implementierung des Anfängeralgorithmus. 5 Phasen. Erzeugt Lösungen mit etwa 70 Zügen.\nAutor: Leszek Koltunski.</string>
248 249

  
249 250
    <string name="creators">Schöpfer</string>
250 251

  
src/main/res/values-es/strings.xml
232 232
    <string name="color_dgreen7">verdes oscuro</string>
233 233

  
234 234
    <string name="solver_cube3_description">Un 3x3x3 solucionador casi perfecto, instantáneo, de dos fases.\nAutor: Herbert Kociemba.</string>
235
    <string name="solver_3algo_description">Implementación del algoritmo para principiantes. 7 fases. Produce soluciones de aproximadamente 100 movimientos.\nAutor: Leszek Koltunski.</string>
236 235
    <string name="solver_pduo2_description">Un solucionador perfecto e instantáneo.\nAutor: Leszek Koltunski.</string>
237 236
    <string name="solver_ivy_description">Un solucionador perfecto e instantáneo.\nAutor: Leszek Koltunski.</string>
238 237
    <string name="solver_cu232_description">Un solucionador perfecto e instantáneo.\nAutor: Leszek Koltunski.</string>
......
245 244
    <string name="solver_dino4_description">Un solucionador perfecto e instantáneo.\nAutor: Leszek Koltunski.</string>
246 245
    <string name="solver_pdia_description">Un solucionador perfecto e instantáneo.\nAutor: Leszek Koltunski.</string>
247 246
    <string name="solver_cu323_description">Un solucionador perfecto e instantáneo.\nAutor: Leszek Koltunski.</string>
247
    <string name="solver_3algo_description">Implementación del algoritmo para principiantes. 7 fases. Produce soluciones de aproximadamente 100 movimientos.\nAutor: Leszek Koltunski.</string>
248
    <string name="solver_kilo3_description">Implementación del algoritmo para principiantes. 5 fases. Produce soluciones de aproximadamente 70 movimientos.\nAutor: Leszek Koltunski.</string>
248 249

  
249 250
    <string name="creators">Creadores</string>
250 251

  
src/main/res/values-fr/strings.xml
232 232
    <string name="color_dgreen7">vertes foncé</string>
233 233

  
234 234
    <string name="solver_cube3_description">Un solveur 3x3 biphasé presque parfait, instantané.\nAuteur: Herbert Kociemba.</string>
235
    <string name="solver_3algo_description">Mise en œuvre de l\'algorithme pour débutants. 7 phases. Produit des solutions longues d\'environ 100 coups.\nAuteur: Leszek Koltunski.</string>
236 235
    <string name="solver_pduo2_description">Un solveur parfait et instantané.\nAuteur: Leszek Koltunski.</string>
237 236
    <string name="solver_ivy_description">Un solveur parfait et instantané.\nAuteur: Leszek Koltunski.</string>
238 237
    <string name="solver_cu232_description">Un solveur parfait et instantané.\nAuteur: Leszek Koltunski.</string>
......
245 244
    <string name="solver_dino4_description">Un solveur parfait et instantané.\nAuteur: Leszek Koltunski.</string>
246 245
    <string name="solver_pdia_description">Un solveur parfait et instantané.\nAuteur: Leszek Koltunski.</string>
247 246
    <string name="solver_cu323_description">Un solveur parfait et instantané.\nAuteur: Leszek Koltunski.</string>
247
    <string name="solver_3algo_description">Mise en œuvre de l\'algorithme pour débutants. 7 phases. Produit des solutions longues d\'environ 100 coups.\nAuteur: Leszek Koltunski.</string>
248
    <string name="solver_kilo3_description">Mise en œuvre de l\'algorithme pour débutants. 5 phases. Produit des solutions longues d\'environ 70 coups.\nAuteur: Leszek Koltunski.</string>
248 249

  
249 250
    <string name="creators">Créateurs</string>
250 251

  
src/main/res/values-ja/strings.xml
232 232
    <string name="color_dgreen7">濃い緑</string>
233 233

  
234 234
    <string name="solver_cube3_description">ほぼ完璧で瞬間的な 2 フェーズ 3x3x3 ソルバー。\n著者: Herbert Kociemba.</string>
235
    <string name="solver_3algo_description">初心者向けアルゴリズムの実装。7 フェーズ。約 100 手の長さのソリューションを生成します。\n著者: Leszek Koltunski.</string>
236 235
    <string name="solver_pduo2_description">完璧で瞬時のソルバー。\n著者: Leszek Koltunski.</string>
237 236
    <string name="solver_ivy_description">完璧で瞬時のソルバー。\n著者: Leszek Koltunski.</string>
238 237
    <string name="solver_cu232_description">完璧で瞬時のソルバー。\n著者: Leszek Koltunski.</string>
......
245 244
    <string name="solver_dino4_description">完璧で瞬時のソルバー。\n著者: Leszek Koltunski.</string>
246 245
    <string name="solver_pdia_description">完璧で瞬時のソルバー。\n著者: Leszek Koltunski.</string>
247 246
    <string name="solver_cu323_description">完璧で瞬時のソルバー。\n著者: Leszek Koltunski.</string>
247
    <string name="solver_3algo_description">初心者向けアルゴリズムの実装。7 フェーズ。約 100 手の長さのソリューションを生成します。\n著者: Leszek Koltunski.</string>
248
    <string name="solver_kilo3_description">初心者向けアルゴリズムの実装。5 フェーズ。約 70 手の長さのソリューションを生成します。\n著者: Leszek Koltunski.</string>
248 249

  
249 250
    <string name="creators">クリエイター</string>
250 251

  
src/main/res/values-ko/strings.xml
232 232
    <string name="color_dgreen7">진한 녹색</string>
233 233

  
234 234
    <string name="solver_cube3_description">거의 완벽하고 즉각적인 2상 3x3x3 솔버입니다.\n작가: Herbert Kociemba.</string>
235
    <string name="solver_3algo_description">초보자 알고리즘 구현. 7단계. 약 100-이동 길이의 솔루션을 생성합니다.\n작가: Leszek Koltunski.</string>
236 235
    <string name="solver_pduo2_description">완벽하고 즉각적인 솔버.\n작가: Leszek Koltunski.</string>
237 236
    <string name="solver_ivy_description">완벽하고 즉각적인 솔버.\n작가: Leszek Koltunski.</string>
238 237
    <string name="solver_cu232_description">완벽하고 즉각적인 솔버.\n작가: Leszek Koltunski.</string>
......
245 244
    <string name="solver_dino4_description">완벽하고 즉각적인 솔버.\n작가: Leszek Koltunski.</string>
246 245
    <string name="solver_pdia_description">완벽하고 즉각적인 솔버.\n작가: Leszek Koltunski.</string>
247 246
    <string name="solver_cu323_description">완벽하고 즉각적인 솔버.\n작가: Leszek Koltunski.</string>
247
    <string name="solver_3algo_description">초보자 알고리즘 구현. 7단계. 약 100-이동 길이의 솔루션을 생성합니다.\n작가: Leszek Koltunski.</string>
248
    <string name="solver_kilo3_description">초보자 알고리즘 구현. 5단계. 약 70-이동 길이의 솔루션을 생성합니다.\n작가: Leszek Koltunski.</string>
248 249

  
249 250
    <string name="creators">크리에이터</string>
250 251

  
src/main/res/values-pl/strings.xml
232 232
    <string name="color_dgreen7">ciemnozielone</string>
233 233

  
234 234
    <string name="solver_cube3_description">Natychmiastowy, prawie optymalny rozwiązywacz kostki 3x3x3.\nAutor: Herbert Kociemba.</string>
235
    <string name="solver_3algo_description">Implementacja algorytmu dla początkujących. 7 faz. Tworzy rozwiązania o długości około 100 ruchów.\nAutor: Leszek Koltunski.</string>
236 235
    <string name="solver_pduo2_description">Optymalny, natychmiastowy rozwiązywacz.\nAutor: Leszek Koltunski.</string>
237 236
    <string name="solver_ivy_description">Optymalny, natychmiastowy rozwiązywacz.\nAutor: Leszek Koltunski.</string>
238 237
    <string name="solver_cu232_description">Optymalny, natychmiastowy rozwiązywacz.\nAutor: Leszek Koltunski.</string>
......
245 244
    <string name="solver_dino4_description">Optymalny, natychmiastowy rozwiązywacz.\nAutor: Leszek Koltunski.</string>
246 245
    <string name="solver_pdia_description">Optymalny, natychmiastowy rozwiązywacz.\nAutor: Leszek Koltunski.</string>
247 246
    <string name="solver_cu323_description">Optymalny, natychmiastowy rozwiązywacz.\nAutor: Leszek Koltunski.</string>
247
    <string name="solver_3algo_description">Implementacja algorytmu dla początkujących. 7 faz. Tworzy rozwiązania o długości około 100 ruchów.\nAutor: Leszek Koltunski.</string>
248
    <string name="solver_kilo3_description">Implementacja algorytmu dla początkujących. 5 faz. Tworzy rozwiązania o długości około 70 ruchów.\nAutor: Leszek Koltunski.</string>
248 249

  
249 250
    <string name="creators">Kreatory</string>
250 251

  
src/main/res/values-ru/strings.xml
245 245
    <string name="solver_dino4_description">Идеальный, мгновенный решатель.\nАвтор: Leszek Koltunski.</string>
246 246
    <string name="solver_pdia_description">Идеальный, мгновенный решатель.\nАвтор: Leszek Koltunski.</string>
247 247
    <string name="solver_cu323_description">Идеальный, мгновенный решатель.\nАвтор: Leszek Koltunski.</string>
248
    <string name="solver_kilo3_description">Реализация алгоритма для начинающих. 5 фаз. Выдает решения длиной около 70 ходов.\nАвтор: Leszek Koltunski.</string>
248 249

  
249 250
    <string name="creators">Создатели</string>
250 251

  
src/main/res/values-zh-rCN/strings.xml
238 238
    <string name="color_dgreen7">深绿色的</string>
239 239

  
240 240
    <string name="solver_cube3_description">一个几乎完美的、瞬时的、两相的3x3x3解算器。\n作者: Herbert Kociemba.</string>
241
    <string name="solver_3algo_description">初学者算法的实现。7 个阶段。产生大约 100 步长的解决方案。\n作者: Leszek Koltunski.</string>
242 241
    <string name="solver_pduo2_description">完美的即时求解器。\n作者: Leszek Koltunski.</string>
243 242
    <string name="solver_ivy_description">完美的即时求解器。\n作者: Leszek Koltunski.</string>
244 243
    <string name="solver_cu232_description">完美的即时求解器。\n作者: Leszek Koltunski.</string>
......
251 250
    <string name="solver_dino4_description">完美的即时求解器。\n作者: Leszek Koltunski.</string>
252 251
    <string name="solver_pdia_description">完美的即时求解器。\n作者: Leszek Koltunski.</string>
253 252
    <string name="solver_cu323_description">完美的即时求解器。\n作者: Leszek Koltunski.</string>
253
    <string name="solver_3algo_description">初学者算法的实现。7 个阶段。产生大约 100 步长的解决方案。\n作者: Leszek Koltunski.</string>
254
    <string name="solver_kilo3_description">初学者算法的实现。5 个阶段。产生大约 70 步长的解决方案。\n作者: Leszek Koltunski.</string>
254 255

  
255 256
    <string name="creators">创作者</string>
256 257

  
src/main/res/values-zh-rTW/strings.xml
232 232
    <string name="color_dgreen7">深綠色的</string>
233 233

  
234 234
    <string name="solver_cube3_description">一個近乎完美的瞬時兩相 3x3x3 求解器。\n作者: Herbert Kociemba.</string>
235
    <string name="solver_3algo_description">初學者演算法的實作。 7 個階段。產生大約 100 個動作的長解。\n作者: Leszek Koltunski.</string>
236 235
    <string name="solver_pduo2_description">完美的即時求解器。\n作者: Leszek Koltunski.</string>
237 236
    <string name="solver_ivy_description">完美的即時求解器。\n作者: Leszek Koltunski.</string>
238 237
    <string name="solver_cu232_description">完美的即時求解器。\n作者: Leszek Koltunski.</string>
......
245 244
    <string name="solver_dino4_description">完美的即時求解器。\n作者: Leszek Koltunski.</string>
246 245
    <string name="solver_pdia_description">完美的即時求解器。\n作者: Leszek Koltunski.</string>
247 246
    <string name="solver_cu323_description">完美的即時求解器。\n作者: Leszek Koltunski.</string>
247
    <string name="solver_3algo_description">初學者演算法的實作。 7 個階段。產生大約 100 個動作的長解。\n作者: Leszek Koltunski.</string>
248
    <string name="solver_kilo3_description">初學者演算法的實作。 5 個階段。產生大約 70 個動作的長解。\n作者: Leszek Koltunski.</string>
248 249

  
249 250
    <string name="creators">創作者</string>
250 251

  
src/main/res/values/strings.xml
137 137
    <string name="webview_error" translatable="false">Error Loading WebView</string>
138 138
    <string name="opengl_error" translatable="false">Error</string>
139 139
    <string name="opengl_error_text" translatable="false">This device does not support OpenGL 3.0</string>
140
    <string name="solver_cube3_title" translatable="false">Kociemba Solver</string>
141
    <string name="solver_3algo_title" translatable="false">3x3 Beginner</string>
142
    <string name="solver_pduo2_title" translatable="false">Pyraminx Duo Solver</string>
143
    <string name="solver_pyra3_title" translatable="false">Pyraminx Solver</string>
144
    <string name="solver_ivy_title" translatable="false">Ivy Solver</string>
145
    <string name="solver_cu232_title" translatable="false">2x2x3 Cuboid Solver</string>
146
    <string name="solver_cu323_title" translatable="false">3x3x2 Cuboid Solver</string>
147
    <string name="solver_diam2_title" translatable="false">Skewb Diamond Solver</string>
148
    <string name="solver_cube2_title" translatable="false">2x2 Cube Solver</string>
149
    <string name="solver_skew2_title" translatable="false">Skewb Solver</string>
150
    <string name="solver_jing2_title" translatable="false">Jing Pyraminx Solver</string>
151
    <string name="solver_dino6_title" translatable="false">6-color Dino Solver</string>
152
    <string name="solver_dino4_title" translatable="false">4-color Dino Solver</string>
153
    <string name="solver_pdia_title" translatable="false">Pyraminx Diamond Solver</string>
154
    <string name="solver_kilo3_title" translatable="false">Kilominx Solver</string>
155

  
156
    <string name="solver_cube3_description">A near-perfect, instantaneous, two-phase 3x3x3 solver.\nAuthor: Herbert Kociemba.</string>
157
    <string name="solver_pduo2_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
158
    <string name="solver_ivy_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
159
    <string name="solver_cu232_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
160
    <string name="solver_pyra3_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
161
    <string name="solver_diam2_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
162
    <string name="solver_cube2_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
163
    <string name="solver_skew2_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
164
    <string name="solver_jing2_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
165
    <string name="solver_dino6_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
166
    <string name="solver_dino4_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
167
    <string name="solver_pdia_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
168
    <string name="solver_cu323_description">A perfect, instantaneous solver.\nAuthor: Leszek Koltunski.</string>
169
    <string name="solver_3algo_description">Implementation of the beginner algorithm. 7 phases. Produces solutions that are about 100 moves long.\nAuthor: Leszek Koltunski.</string>
170
    <string name="solver_kilo3_description">Implementation of the beginner algorithm. 5 phases. Produces solutions that are about 70 moves long.\nAuthor: Leszek Koltunski.</string>
140 171

  
141 172
    <string name="impossible_position">Impossible</string>
142 173
    <string name="solver_generic_not_implemented">Solver for this object not implemented yet!</string>

Also available in: Unified diff