Skip to content

Localization zh HK

ArchiBot edited this page Dec 17, 2022 · 23 revisions

็•ถๅœฐ่ชž็ณปๅŒ–:

ASF ็”ฑ Crowdin ๆœๅ‹™ๆไพ›ๆ”ฏๆด๏ผŒ้€™ไฝฟๅพ—ๆฏๅ€‹ไบบ้ƒฝๅฏไปฅๅนซๅŠฉๅฐ‡ ASF ็ฟป่ญฏๆˆไธ–็•Œๅ„ๅœฐ็š„่ชž่จ€ใ€‚ ๆœ‰้—œ Crowdin ๅทฅไฝœๅŽŸ็†็š„่ฉณ็ดฐ่ชชๆ˜Ž๏ผŒ่ซ‹ๆŸฅ็œ‹ Crowdin ไป‹็ดนใ€‚

ๅฆ‚ๆžœๆ‚จๆƒณไบ†่งฃ็•ถๅ‰ๆœฌๅœŸๅŒ–ๅทฅไฝœ็š„้€ฒ็จ‹๏ผŒๅฏไปฅ้—œๆณจ ASF Crowdin ๅ‹•ๆ…‹ใ€‚


็ฏ„ๅœ

ๆˆ‘ๅ€‘็š„ๅนณ่‡บๆ”ฏๆดๆˆ‘ๅ€‘็š„ไธป่ฆ ASF้ …็›ฎ็š„็•ถๅœฐ่ชž็ณปๅŒ–๏ผŒไปฅๅŠๆˆ‘ๅ€‘่ˆ‡ไน‹ไธ€่ตทๆไพ›็š„ๅฎŒๆ•ด็š„ๅฏ็•ถๅœฐ่ชž็ณปๅŒ–ๅ…งๅฎนใ€‚ ้€™ไธป่ฆๅŒ…ๆ‹ฌๆˆ‘ๅ€‘็š„ASF็ถฒ้ ่จญ็ฝฎๆช”็”Ÿๆˆๅ™จใ€ASF-ui ไปฅๅŠๆˆ‘ๅ€‘็š„wikiใ€‚ ๆ‰€ๆœ‰้€™ไบ›้ƒฝๅฏไปฅ่ผ•้ฌ†ๅœฐ้€š้ŽCrowdinไป‹้ข้€ฒ่กŒ่ฝ‰ๆ›ใ€‚


่จปๅ†Š

ๅฆ‚ๆžœๆ‚จๆƒณๅนซๅŠฉๅฐASF็š„็ฟป่ญฏใ€ๅฏฉ้–ฑๆˆ–ๆ‰นๅ‡†็ฟป่ญฏ๏ผŒ่ซ‹่จปๅ†Šๆˆ‘ๅ€‘็š„ Crowdin ้ …็›ฎใ€‚ ่จปๅ†Šๆ˜ฏ็ฐกๅ–ฎๅ’ŒๅฎŒๅ…จๅ…่ฒป็š„๏ผ ็™ป้Œ„ๅพŒ๏ผŒๆ‚จๅฏไปฅ้ธๆ“‡ๆ‚จๆƒณๅƒ่ˆ‡็ฟป่ญฏ็š„่ชž่จ€๏ผŒ็„ถๅพŒ้–‹ๅง‹็ฟป่ญฏ ASF ๅญ—ไธฒ๏ผŒไธฆๅ”ๅŠฉๅ…ถไป–็คพๅ€ๆˆๅ“กๅฐ‡ ASF ็ฟป่ญฏๆˆๆ‰€ๆœ‰็•ถไธ‹ๆœ€ๆต่กŒ็š„่ชž่จ€๏ผ


็ฟป่ญฏ

ๅฆ‚ๆžœๆ‚จ้ธๆ“‡็š„่ชž่จ€ไป็„ถ็ผบๅฐ‘ไธ€ไบ›ๅญ—ไธฒ๏ผŒๆ‚จๅฏไปฅ้ธๅ–ๅฎƒๅ€‘ไธฆ้–‹ๅง‹็ฟป่ญฏใ€‚ We tried to do our best in terms of flexibility of the translations, therefore many strings include extra variables that ASF will provide during runtime - those are enclosed in brackets with a number, such as {0}. ้€™ๆจฃ๏ผŒๆ‚จๅฐฑๅฏไปฅๆ›ดๆ”นASFไธญๅญ—ไธฒ็š„้ ่จญๆ ผๅผ๏ผŒไพ‹ๅฆ‚ๅฐ‡ASFๆไพ›็š„่ฎŠๆ•ธ็งปๅ‹•ๅˆฐๆ›ด็ฌฆๅˆๆ‚จ็š„่ชžๆณ•ๅ’Œ็ฟป่ญฏ็ฟ’ๆ…ฃ็š„ไฝ็ฝฎ๏ผŒ่€Œไธๆ˜ฏ่ขซ่ฟซๅšดๆ ผdiโ€†wๆฒฟ็”จๅŽŸๆ–‡ๆ ผๅผใ€‚ ้€™ๅœจ RTL ่ชž่จ€๏ผˆๅฆ‚ๅธŒไผฏไพ†ๆ–‡๏ผ‰ไธญๅฐคๅ…ถ้‡่ฆใ€‚

ไพ‹ๅฆ‚๏ผŒๆ‚จๅฏไปฅๆœ‰ไธ€ๅ€‹้€™ๆจฃ็š„ๅญ—ไธฒ๏ผš

We have {0} games to farm.

ไฝ†ๅœจไฝ ็š„่ชž่จ€็ฟ’ๆ…ฃไธญ๏ผŒไธ‹้ข็š„ๅฅๅญๅฏ่ƒฝๆ›ดๆฐ็•ถ๏ผš

The number of games to farm is equal to {0}.

ๆˆ–๏ผš

{0} is the number of games to farm.

The flexibility is provided specially for you, so you can slightly reword ASF sentence to fit your language better and move ASF-provided number or other information in a place that fits your translation (instead of translating each part independently). ้€™ๆ้ซ˜ไบ†ๆ•ด้ซ”็ฟป่ญฏๅ“่ณชใ€‚


ๅฏฉๆŸฅ

ๅฆ‚ๆžœๆ‚จ้ธๅ–็š„ๅญ—ไธฒๅทฒ็”ฑๅ…ถไป–ไบบ็ฟป่ญฏ๏ผŒๆ‚จๅฏไปฅๆŠ•็ฅจไปฅ่ดŠๆˆๆˆ–ๅๅฐใ€‚ ๆŠ•็ฅจๅฏไปฅ้ธๆ“‡ๆœ€ไฝณ็š„็ฟป่ญฏ๏ผŒ่€Œไธๆ˜ฏๅ …ๆŒๆœ€ๅˆ็š„ๅปบ่ญฐโ”€โ”€้€™้€ฒไธ€ๆญฅๆ้ซ˜ไบ†ๆ•ด้ซ”็ฟป่ญฏๅ“่ณชใ€‚ ไฝ ๅฏไปฅ็‚บๅทฒ็ถ“ๅฏไปฅๆไบค็š„็ฟป่ญฏๅปบ่ญฐๆŠ•็ฅจ๏ผŒไนŸๅฏไปฅๆไบค่‡ชๅทฑ็š„็ฟป่ญฏๅปบ่ญฐ๏ผŒ้€™ๅฐ‡็ถ“ๆญทๅŒๆจฃ็š„้Ž็จ‹ใ€‚ Eventually, final string will be chosen either based on most voted suggestion, or as a choice of proofreader selected for that language who personally approves given translation (based on your votes as well).

ๆ‚จๅทฒ็ฟป่ญฏ็š„ๅญ—ไธฒไธ้œ€ๆ‰นๅ‡†ๅณๅฏๅœจASFไธญๆŸฅ็œ‹ใ€‚ ๆ‰นๅ‡†ๅชๆ˜ฏๆ„ๅ‘ณ่‘—ๆœ‰ๅ€ผๅพ—ๆˆ‘ๅ€‘ไฟกไปป็š„ไบบๅฃซๅฏฉๆŸฅไบ†็ฟป่ญฏๅ…งๅฎน๏ผŒไธฆ้ธๆ“‡ไบ†็ฟป่ญฏ็š„ๆœ€็ต‚็‰ˆๆœฌใ€‚ It's totally fine to have not-approved community-driven translations, where you vote for the best one. ๅช่ฆ็ฟป่ญฏๅฎŒๆˆ๏ผŒ่ฌไบ‹ๅคงๅ‰๏ผ ๅฆ‚ๆžœๆ‚จ่ช็‚บ็พๅœจ็š„็ฟป่ญฏไธๅฅฝ๏ผŒๆ‚จ็ธฝๆ˜ฏๅฏไปฅ็‚บๆ‚จๆ›ดๆฌฃ่ณž็š„็ฟป่ญฏๆŠ•็ฅจ๏ผŒๆˆ–่€…่‡ชๅทฑๆไบคไธ€ๅ€‹ใ€‚


ๆ กๅฐ

It's a good idea to have a consistent translation, even if it could potentially take freedom from community review/voting process explained above. This is mainly because incorrect translations that are not necessarily bad may get so many upvotes that it's no longer possible to suggest any better translation, even if somebody has such.

If you have past history of contributions on Crowdin or any other localization platform/service that we can verify and assume trustworthy, we're happy to give you a proof-reader access to given language you're contributing to, so you'll be able to approve given translation and make it consistent. ๆ กๅฐไธๆ˜ฏไธ€ไปถๅฎนๆ˜“็š„ไบ‹ๆƒ…๏ผŒ็‰นๅˆฅๆ˜ฏๅ› ็‚บASFๆœ‰ๆ™‚ๆœƒ้žๅธธใ€ŒๆŠ€่ก“ๆ€งใ€ไธ”้›ฃไปฅ็ฟป่ญฏ๏ผŒไฝ†ๆˆ‘ๅ€‘ๆ˜Ž็™ฝ๏ผŒๅฎƒ้€šๅธธๆ˜ฏๅฎŒ็พŽ็ฟป่ญฏๆ‰€ๅฟ…้œ€็š„ใ€‚ Therefore if you can help by proof-reading given language, let us know, but keep in mind that you'll need to back up your request with past localization contributions that we can verify (e.g. working with ASF localization on Crowdin, or with any other project). We may also allow more advanced users to pick up initial proof-reading, if we know them personally and they're capable of cooperating with the rest of the community in order to localize ASF in that language best.

้ฉ็”จไบŽๆ กๅฐ็š„ไธ€่ˆฌ่ฆๅ‰‡โ”€โ”€ไธ่ฆๅฟƒๆ€ฅ๏ผŒๅ‚พ่ฝ็”จๆˆถ็š„่ฒ้Ÿณ๏ผŒ็ตฑ็ฑŒ้ …็›ฎ๏ผŒ่งฃๆฑบๅ•้กŒ๏ผŒ็ขบไฟๆŠŠไบ‹ๆƒ…ๅšๅพ—ๆ›ดๅฅฝ๏ผŒ่€Œไธๆ˜ฏๆ›ด็ณŸใ€‚


ๅ•้กŒ

If you have a problem with particular translation, e.g. you do not know how to translate it, approved translation is incorrect, you need more specific context, or likewise, please post a comment under specific string, and mark it with [X] Issue.

Please avoid using issue mark if you do not need technical/development explanation or admin action. You're free to use comments for discussion related to translation of given string, but issue should be used only when you need further technical explanation or admin correction, and it will typically involve somebody who does not even speak the language you're translating to, so please stick with English when writing issue comment (so we can understand what the issue is).

็•ถๅ‰ๆˆ‘ๅ€‘ๅฐไปฅไธ‹4้กžๅ•้กŒๆไพ›ๆ”ฏๆด๏ผš

  • ไธ€่ˆฌๅ•้กŒโ”€โ”€ไปปไฝ•ไธ็ฌฆๅˆไธ‹้ขไปปไฝ•ๆจ™ๆบ–็š„ๅ•้กŒใ€‚ In general this type should be avoided, as if your problem does not fit, then it's very likely not a translation issue. Still, this option is available here for all other cases.
  • Current translation is wrong - this should be used only if translation was pre-approved by proof-reader already, and you believe that it's wrong, for example it has a typo or you have a valid suggestion how to improve it. This type should never be used in translations that are powered by the community (voting), as in this case you should contact with user of given translation and ask him for correction, or simply vote for better translation, as stated in reviewing section. We'll remove the approval of the translation and notify the appropriate proof-reader in charge of the language to take into account your comment and verify again.
  • Lack of contextual information - this is what you should use if you're not sure what part of ASF you're translating, what is the context of given string, or its purpose. This type should be used for ASF development only, it means you need technical assistance as you're not sure how you should translate given string.
  • Mistake in the source string - this should be used only if you believe that original (English) string is incorrect. Quite rare, but not all of us are speaking English natively either, so feel free to use it if you have a general idea how it could be improved. Alternatively, since this is strictly related to the development, you may use our GitHub issues for that purpose, if you'd like to.

็ฟป่ญฏ้€ฒๅบฆ

ๆฏ็จฎ่ชž่จ€้ƒฝๆœ‰ๅ…ฉ็จฎๅฎŒๆˆ็‹€ๆ…‹โ€”โ€”็ฟป่ญฏๅ’Œๆ กๅฐใ€‚

Language is considered translated when its translation progress reaches 100%. At this point every localizable string used by ASF has proper meaning, which is great. However, that doesn't mean that there is no room for improvement - community voting is enabled all the time and you can still suggest better translation for already-translated parts, as well as vote for existing ones. Please note that fully-translated languages can still drop below 100% when we change existing strings or add new ones during development. You can set up appropriate crowdin notifications if you'd like to receive e-mail when this happens.

Selected languages may have appropriate proof-readers that validate translations and approve final versions. This is final pass after translation takes place and allows to further improve localization.

ASF will include given language as soon as possible, which means that it doesn't need to be approved, or even 100% translated. The actual strings that will be used are always the most popular ones in terms of the votes, unless chosen proofreader decided otherwise (rarely). Therefore, you can see your efforts being included in the very next ASF release - our automation systems merge translations from Crowdin back to ASF repo on daily basis.


Missing languages

By default ASF project has open translation only for top 30 languages that are spoken worldwide. If you'd like to add another one (or a local dialect to already available one), please let us know and we'll add it ASAP. We don't want to open several hundred different languages if nobody is going to translate them, that's why we limited it to some fair number. Please don't hesitate to contact us if you'd like to translate some not-listed language, it's very easy for us to add another one. Just make sure that you have actual willings and determination to translate ASF into your language, before you decide to contact with us.

For a complete list of all available languages that ASF can be translated to, click here.


Pluralization

Every language has its own rules in regards to pluralization. Those rules can be found on CLDR which specifies their number and exact language conditions.

We're doing our best to offer you flexible localization, and as long as possible, this will also include plural rules. For example, we'll translate following string into Polish today:

Released {PLURAL:n|{n} month|{n} months} ago

PLURAL keyword here is treated in a special way as it allows you to include all plural forms that your language supports. If you take a look at CLDR, you'll see that in English there are only 2 cardinal forms - "one", and "other". And as you can see above, we have both of those defined - {n} month and {n} months.

However, our Polish language actually includes 4 of them - "one", "few", "many" and "other". This means that we should define all of them for completion. Our localization tools are already smart enough to pick appropriate plural form based on language rules, therefore you only have to define all of them in the translation:

Wydany {PLURAL:n|{n} miesiฤ…c|{n} miesiฤ…ce|{n} miesiฤ™cy|{n} miesiฤ…ca} temu

This way we've defined all 4 plural forms for our Polish language, and since our localization library already knows the exact rules, it'll properly use the correct form for provided {n} number.

It's not mandatory to define all plural forms used by your language. If missing, our localization library will use last defined form in its place. It's a good idea to define all plural forms used by your language, but in some cases remaining plural forms could be the same as last one, in which case it's not needed to repeat them. In our example above it was mandatory, as "other" form in Polish for months is "miesiฤ…ca", and not "miesiฤ™cy" as in "many".


Wiki

Our crowdin platform also allows you to localize even the wiki itself. This is a very powerful tool, since it allows you to create a whole ASF documentation in your native language, effectively solving the very last issue when it comes to ASF localization. Together with translation of the program and all its parts, this makes localization complete.

Wiki is a bit special in this regard, since it's online help where you don't need to stick with original sentence too much. This means that you want to be as natural with your language as possible, and deliver original meaning and help - not necessarily stick with original string, used words and actual punctuation. Don't be afraid of rewriting the string into something far more natural for your language, as long as you keep the general direction and help included in the sentence.


Global links

Our crowdin platform also allows you to adapt the original text in order to make it point to new (localized) locations.

ASF includes links on almost every page for easier navigation, as well as sidebar on the right. The awesome fact is that you can edit all of that, "fixing" links to point to proper localized pages for your language. It requires to be a bit careful doing that, but it's possible.

For example, ASF home page includes a text such as:

ๅฆ‚ๆžœๆ‚จๆ˜ฏๆ–ฐ็”จๆˆถ๏ผŒๆˆ‘ๅ€‘ๅปบ่ญฐๆ‚จๅพž**่จญ็ฝฎๆŒ‡ๅ—**้–‹ๅง‹ใ€‚

Which is originally written as:

If you're a new user, we recommend starting with **[setting up](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Setting-up)** guide.

On the crowdin, first thing you should do is going to your editor settings and ensuring that HTML tags are set to "Show" for you. This is very important if you decide to localize the wiki.


Crowdin


Now, during translating on the crowdin, depending on formatting, you'll see ASF links in the text either as:

  • String to translate together with HTML tags (majority of strings, where only a part of the sentence is a link)
  • Alone string to translate, with link included in Hidden texts -> Link addresses (rare, where entire string is a link, most common in sidebar - those require proofreader access to translate, sadly)

In our example above, it's the first case (since only "setting up" is a link), so in crowdin we'll see it as:


Crowdin 2


Regardless of case, firstly you should copy the source string and translate it as usual, leaving entire HTML (if present) intact. This would be example of translation for Polish language:


Crowdin 3


Now, if the link is a generic link that points outside of the wiki (e.g. to latest ASF release), you can leave it as it is since you don't want to edit it. You can save it and move forward.

However, if the link does point further inside the wiki, like the one above, you can actually correct it to point to new (localized) location. You do this by carefully appending -locale to target URL in <a> tag, like below:


Crowdin 4


Be extremely careful about this, and ensure that your URL indeed exists, since if you make a mistake, that link will stop functioning. If you succeeded, you now have a fully functional translation with link pointing to translated (in our case Setting-up-pl-PL) page.

Doing the steps above will properly translate our HTML back to markdown:

Jeล›li jesteล› nowym uลผytkownikiem, zalecamy rozpoczฤ™cie od korzystania z **[przewodnika po konfiguracji](https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Setting-up-pl-PL)**.

And finally into wiki text:

Jeล›li jesteล› nowym uลผytkownikiem, zalecamy rozpoczฤ™cie od korzystania z przewodnika po konfiguracji.

When no HTML is present (second case), this is even easier since you can just go to Hidden texts -> Link addresses.


Crowdin 5


From there you can easily correct the link to point to new location, without even bothering with HTML at all:


Crowdin 6


Local links

Across the wiki you will also find local links that point to particular section of the document. Those links include # character, indicating the web browser that it should move towards that section of the document.

Now those are special cases, since those links are based on names of the sections of current document. While for URLs we have general convention of adding -locale to the URL, and it works everywhere, section names will be translated by you and other people, so you need to ensure that they point to proper location.

For example you can find #introduction link in our configuration section:


Crowdin 7


Since we're going to translate "Introduction" word into "Wprowadzenie" for our Polish language, we'll need to correct this link since it'll stop functioning the moment we do this.


Crowdin 8


This way our local link will keep working, since it'll now point to name of the section that we're using. You can correct links inside HTML tags in exactly the same way.


Code blocks

Be extremely careful when you translate sentences with <code></code> blocks inside. Code block indicates fixed ASF code names or terms that should not be translated. ็ฏ„ไพ‹๏ผš

This is especially useful if you have a lot of keys to redeem and you're guaranteed to hit RateLimited status before you're done with your entire batch.

As you can see, RateLimited word here is inside a code block and indicates internal ASF code status that should not be translated. Likewise, you shouldn't translate other code blocks, such as names of config properties (e.g. TradingPreferences), enum members (e.g. Stable and Experimental options of UpdateChannel) and likewise.

However, just because those words should not be translated, doesn't mean that you can't add appropriate translation next to them, for example in brackets.

Ta funkcja jest wyjฤ…tkowo uลผyteczna w przypadku aktywacji duลผej iloล›ci kluczy i gwarancji napotkania statusu RateLimited (zbyt czฤ™stej aktywacji) przed ukoล„czeniem caล‚ej partii.

As you can see above, we've added "zbyt czฤ™stej aktywacji", literally "too often activation" next to RateLimited in order to translate that status in a friendly way, while at the same time keeping original ASF meaning that the user may see during usage of the program. In the same way you can translate/explain other, similar cases of various words and sentences.

If you believe that something inappropriate is included in a code block, or that there is a text that is not in a code block but should be inside it, feel free to ask on our crowdin by creating appropriate issue. This also serves as a practical example of using a local link.


Hall of fame

We'd like to show our eternal gratitude to people that have spent a significant amount of their time and willings to make ASF localization better. Their effort is incredible, and you can enjoy complete translations, including the wiki, mostly thanks to them. As a token of appreciation, all people listed here are offered free access to MatchActively feature upon a request.

Contributor Languages
Astaroth LOLCAT, Spanish
Dead_Sam Portuguese (BR)
deluxghost Chinese (CN)
DragonTaki Chinese (TW)
LittleFreak German
Ryzhehvost Russian, Ukrainian
MrBurrBurr LOLCAT, German
XinxingChen Chinese (HK)

Thank you all for improving our ASF localization quality!

Clone this wiki locally